九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

admin 2024年10月19日00:07:39评论74 views字数 8434阅读28分6秒阅读模式

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

写在前边

本文旨在为读者提供关于恶意样本分析的重要知识和技术。以下为本文的条例概述:


1.来源:
本文为笔者于自身工作期间进行关于恶意样本分析的内部培训、根据培训内容所整理的精选文章。完整内容将分为多篇在本公众号进行发表,欢迎大家关注。


2.使用目的:
本文仅供学术交流使用,旨在促进行业内的知识分享和合作。


3.发展和创新:
a.恶意样本分析领域不断发展和创新。
b.本文将介绍重要概念、工具和技术,帮助读者更好地理解和应对恶意软件的威胁。


4.鼓励学术交流
我们欢迎读者对本文分享、提出反馈意见和讨论本文的内容。


通过以上条例的概述,本文将为读者提供系统的恶意样本分析知识,并促进学术交流和行业内的合作与发展。

往期内容请参见合集《恶意样本分析实战》系列。

一、搭建安全实验室

在开始恶意样本分析之前,首要的步骤就是构建一个安全的实验室环境,以确保我们的分析行为不会对我们自身的系统或者网络产生不良影响。

1、虚拟化技术

首先我们需要搭建一个虚拟环境,这可以通过诸如VMWare或者VirtualBox的虚拟化技术实现。这些工具可以帮助我们在主机系统中创建一个或者多个虚拟机,每个虚拟机都运行在一个独立的环境中,彼此之间不会互相影响。

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

这样,我们就可以在这些虚拟机中安装不同的操作系统,装载恶意样本,然后安全地进行分析。需要注意的是,我们在创建虚拟机的时候,要确保虚拟机与主机系统之间的文件共享功能被禁用,防止恶意软件通过这个渠道感染到主机系统。

2、隔离措施

为了保证恶意软件样本分析的安全性,我们需要对虚拟机进行严格的隔离控制。下面是一些优化的隔离措施,以确保实验室和主机系统的安全,并防止恶意软件对真实环境造成损害:

1、网络隔离和模拟:

  • 将虚拟机网络限制在内网中,使用网络设置中的"仅主机(Host-only)"模式或断开虚拟机与外部网络的连接。这样可以防止恶意软件对外部网络的访问,并减少感染其他系统的风险。

  • 使用网络模拟工具(如INetSim或FakeNet)构建虚拟的网络环境,模拟网络服务,以吸引恶意软件与其进行交互。这样可以观察恶意软件的网络行为,同时防止其连接到真实的网络。

2、停用有风险的功能:

  • 在虚拟机中禁用或停用与样本分析无关且可能带来风险的功能,如自动更新、自动执行脚本、共享文件夹等。关闭这些功能可以减少恶意软件利用虚拟机的漏洞或攻击表面的可能性。

3、防反调试技术

一些恶意软件可能会使用反调试技术来阻止分析。为了对抗这些技术,我们可以采取以下措施:

  • 启用防反调试技术,如ScyllaHide或OllyDbg等工具,用于隐藏调试器的存在,防止恶意软件检测到调试环境。

  • 使用虚拟机的安全配置选项,如硬件加速的内核虚拟化(如Intel VT-x或AMD-V),以提高虚拟机的安全性和防止逃逸。

4、系统快照

系统快照是虚拟化技术的重要功能,对于恶意软件样本分析非常有用。它允许我们记录虚拟机在某一时刻的状态,并在需要时快速恢复到该状态。

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

  • 在样本分析过程中,定期创建虚拟机的快照。这样,如果恶意样本导致虚拟机崩溃或感染,我们可以轻松地恢复到之前的状态。

  • 快照功能可帮助我们保存虚拟机的特定状态,并提供一种简单且可靠的方法来还原到之前的环境,保持分析的一致性和可重复性。

5、更新和维护

  • 定期更新虚拟机中的操作系统和安全补丁,确保虚拟机的安全性和稳定性。

  • 监控虚拟机供应商的安全公告,并及时应用相关更新,以防止已知漏洞的利用。

通过以上优化的隔离措施和防护措施,我们可以搭建一个更加专业和安全的实验室环境,为恶意软件样本分析提供坚实的基础。

请记住,隔离措施应根据具体需求和风险评估来制定,并结合其他措施,如访问权限管理和日志记录,以提供全面的安全保护。

二、静态分析工具和技术

1、文件识别工具

