恶意软件已成为对全球组织数字化进展上的巨大威胁。如果没有适当的控制措施,那么像打开电子邮件附件这样简单的事情最终将使公司损失数百万。值得庆幸的是,有大量的恶意软件专业分析工具可帮助发现并遏制这些网络威胁。
当遇到涉及恶意软件的紧急安全响应事件时,数字取证分析或研究团队通常会收集和分析样本,以更好地了解其功能并指导处理影响。
有许多工具可以帮助安全分析师反向工程恶意软件样本。好消息是,我使用的所有恶意软件分析工具都是完全免费和开源的。在本文中,我将介绍我最喜欢的11种最佳恶意软件专业分析工具(不分先后顺序)以及它们的用途:
PeStudio
Process Hacker
Process Monitor (ProcMon)
ProcDot
Autoruns
Fiddler
Wireshark
x64dbg
Ghidra
Radare2/Cutter
Cuckoo Sandbox
恶意软件分析工具和分析技术主要有三类:
1、恶意软件样本静态分析技术;
2、虚拟环境触发恶意软件技术;
3、恶意软件样本的动态分析技术。
在运行恶意软件以监视其行为之前,我的第一步是对恶意软件进行一些静态分析。用于这种类型的分析的工具将不会执行代码,而是将尝试提取可疑的指示符,例如哈希,字符串,导入并尝试识别是否打包了恶意软件。
一旦用静态分析技术和工具中获取了尽可能多的信息,我便在专门为运行和分析恶意软件而构建的虚拟机中触发恶意软件。
在恶意软件运行时,我使用多种工具来记录其活动,这被称为动态分析。在动态分析样本时,我会寻找此恶意软件的独特特征进行归类分析。这可能包括查找创建的文件,对注册表的更改,这可能表明恶意软件建立了某种持久性。或查看网络流量以查看恶意软件调用的命令和控制(C2)基础结构。
免责声明:本文中的工具应在沙盒环境中使用,例如设计用于分析恶意软件的虚拟机,请勿尝试在主机操作系统上使用这些工具来分析恶意软件。
我分析Windows可执行文件的第一个调用端口始终是PeStudio。这是对恶意软件样本进行初始分类的出色工具,它使我能够快速提取出任何可疑工件。
加载二进制文件后,它将迅速为用户提供恶意软件的哈希值和VirusTotal中发现的所有检测结果。还会拉出字符串列表,但是,如果包装了样本,则可能不会返回任何强大的IOC,解压缩样本,然后查看字符串通常会提供有用的信息,例如恶意域和IP地址。
上面的屏幕截图还显示了恶意软件的“熵”。这有助于确定恶意软件是否打包加壳。打包加壳样本后,这意味着恶意软件作者已在恶意软件周围有效地放置了一层代码,以掩盖其真实功能并防止对恶意软件进行分析。
为了帮助识别打包加壳的恶意软件,PeStudio会显示文件的熵级别。熵以0-8的等级进行度量,其中8是最高级别的熵。熵越高,恶意软件被打包加壳的可能性就越大。
另一个有用的部分是“Imports”标签,其中包含导入到恶意软件中的功能,因此它可以执行某些任务。例如,Windows包含各种DLL的库,它代表动态链接库。每个库都包含称为Windows API的一组独特功能,合法程序使用这些功能来执行各种功能。例如,DLL Kerner32.dll包含API CreateProcessW,它可以让软件用来创建新的运行进程。但是,恶意软件将使用相同的方法来导入其自身的功能。如果恶意软件需要在磁盘上创建新文件,则恶意软件作者无需编写任何代码即可将API CreateFileW导入恶意软件。通过查看导入,恶意软件分析人员可能能够预测恶意软件的潜在行为。
2. Process Hacker
Process Hacker允许恶意软件分析师查看设备上正在运行的进程。以查看该恶意软件创建了哪些新进程以及从磁盘上何处运行这些新进程时非常有用。 恶意软件通常会通过将自身复制到新位置然后重命名来尝试隐藏,Process Hacker将显示发生的活动,从而易于识别恶意软件试图隐藏的方式。
该工具对于从进程的内存中提取信息也很有用。这意味着,如果恶意软件触发,则可以使用Process Hacker检查内存中的字符串,在内存中找到的字符串通常会返回有用信息,例如恶意软件正在使用的IP地址,域和用户。
ProcMon是Microsoft提供的功能强大的工具,它可以记录实时文件系统活动,例如进程创建和注册表更改。当与Process Hacker结合使用时非常方便,因为可能会创建一个新进程,然后迅速将其杀死,然后可以在ProcMon捕获中查看此进程。使用预构建的筛选器或进程树,分析人员可以快速识别创建了哪些进程,从何处运行可执行文件以及父/子依赖项。
在分析恶意文档时,ProcMon可能特别有用。Emotet组织经常使用恶意Word文档作为攻击载体。Word文档包含宏,这些宏在启用后将调出攻击者C2基础结构并下载Emotet有效负载。受影响的设备的用户看不到此活动。通过使用ProcMon,您可以捕获正在打开的Word文档,查看正在启动的隐藏PowerShell进程以及正在运行base64编码的命令。
ProcMon可以在几秒钟内快速记录超过100,000个事件。尽管ProcMon中的过滤器非常出色,但还是有可能错过感兴趣的事件的风险,但可以将这些数据作为CSV导出并导入到下一个介绍的工具中。
ProcDot允许恶意软件分析人员提取ProcMon的输出,并自动生成捕获数据的图形表示。只需将csv上传到ProcDot中,然后选择恶意软件的进程名称。您不必导航过滤器并浏览数十万个事件,而是可以浏览记录了恶意软件活动的直观图表。还可以通过将诸如Wireshark之类的pcap导入ProcDot中来丰富ProcMon数据。
Autoruns 是另一个Microsoft工具,它将显示设置为在计算机开机时启动的设备上的所有已安装软件。恶意软件可以隐藏但最终它必须运行,并且为了在重新启动后生存,一个恶意软件必须创建持久性驻留机制。
有几种技术可以用来实现此目标,例如在注册表中创建计划任务或创建特定运行键。在运行虚机中运行恶意软件后,Autoruns将检测并突出显示任何新的持久驻留软件及其采用的技术,非常适合进行恶意软件分析。
恶意软件通常会使用HTTP/HTTPS与C2服务器联系并下载其他恶意软件或窃取数据。使用像Fiddler这样的工具作为Web代理,可以捕获和分析此流量。当分析包含宏以下载恶意有效负载的恶意文档时,这可以证明是有用的,运行fiddler使恶意软件分析人员可以识别恶意软件访问的URL及域名。
在上面的示例中,您可以看到Fiddler如何记录恶意Word文档,并尝试从哪些主机域名进行恶意软件下载,如果第一次尝试失败,则将其移至下一个域名下载。
Wireshark是用于实时捕获和分析网络流量的工具。诸如Fiddler之类的Web代理专注于HTTP/HTTPS流量,而Wireshark允许对多协议层的多个协议进行深度数据包检查。在Wireshark中分析数据包捕获时,甚至可以从pcap中提取恶意软件下载的文件。
到目前为止,我们已经讨论过的工具都可以供初学者首次进入恶意软件分析领域使用。x64dbg是恶意软件分析的学习曲线急剧上升的转折点。
该工具用于手动调试和逆向工程恶意软件样本,您需要了解汇编代码才能使用该工具,但是一旦学习曲线趋于平稳,它就可以让恶意软件分析师手动解压缩并分解恶意软件样本,例如外科医生手术刀。
了解如何使用x64dbg意味着您可以专注于示例的特定功能和导入的API调用,并开始剖析恶意软件的真实运行方式。
Ghidra由国家安全局(NSA)开发,被称为反汇编程序而不是调试程序。使用Ghidra,您可以像在x64dbg中那样浏览汇编代码功能,但是,主要区别在于该代码不会执行,而是会被反汇编,以便可以对其进行静态分析。
与x64dbg的另一个主要区别在于,Ghidra将尝试将代码反编译为人类可读的输出,该输出与恶意软件作者在创建恶意软件时所编写的内容接近。这通常会使恶意软件分析人员更容易对恶意软件进行逆向工程,因为这些恶意软件会带有构成每种功能的变量和指令。
Radare2是可在Windows和Linux上使用的命令行调试器,我真正喜欢Radare2的地方和x64dbg的不同,它具有分析Linux可执行文件的能力。为了使Radare2对可能被命令行界面推迟的用户更加友好。它还具有一个称为Cutter的GUI前端。
Cuckoo Sandbox是用于自动化恶意软件分析的工具。我过去构建的Cuckoo Sandbox都是在运行主Cuckoo应用程序的Ubuntu主机上构建的。主机内是嵌套在Virtualbox中的Windows 7 VM。VM已安装了一个Cuckoo代理,该代理允许它将数据反馈到运行Cuckoo的Ubuntu主机。一旦完成分析,就生成恶意软件的详细报告,然后将恶意软件提交给VM,而Cuckoo代理会记录恶意软件的活动。
当您遇到涉及恶意软件的事件时,Cuckoo Sandbox是分析团队中的一个很好的工具,在执行自己的分析时,我经常通过Cuckoo运行该恶意软件,因为这使我可以从恶意软件中收集尽可能多的信息及样本。
就个人而言,我发现对恶意软件的分析很有趣,并且始终将其作为个人兴趣和挑战。想分析恶意软件并获取尽可能多的信息并不总是那么容易,但是本文概述的工具有望使你了解分析恶意软件的过程,以及一些可用于建立自己的恶意软件分析实验室的工具。
了解更多安全解决方案请拨打:400-116-9959
安全托管服务合作伙伴,选多面魔方就对了。
安全和信任值得托付 !
微信公众号
新浪微博