JhonnyValdivieso/forensic-analysis-malware-case-study
GitHub: JhonnyValdivieso/forensic-analysis-malware-case-study
一份针对鱼叉式钓鱼入侵事件的数字取证与应急响应案例研究,完整记录了从 VBA 宏攻击到 Python 数据窃取的全链路分析过程。
Stars: 0 | Forks: 0
# 恶意软件取证分析与应急响应:"Terra Renewables" 案例



## 执行摘要
针对 **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. 阶段一:社会工程学与初始向量分析
攻击者利用权威和金钱诱惑触发器,将目标对准了人类层面。

### 战术分解
| 技术 | 事件中的证据 | 目标 / 影响 |
| --- | --- | --- |
| **鱼叉式钓鱼** | 主题 `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` 二进制文件:

随后在 HxD 中对 `vbaProject.bin` 进行静态检查,发现了关键的字符串和函数触发器:

### 关键函数触发器
| 证据 / 字符串 | 技术意义 |
| --- | --- |
| `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` 的静态分析揭示了一个具有持久化功能的模块化数据窃取程序:

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宏分析, 安全案例分析, 库, 应急响应, 恶意软件分析, 数字取证, 自动化脚本, 逆向工具