初步分析恶意软件的工具,如 file 和 TrID,它们可以提供文件类型和格式。

File 是一个在Linux和Unix系统上广泛使用的命令行工具,它通过检查文件的"魔术数字"来确定文件类型。

TrID 则是一个用于识别文件类型的实用程序,它的数据库可以识别超过5000种不同的文件类型。

例如,使用 file 命令,可以对二进制文件进行简单的检查:

$ file sample.binsample.bin: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, for GNU/Linux 2.6.24,BuildID[sha1]=0xfbe51774f02bda1fec8e6c5d23e040f67c8e5a8d, stripped

*左右滑动查看更多

程序位数:

32位程序会有“PE..L”标志:

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

64位程序会有“PE..d?”标志:

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

2、反汇编和反编译工具

反汇编和反编译工具在深入理解恶意软件内部工作机制时非常有用。它们可以将二进制代码转换为更易理解的汇编语言或高级语言代码,使分析人员能够更直观地理解恶意代码的逻辑。

  • IDA Pro:逆向工程的黄金标准,它可以反汇编大多数主流的二进制文件,并提供诸如交互式反汇编(IDA视图)、图形化反汇编(Graph View)等强大的功能。但是,IDA Pro并非开源,而且价格较高。

  • Ghidra:由美国国家安全局(NSA)开发并开源的反汇编和反编译工具,功能丰富,对于理解恶意代码的执行流程和数据结构很有帮助。

3、Hashes和数字签名

在静态分析中,哈希值和数字签名起着重要的作用。通过计算文件的哈希值,我们可以将恶意样本与已知的恶意样本进行匹配,或者进行后续的查找和分析。数字签名可以帮助我们验证软件的完整性和可信性。

  • 哈希值:常用的哈希算法包括MD5、SHA1、SHA256等。我们可以使用命令行工具(如sha256sum <文件名>)计算文件的哈希值。此外,一些在线服务(如VirusTotal)还提供了哈希值查询功能,可以在其数据库中搜索已知的恶意样本信息。

  • 数字签名:数字签名可以帮助我们确认软件是否被篡改或是否来自可信赖的发布者。我们可以使用开源工具(如GnuPG)或供应商提供的工具(如Microsoft的sigcheck)来检查和验证数字签名。

第三方工具:

Pestudio

哈希值可以作为IOC使用,使组织能够检测恶意文件:

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

Pestudio最有用的功能之一:指标区域。它自动突出该工具正在检测的Windows可执行文件的潜在恶意方面。

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

通过查看导入表可以确定DLL(“库”)和其中实现的功能(可以查看导入表的工具有很多,这里依然以PEstudio为例):

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

4、字符串提取

最后,字符串提取也是静态分析中常用的一种技术。通过像Strings这样的工具,可以从二进制文件中提取有用的文本字符串,这些字符串可能包括URL、IP地址、注册表键值等信息,这些都能为我们的分析提供有用的线索。

例如,可以使用以下命令来提取字符串:

$ strings test.bin

pestr

下载:https://sourceforge.net/projects/pev/使用手册:https://pev.sourceforge.io/doc/manual/en_us/

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术*左右滑动查看更多

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

Bintest

提供了一个GUI交互界面,用于检测嵌入式字符串。

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

你可以设置一些“过滤器”,进行筛选:

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

其他工具:

Binwalk:帮助你找到二进制文件中隐藏的文件和数据,

Hexdump:让你看到文件的原始二进制或十六进制表示。

string2默认情况下,strings2同时提取ASCII和Unicode编码的字符串。

网址:https://github.com/glmcdona/strings2

上文所述的这四个静态分析的步骤可以为我们提供大量有价值的信息,并为接下来的深入分析奠定基础。

三、动态分析工具和技术

1、虚拟化技术

虚拟化技术如 VirtualBox 和 VMWare 是进行恶意样本分析时的首选环境,因为它们能提供一个隔离的环境用于安全地执行和分析恶意软件。通过设置快照,我们可以在分析完成后轻松恢复虚拟环境至初始状态,以便于进行下一轮的分析。

在分析过程中,我们可以监视虚拟机的CPU、内存、磁盘和网络活动,捕捉恶意软件在执行过程中的行为。例如,VMWare的内建调试器就可以用于监视进程和内核级别的行为。关于这个话题,我们在本文最开头的”搭建安全实验室”板块中有详细的介绍。

2、自动化沙箱

