JhonnyValdivieso/forensic-analysis-malware-case-study

GitHub: JhonnyValdivieso/forensic-analysis-malware-case-study

一份针对鱼叉式钓鱼入侵事件的数字取证与应急响应案例研究,完整记录了从 VBA 宏攻击到 Python 数据窃取的全链路分析过程。

Stars: 0 | Forks: 0

# 恶意软件取证分析与应急响应:"Terra Renewables" 案例 ![类别](https://img.shields.io/badge/Category-Digital_Forensics_%26_Incident_Response-blue) ![关注点](https://img.shields.io/badge/Focus-Phishing_%26_VBA_Analysis-red) ![环境](https://img.shields.io/badge/Environment-FLARE_VM-green) ## 执行摘要 针对 **Terra Renewables** 遭受定向企业入侵事件的事后取证分析。本次调查涵盖了完整的攻击链:社会工程学前置手段、基于文档的 VBA 释放器执行,以及第二阶段的 Python 数据窃取 payload。 ## 攻击执行流程 ``` graph LR A[Phishing Email] -->|malicious.docm| B(VBA Macro Execution) B -->|HTTP/S Download| C[Python Payload: im_just_another_mal.py] C -->|Persistence| D[Windows Scheduled Task] C -->|Exfiltration| E[Staged Zip Archive] ``` ## 目录 1. [简介与事件背景](#1-introduction-and-incident-contextualization) 2. [阶段一:社会工程学与初始向量](#2-phase-i-social-engineering-and-initial-vector-analysis) 3. [阶段二:VBA 宏的静态分析](#3-phase-ii-static-analysis-of-the-vba-macro-dropperdownloader) 4. [阶段三:网络通信与防御架构](#4-phase-iii-network-communications-and-defense-architecture) 5. [阶段四:第二阶段 Payload(Python 恶意软件)](#5-phase-iv-second-stage-payload--python-malware-analysis) 6. [MITRE ATT&CK 映射](#6-mitre-attck-mapping) 7. [检测工程(YARA 规则)](#7-detection-engineering-yara-rule) 8. [修复与事后处置](#8-remediation--post-incident-actions) 9. [取证方法论与工具](#9-forensic-methodology-and-tooling) 10. [附录:入侵指标(IOCs)](#10-appendix-consolidated-indicators-of-compromise-iocs) ## 1. 简介与事件背景 本报告介绍了针对 **Terra Renewables** 企业终端遭受定向入侵的事后取证分析。对初始访问向量的分析表明,自动化的钓鱼报告系统如何作为关键的早期预警传感器,在清理程序执行前捕获易失性工件。 此次事件的起因是在 LinkedIn 上进行的人工 OSINT,攻击者从中提取了员工电子邮件地址和主管身份(`Alice`),随后执行了包含多阶段感染链的鱼叉式钓鱼活动。 ## 2. 阶段一:社会工程学与初始向量分析 攻击者利用权威和金钱诱惑触发器,将目标对准了人类层面。 ![钓鱼证据](https://static.pigsec.cn/wp-content/uploads/repos/cas/61/61f23a93dd683650c698541e1d6171eb9e39d7a92488bb419eb69ed68648e521.png) ### 战术分解 | 技术 | 事件中的证据 | 目标 / 影响 | | --- | --- | --- | | **鱼叉式钓鱼** | 主题 `Aumento de sueldo John`;称呼 `¡Buenas Jon!` | 高度定向的诱饵以确保产生交互。 | | **身份伪造** | 域名 `alice.williams@terrra.com`(仿冒域名) | 冒充内部管理人员的信任。 | | **借口设计** | 声称为 HR 进行十月份的劳工审查 | 为打开外部附件提供合理借口。 | | **恶意 ZIP** | 包含 `.docm` 的附件 `Aumento de sueldo.zip` | 绕过标准邮件过滤。 | | **人工 OSINT** | 先前的 LinkedIn 侦察 | 建立组织内部的信任度。 | ## 3. 阶段二:VBA 宏(释放器/下载器)的静态分析 对 OpenXML `.docm` 容器进行解压缩后,显示了底层的目录结构以及位于 `word/` 文件夹中的 `vbaProject.bin` 二进制文件: ![VBA 文档结构](https://static.pigsec.cn/wp-content/uploads/repos/cas/e2/e29b522dae14a35d6d9977afdc69c542118decf9e8e5caecd7737014d1efa58e.png) 随后在 HxD 中对 `vbaProject.bin` 进行静态检查,发现了关键的字符串和函数触发器: ![VBA 宏分析](https://static.pigsec.cn/wp-content/uploads/repos/cas/28/2877d1c3516526212156265f1f8779646c492dec3d8d6f733158f1f13c7262f0.png) ### 关键函数触发器 | 证据 / 字符串 | 技术意义 | | --- | --- | | `AutoOpen` | 打开文档时自动执行的触发器。 | | `CreateObject` | 用于与操作系统交互的 COM 对象实例化。 | | `WScript.Shell` | 执行系统 shell 命令(LotL)。 | | `Microsoft.XMLHTTP` | 执行 HTTP 请求以下载第二阶段 payload。 | | `SaveToFile` | 将下载的 payload 直接写入本地磁盘。 | ## 4. 阶段三:网络通信与防御架构 ### 协议分解 | 协议 | 端口 | 层级 | 在攻击中的功能 | | --- | --- | --- | --- | | **SMTP** | 25 / 587 | 应用层 | 初始投递钓鱼诱饵。 | | **DNS** | 53 | 应用层 | 解析 `raw.githubusercontent.com`。 | | **HTTPS** | 443 | 应用层 | 加密获取第二阶段 Python 脚本。 | ### 拟定的防御控制措施 - **带有动态沙箱的 SEG:** 用于检测仿冒域名,并在隔离环境中执行启用宏的附件。 - **EDR / ASR 规则:** 阻止 Microsoft Office 应用程序生成子进程(例如:`cmd.exe`、`wscript.exe`)。 ## 5. 阶段四:第二阶段 Payload —— Python 恶意软件分析 对 `im_just_another_mal.py` 的静态分析揭示了一个具有持久化功能的模块化数据窃取程序: ![Python 恶意软件代码](https://static.pigsec.cn/wp-content/uploads/repos/cas/13/13d60f48013b76023052426157a874cc0611e246bbf6062f99b08a5ae319a5f2.png) 1. **数据窃取逻辑:** 扫描 `%USERPROFILE%\Videos` 目录并将文件暂存至 `StolenData` 中,然后压缩为 `stolen_data.zip`。 2. **持久化机制:** 通过 `schtasks` 创建名为 `OdioDormir` 的 Windows 计划任务。 3. **规避检测:** 执行 `attrib +h` 以在暂存文件夹和归档文件上设置隐藏标志。 ## 6. MITRE ATT&CK 映射 | 战术 | 技术ID | 技术名称 | 事件背景 | | --- | --- | --- | --- | | **初始访问** | `T1566.001` | 鱼叉式钓鱼附件 | 通过电子邮件发送包含 `.docm` 的受密码保护的 `.zip` 文件。 | | **执行** | `T1059.005` | Visual Basic | VBA `AutoOpen` 宏执行并生成系统进程。 | | **执行** | `T1059.006` | Python | 执行第二阶段的数据窃取脚本。 | | **持久化** | `T1053.005` | 计划任务 | 创建用于系统持久化的计划任务(`OdioDormir`)。 | | **收集** | `T1005` | 来自本地系统的数据 | 针对用户目录文件(`\Videos`)进行定向收集。 | | **数据窃取** | `T1041` | 通过 C2 通道窃取 | 暂存准备进行外传的 `.zip` 集合文件。 | ## 7. 检测工程(YARA 规则) ``` rule Detect_TerraRenewables_Python_Malware { meta: description = "Detects second-stage Python exfiltration payload used in Terra Renewables incident" author = "IR Team" severity = "HIGH" strings: $str1 = "im_just_another_mal.py" ascii wide $str2 = "copy_user_videos" ascii wide $str3 = "create_scheduled_task" ascii wide $str4 = "raw.githubusercontent.com" ascii wide condition: uint16(0) == 0x2123 or 3 of ($str*) } ``` ## 8. 修复与事后处置 - **立即隔离主机:** 将受影响的工作站从本地网段/VLAN 断开。 - **吊销凭据:** 强制重置用户 `John` 的域凭据以及相关的会话 token。 - **移除持久化:** 审计并删除与 `OdioDormir` 匹配的未经授权的 Windows 计划任务。 - **邮件网关扫描:** 清除企业邮箱中所有源自 `alice.williams@terrra.com` 的入站邮件实例。 ## 9. 取证方法论与工具 - **7-Zip:** 解压缩 OpenXML 结构。 - **Detect It Easy (DIE):** 文件类型与熵验证。 - **HxD Hex Editor:** 对 `vbaProject.bin` 进行静态二进制检查。 - **FLARE VM:** 隔离的分析环境。 ## 10. 附录:综合入侵指标(IOCs) | IOC 类型 | 值 | 背景 / 详情 | | --- | --- | --- | | **域名** | `raw.githubusercontent.com` | 第二阶段分发基础设施。 | | **URL** | `https://raw.githubusercontent.com/.../im_just_another_mal.py` | Python 恶意软件 payload 路径。 | | **文件名** | `im_just_another_mal.py` | 第二阶段 Python 窃取程序。 | | **文件名** | `stolen_data.zip` | 暂存的数据外传归档。 | | **任务名** | `OdioDormir` | 持久化计划任务。 | | **文件路径** | `%USERPROFILE%\Documents\StolenData\` | 本地暂存目录。 | | **VBA 触发器** | `AutoOpen` | 自动化的宏启动。 | ## 许可证与法律免责声明 ### 许可证 本项目基于 **MIT 许可证** 授权 —— 详见 [LICENSE](LICENSE) 文件。在教育和防御性安全用途上,您可以自由使用、修改和分发本材料。 ### 法律与教育免责声明
标签:DAST, Python恶意载荷, VBA宏分析, 安全案例分析, 库, 应急响应, 恶意软件分析, 数字取证, 自动化脚本, 逆向工具