aryanmalto9/Malware-Analysis-Using-PEid

GitHub: aryanmalto9/Malware-Analysis-Using-PEid

这是一个关于恶意软件分析基础理论与方法的教学项目,旨在帮助安全人员全面了解并掌握静态与动态分析的流程及相关工具。

Stars: 0 | Forks: 0

# 使用 PEid 进行恶意软件分析 恶意软件分析 作者:S Aryan Malto 日期:05-03-2026 什么是恶意软件分析? 恶意软件分析是对恶意软件进行检查和研究,以了解其行为、功能和潜在影响。这可以通过手动方式完成,使用各种工具和技术对代码进行逆向工程和分析;也可以使用自动化工具和分析平台来识别和分类恶意软件。恶意软件分析是网络安全和事件响应的重要组成部分,因为它有助于识别和了解组织面临的威胁,并制定有效的防御策略。 恶意软件分析使您的网络能够根据严重级别对事件进行分类,并发现失陷指标(IOC)。它还提供了更全面的威胁狩猎图景,并改进了 IOC 警报和通知。 恶意软件分析的类型 可以通过不同的方式和各种工具来进行恶意软件分析。主要有三种分析类型: • 静态分析 • 动态分析 • 混合分析 为了弄清楚如何分析您手中的恶意软件,请先尝试回答几个问题: 1. 此恶意软件可能会如何触发其执行? 2. 它将以哪些方式试图逃避检测? 3. 我们能看到和不能看到的恶意代码部分分别有哪些? 4. 哪些工具可以帮助我们分析给定恶意软件样本的所有方面? 如果您获得了恶意文件样本,则可以执行静态分析。但是,如果此文件仅设计用于启动攻击链的后续阶段,则静态分析将无法展示主 payload 是如何执行的。有时,找出答案的唯一方法是在安全环境中运行恶意软件。那么,让我们看看如何执行不同类型的恶意软件分析,以及它们对网络安全分析师有何用处。  动态恶意软件分析 可以在自动化沙箱中或在您可以手动测试样本的 VM 上执行动态恶意软件分析。请记住,复杂的恶意软件会寻找处于模拟环境中的迹象,在这种情况下,自动化的恶意软件分析并不是最佳选择。 就像任何其他软件一样,恶意软件可以被编程来执行代码所能执行的几乎任何操作。因此,您需要了解代码(作为一组指令)做了什么,以及其背后的逻辑是什么。 例如,某些安全工具会将它们的 DLL 注入到本地进程中。恶意软件会扫描环境,如果发现这些文件,它将自行终止。除此之外,恶意软件扫描器还会寻找: • 用于交互式分析的调试器和其他工具(API 调用如 IsDebuggerPresent、CheckRemoteDebuggerPresent、NtQueryInformationProcess)。 • 用于恶意软件分析的进程、窗口、注册表项、文件、互斥对象等。 顾名思义,动态恶意软件分析主要是观察恶意软件的运行过程。您希望尽可能以多种方式与其交互,并全面了解其功能。为此,请确保使用完全隔离的环境;该环境应与 Internet 断开连接,在仅主机网络上运行,并且 VM 绝不能与主机共享任何文件夹。 尽管许多恶意软件样本中都存在调试器规避扫描器,但安全研究人员在动态恶意软件分析中确实会使用调试器。这些工具非常适合用于识别有风险的 API 调用和内存分配。如果恶意软件主动使用无文件技术,它在静态分析中将不可见,因为它通过合法进程工作——无需漏洞利用。 例如,注入到 PowerShell 的代码在 powershell.exe 中分配内存,并在新线程中执行混淆代码(该线程通过 Process Hollowing 生成一个受信任的进程): 在调试器内部,您将能够看到代码如何遍历其被编程执行的所有指令。不要忘记检查内存中的字符串,并将它们与负责这些内存交互的代码进行比较。寻找注入 API,例如 VirtualAlloc、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread 等。此外,检查 NTFS 事务以查找 Process Doppelgänging 注入。 使用调试器隐藏工具以确保您能够分析逃避检测的恶意软件。我们稍后将详细讨论相关工具。现在,让我们看看如何执行静态恶意软件分析。  静态恶意软件分析 静态恶意软件分析是在不运行代码的情况下可以执行的分析类型。这种类型的分析可能需要具备底层软件语言、处理器指令和内存管理原理的高级知识。 然而,初级分析师也有他们自己的静态分析文件的方法。例如,看一眼文件扩展名就能告诉你这是什么类型的文件,这可以让你推测在你发现它的位置出现这个文件是否可疑。接下来,你可以在 VirusTotal 等威胁情报资源中搜索其哈希或模糊哈希。不过,做出假设时要小心,因为即使哈希不在 VirusTotal 上,该文件也可能是恶意的。不要忘记分析其他静态属性,例如头部信息。 可以通过自动化工具进行静态分析以进行初步分类,也可以使用手动分析工具进行更细致的检查。安全分析师会研究代码指令、依赖项及其含义。 如果你在记事本中打开一个可执行文件,你会看到以下内容: 这是被编译成机器可读格式的代码。处理器知道该怎么做,但人类不太可能理解这里的任何内容。因此,你需要通过反汇编器或反编译器运行此代码,将其还原为你能够阅读和分析的格式。完成此操作后,代码看起来会是这样的: 理解汇编指令对于得出有见地的结论是必不可少的。查看此快速指南以温习您的知识,或深入阅读 Oracle 提供的参考手册。 您还可以使用 Microsoft 的 Sysinternals 套件来分析字符串。其工具还可以帮助识别哪个可执行文件与特定的 Windows API 调用相关联,甚至可以确定 IOC。向下滚动到这篇博文的最后一节,以发现更多用于恶意软件分析的工具。现在,让我们谈谈静态和动态恶意软件分析的优缺点。  静态与动态恶意软件分析 显然,采用不止一种类型的恶意软件分析将是最佳选择。静态分析将展示特定可执行文件是如何运作的。同时,如今的标准攻击链通常包含多个可执行文件。相反,它可能是一组相互触发的脚本和文件。如果是这种情况,对其中某一个文件的静态分析将不足以理解整个 payload 是如何运作的。 根据 SOC 团队的目标和目的,可以分配一些资源用于研究恶意软件样本。而选择静态分析还是动态分析是一个非常个体化的决定。大多数情况下,需要在两者之间保持良好的平衡,这通常被称为混合恶意软件分析。  混合分析 混合恶意软件分析是静态和动态恶意软件分析的结合。 当遇到复杂的样本时,最好分阶段分析恶意软件。例如,首先进行静态分析并识别哪些 API 调用可能在逃避检测。然后,在模拟环境中执行动态分析,以观察样本的运行情况并检查它是否下载了其他二进制文件。如果您获取了后者,您可以再次对其内部结构进行静态分析。 恶意软件分析用例 每个 SOC 团队都是独一无二的,网络安全流程的组织方式可能会有所不同,具体取决于业务背景、组织规模和风险因素。下面我们收集了一些适用恶意软件分析的用例。 检测威胁 IOC 和行为模式是特定软件程序(SIEM、SOAR、EDR/XDR)中各类威胁检测活动的常见输入。在分析过程中获取重要的恶意软件数据有助于检测最新威胁。 获取警报 获取准确的警报是任何网络安全管道的重要组成部分。恶意软件分析有助于减少误报和漏报的数量,从而确保更高水平的网络保护。 狩猎威胁 新型且复杂的恶意软件变种并不容易捕获。这时威胁狩猎就派上用场了。拥有恶意软件样本并了解它们的工作原理是追踪潜伏在野外的更多威胁的最佳方式。 响应事件 显然,没有事件响应就没有良好的网络安全态势。只有当安全工程师掌握了关于恶意软件的外观、它影响的系统以及它试图运行的进程的详细信息时,才能制定并执行适当的响应措施。 恶意软件分析的阶段是什么? 分析工作并非易事。容易陷入海量数据中或误解代码。为了使网络防御取得成功,研究人员将他们的活动划分为几个恶意软件分析步骤。 评估与分类 恶意软件分析的初始阶段可以在自动化工具的帮助下完成。对于静态分析,需要一些准备步骤,例如反编译代码。总之,在恶意软件分析的第一阶段,需要整理出需要密切关注的代码部分。它们还可以按难度和优先级进行划分。在确定并优先处理了要审查的恶意代码范围之后,就可以进入下一阶段了。 数据解读 接下来,安全分析师开始检查特定的恶意软件样本。正如我之前提到的,这可以通过分析静态属性或在安全隔离的环境中运行恶意软件来完成。当恶意软件分析师获取了在静态和动态分析期间能够暴露的所有数据后,他们会尝试解读他们所看到的内容。他们可以通过重命名变量、运行代码以及对执行模式进行注释来进一步测试样本。 逆向工程 这是最具挑战性的部分,特别是当遇到加密样本,且不清楚它的作用和目的时。此外,代码可能有多个依赖项,这些依赖项也不是那么明显。尝试对恶意软件进行逆向工程是一项高级任务。然而,这是深度防御方法的关键。 结论与后续行动 当分析结果形成后,就该将其记录下来并采取进一步行动了。分析师编写一份恶意软件报告,在其中描述恶意软件样本、所采取的分析阶段以及结论。他们还可以提供一些补救建议。 恶意软件分析工具有哪些? 安全工程师日常使用的恶意软件分析工具种类繁多。让我们从静态分析工具开始: • PeStudio 被全球 CERT 团队广泛用于捕获恶意文件的痕迹。 • PEiD 可轻松识别加壳和加密的恶意软件,并提供有关其组成的详细信息。 • BinText 是一个文本提取器,可以在文件中找到 Ascii、Unicode 和 Resource 字符串。 • MD5deep 将计算恶意哈希值。作为恶意软件分析器使用时,此软件包将通过各种加密摘要运行大量文件。 • Dependency Walker 将扫描 32 位或 64 位 Windows 模块并构建依赖树。 • IDA Pro 会将二进制代码反汇编为源代码。它还提供了可处理远程应用程序的跨平台调试功能。 在沙箱中分析恶意软件时,您可能已经尝试过 Cuckoo,但我建议您了解一下 ANY.RUN 和 Joe Sandbox Cloud。它们都具备 MITRE ATT&CK® 映射,使用规则,并提供非常详细的行为视图。 当然,Wireshark 无需介绍,因为它仍然是实时网络分析中最广泛使用的工具之一。INetSim 可在实验室环境中真实模拟 Internet 服务(样本极不可能识别出该模拟)。然后是我在上面已经提到过的 Microsoft Sysinternals 套件。您可以在那里找到一整套用于动态恶意软件分析的工具。ScyllaHide 是另一个有趣的工具,它可以让您对想要运行的恶意软件隐藏调试器。如果您想做一个严肃的逆向工程项目,请查看 Ghidra——这是由 NSA 研究局开发的一套工具。 学习如何进行恶意软件分析在开始时可能会显得枯燥,但请保持耐心并深入研究以发现真正的宝藏。一旦您对底层数据感到得心应手,您将能够看到许多人看不到的东西。因此,与其认为恶意软件工程师是世界上最聪明的人,您将能够证明即使是最先进的恶意软件也不会施展魔法——它只是一段可以被分解和中和的软件。 最后,为了实现快速高效的威胁检测和威胁狩猎,请订阅 SOC Prime Detection as Code 平台——在这里,您将找到数千条基于 Sigma 的规则,用于发现最新的网络攻击。如果您准备好分享自己的专业知识并将您的知识变现,请加入我们的全球众包计划 Threat Bounty,该计划旨在帮助使网络世界变得更加安全。
标签:DAST, DNS 反向解析, Go语言工具, IOCs, PEid, PE文件分析, 云安全监控, 云资产清单, 妥协指标, 安全研究报告, 恶意软件分析, 杀伤链, 沙箱, 混合分析, 网络威胁狩猎, 网络安全, 网络安全分析师, 逆向工程, 隐私保护, 静态分析