感谢2023年的陪伴,2024年继续加油^_^
该系列文章将系统整理和深入学习系统安全、逆向分析和恶意代码检测,文章会更加聚焦,更加系统,更加深入,也是作者的慢慢成长史。漫漫长征路,偏向虎山行。享受过程,一起奋斗~
前文介绍了利用MS Defender实现恶意样本家族批量标注。这篇文章将讲解如何利用火绒实现恶意样本家族批量标注,在通过VS、VT采集批量样本后,通常需要样本家族标注,如何准确识别家族类别至关重要,其将为后续的恶意软件家族分类或溯源提供帮助。在此感谢李师弟热心的指导和帮助,基础性基础,希望您喜欢,且看且珍惜。
文章目录:
一.恶意软件概念
二.利用火绒批量标注恶意软件
1.恶意软件家族标注
2.火绒和Defender病毒家族比较
3.Defender恶意家族命名规则解析
三.恶意样本家族构造方法
四.Usenix Sec20恶意软件标注工作
五.总结
作者的github资源:
逆向分析:
https://github.com/eastmountyxz/
SystemSecurity-ReverseAnalysis
网络安全:
https://github.com/eastmountyxz/
NetworkSecuritySelf-study
作者作为网络安全的小白,分享一些自学基础教程给大家,主要是关于安全工具和实践操作的在线笔记,希望您们喜欢。同时,更希望您能与我一起操作和进步,后续将深入学习网络安全和系统安全知识并分享相关实验。总之,希望该系列文章对博友有所帮助,写文不易,大神们不喜勿喷,谢谢!如果文章对您有帮助,将是我创作的最大动力,点赞、评论、私聊均可,一起加油喔!
声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护,更推荐大家了解它们背后的原理,更好地进行防护。(参考文献见后)
恶意软件是一种具有恶意目的的计算机程序或代码。它在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上安装运行,侵犯用户合法权益。恶意软件通常会在用户不知情的情况下,通过植入或篡改系统、应用程序或文件来进行安装和传播,以实现对计算机系统和用户信息的非法获取、利用或破坏。这是网络安全领域中一种常见的威胁形式,对个人、企业和组织的网络安全产生巨大的威胁。
恶意软件通常具有自动执行的特点,即无需用户手动启动,就可以进行各种恶意活动。根据行为特性和目的,恶意软件可分为多种类型,包括病毒、蠕虫、木马、间谍软件、勒索软件等。这些软件可能会破坏计算机系统、窃取敏感信息、勒索财产或进行其他恶意活动。
代表性恶意软件如下表所示:
恶意代码溯源是指通过分析恶意代码生成、传播的规律以及恶意代码之间衍生的关联性,基于目标恶意代码的特性实现对恶意代码源头的追踪。
因此,如何有效检测恶意软件,溯源恶意软件至关重要。那么,当我们从VS、VT、微步在线等网站采集海量样本,如何对恶意软件的家族进行标注呢?这就是本文需要研究的问题。
假设存在如下所示的恶意软件,包括PE样本、Powershell样本和XLM样本,MD5仅给出部分。我们需要利用火绒软件识别恶意家族。
温馨提示:建议所有安全相关的实验均要在虚拟机中完成,本机的重要数据要养成及时备份的好习惯,尤其是做学术研究。
接下来我们利用火绒进行病毒扫描,然后扫描如果是恶意软件会为每个样本生成一个结果描述,通过这些结果描述即可对恶意软件家族进行标注。整个原理是利用火绒病毒库进行关键特征匹配实现。具体如下:
第一步,打开火绒安全并点击“病毒查杀”。
第二步,在病毒查杀中选择“自定义查杀”。
第三步,添加需要扫描的执行文件目录,即malware。
第四步,如下所示查看扫描的风险及结果。
同时,点击每个病毒详情,可以看到具体的病毒类型及家族。
第五步,在火绒安全设置中点击“安全日志”,批量查看详细信息。
显示结果如下图所示:
我们将该日志保存至本地。
最终输出结果如下图所示,读者批量扫描后可以构建python脚本批量读取病毒家族识别结果。
`【1】2024-04-25 15:05:53,病毒防护,病毒查杀,自定义扫描, 发现9个风险项目`` ``病毒库时间:2024-04-24 18:05``开始时间:2024-04-25 15:05``总计用时:00:00:01``扫描对象:30``扫描文件:15``发现风险:9``已处理风险:0``病毒详情:``风险路径:D:\malware\xlm-00aadd0cee3b5, 病毒名:OMacro/Downloader, 病毒ID:59616ce1c492d8b8, 处理结果:暂不处理``风险路径:D:\malware\xlm-00e27f49734eb, 病毒名:OMacro/Downloader.apd, 病毒ID:2574b5c72e2e144d, 处理结果:暂不处理``风险路径:D:\malware\pe-0af925cd9d9a41, 病毒名:TrojanDownloader/Garveep.e, 病毒ID:a026193d7d90c6ff, 处理结果:暂不处理``风险路径:D:\malware\pe-0b269bdd4c2d1, 病毒名:Worm/Agent.bk, 病毒ID:1f263d9824fa6f87, 处理结果:暂不处理``风险路径:D:\malware\ps-0d7a89ea2041, 病毒名:TrojanSpy/PS.PwStealer.c, 病毒ID:1d5e1914bc871b7d, 处理结果:暂不处理``风险路径:D:\malware\xlm-00e0b16153772, 病毒名:OMacro/Dropper.gz, 病毒ID:5c6258daba21b931, 处理结果:暂不处理``风险路径:D:\malware\ps-beacon, 病毒名:Trojan/PS.Rozena.b, 病毒ID:85c6aa55da50614b, 处理结果:暂不处理``风险路径:D:\malware\ps-beacon-, 病毒名:Trojan/PS.Rozena.b, 病毒ID:85c6aa55da50614b, 处理结果:暂不处理``风险路径:D:\malware\pe-00f60edc9acb15, 病毒名:HEUR:Trojan/HVM3, 病毒ID:5520f4434bc844ea, 处理结果:暂不处理`` ``>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`
接下来,我们简单看看火绒和Defender识别结果,区别和差异还是挺大的,但用法类型相似些。这也是不同的家族有不同的样本库和规则。
Defender输出结果如下:
`Begin Resource Scan``Resource Path:D:\malware``Result Count:7`` ``Threat Name:Virus:Win32/Nemim.A``Resource Path:D:\malware\pe-0a7c325973943`` ``Threat Name:TrojanDownloader:O97M/ZLoader.ARJ!MTB``Resource Path:D:\malware\xlm-00e27f49734eb`` ``Number of Resources:2``Threat Name:TrojanDropper:PowerShell/Cobacis.B``Resource Path:D:\malware\ps-beacon-``Resource Path:D:\malware\ps-beacon`` ``Threat Name:TrojanDownloader:O97M/EncDoc.DK!MTB``Resource Path:D:\malware\xlm-00cf050ee5410d`` ``Threat Name:Trojan:Win32/Tapaoux.A``Resource Path:D:\malware\pe-0a812976b9412`` ``Threat Name:TrojanDownloader:Win32/Garveep.B``Resource Path:D:\malware\pe-0b269bdd4c2d1`` ``Threat Name:TrojanDownloader:O97M/EncDoc.YAF!MTB``Resource Path:D:\malware\xlm-00aadd0cee3b5`` ``End Scan`
此时,您可能又有一个疑问,“TrojanDropper:PowerShell/Cobacis.B”样本的家族究竟是什么呢?
我们通过微软官方命名规则对其进行解析。根据计算机防病毒研究组织(CARO)的恶意软件命名方案,Defender检测到的恶意软件命名如下。官方网址如下:
核心包括:
Type:类型
Platform:平台
Family:家族
Variant:变体
Suffixes:后缀
因此,上述代码是提取的家族类型,即“TrojanDropper:PowerShell/Cobacis.B”样本的恶意家族为“Cobacis”。
(1) 类型
描述恶意软件在计算机上做了什么。蠕虫、病毒、木马、后门和勒索软件是最常见的恶意软件类型。
`* Adware``* Backdoor``* Behavior``* BrowserModifier``* Constructor``* DDoS``* Exploit``* HackTool``* Joke``* Misleading``* MonitoringTool``* Program``* Personal Web Server (PWS)``* Ransom``* RemoteAccess``* Rogue``* SettingsModifier``* SoftwareBundler``* Spammer``* Spoofer``* Spyware``* Tool``* Trojan``* TrojanClicker``* TrojanDownloader``* TrojanNotifier``* TrojanProxy``* TrojanSpy``* VirTool``* Virus``* Worm`
(2) 平台
指示恶意软件要针对的操作系统(如Windows、Mac OS X和Android),该平台还用于指示编程语言和文件格式。
Operating systems
`* AndroidOS: Android operating system``* DOS: MS-DOS platform``* EPOC: Psion devices``* FreeBSD: FreeBSD platform``* iOS: iPhone operating system``* Linux: Linux platform``* macOS: MAC 9.x platform or earlier``* macOS_X: macOS X or later``* OS2: OS2 platform``* Palm: Palm operating system``* Solaris: System V-based Unix platforms``* SunOS: Unix platforms 4.1.3 or lower``* SymbOS: Symbian operating system``* Unix: general Unix platforms``* Win16: Win16 (3.1) platform``* Win2K: Windows 2000 platform``* Win32: Windows 32-bit platform``* Win64: Windows 64-bit platform``* Win95: Windows 95, 98 and ME platforms``* Win98: Windows 98 platform only``* WinCE: Windows CE platform``* WinNT: WinNT`
Scripting languages
`* ABAP: Advanced Business Application Programming scripts``* ALisp: ALisp scripts``* AmiPro: AmiPro script``* ANSI: American National Standards Institute scripts``* AppleScript: compiled Apple scripts``* ASP: Active Server Pages scripts``* AutoIt: AutoIT scripts``* BAS: Basic scripts``* BAT: Basic scripts``* CorelScript: Corelscript scripts``* HTA: HTML Application scripts``* HTML: HTML Application scripts``* INF: Install scripts``* IRC: mIRC/pIRC scripts``* Java: Java binaries (classes)``* JS: JavaScript scripts``* LOGO: LOGO scripts``* MPB: MapBasic scripts``* MSH: Monad shell scripts``* MSIL: .NET intermediate language scripts``* Perl: Perl scripts``* PHP: Hypertext Preprocessor scripts``* Python: Python scripts``* SAP: SAP platform scripts``* SH: Shell scripts``* VBA: Visual Basic for Applications scripts``* VBS: Visual Basic scripts``* WinBAT: Winbatch scripts``* WinHlp: Windows Help scripts``* WinREG: Windows registry scripts`
Macros
`* A97M: Access 97, 2000, XP, 2003, 2007, and 2010 macros``* HE: macro scripting``* O97M: Office 97, 2000, XP, 2003, 2007, and 2010 macros - those that affect Word, Excel, and PowerPoint``* PP97M: PowerPoint 97, 2000, XP, 2003, 2007, and 2010 macros``* V5M: Visio5 macros``* W1M: Word1Macro``* W2M: Word2Macro``* W97M: Word 97, 2000, XP, 2003, 2007, and 2010 macros``* WM: Word 95 macros``* X97M: Excel 97, 2000, XP, 2003, 2007, and 2010 macros``* XF: Excel formulas``* XM: Excel 95 macros`
(3) 家族
恶意软件的分组基于共同的特征,包括归属于相同的作者。安全软件供应商有时对同一个恶意软件家族使用不同的名称,从而定义恶意软件家族。
(4) 变体
每个不同版本的恶意软件都有一个顺序。例如,对变量的检测。“.AF”将在检测到变体“. AE”之后创建。
(5) 后缀
提供有关恶意软件的额外详细信息,包括如何将其用作多组件威胁的一部分。在“Win32/Reveton.T.”例子中,“!lnk”指示威胁组件是木马使用的快捷方式文件。
`* .dam: damaged malware``* .dll: Dynamic Link Library component of a malware``* .dr: dropper component of a malware``* .gen: malware that is detected using a generic signature``* .kit: virus constructor``* .ldr: loader component of a malware``* .pak: compressed malware``* .plugin: plug-in component``* .remnants: remnants of a virus``* .worm: worm component of that malware``* !bit: an internal category used to refer to some threats``* !cl: an internal category used to refer to some threats``* !dha: an internal category used to refer to some threats``* !pfn: an internal category used to refer to some threats``* !plock: an internal category used to refer to some threats``* !rfn: an internal category used to refer to some threats``* !rootkit: rootkit component of that malware``* @m: worm mailers``* @mm: mass mailer worm`
问题:不同杀毒引擎或安全公司会有自己特有的病毒库及恶意家族定义方式,那么,如何能更准确地标注这些家族呢?或者,如何将这些家族名称对齐呢?尤其是Virusshare和Virustotal对每个样本有多重标注结果。
首先,我能想到的是做一个投票器,来更准确的标注信息。当然,有时为了实验需要,以某个病毒引擎或某安全公司的标准来实施也可以,但需要标注清楚。
接着,我们参考ADog老师在先知社区的文章,他提到了文本相似度计算方式。在此感谢作者,并推荐大家阅读原文。
总之,通过相似度计算和摩尔投票确实可以更准确地标注恶意家族。
关于如何提取标签,ADog老师首先想到的是按照前面所得到的的厂商排名列表顺序取标签,通过构建一个标签字典,其类似于2.4小节描述的方式提取。比如以Kaspersky厂商的命名方式为例,其提供了一个具体的标签列表:
下面给出Usenix Sec20恶意软件标注工作的核心思想,主要以恶意软件在线分析平台 VirusTotal 为对象。具体地址如下:
Measuring and Modeling the Label Dynamics of Online Anti-Malware Engines
测量和建模恶意软件在线分析平台的标签动态
本文的核心工作:
作者采用数据驱动(data-driven)的策略来对研究者们常用的标签方法进行分类、解释和验证。
首先调研了 115 篇和 VirusTotal 相关的学术论文,并且在一年内从 65 个 VirusTotal 采用的引擎中收集了超过 14000 个文件的标签动态。作者验证了基于阈值(threshold)的标签整合分析结果的稳定性,并指出了阈值对结论的影响。
通过对数据集的测试,本文发现一些广泛使用且被认为“可信”的反恶意软件引擎的表现并不理想,并且许多引擎的测试结果非常近似,可以认为这些引擎组是紧密相关的,在参考它们的分析结论时应该作为整体综合考虑。
最后,作者为将来使用 VirusTotal 进行数据标注、恶意软件标注提供了建设性建议。
VirusTotal 是目前最大的在线恶意软件扫描平台,应用了 70 多种反恶意软件引擎,并且能提供详细的分析报告和丰富的数据源,在安全界被研究者们广泛应用于恶意软件注释和系统评估。当前存在的问题如下:
VirusTotal 标签动态何时可信赖?
如何整合从不同引擎得到的标签?
不同的引擎之间参考权值是相等的吗?
(1)首先,开展标签动态测量分析,测量同一个引擎对给定文件的标签动态反转(flip)频率。
结论:引进阈值有助于标签动态整合结果趋于稳定,提高测试结果对标签动态变化的适应性与耐受性。但这并不意味着这个检测结果就一定正确,即准确性无法通过阈值分析得到保证。
(2)开展不同引擎间标签动态的关联分析。
本文对不同引擎间得到标签序列之间的关联进行分析,并得到了每个系统的易受影响程度。为了比较不同引擎对同一文件的标签序列,本文引进了两个序列间距离 distance 的概念,并提出了两种引擎间关联模型。
主动影响模型(Active Influence Model)
被动模型(Passive Model)
结论:系统检测结果由恶意到良性的 flips 更容易受到最近发生相同 flips 的系统影响,而不是保持良性标签的系统。
(3)开展Ground-Truth数据集的验证分析
**最终结论:**针对VirusTotal恶意软件在线分析平台当前存在的问题,本文基于数据驱动的模型,指出采信结果时应去除频繁反转的部分,探索选取合适的阈值应用于标签动态整合最终测试结果。同时,通过建立不同引擎间的关联证明了其中一些引擎存在紧密联系,部分系统易受其他系统影响,推翻了所有引擎平权综合的假设。最后用正确标注好的参考数据来检验结论的正确性。
写到这里,这篇文章就介绍完毕,下一篇会介绍火绒软件。基础性文章,希望对您有所帮助。
行路难,多歧路。感谢家人的陪伴,小珞最近长大了很多,调皮又可爱,走路都在唱歌,希望她也一样。感谢大家2023年的支持和关注,让我们在2024年继续加油!分享更多好文章,感恩,娜璋白首。
(By:Eastmount 2024-01-26 夜于火星)
欢迎大家订购Eastmount的知识星球,其会更系统地分享网络安全、系统安全、人工智能及科研实践的文章,共勉。
参考文献,再次感谢这些大佬。
[1] 作者前文恶意软件博客&李师弟指导
[2] https://docs.microsoft.com/en-us/windows/security/threat-protection/intelligence/malware-naming
[5] 深入了解 VirusTotal 的数据与文件聚类
[6] 【论文学习】测量和建模恶意软件在线分析平台的标签动态
前文回顾(下面的超链接可以点击喔):
[系统安全] 五十八.恶意软件分析 (10)利用火绒安全实现恶意样本家族批量标注(含学术探讨)