自动化沙箱如Cuckoo Sandbox和Joe Sandbox可以自动执行恶意样本,并收集其在执行过程中的各种行为信息。这些信息包括文件系统活动、注册表活动、网络活动等,对于理解恶意软件的行为特征非常有用。

关于这个话题,我们在之前的文章《恶意样本分析实战》之在线资源使用有更详细的讨论和示例,感兴趣可以自行回顾阅读。

3、系统和网络监视工具

系统和网络监视工具是动态分析中的关键工具,它们能够提供恶意软件的行为和活动的详细信息。下面是一些常用的系统和网络监视工具及其提供的功能:

Wireshark

一款强大的网络流量分析工具,它能够捕获和解析网络接口上的数据包。使用 Wireshark 进行分析时,我们可以详细观察恶意软件的网络行为,并获取以下信息:

在虚拟机上启动Wireshark,选择网卡(eth0)进行捕获网络请求:

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

  • 网络通信内容:Wireshark 可以捕获恶意软件与 C2 服务器之间的通信内容,包括请求和响应数据、数据传输协议、使用的端口等。这些信息有助于了解恶意软件的通信模式和数据泄露情况。

  • 网络连接情况:通过分析网络连接信息,我们可以确定恶意软件建立的网络连接,识别可能的恶意活动,并追踪数据流向和来源。

Sysmon

由 Microsoft 提供的系统监视工具,它能够记录 Windows 系统中发生的各种系统活动。通过使用 Sysmon,我们可以获得以下信息:

  • 进程活动:Sysmon 可以记录恶意软件创建和结束的进程,包括进程名称、PID、执行路径等。这有助于我们追踪恶意软件的执行流程,并识别恶意进程的行为。

  • 文件修改情况:Sysmon 可以监视文件的创建、修改和删除操作,帮助我们发现恶意软件对文件系统的篡改和操纵。

  • 注册表修改情况:通过监视注册表的变更,Sysmon 可以帮助我们发现恶意软件对注册表的修改,识别恶意软件的隐藏位置和持久性机制。

搭建DNS服务器

在进行恶意文件分析时,我们需要处理许多恶意程序,其中一些程序会尝试连接到特定的恶意服务器以获取进一步的指令。为了让这些样本继续执行其恶意行为,我们可以为它们提供它们所需的网络资源。

为了实现这一点,我们可以搭建一个DNS服务器,将样本的DNS查询重定向到我们控制的服务器上。以下是搭建DNS服务器的步骤:

步骤一:使用Fakedns.py脚本

下载网址:https://code.activestate.com/recipes/491264-mini-fake-dns-server/

*左右滑动查看更多

使用Fakedns.py脚本来搭建一个假的DNS服务器。该脚本会自动将运行它的主机的IP地址用作DNS查询的响应。

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

步骤二:进行DNS查询解析

在虚拟机中运行Fakedns.py脚本后,它将监听UDP端口53上的DNS连接,并将其重定向到Linux虚拟机的IP地址。这样,当样本尝试解析主机名时,我们的DNS服务器将将其重定向到我们控制的Linux虚拟机。

我们可以使用nslookup命令来测试它的操作,例如:

nslookup google.com

九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

步骤三:捕获网络请求

通过引入一个虚假的DNS服务器,我们能够使样本继续执行其恶意行为。我们可以观察到Fakedns服务器对样本的请求进行响应,并将请求包导出以进行进一步的分析。通过分析这些请求包,我们可以深入了解样本的行为模式和目标。

通过搭建DNS服务器并捕获样本的网络请求,我们可以为恶意样本提供它们所需的网络资源,并跟踪它们的行为。这样,我们可以更全面地了解恶意软件的攻击方法,并采取相应的防御措施。这一步骤对于恶意软件分析和威胁情报收集至关重要。

其他信息

除了 Wireshark 和 Sysmon,还有其他系统和网络监视工具可以提供更详细的信息,如:

  • 网络连接捕获:Fiddler、Burp Suite等;

  • 注册表情况:Regshot、DiffVieww等;

  • 进程排查工具:像 Process Explorer、Process Monitor 等工具可以帮助我们深入了解恶意进程的活动,包括进程的启动参数、文件操作、注册表访问等。

  • 防火墙监测工具:使用防火墙监测工具,我们可以检查网络流量,并发现异常的连接和活动。例如,Windows 系统自带的 Windows 高级审计策略(Advanced Auditing Policy)可以用于监控网络流量、Windows Firewall Control等。

  • 端口排查工具:像 Netstat、TCPView 等工具可以显示系统上的网络连接和监听的端口,帮助我们发现潜在的恶意连接和活动。

  • 文件释放情况:通过监视文件系统的变化,我们可以追踪恶意软件释放的文件和目录,并确定可能的恶意行为,工具有FolderChangesView、ProcessActivitView等。

