skinfolabs/unknown-malware-sample-analysis
GitHub: skinfolabs/unknown-malware-sample-analysis
记录对未知 Windows 恶意软件样本进行静态与动态分析、并映射 MITRE ATT&CK 技术的完整实战调查过程。
Stars: 0 | Forks: 0
截图 001 - 隔离的分析网络: 分析虚拟机配置了内部网络,并且样本被重命名为带有恶意软件分析扩展名的文件。
## 静态分类与初步情报 静态分类提供了关于文件的第一批可靠事实,而无需运行它。在这个阶段,我计算了哈希值,审查了公开的检测数据,并寻找能够指导深入分析的早期特征码。 第一个要点是,哈希值标识的是文件版本,其本身并不代表行为。第二个要点是,公开的检测结果对分类很有用,但调查仍然需要从字符串、导入函数和运行时行为中获取自己的证据。 **已实施的控制措施:** - 计算了样本的 MD5 和 SHA256 值。 - 审查了 VirusTotal 的检测结果和文件元数据。 - 识别了可疑的导入函数和节信息,以供后续分析。 ### 计算文件哈希值 我首先计算了样本的 MD5 和 SHA256 值。这些哈希值用于识别确切的文件版本,将其与威胁情报源进行比较,并一致地记录该工件。 | 哈希类型 | 值 | |-----------|-------| | MD5 | `1d8562c0adcaee734d63f7baaca02f7c` | | SHA256 | `92730427321a1c4ccfc0d0580834daef98121efa9bb8963da332bfd6cf1fda8a` | 截图 002 - 文件哈希计算: 命令提示符显示了为重命名样本计算出的 MD5 和 SHA256 值。
### 审查 VirusTotal 检测结果 在 VirusTotal 中检查了 SHA256 哈希值,以便将样本与公开的防病毒和威胁情报数据进行比对。检测视图显示许多引擎将该文件识别为恶意,这支持了进行更深入的分析,而不是立即信任它。 截图 003 - VirusTotal 检测摘要: VirusTotal 报告显示该样本哈希值具有很高的恶意检测率。
### 审查 VirusTotal 中的 PE 元数据和可疑导入函数 VirusTotal 还显示了有用的 PE 元数据,包括目标机器类型、编译时间戳、节数据和导入的 DLL。其中 `urlmon.dll` 和 `wininet.dll` 导入函数尤为突出,因为它们通常被 Windows 程序用于 Web 和互联网功能。 截图 004 - VirusTotal PE 导入和节信息: VirusTotal 突出显示了 PE 节、虚拟/原始大小,以及与网络相关的导入函数,包括 `URLDownloadToFileW`、`InternetOpenUrlW` 和 `InternetOpenW`。
## 字符串提取与 PE 结构 在初步分类之后,我使用字符串提取和 PE 检查来了解样本可能尝试执行的操作。这一阶段揭示了命令行删除例程、一个可疑的 HTTP URL、一个公共用户文档路径,以及与 Windows 可执行文件一致的 PE 元数据。 这里的主要调查价值在于关联。单个字符串可能会产生误导,但是一个命令字符串、一个 URL、一个 API 导入加上匹配的运行时行为,共同构成了更有力的证据。 **已实施的控制措施:** - 使用 FLOSS 提取静态和解码后的字符串。 - 识别出延迟的自删除命令。 - 识别出可疑的 HTTP URL 和释放的文件路径。 - 审查了 PE 头、时间戳、节和导入目录数据。 ### 使用 FLOSS 提取字符串 我使用 FLOSS 从样本中提取可读和解码后的字符串。FLOSS 在恶意软件分类中非常有用,因为它可以恢复常规的静态字符串以及一些使用基础字符串查看器不明显就能看到的混淆字符串。 截图 005 - FLOSS 静态字符串计数: FLOSS 完成处理并报告从样本中提取的字符串。
### 识别解码后的命令和网络特征码 解码后的字符串揭示了一个使用 `cmd.exe`、`ping` 和 `del` 的命令,以及一个可疑的 HTTP URL 和位于 `C:\Users\Public\Documents` 下的文件路径。这种组合表明样本可能会延迟执行、通过 HTTP 进行通信、创建或存放文件,并从磁盘中删除工件。 ``` cmd.exe /C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del /f /q "%s" ``` | 特征码 | 值 | 调查含义 | |-----------|-------|-----------------------| | 可疑 URL | `http://ssl-6582datamanager.helpdeskbros.local/favicon.ico` | 硬编码的 HTTP 资源,在引爆期间被观察到 | | 公共目录路径 | `C:\Users\Public\Documents\CR433101.dat.exe` | 样本随后创建文件的位置 | | User agent | `Mozilla/5.0` | 在静态输出中观察到的 Web 客户端样式字符串 | | 延迟和删除命令 | `cmd.exe /C ping ... & Del /f /q "%s"` | 可能的延迟自删除例程 | 截图 006 - FLOSS 解码后的命令和 URL: FLOSS 输出显示了命令字符串、可疑的 HTTP URL、user-agent 字符串和释放的文件路径。
### 确认文件是 Windows PE 可执行文件 我在 PEview 中打开了样本以检查文件结构。该文件以 `MZ` 字节开头,这是 Windows PE 文件开头使用的 DOS 头签名。 截图 007 - PEview DOS 头 MZ 签名: PEview 显示了 DOS 头以及用于将该文件识别为 Windows PE 样式可执行文件的 `4D 5A` 字节。
### 审查 PE 头时间戳和目标架构 PE 头视图显示了与 Intel 386 或更高版本处理器一致的目标机器值,以及 `2021-09-04 18:11:12 UTC` 的编译时间戳。这为二进制文件提供了背景信息,但并不能证明攻击者何时使用过它。 截图 008 - PEview 文件头时间戳: PEview 显示了文件头、机器类型、时间戳、节的数量以及可执行文件的特征。
### 比较虚拟大小和原始大小 我比较了节的虚拟大小和原始大小,以寻找加壳或异常节布局的明显迹象。在这个样本中,各节的大小相当接近,因此证据不足以有力地证明该样本被加壳或经过重度压缩。 截图 009 - PEview 节大小比较: PEview 显示了节的数据,用于比较内存布局与存储在磁盘上的原始数据。
### 审查 PE 导入目录 导入目录显示了程序在运行时可能调用的 API 和 DLL。与网络相关的导入函数尤为重要,因为它们与 FLOSS 发现的硬编码 URL 相匹配。 截图010 - PEview 导入目录审查: PEview 显示了导入的函数,包括支持网络通信假设的与互联网相关的 API。
## API 和导入函数调查 下一阶段侧重于导入的 API 及其含义。该样本从 `urlmon.dll` 和 `wininet.dll` 导入函数,这些是支持下载内容和打开 Web 资源的 Windows 库。 这并不能自动证明存在恶意的下载行为。然而,当这些导入函数与硬编码的 HTTP URL、输出文件路径以及引爆期间观察到的网络流量一起出现时,它们就变得非常可疑了。 **已实施的控制措施:** - 在 PEstudio 中审查了导入的库和 API。 - 将可疑的导入函数与 Windows API 的含义联系起来。 - 使用 MalAPI 和 Microsoft 参考资料解释与网络相关的函数。 - 对未完全观察到的行为保持低置信度分类。 ### 在 PEstudio 中检查导入的网络 API PEstudio 突出显示了与 Web 通信相关的导入函数,包括 `URLDownloadToFileW`、`InternetOpenW` 和 `InternetOpenUrlW`。这些函数在良性软件中也很常见,但在本样本中它们之所以重要,是因为该文件还包含一个 HTTP 特征码。 截图 011 - PEstudio 导入的网络 API: PEstudio 列出了导入的 API,包括 `URLDownloadToFileW`、`InternetOpenW` 和 `InternetOpenUrlW`。
### 在 PEstudio 中审查特征码和嵌入路径 PEstudio 还显示了可疑的字符串和特征码,包括硬编码的 HTTP URL 和本地文件路径。这证实了使用 FLOSS 发现的相同工件也可以从另一个静态分析工具中看到。 截图 012 - PEstudio 特征码和字符串: PEstudio 显示了可疑的特征码,包括 HTTP URL、本地路径以及编码或高关注度的字符串。
### 将 WinINet 的使用与 Web 行为关联起来 利用 WinINet 参考上下文来理解为什么从 `wininet.dll` 导入的函数是相关的。WinINet 为 Windows 应用程序提供了更高层次的互联网功能,包括通过如 `InternetOpenUrlW` 等函数进行 HTTP 通信。 截图 013 - Microsoft WinINet 参考上下文: 参考资料解释了 WinINet 的功能以及为什么这些导入函数与 HTTP 行为相关。
### 审查 URLDownloadToFile 行为 我检查了 `URLDownloadToFile` 函数,因为该样本导入了 `URLDownloadToFileW`。函数名称和 API 参考表明它可以从 URL 检索数据并将其保存为本地文件。 截图 014 - MalAPI URLDownloadToFile 参考: MalAPI 解释了 `URLDownloadToFile` 可以从互联网下载数据并将其保存到文件中。
### 比较相关的可疑 API API 概览有助于比较 `URLDownloadToFile`、WinINet 函数以及恶意软件调查中出现的其他函数。这一步有助于解释,但结论仍然依赖于该样本的具体证据。 截图 015 - MalAPI 网络 API 概览: MalAPI 展示了在恶意软件调查期间常被审查的 API 表格,包括与网络相关的函数。
## 动态分析与行为验证 在静态分析之后,我在隔离的实验环境中执行了样本,同时监控网络、文件系统和注册表行为。目的是验证哪些静态特征码在运行时被实际使用。 这一阶段证实了向硬编码主机发出的 HTTP 请求,在公共目录下创建 `CR433101.dat.exe`,以及与系统和浏览器配置相关的注册表查询。它并没有确认成功下载了第二阶段的 payload,并且在此实验运行中创建的文件是空的。 **已实施的控制措施:** - 在受控的虚拟机中引爆样本。 - 使用 INetSim 模拟 HTTP 和 DNS 服务。 - 使用 Wireshark 捕获网络行为。 - 使用 Process Monitor 监控文件和注册表行为。 ### 利用模拟网络服务引爆样本 当样本执行时,它生成了一个对 `ssl-6582datamanager.helpdeskbros.local` 请求 `/favicon.ico` 的 HTTP GET 请求。这与静态分析期间发现的 URL 相匹配,证实了硬编码的主机在运行时被使用。 截图 016 - INetSim HTTP GET 请求: INetSim 和数据包证据显示样本正在向硬编码的主机请求 `/favicon.ico`。
### 验证文件创建和写入活动 Process Monitor 显示样本创建并向 `C:\Users\Public\Documents\CR433101.dat.exe` 进行了写入操作。这验证了在字符串提取期间发现的释放文件路径。 截图 017 - ProcMon 文件写入活动: Process Monitor 捕获了在公共文档文件夹中涉及创建和写入 `CR433101.dat.exe` 的操作。
### 检查释放的文件位置 执行后,释放的文件在 `C:\Users\Public\Documents` 中可见。该文件名使用了双扩展名样式 `CR433101.dat.exe`,这可以使它看起来像数据文件,但实际上仍可执行。在此次实验运行中,创建的文件是空的,不包含有效的 payload。 截图 018 - 公共文档中的释放文件: 文件资源管理器显示在 `C:\Users\Public\Documents` 下创建了 `CR433101.dat.exe`。
### 解释不完整的 dropper 链 静态证据通过 `URLDownloadToFileW` 展示了 downloader 样的能力,动态证据也证实了向硬编码主机发出的请求。然而,由于真实域名不可用且实验室使用了模拟服务,该样本没有接收到或创建完整的 payload。 ### 审查执行期间的注册表查询 Process Monitor 还显示了与计算机名和 Internet Explorer 安全设置相关的注册表查询。这些查询与基于 WinINet 的行为和基础系统发现相一致,但它们并不能证明其进行了凭据访问或持久化。 截图 019 - ProcMon 注册表查询活动: Process Monitor 显示了在样本执行期间与系统和浏览器配置相关的注册表查询。
## 调查发现 结合静态和动态证据,该样本的行为类似于第一阶段的 loader 或 dropper。它通过命令外壳序列进行检查或延迟,联系硬编码的 HTTP 主机,将文件写入公共目录,并执行注册表查询。 调查并没有证明存在完整的 payload 下载。尽管样本导入了 `URLDownloadToFileW` 并联系了可疑的主机,但可用的动态证据仅显示了 `/favicon.ico` 请求和本地文件的创建。在捕获的流量中没有观察到完整的可执行文件下载,并且创建的 `CR433101.dat.exe` 文件是空的。 **已确认的行为:** - 该文件哈希被许多 VirusTotal 引擎检测为恶意。 - 该样本包含延迟的自删除命令模式。 - 该样本包含硬编码的 HTTP URL 和公共目录可执行文件路径。 - 该样本从 `urlmon.dll` 和 `wininet.dll` 导入具备网络功能的 API。 - 运行时行为证实了向硬编码主机发出了 HTTP GET 请求。 - 运行时行为证实了对 `CR433101.dat.exe` 的创建/写入活动。 - 创建的 `CR433101.dat.exe` 文件是空的,在此次实验运行中不包含有效的 payload。 - 运行时行为显示了与系统/浏览器上下文相关的注册表查询。 **在此次实验运行中未确认:** - 未观察到完整的次级 payload 下载。 - 未观察到持久化机制。 - 未观察到进程注入。 - 未观察到凭据访问。 - 硬编码的主机未被证实是公开确认的 C2 基础设施。 - 公开信誉检查未返回关于该硬编码域名的有用信息。 ## 妥协指标 | 类型 | 指标 | |------|-----------| | MD5 | `1d8562c0adcaee734d63f7baaca02f7c` | | SHA256 | `92730427321a1c4ccfc0d0580834daef98121efa9bb8963da332bfd6cf1fda8a` | | 文件名 | `Unknown.exe` | | 释放文件 | `C:\Users\Public\Documents\CR433101.dat.exe` | | 释放文件状态 | 在此次实验运行中为空 / 无功能 | | URL | `http://ssl-6582datamanager.helpdeskbros.local/favicon.ico` | | 域名 / 主机 | `ssl-6582datamanager.helpdeskbros.local` | | 可疑命令 | `cmd.exe /C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del /f /q "%s"` | | PDB 路径 | `C:\Users\Matt\source\repos\Hack\src\DownloadFromURL\Release\DownloadFromURL.pdb` | | 导入的 DLL | `urlmon.dll` | | 导入的 DLL | `wininet.dll` | | 导入的 API | `URLDownloadToFileW` | | 导入的 API | `InternetOpenW` | | 导入的 API | `InternetOpenUrlW` | ## MITRE ATT&CK 映射 | 战术 | 技术 | ID | 证据 | 置信度 | |--------|-----------|----|----------|------------| | Execution | [Windows Command Shell](https://attack.mitre.org/techniques/T1059/003/) | T1059.003 | 该样本包含一个与 `ping` 和 `del` 一起使用的 `cmd.exe /C` 命令。 | 高 | | Defense Evasion | [File Deletion](https://attack.mitre.org/techniques/T1070/004/) | T1070.004 | 该命令包含 `Del /f /q "%s"`,表明这是一个强制且静默的删除例程。 | 高 | | Defense Evasion / Stealth | [Delay Execution](https://attack.mitre.org/techniques/T1678/) | T1678 | 该样本使用 `ping 1.1.1.1 -n 1 -w 3000` 作为删除前的延迟机制。 | 中 | | Command and Control | [Web Protocols](https://attack.mitre.org/techniques/T1071/001/) | T1071.001 | 动态分析观察到请求 `/favicon.ico` 的 HTTP GET 请求。 | 高 | | Discovery | [Query Registry](https://attack.mitre.org/techniques/T1012/) | T1012 | Process Monitor 显示执行期间的注册表查询。 | 高 | | Discovery | [System Information Discovery](https://attack.mitre.org/techniques/T1082/) | T1082 | 注册表访问包括与计算机名相关的键。 | 中 | | Command and Control | [Ingress Tool Transfer](https://attack.mitre.org/techniques/T1105/) | T1105 | 该样本导入了 `URLDownloadToFileW`,但未观察到完整的 payload 下载,且创建的文件为空。 | 低 | ## 测试与验证 - 通过 MD5 和 SHA256 哈希计算验证了文件身份。 - 通过 VirusTotal 检测结果验证了公开的恶意软件分类。 - 通过 FLOSS 和 PEstudio 验证了可疑字符串。 - 通过 PEview 的文件头、节和导入视图验证了 PE 结构。 - 通过 INetSim 和数据包证据验证了 Web 行为。 - 通过 Process Monitor 和文件资源管理器验证了文件创建。 - 验证了此次实验运行未产生有效的次级 payload。 - 通过 Process Monitor 验证了注册表查询行为。 ## 结果 该实验室为 `Unknown.exe` 提供了一条完整的调查路径,从安全处理开始,以基于行为的结论结束。证据支持将该样本归类为可疑的第一阶段 loader/dropper,它通过 HTTP 进行通信,在公共目录中创建文件,并包含自删除例程。 分析还使重要的局限性保持可见。硬编码的主机很可疑,但未被标记为已确认的 C2 基础设施。`DownloadToFileW` 支持 downloader 假设,但捕获的动态运行并未证明成功下载了 payload。因为真实的硬编码域名不可用且创建的文件为空,所以最好将该样本描述为在实验室约束下可能不完整的 dropper 行为。 ## 展示的技能 - 恶意软件实验室准备和安全的样本处理 - 静态恶意软件分类 - 基于哈希的文件识别 - 字符串提取和特征码分析 - PE 文件头、节和导入审查 - 结合 Microsoft 和 MalAPI 参考资料进行 API 解释 - 在隔离环境中进行动态恶意软件引爆 - 网络、文件系统和注册表行为验证 - 带有置信度级别的 MITRE ATT&CK 映射 - IOC 文档和防御性建议编写 ## 仓库结构 ``` unknown-malware-sample-analysis/ |-- README.md |-- LICENSE |-- IMAGE_MANIFEST.md |-- docs/ | |-- indicators.md | `-- notes.md `-- images/ |-- 01-lab-preparation/ |-- 02-static-triage/ |-- 03-string-and-pe-analysis/ |-- 04-api-and-import-review/ `-- 05-dynamic-analysis/ ``` ## 注意事项 - 这是一个实验室的恶意软件分析项目。故意未包含恶意软件样本本身。 - 硬编码的主机被记录为可疑的 IOC,而不是已确认的公开 C2 基础设施。 - 该域名已在 VirusTotal 和 AbuseIPDB 等公开信誉源中进行检查,但未找到有用的公开信息。 - 完整的恶意软件链未能完成执行,因为实验室无法访问真实的硬编码域名。 - 在此次实验运行中,释放的文件是空的,不包含有效的 payload。 - 请参阅 [docs/indicators.md](docs/indicators.md) 获取清晰的 IOC 和检测摘要。 - 请参阅 [docs/notes.md](docs/notes.md) 了解局限性、参考资料和生产响应指南。