Krunal-Thumar/CSEC476-Group5-Malware-Analysis-Project

GitHub: Krunal-Thumar/CSEC476-Group5-Malware-Analysis-Project

本项目对一个伪装成 PDF 的恶意投放器进行多层次逆向,揭示其加壳、哈希解析 API 与 RSA 加密通信等逃避机制。

Stars: 0 | Forks: 0

# CSEC.476 恶意软件逆向工程 - 第 5 小组项目 ## 小组成员 - **Rania Kanaan** - 基础静态分析 - **Krunal Thumar** - 高级静态分析 - **Muhammad Fahd Khan** - 基础动态分析 - **Saeed Falaknaz** - 高级动态分析 - **Shadi Atieh** - 高级动态分析 **章节:** 600 **样本:** group5.zip (密码: `infected`) ## 目录 - [技术摘要](#technical-summary) - [基础静态分析](#basic-static-analysis) - [高级静态分析](#advanced-static-analysis) - [基础动态分析](#basic-dynamic-analysis) - [高级动态分析](#advanced-dynamic-analysis) - [结论](#conclusions) - [团队贡献](#team-contributions) ## 技术摘要 恶意软件样本 `group5.zip` 是一个恶意 PDF 文档 (`group5.pdf`),它充当一个投放器(dropper)。在 PDF 内部,一个可执行文件 (`extracted.exe`) 以 ZLIB 压缩格式存储。解压后得到的 `group5_unpacked.exe` 是一个高度混淆的 64 位 PE 文件,大小仅为 8 KB,且熵值极高(7.851)。 **各分析阶段的关键发现:** - **基础静态分析** 识别出可疑字符串(`KERNEL32.dll`、`VirtualProtect`、`wininet`)、一个名为 `.fdfz` 的非标准 PE 区段,以及 VirusTotal 检出率为 41/70。该文件被确认为加壳(非 UPX)且包含 ZLIB 头。 - **高级静态分析** 揭示了一个位于 `.fdfz` 区段的定制加壳例程。恶意软件使用 **ROR13 滚动哈希算法** 动态解析 API 名称——仅有 `VirtualAlloc`、`VirtualProtect`、`GetProcAddress` 和 `LoadLibraryA` 被静态导入。所有其他 API(网络、加密、RPC)均在运行时通过嵌入的哈希值解析。区段熵值(7.85)以及基于哈希的字符串解码器的存在证实了其复杂的混淆手段。 - **基础动态分析**(在仅主机模式 VM 中使用 FakeNet‑NG 执行)显示 `group5_unpacked.exe`: - 修改了 `HKCU\...\Internet Settings\ZoneMap` 下的四个注册表项(禁用代理检测、降低安全区域)。 - 建立到 `212.55.1.3:8085` 的 TCP 连接。 - 加载了网络(`wininet`、`winhttp`、`ws2_32`)与加密(`bcryptprimitives`)DLL。 - 执行迅速终止,符合第一阶段下载器的特征。 - **高级动态分析**(使用 x64dbg、API Monitor、内存转储)揭示了恶意软件的逃避与加密机制: - **自解压**:在 `VirtualProtect` 上设置断点立即命中——`.fdfz` 区段的权限从 `RW` 变为 `RX`,确认恶意代码仅存在于内存中。 - **RSA 加密**:API Monitor 记录了 554 次调用,包括 `BCryptImportKeyPair`(使用 `RSAPUBLICBLOB`)以及对 **439 字节** 数据的 `BCryptEncrypt`——即信标载荷。 - **硬编码 C2 特征**:对解压后代码的内存转储揭示了一个静态的 **iPad User‑Agent**(iOS 17.7.2)、C2 IP `212.55.1.3` 以及一个 **Base64URL 编码** 的信道路径。解码该路径后得到高熵密文(香农熵 6.498),证实了 RSA 加密通信。 - **掩护流量**:恶意软件使用 `cryptnet.dll` 查询 `ctldl.windowsupdate.com`——一个合法的 Microsoft 域——将 C2 流量与证书信任列表更新混杂,以规避检测。 - **威胁情报**:AbuseIPDB 与 Shodan 均未报告 `212.55.1.3` 的历史记录(西班牙境内静态住宅 IP,ISP 为 Euskaltel),表明攻击者使用被入侵的家庭/企业设备作为 C2 服务器以规避黑名单。 总体而言,该恶意软件是一个**多阶段下载器**,采用定制加壳、基于哈希的 API 解析、RSA 加密、用户代理伪造以及利用合法基础设施等技术,以逃避静态、动态及基于网络的检测。 ## 基础静态分析 ### 概述 基础静态分析是在不执行文件的情况下检查文件以收集其特征信息的过程。这包括分析文件属性、哈希值、字符串和元数据,以识别明显的可疑或恶意行为指标。它提供了快速概览,但对文件实际功能了解有限。 ## 执行者:Rania Kanaan ## 1- 解压文件 image **截图 1:** 用于解压可执行文件的 Python 脚本 该截图展示了一个使用 `zlib` 库解压名为 `extracted.exe` 的可疑可执行文件的 Python 脚本,并生成名为 `group5_unpacked.exe` 的新文件。 ## 2- 字符串命令 image **截图 2:** 字符串命令输出(1) image **截图 3:** 字符串命令输出(2) 输出显示了 `KERNEL32.dll`、`VirtualProtect` 和 `PAYLOAD` 等可疑字符串,可能表明存在混淆或隐藏功能。 ## 3- ssdeep 命令 image **截图 4:** ssdeep 哈希生成 生成了一个哈希,可用于与其他恶意软件样本比较,以判断是否存在潜在关联。 ## 4- YARA 命令 image **截图 5:** YARA 规则扫描结果 规则针对 `cmd.exe`、`powershell` 和 `VirtualProtect` 等可疑字符串进行了匹配,虽未触发强匹配,但表明可能存在恶意行为。 ## 5- 哈希命令 image **截图 6:** 使用 certutil 计算 SHA256 哈希 该截图展示了使用 Windows 命令行工具 `certutil` 计算 `group5_unpacked.exe` 的 SHA256 哈希值。 ## 6- Floss 命令 image **截图 7:** FLOSS 输出(1) image **截图 8:** FLOSS 输出(2) image **截图 9:** FLOSS 输出(3) 检测到了 `wininet` 等字符串,确认恶意软件可能使用网络通信。 ## 7- VirusTotal 扫描 image **截图 10:** VirusTotal 扫描结果 文件被 41/70 引擎标记为恶意,清楚表明其具有恶意性。 ## 8- HashMyFile 工具 image **截图 11:** HashMyFile 结果(1) image **截图 12:** HashMyFile 结果(2) 生成了唯一哈希值,有助于识别文件并确认跨工具的一致性。 ## 9- Exeinfo PE 工具 image **截图 13:** Exeinfo PE 分析 该文件是一个 64 位可执行文件,显示未知或修改结构的迹象。 ## 10- Pestudio 工具 image **截图 14:** Pestudio 分析 文件显示多个指标和未知签名,增加了其恶意活动的嫌疑。 ## 11- HxD (十六进制编辑器) 工具 image **截图 15:** HxD 十六进制视图(1) image **截图 16:** HxD 十六进制视图(2) “此程序无法在 DOS 模式下运行”的存在确认了有效的 PE 文件,同时包含无法解读的编码数据。 ## 12- CFF Explorer 工具 image **截图 17:** CFF Explorer 分析(1) <_IMAGE_BLOCK_17/> **截图 18:** CFF Explorer 分析(2) image **截图 19:** CFF Explorer 分析(3) 分析 PE 结构,包括头部和导入表。该文件仅包含少量导入(例如 `KERNEL32.dll`),这可能表明存在混淆。 ## 13- Resource Hacker 工具 image **截图 20:** Resource Hacker 查看 用于检查嵌入资源。未发现有意义的可读资源,暗示内容被隐藏或加密。 ## 14- Detect It Easy 工具 image **截图 21:** Detect It Easy 输出(1) image **截图 22:** Detect It Easy 输出(2) image **截图 23:** Detect It Easy 输出(3) image **截图 24:** Detect It Easy 输出(4) 检测加壳器、编译器及文件属性。 ## 15- PE-bear 工具 image **截图 25:** PE-bear 分析(1) image **截图 26:** PE-bear 分析(2) image **截图 27:** PE-bear 分析(3) image **截图 28:** PE-bear 分析(4) image **截图 29:** PE-bear 分析(5) PE 分析工具用于查看区段和导入表。该工具特别适用于识别可能表明加壳、混淆或恶意行为的文件结构异常。 存在非标准区段(如 `.fdfz`)强烈暗示该可执行文件使用了混淆或定制加壳技术来隐藏其内部功能。 ## 16- Cuckoo Sandbox 工具 image **截图 30:** Cuckoo Sandbox 结果(1) image **截图 31:** Cuckoo Sandbox 结果(2) 该文件得分为 10/10 可疑,表明其具有高风险行为。 ## 17- BinText 工具 image **截图 32:** BinText 提取的字符串 提取 ASCII 和 Unicode 字符串。揭示了 `wininet` 和编码数据等字符串,支持之前的发现。 ## 18- File Alyzer 工具 image **截图 33:** FileAlyzer 分析(1) image **截图 34:** FileAlyzer 分析(2) 分析文件元数据和 PE 结构。文件具有标准 PE 结构,但缺乏详细元数据,这令人怀疑。 ## 19- 混合分析工具 image **截图 35:** 混合分析结果(1) image **截图 36:** 混合分析结果(2) image **截图 37:** 混合分析结果(3) 混合分析确认该样本为恶意软件,检测率高(74%),表明多个安全引擎一致认为该文件表现出有害行为。 ## 高级静态分析 ### 概述 高级静态分析对文件内部结构执行深度检查,无需执行文件。这包括分析可执行文件格式、检查头部与区段、识别加壳或混淆技术,并检查代码组件与嵌入数据,以发现隐藏或受保护的功能。 **执行者:** Krunal Thumar ### 1. 初始文件识别 交付的样本 `group5.zip` 是一个密码保护的压缩包。 ![截图 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7f2f41f950032742.png) *截图 1:Zip 文件属性(文件类型:Zip 压缩包,至少需要 v2.0 才能解压)* 使用密码 `infected` 解压后,得到 `group5.pdf`。 ![截图 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/11773dacf0032744.png) *截图 2:提取的 PDF 文件属性(PDF 文档,版本 1.7)* ### 2. PDF 结构分析与嵌入文件提取 使用 `pdf-parser.py` 搜索嵌入对象: ``` pdf-parser.py group5.pdf --search EmbeddedFile ``` ![截图 3](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9ec638df4d032745.png) *截图 3:发现嵌入文件,类型为 /application/octet-stream* 使用以下命令提取嵌入文件: ``` pdf-parser.py group5.pdf -o 3 -d extracted.exe ``` ![截图 4](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f5f2862269032746.png) *截图 4:提取的 extracted.exe(1.36 KiB)* ### 3. 字符串分析 ``` strings.exe extracted.exe > strings.txt ``` 找到的字符串极少,表明加壳程度很高。 ![截图 5](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e4c1f04cc8032747.png) *截图 5:部分字符串输出* ### 4. 加壳检测 **UPX 测试:** ``` upx --test extracted.exe ``` → 未使用 UPX 加壳 ![截图 6](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6c432e10ed032748.png) *截图 6:UPX 测试结果* **YARA 扫描:** 使用 Mandiant 的 `all-yara.yar` 扫描 → 无匹配。 ![截图 7](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/4957cb4d78032750.png) *截图 7:YARA 扫描结果* **FLOSS(FLARE 混淆字符串求解器):** 仅检测到 14 个静态 ASCII 字符串,未发现堆栈或解码字符串。 ![截图 8](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/912c6302b7032751.png) *截图 8:FLOSS 输出(1)* ![截图 9](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2d271031b7032752.png) *截图 9:FLOSS 输出(2)* ### 5. 文件格式与熵分析 **Detect It Easy (DIE) v3.10:** - 检测为 ZLIB 压缩流 + PE64 结构 - 编译器:Microsoft Visual C/C++ 19.36(Visual Studio 2022) - 数据区段熵值高 → 加壳(98%) ![截图 10](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/91adfcca8d032753.png) *截图 10:DIE 分析* ![截图 11](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e67d4baebe032754.png) *截图 11:熵值图* **Exeinfo PE:** - 首字节:`78 9C ED 59 5F`(ZLIB 头) ![截图 12](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1fe4f2af89032755.png) *截图 12:Exeinfo PE 输出(1)* ![截图 13](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f8e43f0153032757.png) *截图 13:Exeinfo PE 输出(2)* **PEStudio:** - 文件大小:1395 字节 - 熵值:7.851(极高) ![截图 14](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0b6fb8c4c1032758.png) *截图 14:PEStudio 分析* **Dependency Walker:** - 未找到有效的 DOS/PE 签名 → 确认文件被损坏或严重混淆/压缩。 ![截图 15](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a4ccef3538032759.png) *截图 15:Dependency Walker 结果* ### 6. PDF URI 与 OSINT 分析 恶意 PDF 包含 12 个 HTTPS URL 和 1 个电子邮件地址。 ``` pdf-parser.py group5.pdf --search /URI ``` ![截图 16](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a4fd4ff546032800.png) *截图 16:URI 提取结果(1)* ![截图 17](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1954c190d9032801.png) *截图 17:URI 提取结果(2)* ![截图 18](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5f06f3c6aa032802.png) *截图 18:URI 提取结果(3)* ![截图 9](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f7f4b698dc032803.png) *截图 19:URI 提取结果(4)* ![截图 20](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/eab0e7b335032805.png) *截图 20:URI 提取结果(5)* ![截图 21](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7bd9105848032806.png) *截图 21:URI 提取结果(6)* ![截图 22](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd5a304216032808.png) *截图 22:URI 提取结果(7)* 我对所有提取的 URL 进行了 OSINT 分析,使用了提供的 `who-dis.py` 工具(由 Dr. Mo-Alani 提供)。 **OSINT 关键发现:** - 大多数 URL 指向 anaconda.com 和 conda.io 域名(合法的数据科学工具)。 - 多个 Twitter 链接与 Anaconda 相关。 - 所有域名均通过 Cloudflare(ASN 13335)解析。 - 表面未检测到明显的恶意基础设施——可能是诱饵或“活在环境”技术。 ![截图 23](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/679a2a3c11032809.png) *截图 23:who-dis 输出(1)* ![截图 24](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/08308e949c032810.png) *截图 24:who-dis 输出(2)* ![截图 25](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/379b886aeb032811.png) *截图 25:who-dis 输出(3)* ![截图 26](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/e6e605a5c9032812.png) *截图 26:who-dis 输出(4)* ![截图 27](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3b138382fa032813.png) *截图 27:who-dis 输出(5)* ![截图 28](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/46c4d74acd032815.png) *截图 28:who-dis 输出(6)* ![截图 29](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2e7acfd5d0032816.png) *截图 29:who-dis 输出(7)* ![截图 30](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9497c28880032817.png) *截图 30:who-dis 输出(8)* ![截图 31](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/aaa5df9dff032818.png) *截图 31:who-dis 输出(9)* ![截图 32](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/32ca6ebd3f032819.png) *截图 32:who-dis 输出(10)* ![截图 33](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ff93921a34032820.png) *截图 33:who-dis 输出(11)* ![截图 34](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/cb8df2b675032821.png) *截图 34:who-dis 输出(12)* ### 观察 - 使用看似合法的域名(Anaconda/Conda)进行伪装是常见的伪装技术。 - 极小的文件体积和高熵值表明它可能是一个投放器(dropper)或下载器(downloader),用于下载更大的载荷。 ### 恶意编码与字符串混淆(ROR13 哈希分析) 在对解压后的可执行文件 `group5_unpacked.exe` 进行深入静态分析(使用 IDA Pro)时,发现了一个位于 `.fdfz` 区段的定制字符串解码例程。恶意软件并未存储明文的 API 名称(如 `"VirtualProtect"`、`"BCryptEncrypt"`),而是存储哈希值,并在运行时计算硬编码字符串的哈希以进行解析。这种技术隐藏了所有敏感 API 名称,使其免受标准静态分析工具的影响。 #### ROR13+ADD 解码循环 以下汇编代码(从 IDA Pro 提取)实现了核心哈希算法: ``` loc_14000502D: xor rax, rax lodsb ; load next byte from [RSI] cmp al, 61h ; compare with 'a' jl short loc_140005037 sub al, 20h ; convert lowercase to uppercase loc_140005037: ror r9d, 0Dh ; rotate current hash right by 13 bits add r9d, eax ; add the byte value to the hash loop loc_14000502D ``` 算法工作原理如下: - 逐个加载字符串的每个字节。 - 将小写字母转换为大写(大小写不敏感的哈希)。 - 将当前 32 位哈希循环右移 13 位(`ror r9d, 0Dh`)。 - 将字节值加到哈希中。 - 对字符串长度重复循环。 计算出的最终哈希值将与预存值进行比较。如果匹配,恶意软件即识别出要解析的 API。 截图参考自 IDA Pro 分析: ![截图 35](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/afd2c44eb5032822.png) *截图 35:IDA Pro 视图,显示 `.fdfz` 区段的入口点及 ROR13 解码循环的起始位置。* ![截图 36](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/614ee5fbf5032822.png) *截图 36:主解码循环,包含 `ror r9d, 0Dh` 和 `add r9d, eax` 指令,后跟比较指令 `cmp r9d, r10d`。* ![截图 37](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1f347d1bfa032823.png) *截图 37:成功匹配哈希后,恶意软件遍历 PE 导出表以获取实际 API 地址,然后跳转执行。* **为何此技术有效:** - 无明文 API 名称——对二进制文件运行字符串只会看到哈希值,而非函数名。 - 动态解析——仅有四个 API(`VirtualAlloc`、`VirtualProtect`、`GetProcAddress`、`LoadLibraryA`)被静态导入。所有其他 API(网络、加密、RPC、注册表)均在运行时通过 `GetProcAddress` 解析其哈希值。 - 大小写不敏感——`sub al, 20h` 指令确保无论大小写都能生成相同哈希,提高可靠性。 **与动态分析的关联:** 动态分析中观察到 API Monitor 记录了 554 次 API 调用(如 `BCryptEncrypt`、`RpcBindingFromStringBindingW`、`CryptGetOIDFunctionAddress`),但这些 API 均未出现在静态导入表中。它们均通过 `GetProcAddress` 在运行时解析其哈希值。硬编码的 C2 IP 地址 `212.55.1.3` 和 Base64URL 编码的信道路径也仅在内存转储中被发现,不在原始磁盘文件中。 这种编码技术是定制加壳恶意软件的典型特征,体现了作者规避静态分析及基于签名检测的设计意图。 ## 基础动态分析 **执行者:Muhammad Fahd Khan** ### 概述 基础动态分析是在受控隔离环境中执行可疑文件以观察其运行时行为的过程。与仅检查文件静态特征不同,动态分析关注恶意软件与系统交互的方式,例如进程创建、文件系统变更、注册表修改及网络通信。这有助于更准确地理解其行为,尽管某些操作可能仅在特定条件下触发而保持隐藏。(Sikorski & Honig, 2012) ### 1. 初始 PDF 分析 在进入动态分析之前,我们首先打开 PDF 样本。默认情况下,FlareVM 未安装 Adobe Acrobat 阅读器,因此 PDF 首先在浏览器中打开。 ![截图 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/091287de93032824.png) *截图 1:在浏览器中分析 PDF* 打开 PDF 后,内容看似正常的 Anaconda 文档。但点击其中的链接(经静态分析确认)后,会发现一个钉住的注释包含 `group5.exe`。点击该注释不会产生明显反应(Process Hacker 2 未检测到新进程)。 使用 Adobe Acrobat Reader 检查是否有即时反应,例如自动脚本执行、尝试提取嵌入内容或异常提示。这些行为可能揭示恶意软件初始感染链的线索。 ![截图 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/01b5bf6d6a032825.png) *截图 2:在 Adobe Acrobat 中分析 PDF* 如上所见,可执行文件是在最新版本的 Adobe Acrobat 中打开的。由于 PDF 无法直接打开 `.exe` 文件(与 Acrobat 不同),因此可执行文件被嵌入其中。经过部分修改后,Acrobat 可以打开该文件。 我们注意到 PDF 中的所有 URL(这些 URL 在静态分析阶段已出现)均看似指向合法的 Anaconda 文档。文件打开后,我们发现一个钉住的注释包含 `group5.exe`,并巧妙地放置在“Anaconda 包列表”链接上方。普通用户点击该链接时可能会意外执行文件。 这意味着当前文件是一个**特洛伊木马化 PDF**,其中包含一个可执行文件,且设计成看起来完全合法。 为解压从 PDF 中提取的 ZLIB 数据,使用了 **CyberChef**。 ![截图 3](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2a9b1a5f62032826.png) *截图 3:使用 CyberChef(1)* 通过“识别文件类型”确认其为 **zlib 压缩**。为逆向该数据,应用了 **zlib解压**操作。 ![截图 4](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d99e58723e032827.png) *截图 4:使用 CyberChef(2)* 如上所示,应用 zlib 解压后得到了一个 PE 文件,其提示信息为“此程序无法在 DOS 模式下运行”,证实了其可执行文件性质。 ### 2. 系统与进程监控 使用 **Procmon** 和 **Process Hacker** 监控恶意软件在运行时的行为,包括进程创建、文件系统变更、注册表修改及 DLL 加载。 使用 Procmon 时,我们可以看到该恶意软件对文件、注册表的创建、读取与关闭操作。 ![截图 5](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6381667e22032829.png) *截图 5:使用 ProcMon* 如截图所示,恶意软件能够创建、读取并关闭文件,同时修改注册表项。我们可以保存这些数据以便后续使用不同工具进一步分析。 为解析和整理从 ProcMon 获取的原始数据,使用了基于 Python 的 **Noriben** 脚本,该脚本利用 ProcMon 提供简洁报告。 ![截图 6](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ce7de787b9032830.png) *截图 6:使用 Noriben* 这使得识别关键变更(如文件活动、注册表修改和网络流量)更为便捷。生成的报告(已过滤除可执行文件外的其他内容)如下所示。 ``` Processes Created: ================== [CreateProcess] Explorer.EXE:4220 > "%UserProfile%\Desktop\group5_unpacked.exe " [Child PID: 7108] File Activity: ================== [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\MetaData\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: d873ac24ba079700073b93d7c2950ad652c3ad9437bcee15d31c60c3c87baabe] [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\Content\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: fe4b63ad9f486b7664c240397ccdee91fabf15df5ccd39b80b0eeaa6a47b86e4] [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\MetaData\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: d873ac24ba079700073b93d7c2950ad652c3ad9437bcee15d31c60c3c87baabe] [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\Content\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: fe4b63ad9f486b7664c240397ccdee91fabf15df5ccd39b80b0eeaa6a47b86e4] [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\MetaData\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: d873ac24ba079700073b93d7c2950ad652c3ad9437bcee15d31c60c3c87baabe] [CreateFile] group5_unpacked.exe:7108 > %LocalAppData%Low\Microsoft\CryptnetUrlCache\Content\57C8EDB95DF3F0AD4EE2DC2B8CFD4157 [SHA256: fe4b63ad9f486b7664c240397ccdee91fabf15df5ccd39b80b0eeaa6a47b86e4] Registry Activity: ================== [RegSetValue] group5_unpacked.exe:7108 > HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\ProxyBypass = 1 [RegSetValue] group5_unpacked.exe:7108 > HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\IntranetName = 1 [RegSetValue] group5_unpacked.exe:7108 > HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\UNCAsIntranet = 1 [RegSetValue] group5_unpacked.exe:7108 > HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\AutoDetect = 0 Network Traffic: ================== [TCP] group5_unpacked.exe:7108 > 212.55.1.3:8085 [TCP] 212.55.1.3:8085 > group5_unpacked.exe:7108 [UDP] group5_unpacked.exe:7108 > 192.168.79.132:53 [UDP] 192.168.79.132:53 > group5_unpacked.exe:7108 [TCP] group5_unpacked.exe:7108 > 192.0.2.123:80 [TCP] 192.0.2.123:80 > group5_unpacked.exe:7108 Unique Hosts: ================== 192.0.2.123 212.55.1.3 ``` 就文件活动而言,恶意软件反复向 Windows CryptnetUrlCache 目录写入内容,具体创建并修改元数据与内容缓存文件。恶意软件可能试图操控证书信任机制。 关于注册表修改,恶意软件在 `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap` 下修改了四个键,将 `ProxyBypass`、`IntranetName` 与 `UNCAsIntranet` 设为 1,同时将 `AutoDetect` 设为 0。此举旨在禁用代理检测并降低 Windows 互联网安全区域限制。 在网络通信方面,恶意软件建立了到 `212.55.1.3:8085` 的 TCP 连接,并连接至 `192.0.2.123:80`。后者是 RFC 5737 中定义的文档地址,用于测试与文档编写。 使用 **Process Hacker 2** 可观察恶意软件的运行时状态,通过检查其加载的模块、内存区域及环境路径。 在“模块”标签页中,我们看到以下 DLL 被加载: | 名称 | 基地址 | 大小 | 描述 | |------|--------|------|------| | advapi32.dll | 0x7ff8e2660000 | 700 kB | 高级 Windows 32 基础 API | | bcryptprimitives.dll | 0x7ff8e0fd0000 | 520 kB | Windows 加密原语库 | | clbcatq.dll | 0x7ff8e2c90000 | 676 kB | COM+ 配置目录 | | combase.dll | 0x7ff8e2130000 | 3.33 MB | Microsoft COM for Windows | | gdi32.dll | 0x7ff8e16e0000 | 176 kB | GDI 客户端 DLL | | gdi32full.dll | 0x7ff8e1190000 | 1.08 MB | GDI 客户端 DLL | | iertutil.dll | 0x7ff8d7350000 | 2.69 MB | Internet Explorer 运行时工具 | | imm32.dll | 0x7ff8e2770000 | 192 kB | 多用户 Windows IMM32 API 客户端 DLL | | IPHLPAPI.DLL | 0x7ff8e0000000 | 240 kB | IP 辅助 API | | kernel.appcore.dll | 0x7ff8deb10000 | 72 kB | AppModel API 主机 | | kernel32.dll | 0x7ff8e2070000 | 764 kB | Windows NT 基础 API 客户端 DLL | | KernelBase.dll | 0x7ff8e0ca0000 | 2.96 MB | Windows NT 基础 API 客户端 DLL | | locale.nls | 0x400000 | 804 kB | — | | msvcp_win.dll | 0x7ff8e1510000 | 628 kB | Microsoft® C 运行时库 | | msvcrt.dll | 0x7ff8e1740000 | 632 kB | Windows NT CRT DLL | | mswsock.dll | 0x7ff8e0310000 | 424 kB | Microsoft Windows Sockets 2.0 服务提供程序 | | mswsock.dll.mui | 0x550000 | 12 kB | Microsoft Windows Sockets 2.0 服务提供程序 | | netutils.dll | 0x7ff8e0110000 | 48 kB | Net Win32 API 辅助 DLL | | nsi.dll | 0x7ff8e1970000 | 32 kB | NSI 用户模式接口 DLL | | ntdll.dll | 0x7ff8e3550000 | 1.97 MB | NT 层 DLL | | oleaut32.dll | 0x7ff8e15b0000 | 820 kB | OLEAUT32.DLL | | OnDemandConnRouteHelper.dll | 0x7ff8d0050000 | 92 kB | 按需连接路由助手 | | profapi.dll | 0x7ff8e0b70000 | 124 kB | 用户配置文件基础 API | | R000000000006.clb | 0x4d0000 | 28 kB | — | | rpcrt4.dll | 0x7ff8e1840000 | 1.15 MB | 远程过程调用运行时 | | sechost.dll | 0x7ff8e1a60000 | 624 kB | SCM/SDDL/LSA 查找 API 主机 | | SHCore.dll | 0x7ff8e25b0000 | 692 kB | SHCORE | | shlwapi.dll | 0x7ff8e1b00000 | 340 kB | Shell 轻量级实用库 | | SortDefault.nls | 0x8a0000 | 3.22 MB | — | | srvcli.dll | 0x7ff8d6f90000 | 160 kB | 服务器服务客户端 DLL | | sspicli.dll | 0x7ff8e0b20000 | 200 kB | 安全支持提供程序接口 | | ucrtbase.dll | 0x7ff8e1090000 | 1 MB | Microsoft® C 运行时库 | | urlmon.dll | 0x7ff8d6fc0000 | 1.92 MB | OLE32 扩展用于 Win32 | | user32.dll | 0x7ff8e2940000 | 1.61 MB | 多用户 Windows USER API 客户端 DLL | | win32u.dll | 0x7ff8e0fa0000 | 136 kB | Win32u | | windows.storage.dll | 0x7ff8ded10000 | 7.57 MB | Microsoft WinRT 存储 API | | winhttp.dll | 0x7ff8d99f0000 | 1.04 MB | Windows HTTP 服务 | | wininet.dll | 0x7ff8cf710000 | 4.85 MB | Win32 Internet 扩展 | | winnsi.dll | 0x7ff8da850000 | 44 kB | 网络存储信息 RPC 接口 | | wldp.dll | 0x7ff8e5b0000 | 184 kB | Windows 锁定策略 | | ws2_32.dll | 0x7ff8e27a0000 | 428 kB | Windows Socket 2.0 32 位 DLL | **表 1:** Process Hacker 2 模块选项卡结果 其中,`ws2_32.dll`、`mswsock.dll`、`winhttp.dll`、`wininet.dll`、`urlmon.dll`、`IPHLPAPI.dll` 和 `OnDemandConnRouteHelper.dll` 均用于网络通信或处理 HTTP 请求与 URL 下载。 而 `sspicli.dll`、`sechost.dll` 和 `wldp.dll` 提供 Windows 身份验证支持(Kerberos 与 NTLM)。此外,`cryptnet.dll` 用于查询证书信任列表(CTL),这直接关联到后续观察到的 `ctldl.windowsupdate.com` 通信行为。 众所周知,`windows.storage.dll`、`kernel32.dll`、`KernelBase.dll`、`ntdll.dll` 等用于系统级操作;`bcryptprimitives.dll` 是 Windows 核心加密库,实现哈希、加密与签名功能。 RPC 相关库(`rpcrt4.dll`、`srvcli.dll`、`netutils.dll`)以及认证/网络 DLL 组合表明该样本具备信息收集与 C2 通信能力。 鉴于 `group5_unpacked.exe` 体积仅 8 KB,却加载了丰富的 DLL,其角色很可能是**加载器/投放器**,主要负责初始访问、联系远程 C2 并下载后续载荷。 ### 3. 注册表修改分析 使用 **Regshot** 快速比对注册表在执行前后差异。 ![截图 8](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8219e6c081032831.png) *截图 8:使用 Regshot* 结果显示共检测到 107 项注册表变更。过滤后确认,恶意软件仅修改了 `HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap` 下的四个键:`ProxyBypass`、`IntranetName`、`UNCAsIntranet` 设为 1,`AutoDetect` 设为 0。此举旨在禁用代理检测并降低互联网安全限制。 与 Regshot 一致,**Autoruns** 执行后未发现新增可疑服务、启动项或计划任务。 **ProcDot** 将 ProcMon 日志转换为可视化关系图,显示进程 `6936` 与 `6980` 均发起连接至 `212.55.1.3`,并修改了相同的 ZoneMap 注册表项。 ### 4. 沙箱分析 **ANY.RUN** 是一个交互式在线恶意软件沙箱。 ![截图 11](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/58c6b0fc66032832.png) *截图 11:使用 ANY.RUN(1)* 执行 `group5_unpacked.exe` 后,底部显示 `[2960] group5_unpacked.exe`。 ![截图 12](https://raw.githubusercontent.com/Krunal-Thumar/CSEC476-Group5-Malware-Analysis-Project/main/Screenshots/basic_dynamic_18.png) *截图 12:使用 ANY.RUN(2)* 点击 IOC 按钮后显示哈希值、IP `212.55.1.3` 及与 OCSP/CRL 相关的 URL。这些通常表示证书验证活动,不一定代表 C2 通信。 ![截图 13](https://raw.githubusercontent.com/Krunal-Thumar/CSEC476-Group5-Malware-Analysis-Project/main/Screenshots/basic_dynamic_19.png) *截图 13:使用 ANY.RUN(3)* MITRE ATT&CK 矩阵显示两项技术:`T1106`(原生 API)与 `T1129`(共享模块),均为低风险行为。 ![截图 15](https://raw.githubusercontent.com/Krunal-Thumar/CSEC476-Group5-Malware-Analysis-Project/main/Screenshots/basic_dynamic_21.png) *截图 15:使用 ANY.RUN(5)* 该样本能够读取 Internet Explorer 设置、主机名及支持语言,均为信息收集行为。 **Hybrid Analysis** 报告与 ANY.RUN 结果相似。攻击技术总结如下: | ATT&CK ID | 名称 | 战术 | 描述 | |-----------|------|------|------| | T1106 | Native API | 执行 | 调用原生操作系统 API 执行行为 | | T1129 | Shared Modules | 执行 | 通过加载共享模块执行恶意载荷 | | T1204.002 | Malicious File | 执行 | 用户打开恶意文件触发执行 | | T1112 | Modify Registry | 防御规避、持久化 | 修改注册表以规避检测或维持持久性 | | T1055.011 | Extra Window Memory Injection | 防御规避、权限提升 | 通过额外窗口内存注入代码 | | T1055.004 | Asynchronous Procedure Call | 防御规避、权限提升 | 通过 APC 注入代码 | | T1497.001 | System Checks | 防御规避、发现 | 执行系统检查以检测虚拟环境 | | T1622 | Debugger Evasion | 防御规避、发现 | 尝试检测并避免调试器 | | T1027 | Obfuscated Files or Information | 防御规避 | 对文件或信息进行混淆 | | T1480 | Execution Guardrails | 防御规避 | 使用环境条件控制执行 | | T1027.002 | Software Packing | 防御规避 | 对软件进行打包 | | T1003 | OS Credential Dumping | 凭证访问 | 尝试转储操作系统凭证 | | T1012 | Query Registry | 发现 | 查询注册表获取系统信息 | | T1082 | System Information Discovery | 发现 | 收集操作系统与硬件信息 | | T1057 | Process Discovery | 发现 | 枚举运行中的进程 | | T1083 | File and Directory Discovery | 发现 | 枚举文件与目录 | | T1007 | System Service Discovery | 发现 | 枚举系统服务 | | T1071.001 | Web Protocols | 命令控制 | 使用 Web 协议通信以避免检测 | | T1071 | Application Layer Protocol | 命令控制 | 使用 OSI 应用层协议通信 | | T1090.001 | Internal Proxy | 命令控制 | 使用内部代理路由 C2 流量 | | T1071 | Application Layer Protocol | 命令控制 | 使用 OSI 应用层协议通信 | **Threat.zone** 分析显示该样本可修改注册表、具备逃避能力、进行文件操作并建立网络连接。值得注意的是,该平台检测到一次 **DLL 侧加载攻击**,但其他沙箱未捕获此行为。 ### 5. 网络分析 **FakeNet‑NG** 是一个用于动态网络分析的开源工具,通过模拟真实服务拦截并重定向恶意软件的网络通信。 ![截图 19](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/36341fd3ca032835.png) *截图 19:使用 Wireshark(1)* 借助 Wireshark 与 FakeNet‑NG,我们观察到恶意软件尝试连接 `212.55.1.3:8085`。深入分析显示通信始于 TLS 1.2 握手(Server Hello、Certificate、Key Exchange、Change Cipher Spec),之后流量加密,无法直接查看载荷内容。 ![截图 20](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/23b79407a6032837.png) *截图 20:使用 Wireshark(2)* DNS 查询显示对常见合法域名(如 Windows Update、Adobe)的解析。所有响应被 FakeNet‑NG 重定向至占位 IP,未发现可疑 DNS 请求。 ![截图 21](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/54dfda1495032838.png) *截图 21:使用 Fakenet* Fakenet 报告指出,恶意软件尝试连接 `ctldl.windowsupdate.com`——一个合法的 Microsoft 域,用于下载证书信任列表(CTL)。该流量被伪装成合法的证书更新行为。 ![截图 22](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6086adbbed032839.png) *截图 22:Fakenet 生成的报告* Fakenet 在关闭前会生成 PCAP 文件。进一步分析该捕获文件发现,HTTP 流量确实指向 `ctldl.windowsupdate.com`。但需注意,FakeNet 会拦截所有 DNS 查询并返回伪造响应,因此该流量是分析环境产物,不代表真实行为。 ![截图 23](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a43029087e032840.png) *截图 23:Fakenet 生成的 PCAP* 另一 **threat.zone** 生成的 PCAP 显示,恶意软件执行了针对 `config.edge.skype.com` 的 DNS 查询——这是一个合法的 Microsoft 域名,常用于 Internet Explorer。该行为与之前修改的 ZoneMap 注册表项一致,旨在影响 IE 安全区域设置。 ![截图 24](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6f43bf9167032841.png) *截图 24:threat.zone 生成的 PCAP* **Who-dis** 工具用于查询 IP `212.55.1.3` 的来源信息。结果显示该 IP 属于西班牙的 **EUSKALTEL** 组织(一家住宅 ISP),表明攻击者可能使用被入侵的家庭或企业设备作为 C2 服务器以规避黑名单。 ![截图 25](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a1ab6440d2032842.png) *截图 25:Who-dis 查询结果* **DomainTools** 进一步确认该组织的 DNS 记录,并指出其使用 HTTP(非 HTTPS)访问一个知名商店页面。 ![截图 26](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8674c82af8032843.png) *截图 26:DomainTools 查询结果* ### 6. 内存分析 **ProcDump** 用于创建 `group5_unpacked.exe` 的内存转储。 ![截图 27](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/da2dc984cb032843.png) *截图 27:使用 ProcDump* 随后使用 **WinPMEM** 捕获完整物理内存。 ![截图 28](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b2116d590a032845.png) *截图 28:使用 WinPMEM* **PE-sieve** 扫描运行中进程,检测内存中的可执行文件与磁盘文件之间的差异。 ![截图 29](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2e2e3bf15f032846.png) *截图 29:使用 PE-sieve* 与 Process Hacker 2 对比,未发现差异。当 FakeNet 关闭时,额外加载了 23 个 DLL,包括 `schannel.dll`、`crypt32.dll`、`cryptnet.dll` 等。这些 DLL 解释了观察到的网络与加密行为:`cryptnet.dll` 用于查询证书信任列表,解释了与 `ctldl.windowsupdate.com` 的通信;`rsaenh.dll`、`bcrypt.dll` 等提供加密功能;`dnsapi.dll` 支持 DNS 解析。 **Hollows Hunter** 用于检测进程空洞(Process Hollowing)。结果显示 `group5_unpacked.exe` 被标记为“非可疑”,表明该样本未使用进程注入技术。 ![截图 31](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3840d37099032847.png) *截图 31:使用 Hollow Hunter* 使用 **Volatility3** 分析内存转储: - `windows.psscan.PsScan` 确认 `group5_unpacked.exe` 存在于内存中。 - `windows.dlllist.DllList` 列出的模块与之前结果一致。 - `windows.malware.pebmasquerade.PebMasquerade` 返回“False False”,表明无 PEB 伪装。 - `windows.handles.Handles` 显示正常句柄类型,无异常。 - `windows.ldrmodules.LdrModules` 显示所有 DLL 均被正确加载,无隐藏模块。 - `windows.hollowprocesses.HollowProcesses` 未检测到空洞进程。 ### 观察 在整个基础动态分析过程中,PDF 被识别为一个包含 8 KB 可执行文件的特洛伊木马化文档。执行后,恶意软件连接 `212.55.1.3`,修改 ZoneMap 注册表项以禁用代理检测,并向 `CryptnetUrlCache` 写入数据。DLL 分析证实了其具备网络、加密与身份验证能力,与一个第一阶段的下载器行为一致。值得注意的是,Process Hacker 2 观察到该进程在执行后不久即终止,这与执行完初始化任务后退出以降低检测概率的行为相符。 沙箱分析(ANY.RUN、Hybrid Analysis)揭示了更多细节,包括系统信息发现、注册表查询以及 MITRE ATT&CK 技术(如软件打包、调试器规避、凭证转储)。Threat.zone 分析还提示了可能的 DLL 侧加载与伪装行为。 内存分析(Volatility3)确认无进程注入、空洞或隐藏模块,表明该下载器以透明方式运行。 网络分析显示,恶意软件对 `config.edge.skype.com` 的 DNS 查询与 ZoneMap 修改导致的 IE 流量变化相关。IP `212.55.1.3` 被追踪至西班牙的 EUSKALTEL ISP,表明攻击者使用被入侵的住宅/企业设备作为 C2 服务器以规避封禁。 ## 高级动态分析 ## 概述 高级动态分析在基础动态分析(由 Muhammad Fahd Khan 执行)的基础上进一步深入。它结合调试器与 API 级监控,研究恶意软件在运行时的内部工作机制。虽然基础分析已识别出注册表修改、网络连接等行为,但高级分析旨在揭示这些行为背后的代码逻辑与规避设计。 本次分析使用的工具包括: - **x64dbg** — 64 位动态调试器,用于基于断点的运行时分析 - **API Monitor v2 (64-bit)** — API 拦截与记录工具,共捕获 554 次运行时调用 - **FakeNet-NG** — 模拟网络环境并拦截 C2 流量(pcap 捕获) - **Wireshark** — 对 pcap 文件进行数据包分析 - **CyberChef** — URL Base64 解码与加密分析 - **SysInternals Strings** — 从内存转储中提取字符串 - **Detect-It-Easy (DIE)** — 识别转储后的载荷类型 - **AbuseIPDB / Shodan** — C2 基础设施威胁情报查询 ## 步骤 1:环境搭建 为安全捕获所有网络活动并实时监控 API 调用,环境搭建顺序至关重要。首先启动 **FakeNet‑NG**,因为它必须在恶意软件尝试建立连接前运行,以拦截首个 C2 信标。若在恶意软件运行后才启动 FakeNet,初始通信将丢失。 随后启动 **API Monitor v2 (64-bit)**,并配置为监控网络、Internet、安全与身份验证相关 API。 最后,以管理员权限启动 **x64dbg**,加载目标样本 `group5_unpacked.exe`。 ![步骤 1 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7f2731f37c032848.jpg) *截图 1:FakeNet‑NG、x64dbg 与 API Monitor 均已运行,屏幕标题显示小组名称与时间戳* ## 步骤 2:在 x64dbg 中加载恶意软件 将恶意样本 `group5_unpacked.exe`(7,680 字节)通过 **File → open** 加载至 x64dbg。文件加载后,调试器立即触发 **系统断点(System Breakpoint)**,此时恶意软件尚未执行任何指令。这为分析者提供了在“干净”状态下检查程序的机会。 此时恶意软件仍处于“加壳”状态,尚未分配内存或发起 C2 通信。与执行完成后相比,当前状态无差异,相当于一张“空白画布”。 ![步骤 2 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b8c4f6f07c032849.jpg) *截图 2:加载后的 group5_unpacked.exe。状态栏显示“System breakpoint reached!”* ## 步骤 3:设置可疑 API 断点 基于高级静态分析结果(VirtualProtect、内核32.dll 等)以及下载器的典型行为,为以下函数设置断点: ### 内存操控(自解压检测) - `kernel32.dll.VirtualAlloc` — 分配内存以容纳解压后的载荷 - `kernel32.dll.VirtualProtect` — 将内存权限从读写改为可执行(关键解压信号) - `kernel32.dll.virtualallocex` — 跨进程内存分配,可能用于注入 - `kernel32.dll.writeprocessmemory` — 向其他进程内存写入代码 ### 进程执行检测 - `kernel32.dll.CreateProcessA / CreateProcessW` — 启动子进程或第二阶段载荷 - `kernel32.dll.WinExec` — 执行 shell 命令 设置断点的主要目的是在恶意软件尝试解压自身时捕获其行为。 ![步骤 3 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/50fc6ab9db032850.jpg) *截图 3:已成功在 VirtualProtect 上设置断点。状态栏显示“Breakpoint at kernel32.VirtualProtect set.”* ![步骤 4 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/abb5f07ff6032851.jpg) *截图 4:x64dbg 中所有已设置的断点列表。包括 VirtualAllocVirtualProtect、VirtualAllocEx、CreateProcessA、CreateProcessW、WriteProcessMemory 与 WinExec。* ## 步骤 4:VirtualProtect 断点命中 — 自解压确认 执行(F9)后,x64dbg 立即在 `kernel32.dll.VirtualProtect` 处暂停。观察 CPU 窗口可知,恶意软件主动调用了 VirtualProtect,且调用栈显示该调用源自 `group5_unpacked.exe` 自身,而非系统进程。 | 关键说明 | 内容 | |----------|------| | **意义** | VirtualProtect 是将 `.fdfz` 段从磁盘上的加密字节转换为内存中可执行代码的标志。权限由 RW(读写)切换为 RX(只读可执行),标志着解压完成。磁盘上的文件始终为混淆状态,真正代码仅存在于内存中。 ![步骤 5 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/875e53a863032852.jpg) *截图 5:x64dbg 暂停在 VirtualProtect。汇编指令 `jmp qword ptr ds:[VirtualProtect]` 高亮显示。状态栏反映当前断点信息。* ## 步骤 5:抵达恶意软件入口点 继续执行(F9),调试器跳转至恶意软件的实际入口点,地址为 `0x0000000140005000`。该地址正是 `.fdfz` 段在内存中的位置,与静态分析一致。入口点位于非标准区段,进一步证实该区段包含主执行代码而非资源数据。 调用栈显示正常线程启动路径: `group5_unpacked.EntryPoint → kernel32.BaseThreadInitThunk → ntdll.RtlUserThreadStart` ![步骤 6 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/71af1b9e5b032853.jpg) *截图 6:调用栈显示已到达恶意软件入口点。* ![步骤 7 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/aa258a5e87032854.jpg) *截图 7:CPU 视图显示入口点 `0x0000000140005000` 处的加壳代码。* ![步骤 8 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b60185ac08032855.jpg) *截图 8:x64dbg、FakeNet‑NG 与 API Monitor 同时运行。* ## 步骤 6:API Monitor — 完整 API 调用链捕获(554 次调用) API Monitor 记录了恶意软件运行期间总共 554 次 API 调用,涵盖三个阶段:加密通信建立、流量伪装与数据加密传输。 ### 阶段 1:认证与 RPC 设置(第 1–50 次调用) 此阶段完成基础初始化与远程过程调用(RPC)配置。关键调用包括: - `bcryptprimitives.BCryptGenRandom` — 生成加密随机数 - `bcryptprimitives.BCryptOpenAlgorithmProvider` / `BCryptCloseAlgorithmProvider` — 初始化加密算法提供器 - `bcryptprimitives.BCryptImportKeyPair`(`RSAPUBLICBLOB`)— 导入 RSA 公钥 - `rpcrt4.RpcBindingFromStringBindingW` / `RpcEpRegister` — 解析并注册 RPC 端点 - `winhttp.WinHttpOpen` / `WinHttpConnect` / `WinHttpOpenRequest` — 建立 HTTP 连接句柄 - `urlmon.URLDownloadToFileW` — 潜在下载触发器(但未实际调用) 这些调用为后续加密通信奠定基础。 (此处可继续展开阶段 2 与阶段 3 的详细调用列表,但为保持文档简洁,建议以表格或时间线形式归档。) --- **注**:完整 API 调用记录建议导出为 CSV 并结合时间轴分析,以进一步关联网络事件与加密行为。 ```markdown ## 第一阶段:RPC 与 Sspi 认证依赖 这一阶段观察到对以下 DLL 文件中 API 的显著依赖:`SspiCli.dll`、`WINNSI.DLL` 和 `sechost.dll`,主要用于 Windows 身份验证配置与 RPC(远程过程调用)绑定: * **RpcStringBindingComposeW** — 构造 RPC 绑定字符串以绑定到 ncalrpc 与 ntsvcs 端点 * **RpcBindingFromStringBindingW** — 建立 RPC 绑定 * **RpcBindingSetAuthInfoExW** — 在 RPC 绑定字符串上设置 Kerberos/NTLM 身份验证 * **NdrClientCall2 / Ndr64AsyncClientCall** — 执行异步 RPC 调用 | | | | --- | --- | **为何这很重要** 尽管这些 API 在第一阶段被使用,但它们暗示恶意软件会在发送信标之前对用户的域凭据及其身份验证环境进行画像。这是针对企业目标的典型行为,恶意软件会根据是否处于加入域的环境调整其操作。此外,RPC 绑定到 ntsvcs 暗示恶意软件正在探测与 Windows 服务相关的基础设施。 ![步骤 9](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/26b1871323032856.jpg) *截图 9:API 监控器显示恶意软件已发起的前 50 个 API 调用。绝大多数调用指向 SspiCli.dll、WINNSI.DLL 与 sechost.dll,表明恶意软件正在建立网络通信通道。* ## 第二阶段:证书处理与加密配置(调用 100–200) 第二阶段引入了 `cryptnet.dll`,负责证书相关操作,同时继续沿用第一阶段的异步网络通信调用 `WINNSI.DLL`。 第二阶段执行的主要操作包括: * **CryptGetOIDFunctionAddress** — 查找 X509_ASN_ENCODING 加密 OID 函数 * **CryptMemAlloc / CryptMemFree** — 为加密操作分配与释放内存 | | | | --- | --- | **为何这很重要** 这一阶段解释了基础动态分析中观察到的所有流向或来自 `ctldl.windowsupdate.com` 的流量。恶意软件利用 Windows CTL(证书信任列表)框架作为掩护,发起看似合法的 HTTPS 证书更新请求(作为正常 Windows 活动的一部分)。安全工具的 Microsoft 域名白名单不会对此类流量触发告警,从而允许恶意软件在发送 C2 信标前保持清晰的通信通道。此外,第 50 到 100 次调用(连接阶段 1 与 2)主要为持续的 WINNSI DLL 异步 I/O 完成操作——证实了阶段 1 中建立的 RPC 通道在整个阶段 2 中仍被使用。 ![步骤 10](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/eaa8faa435032858.jpg) *截图 10:调用 119–156 之间的 API 监控显示使用 cryptnet.dll 执行证书操作,同时配合 WINNSI.DLL 进行异步网络调用。* ## 第三阶段:RSA 公钥加密(调用 400–554) 第三阶段是最后且最关键的一阶段,解释了恶意代码如何加密数据。在调用 200–400 之间存在大量异步 I/O 操作以及加密提供者的初始化。从调用 400 至 554,恶意软件重复执行以下操作,均与 RSA 公钥加密相关: * 通过 **BCryptImportKeyPair** 与 `"RSAPUBLICBLOB"` 将 RSA 公钥导入 `rsaenh.dll` * 通过 **BCryptImportKey** 与 `"OpaqueKeyBlob"` 将会话密钥 BLOB 导入 `ncryptsslp.dll` * 通过 **BCryptEncrypt` 在 `ncryptsslp.dll` 中加密全部 439 字节数据 * 使用 **BCryptDestroyKey` 在 `ncryptsslp.dll` 中销毁密钥(反取证清理) * 通过 **BCryptCloseAlgorithmProvider` 在 `ncryptsslp.dll` 中关闭加密提供者 | | | | --- | --- | **为何这很重要** 构成加密负载共 439 字节,该尺寸足以容纳结构化信标 C2 数据,包括主机名(最多 64 字节)、用户名(最多 64 字节)、操作系统版本字符串、活动/构建 ID 以及最终受害者唯一标识符。由于数据由 C2 服务器的公钥加密,拦截传输中的信标也无法解密。因此,任何被动网络监控都无法让分析员读取通信内容。密钥在每次循环后被销毁代表另一种反取证行为——密钥不会驻留足够长时间以供内存取证工具恢复。 ![步骤 11](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ee7dcca0e9032859.jpg) *截图 11:在调用 530–554 期间,恶意软件使用 BCryptImportKeyPair 加载 “RSAPUBLICBLOB”、调用 BCryptEncrypt 加密 439 字节数据,并多次使用 BCryptDestroyKey——均为 RSA 公钥加密的指示。* ![步骤 12](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/8156dcb6bd032900.jpg) *截图 12:API 监控器捕获了 group5_unpacked.exe 发起的全部 554 次调用,共记录 470 KB 的 API 数据。* ## 第七阶段:FakeNet-NG — C2 连接确认 FakeNet-NG 在恶意软件于调试器上下文中执行时检测并记录了其外发网络通信。主要发现如下: **group5_unpacked.exe (4308) 请求 TCP 212.55.1.3:8085** | | | | --- | --- | **为何这很重要** 恶意软件通过非标准端口 8085 对命令与控制(C2)服务器发起出站 TCP 连接,而非通过 svchost.exe 等合法 Windows 进程。选择该端口是经过故意的;若企业防火墙策略阻止非常规端口的出站流量,则会被检测到;然而许多组织不会限制入站流量。此外,恶意软件通过 svchost.exe 持续连接 `ctldl.windowsupdate.com` 以验证证书信任列表“掩护”流量。 ![步骤 13](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/1b932d641a032901.jpg) *截图 13:FakeNet-NG 日志显示 “group5_unpacked.exe (4308) 请求 TCP 212.55.1.3:8085”,表明恶意软件已与其命令与控制服务器建立通信。这是分析中最关键的发现。* ![步骤 14](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/466cd682e8032902.jpg) *截图 14:FakeNet-NG 揭示了恶意软件执行的初始网络通信,包括 DNS 请求与 HTTP GET 请求。* ## 第七阶段 B:恶意软件指标(IOC)取证分析 我们同时采用静态与动态方法,验证恶意软件所表现的网络活动是否属实。网络嗅探结果提供了与 C2 主动对话的证据,但使用 `strings` 工具进一步证实传输中使用的规避字符串实际上是硬编码的。 ### 关键发现 * **静态提取 iPad User-Agent**:使用 **strings 工具** 验证 **"Mozilla/5.0 (iPad; CPU OS 17_7_2..."** 被提取于可执行文件,证明为安全规避目的而进行的**硬编码伪装**。 * **C2 目标证明**:在可执行文件中通过 **strings 工具** 发现了 **IP 地址 212.55.1.3**,与实时捕获来源一致,确认为**C2 服务器**。 * **非标准端口通信**:验证二进制文件尝试使用 **TCP 连接至 212.55.1.3 的 8085 端口**,表明恶意软件使用非常规端口上的 HTTP Get 请求以规避检测。 * **确认规避机制**:二进制文件中存在该代码证实了**用户代理字符串**与**C2 通信路径**被用于混淆身份的功能。 | | | | --- | --- | **为何这很重要** 通过字符串工具静态分析数据并结合 Wireshark 动态抓包,共同展示了恶意软件的运行方式。使用字符串工具提取 IOC 还能看到通常被加密的内容(例如 TLS v1.2)。证明 iPad User-Agent 被硬编码进恶意软件二进制文件,表明攻击者有意混淆通信以加载更高层负载。 ![步骤 15](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ffa739f18b032903.png) *截图 15:展示通过 findstr 与 strings 工具从未解压的 **group5_unpacked.exe** 中提取的硬编码 iPad User-Agent 与 C2 目标 IP。* ## 第十阶段:CyberChef — Base64URL 路径分析 对内存转储中 Base64URL 编码的 URL 路径使用 CyberChef(从 base64、url-safe 字母表)转换为原始二进制密文,而非可读明文。由此确认原始编码 URL 路径确实为经 RSA 公钥加密的 Beacon 负载。 ### CyberChef 分析结果 * 输入长度:用于 URL 路径的 Base64URL 编码共 156 个字符 * 解码输出长度:117 字节(解码 156 个 Base64 字符的数学结果) * 解码内容:二进制密文;表现为不可打印字符且无 ASCII 字符串 * 熵/结构:整体熵值极高(Shannon 熵:6.498);该值在 Shannon 熵标度上代表加密数据,远高于英文文本正常范围(正常范围 = 3.5 – 5.0) | | | | --- | --- | **为何这很重要** 熵值 6.498 验证了 URL 路径中传输的数据为加密或高度压缩,而非纯明文命令。尽管解码后尺寸(117 字节)小于典型 4096 位 RSA 块,它仍代表一个紧凑且加密的 C2 通信。这进一步强化了其为基于 GET 的隐蔽信标——所有信标数据直接嵌入 URL 路径,不生成 HTTP BODY 或 POST 数据,从而减少可被 DPI 检测的网络特征。 ![步骤 20](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/d208ec5586032904.png) *截图 20:使用 CyberChef 对 Base64URL 编码的 C2 请求路径解码,结果显示使用 RSA 公钥加密的密文。* ![步骤 21](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/9c47ad02d2032905.png) *截图 21:CyberChef 解码 Base64URL C2 路径,显示 Shannon 熵为 6.498——与预期加密密文一致。* ## 第十一阶段:威胁情报 — C2 基础设施分析 为建立对查询 IP 212.55.1.3 的更广泛威胁上下文,通过 AbuseIPDB 与 Shodan 搜索该 C2 IP 地址。 ![步骤 22](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/ebfab729e1032906.png) *截图 22:AbuseIPDB 对 IP 地址 212.55.1.3 的信誉检查,显示 0% 置信度被滥用,且位于西班牙。* ### AbuseIPDB 发现 * AbuseIPDB 对 212.55.1.3 零举报记录,置信度为 0% 被滥用。 * 212.55.1.3 此前从未被报告至 AbuseIPDB。 * ISP:Euskaltel S.A.(AS12338)——一家真实的西班牙区域性互联网服务提供商,目前作为 MásOrange 的分支机构运营;西班牙最大电信运营商。 * 主机名:`3.212-55-1.static.clientes.euskaltel.es`——确认这是一个静态固定线路客户连接,而非网络托管商或数据中心。 * 位置:西班牙伊伦(巴斯克地区)。 ![步骤 23](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a41d4e6e38032907.png) *截图 23:Shodan 搜索结果显示该 C2 IP 无公开服务,符合攻击者私有基础设施特征。* ### Shodan 发现 * Shodan 同样未收录 212.55.1.3 的任何信息——意味着 Shodan 从未索引该 IP。 * Euskaltel 很可能在 ISP 层面屏蔽了 Shodan 的扫描尝试,这是欧洲住宅/商业 ISP 的常见做法。 * 缺乏 Shodan 数据意味着端口 8085 无法从外部扫描验证是否开放。 | | | | --- | --- | **为何这很重要** 212.55.1.3 的“干净”声誉并不代表其无罪;这意味着该 C2 服务器所有者故意选择此基础设施。IP 为西班牙 Euskaltel 静态客户连接,因此推测 C2 服务器安装于被入侵的家庭/办公设备上,而非租用 VPS 或抗打击主机。使用“合法”基础设施高度成功:客户 ISP 分配的 IP 地址通常不在企业安全软件的阻断列表中,也未被威胁情报数据库(如 AbuseIPDB 与 Shodan)收录。因此,若防御者仅阻断知名恶意 IP,将永远无法识别 212.55.1.3,从而在网络层基于行为分析识别 C2 服务器时面临极大困难。 ## 关键发现总结 | **发现** | **证据** | **分析** | | --- | --- | --- | | C2 IP:212.55.1.3:8085 | FakeNet 日志:group5_unpacked.exe (4308) 请求 TCP 212.55.1.3:8085 | 绕过防火墙规则,使用非常规端口 8085。IP 地址被硬编码在负载的 C2 配置中——因此不可能通过 DNS 获取。C2 配置(含硬编码 IP)被嵌入在负载中。 | | iPad User-Agent 伪装 | Mozilla/5.0 (iPad; CPU OS 17_7_2 like Mac OS X) AppleWebKit/605.1.15 | 最近发布的 iOS 版本(iOS 17.7.2)表明恶意软件作者持续维护规避字符串。合法移动 Safari 流量在 IDS/IPS 中会被识别为正常流量,因为这些系统不会将恶意信标识别为异常。 | | 硬编码 C2 URL 路径 | /MDD4h426r6tTdVJ3Osc_fAms3b1RF...(Base64URL 编码的信标路径) | Base64 URL 编码并非混淆,而是使用 RSA 公钥加密的实际信标负载。由于数据长度与格式表明其包含结构化受害者标识/签到令牌等,RSA 公钥加密确保只有持有私钥的 C2 服务器能解密被截获的流量。 | | RSA 公钥加密 | API 监控:BCryptImportKeyPair (RSAPUBLICBLOB) + BCryptEncrypt(439 字节) | 439 字节长度足以容纳主机名、用户名、操作系统版本和活动 ID。由于信标使用 C2 服务器公钥加密,被动监听网络无法解密。 | | 通过 VirtualProtect 自解压 | x64dbg 中在 kernel32.VirtualProtect 处设置断点,立即在运行时触发 | .fdfz 段从 RW(可读写)转换为 RX(可读可执行)是已知自解压技术。因此,所有恶意代码仅存在于内存中,磁盘上无法直接查看。 | | 证书信任列表滥用 | cryptnet.dll + ctldl.windowsupdate.com 用作掩护流量 | 证书更新流量看似合法,被安全产品白名单的 Microsoft 域名忽略,为实际 C2 通信提供掩护。 | | 非标准 C2 端口 8085 | FakeNet 确认连接至 212.55.1.3:8085 | 尽管企业防火墙通常阻断非常规端口的出站流量,但通常允许 HTTP/HTTPS(80 与 443)流量。因此,使用 8085 作为备用 HTTP 通道仍可正常工作。 | | .fdfz 非标准 PE 段 | 内存映射显示 .fdfz 位于 0x140005000,具有 ERW(可执行/可读/可写)权限 | 非标准段名称常被打包器用于标识自身;ERW 权限在合法代码段中异常,表明恶意软件在运行时解压有效载荷。 | ## 观察 对解压后的可执行文件 `group5_unpacked.exe` 进行高级动态分析,发现一个多阶段下载器,旨在通过执行各阶段进行规避: 1. **自解压(.fdfz / VirtualProtect)**——恶意软件加载入内存后立即从磁盘加密文件转换为内存中的可执行代码。有效载荷无法在不进行动态分析的情况下被静态分析。 2. **基础设施探测(RPC / SspiCli)**——阶段 1 中发起的身份验证调用用于探测域内其他可通信设备。这使恶意软件可在合适时机发送信标以交付第二阶段负载。 3. **掩护流量(cryptnet.dll / ctldl.windowsupdate.com)**——通过发送看似合法的“Microsoft 证书更新”请求隐藏自身通信。安全产品将 Microsoft 域名列入白名单后,这些流量不会被触发告警。 4. **RSA 信标至 C2 服务器(BCryptEncrypt,439 字节)**——由于使用非对称加密加密与 C2 的通信,任何拦截流量的人都无法在未持有 C2 服务器私钥的情况下解密。因此,任何被动流量监控都将失败。 5. **基于 Base64URL 的 GET 格式信标**——使用 Base64URL 编码加密信标以减小 HTTP 流量大小。不生成 HTTP BODY 或 POST 数据,因此 DPI 检测系统可识别的特征更少。 6. **iPad User-Agent 伪造**——每个 C2 请求的 User-Agent 头使用当前版本 iOS(iOS 17.7.2),使 User-Agent 分析系统将所有 C2 流量归类为合法移动 Safari 会话。 7. **非标准端口 8085**——避免基于 DPI 的端口特定规则,但仍能作为 HTTP 通道正常工作。 8. **快速终止**——恶意软件在发送初始检查信标后立即终止,符合第一阶段加载器等待第二阶段负载或 C2 命令的特征。 本次分析进一步验证并扩展了基础动态分析的结果。虽然基础动态分析能够识别 C2(命令与控制)修改的 IP 地址与注册表设置,但高级动态分析解释了其如何利用自定义加密对每个信标进行防护、为何使用证书更新流量与 C2 服务器通信,以及提供了该恶意软件的规避技术细节——这些技术使其能够规避网络取证与内存取证分析。RSA 加密、User-Agent 伪造、基于 GET 的 URL 信标、非常规端口以及利用合法域掩护共同赋予该恶意软件极高的能力以规避传统企业安全控制。 ## 结论 对 `group5.pdf` 及其提取的有效载荷 `group5_unpacked.exe` 的完整分析揭示了一个**多阶段、精心设计的下载器**,旨在执行阶段中实现最大程度的规避。 **恶意软件能力与攻击链:** 1. **投递**——被伪装的 PDF 文档(伪装成 Anaconda 速查表)。PDF 中的固定注释诱导用户打开嵌入的可执行文件而非合法链接。 2. **解压**——嵌入的可执行文件(`extracted.exe`)是 ZLIB 压缩流。解压后得到 `group5_unpacked.exe`,这是一个自定义打包的 PE 文件,包含非标准 `.fdfz` 段。运行时使用 `VirtualAlloc` 与 `VirtualProtect` 将真实有效载荷解压至可执行内存——恶意代码从未接触磁盘。 3. **混淆(静态规避)**——恶意软件采用**基于 ROR13 的哈希 API 解析算法**。仅静态导入四个 API,其余所有 API(网络、加密、RPC、注册表)均在运行时通过嵌入的哈希值解析。这使恶意软件能力对静态分析工具完全不可见。 4. **系统画像与持久化(动态)**——执行后,恶意软件: - 修改 `HKCU\...\Internet Settings\ZoneMap` 键以禁用代理检测并降低安全区域。 - 写入 `CryptnetUrlCache`(证书信任列表缓存)。 - 使用 RPC 与身份验证 API(`SspiCli`、`rpcrt4`)对域凭据与 Windows 服务进行画像。 5. **掩护流量**——恶意软件生成看似合法的 HTTPS 请求至 `ctldl.windowsupdate.com`(Microsoft 证书信任列表),利用 `cryptnet.dll`。由于安全产品对 Microsoft 域名的白名单策略,这些流量被忽略,为实际 C2 通信提供掩护。 6. **C2 通信与加密**——建立至 `212.55.1.3:8085` 的 TCP 连接。使用**RSA 公钥加密**(通过 `BCryptEncrypt` 对 439 字节信标)保护所有 C2 流量。信标随后被 Base64URL 编码并嵌入 HTTP GET 路径(无 HTTP BODY、无 POST 数据)。硬编码的**iPad User-Agent**(iOS 17.7.2)进一步伪装流量为移动 Safari 浏览。 7. **反取证**——使用后立即销毁加密密钥(`BCryptDestroyKey`),防止内存取证恢复。信标发送后快速终止,减少运行时足迹。 8. **基础设施**——C2 IP `212.55.1.3` 为西班牙一家 ISP(Euskaltel)的静态住宅/商业地址,无任何滥用历史且未被 AbuseIPDB 或 Shodan 收录。攻击者使用被入侵的本地设备作为 C2 服务器,规避所有传统阻断列表。 **总体影响**:该恶意软件代表了一个**高度规避的企业级下载器**。其组合的自定义打包、哈希解析 API 解析、RSA 加密、User-Agent 伪造、借助合法基础设施以及掩护流量使其极难通过标准静态分析、沙箱或网络监控检测。只有结合高级静态(IDA Pro、熵分析)、基础动态(Procmon、FakeNet)与高级动态(x64dbg、API 监控、内存转储)技术,才能揭示完整攻击链。 **防御建议:** - 阻断至非标准端口(例如 8085)的出站流量,除非确有必要。 - 监控来自非系统进程的 `ctldl.windowsupdate.com` 请求。 - 部署 TLS 解密(解密)以检测嵌入 URL 路径中的 RSA 加密信标。 - 实施端点检测与响应(EDR),监控将段权限从 RW 更改为 RX 的 `VirtualProtect` 调用。 - 严格执行应用程序白名单——初始投递向量为包含嵌入可执行文件的 PDF。 ## 团队贡献 * **Rania Kanann**:基础静态分析 * **Krunal Thumar**:高级静态分析 * **Muhammad Fahd Khan**:基础动态分析 * **Saeed Falaknaz & Shadi Atieh**:高级动态分析 ## 参考资料 Sikorski, M., & Honig, A. (2012). *Practical malware analysis: The hands-on guide to dissecting malicious software*. No Starch Press. Kaspersky. (2026, March 23). Can PDFs contain viruses? What to do if you’ve opened a PDF scam. /. https://www.kaspersky.com/resource-center/threats/pdf-viruses Mandiant. (n.d.). GitHub - mandiant/flare-fakenet-ng: FakeNet-NG - Next Generation Dynamic Network Analysis Tool. GitHub. https://github.com/mandiant/flare-fakenet-ng foundation, volatility. (2020, October 18). volatilityfoundation/volatility3. GitHub. https://github.com/volatilityfoundation/volatility3 hasherezade. (n.d.). GitHub - hasherezade/hollows_hunter: Scans all running processes. Recognizes and dumps a variety of potentially malicious implants (replaced/implanted PEs, shellcodes, hooks, in-memory patches). GitHub. https://github.com/hasherezade/hollows_hunter hasherezade. (2020, August 1). hasherezade/pe-sieve. GitHub. https://github.com/hasherezade/pe-sieve markruss. (2022, December 12). ProcDump - Sysinternals. Learn.microsoft.com. https://learn.microsoft.com/en-us/sysinternals/downloads/procdump ProcDOT. (n.d.). ProcDOT’s Home. Www.procdot.com. https://www.procdot.com/ Velocidex. (2022, May 26). The WinPmem memory acquisition driver and userspace. GitHub. https://github.com/Velocidex/WinPmem Anyrun. (n.d.). ANY.RUN - Interactive Online Malware Sandbox. Any.run. https://any.run/ ```
标签:API动态解析, DNS 反向解析, .fdfz节, GetProcAddress, LoadLibraryA, PDF dropper, ROR13哈希, Tactics, VirtualAlloc, VirtualProtect, ZLIB压缩, 云安全监控, 可执行文件打包, 合规性检查, 威胁情报, 开发者工具, 恶意PDF, 恶意软件逆向工程, 样本分析, 熵分析, 网络安全, 网络安全审计, 自定义打包, 逆向分析, 逆向工具, 逆向工程实践, 隐私保护, 静态分析, 高熵, 高级动态分析, 高级静态分析, 黑客工具库