通过使用这些详细的系统和网络监视工具,我们能够获得更全面、准确的信息,从而更好地分析恶意软件的行为和攻击过程。这将有助于我们识别威胁、采取适当的应对措施,并提高对恶意软件的防御能力。

四、高级分析技术

1、内存取证

专用于获取和分析计算机在运行时的内存快照。它通过使用专门的内存取证工具如Volatility,从内存转储(memory dumps)中提取有关恶意软件的数据,帮助我们深入了解恶意软件在运行时的行为和状态。

内存取证的重要性在于它能够揭示一些磁盘上无法直接观察到的信息。由于恶意软件通常会将关键数据存储在内存中,如解密的字符串、注入的代码、隐藏的进程等,因此通过分析内存转储,我们可以获取这些关键信息,从而更好地理解恶意软件的工作原理和目的。

特别是对于那些只存在于内存中的恶意软件,如使用文件无害化技术的恶意软件,内存取证成为了唯一可行的手段。这是因为这些恶意软件在执行过程中不会将恶意代码保存到磁盘上,而是直接在内存中进行操作。通过分析内存转储,我们可以捕获到这些恶意软件的存在和活动,否则它们可能无法被发现和分析。

Volatility是业界领先的内存取证工具之一。它提供了一系列功能,如提取进程信息、网络连接、打开的文件等。通过分析内存转储,Volatility可以帮助我们还原恶意软件在运行时的状态,识别其执行的恶意活动,并发现隐藏的特征和行为模式。这些信息对于深入了解恶意软件的行为模式、攻击路径和目标是至关重要的。

内存取证的应用范围广泛,不仅限于恶意软件分析。它还可以应用于数字取证、漏洞研究、系统调优等领域。通过对内存快照的分析,我们可以获取有关系统状态、应用程序执行、用户活动等方面的宝贵信息,从而帮助我们解决问题、提升系统性能和安全性。

总之,内存取证作为一种高级分析技术,在恶意软件分析和其他领域中具有重要的应用价值。通过获取和分析计算机在运行时的内存快照,我们可以揭示隐藏的信息和行为模式,为安全防御和系统优化提供有力支持。

2、指令流分析

用于深入理解恶意软件的工作原理和行为。它通过跟踪程序执行过程中的指令流来分析程序的行为。其中,Radare2是一个强大的开源逆向工程框架,提供了丰富的功能来支持执行流分析,如反汇编、调试和补丁等。

执行流分析的主要目标是理解恶意软件的控制流逻辑,包括条件分支、循环、函数调用等。通过分析执行流,我们可以揭示恶意软件的攻击逻辑和设计者的意图。这对于确定恶意软件的关键功能模块、敏感操作和潜在漏洞至关重要。

Radare2作为一种强大的逆向工程框架,提供了多种用于执行流分析的功能。首先,它可以将恶意软件的二进制代码进行反汇编,将其转换为可读性更强的汇编代码或高级语言代码,从而使分析人员能够更好地理解恶意软件的执行逻辑和功能。

其次,Radare2支持调试功能,可以在恶意软件的执行过程中逐步跟踪和监视程序的状态。通过设置断点、观察变量和执行单步调试等操作,分析人员可以深入了解恶意软件的执行流程,捕获关键状态和数据,进而发现隐藏的特征和行为模式。

此外,Radare2还提供了补丁功能,允许分析人员修改恶意软件的二进制代码,从而改变其行为或修复其漏洞。通过对恶意软件进行补丁,可以探索其不同的执行路径和可能的后果,从而更好地理解其功能和潜在威胁。

Radare2还具有脚本化和扩展性的特点,分析人员可以使用脚本语言编写自定义的分析脚本,自动化执行流分析过程,并根据具体需求扩展Radare2的功能。

综上所述,执行流分析是一种关键的高级分析技术,通过使用Radare2等工具,分析人员可以深入理解恶意软件的控制流逻辑,揭示其攻击逻辑和意图,并发现关键功能模块和潜在漏洞。这些信息对于制定有效的安全防御策略和提供恶意软件分析报告至关重要。

3、手动逆向工程

在恶意软件分析中,手动逆向工程是一种重要的高级分析技术,通过分析软件的二进制代码来理解其功能和行为。手动逆向工程包括反汇编、反编译和调试等步骤,常用的工具包括IDA Pro、Ghidra、OllyDbg等。

手动逆向工程在恶意软件分析中扮演着关键的角色。它可以帮助我们理解那些自动化工具难以处理的复杂逻辑和混淆技术。例如,恶意软件通常会使用加密算法来隐藏其恶意行为,手动逆向工程可以帮助我们识别和分析这些加密算法,从而揭示恶意软件的真实意图。此外,一些恶意软件还会采取反调试技巧和代码隐藏技术来阻碍分析人员的工作,手动逆向工程可以帮助我们克服这些障碍,深入了解恶意软件的内部工作原理。

手动逆向工程还可以帮助我们定位和理解恶意软件的关键部分。通过分析恶意软件的二进制代码,我们可以确定窃取信息的模块、与C2服务器通信的模块以及其他关键功能模块。这有助于我们深入了解恶意软件的行为和目的,并为进一步的分析提供重要线索。

需要注意的是,手动逆向工程需要一定的专业知识和经验。分析人员需要熟悉汇编语言和底层系统原理,并掌握逆向工程工具的使用方法。此外,手动逆向工程是一项耗时且复杂的任务,需要耐心和细致的分析过程。

综上所述,手动逆向工程是一种重要的高级分析技术,能够深入理解恶意软件的功能和行为。它可以帮助我们解析复杂的逻辑和混淆技术,定位关键部分,并揭示恶意软件的真实意图。

手动逆向工程需要一定的专业知识和经验,但它能提供最深入、最直接的恶意软件分析结果,为安全防御和威胁情报提供有力支持。

在下一篇文章中,我们将详细介绍手动逆向工程的步骤和技巧,帮助读者更好地理解和应用这一高级分析技术。

五、结论

本文通过深入介绍恶意样本分析的工具和技术,旨在帮助二进制分析人员更好地理解和对抗恶意软件的威胁。恶意软件分析是一项复杂而关键的任务,它要求我们拥有专业的知识、丰富的经验和强大的工具。只有深入理解恶意软件的工作原理,我们才能有效地防御其攻击。

静态分析工具提供了深入研究恶意软件代码结构、依赖关系和潜在漏洞的能力。通过仔细分析二进制文件的特征、文件类型和静态属性,我们能够获取关于恶意软件行为的关键信息。这有助于我们识别恶意软件的功能和行为模式,为进一步的分析提供基础。

动态分析工具使我们能够观察恶意软件在运行时的行为和与其他系统的交互。通过监视系统调用、网络通信和文件操作等动态特征,我们可以追踪恶意软件的执行轨迹和目标。这有助于我们理解恶意软件的攻击逻辑和数据流动,从而更好地应对其威胁。

高级分析技术如内存取证、执行流分析和手动逆向工程提供了更深层次的恶意软件分析能力。内存取证允许我们从运行时的内存快照中提取关键信息,揭示恶意软件在内存中的活动和状态。执行流分析通过跟踪程序的指令流来深入理解恶意软件的控制流逻辑和攻击逻辑。手动逆向工程通过分析恶意软件的二进制代码,揭示复杂逻辑和混淆技术,帮助我们定位关键模块和攻击手段。

作为二进制分析人员,我们需要持续学习和探索最新的工具和技术,以应对不断变化的恶意软件威胁。通过深入理解恶意软件的攻击策略和目标,我们可以提前发现和应对威胁,为系统和数据提供更有效的保护。

最终,我们鼓励所有的网络安全工作者和研究者在实际工作中广泛运用这些工具和方法,以提升自身的防御能力。只有通过持续学习和探索,我们才能跟上恶意软件不断演化的步伐,并有效地保护我们的系统和数据。

通过不断改进和应用这些分析技术,我们可以更好地理解恶意软件的攻击策略和目标,提前发现和应对威胁。最终,我们的专业知识、技能和努力将有助于构建更安全、更可靠的网络环境。通过持续提高二进制分析能力,我们能够更好地保护用户、组织和社会免受恶意软件的危害。

原文始发于微信公众号(安恒信息安全服务):九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月19日00:07:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-青队(处置)| 《恶意样本分析实战》系列之关键工具和技术https://cn-sec.com/archives/1870753.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息