UscTrojansDodgers56/malware-traffic-analysis-trickbot

GitHub: UscTrojansDodgers56/malware-traffic-analysis-trickbot

基于 PCAP 的 TrickBot 恶意软件感染全流程网络取证实验,涵盖流量分析、payload 提取、哈希确认和 Suricata 自定义规则编写。

Stars: 0 | Forks: 0

# 恶意软件流量分析 — TrickBot 感染 (Funkylizards PCAP) 针对一次真实 TrickBot 感染的全面网络取证调查,完全从数据包捕获 中重建——全程未执行任何恶意软件。这是自主学习 SOC 检测系列的第 4 个实验。 **系列进阶:** 日志 → 网络 → 身份 → **恶意软件** *(本实验)* | | | |---|---| | **来源** | [malware-traffic-analysis.net](https://www.malware-traffic-analysis.net/) — “Funkylizards”练习,2021-08-19 | | **恶意软件家族** | TrickBot (银行木马 / loader) | | **工具** | Wireshark · VirusTotal · Suricata (ET Open ruleset) · Azure · PowerShell | | **方法** | 检测 → 分析 → 关联 → 加固 → 验证 | ## 免责声明 本实验分析了一个预先捕获的、公开可用的感染 PCAP 文件。**未下载、执行或引爆任何恶意软件。** 所有 payload 识别均通过文件哈希查询 完成,从未运行过样本。 ## 环境 | 项目 | 值 | |---|---| | 受害者主机 | `10.8.19.101` / `DESKTOP-M1TFHB6` | | 域名 | `funkylizards.com` | | 域控 | `10.8.19.8` | | 分析机 | Windows 11 笔记本电脑 (Wireshark, PowerShell, VirusTotal) | | 检测机 | Azure Linux VM (Ubuntu, Suricata 8.0.5) | ## 工作流程 | 阶段 | 我所做的工作 | |---|---| | **检测** | 在 Wireshark 中发现可疑的 HTTP 下载和持续的对外 beacon | | **分析** | 提取 payload,计算哈希值,在 VirusTotal 上确认,并追踪 C2 流量 | | **关联** | 将文件、IP 和行为整合为一个单一的感染时间线 | | **加固** | 识别出值得阻断/告警的 IOC | | **验证** | 通过 Suricata 重放 PCAP 并编写自定义检测规则 | ## 调查演练 ### 1. 分诊 — 流量的形态 `Statistics → Protocol Hierarchy` 显示 TLS 占用了 86.4% 的字节,但有一小部分 HTTP 携带了一个约 324 KB 的单一对象——这是通过纯 HTTP 传输文件的典型特征。 ![协议层级](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/01-protocol-hierarchy.png) `Statistics → Conversations` (按字节排序) 确认了受害者主机及三个感兴趣的 IP: | 对端 IP | 流量 / 持续时间 | 角色 | |---|---|---| | `46.99.175.149` | 9 MB,约 44 分钟 | C2 beacon | | `182.253.210.130` | 3 MB | 辅助 C2 (共享证书) | | `185.244.41.29` | 341 KB,1.9 秒 | 交付 | ![会话](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/02-conversations.png) ### 2. 交付与 payload 提取 过滤 `http.request` 显示了交付和 C2 签入过程: ``` GET /ooiwy.pdf HTTP/1.1 → 185.244.41.29 (delivery) POST /rob124/DESKTOP-M1TFHB6_.../90/ → 103.148.41.195 (C2 check-in) ``` ![HTTP 请求](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/03-http-request.png) `File → Export Objects → HTTP` 从流量中提取了 payload。该“PDF”实际上是一个 323 KB 的 Windows 可执行文件。 ![导出对象](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/04-export-objects.png) 在保存时,Norton 将提取出的文件标记为 `Win32:Trojan-gen`——在检查 VirusTotal 之前就获得了独立的确认。 ![Norton 隔离](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/05-norton-quarantine.png) ### 3. 通过哈希而非执行确认恶意软件 ``` Get-FileHash C:\lab4-malware\ooiwy.pdf -Algorithm SHA256 ``` ![Get-FileHash](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/06-filehash-powershell.png) **SHA256:** `F25A780095730701EFAC67E9D5B84BC289AFEA56D96D8AFF8A44AF69AE606404` 将该哈希值粘贴到 VirusTotal 中——**58/70 家厂商将其标记为恶意**,真实文件名为 `RegistryDemo.EXE`,家族为 **TrickBot**。 ![VirusTotal](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/07-virustotal.png) ### 4. C2 通道 过滤 `ip.addr == 46.99.175.149` 显示了 TLS 握手及随后的加密 Application Data——即该 beacon 的实际流量。 ![C2 握手](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/08-c2-handshake.png) `Statistics → IO Graph` 将该 beacon 可视化为持续近一小时的低频心跳——这正是完全加密状态下的命令与控制 流量的模样。 ![IO Graph](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/09-io-graph.png) 汇总的 IOC: ![IOC 表格](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/10-ioc-table.png) ### 5. 验证 — Suricata PCAP 在 Azure Linux VM 上通过搭载了免费 **ET Open** ruleset 的 Suricata 进行了重放,该规则集直接指明了恶意软件家族: - `ET MALWARE Win32/Trickbot Data Exfiltration` - `ET MALWARE Trickbot Checkin Response` - `ET INFO PE EXE or DLL Windows file download HTTP` - `ET INFO External IP Lookup api.ipify.org` - ET HUNTING 告警,显示在 POST body 中被窃取的侦测命令 (`ipconfig`, `net view`, `net config`, `nltest`) 随后,我编写了一条直接针对 C2 IP 的自定义规则。经过三次修改才得以完善——与其掩盖过程,不如展示这种迭代步骤: | 版本 | 策略 | 告警数 | 结论 | |---|---|---|---| | 1 | 直接匹配 C2 IP | 2,973 | 对每个数据包都触发——噪声太大 | | 2 | + `flow:to_server,established` | 8,895 | 更糟了——TCP 会话全程都保持 "established" 状态 | | 3 | + `threshold` (每个源/小时 1 次) | **1** | 干净、单一且可操作的告警 | ``` alert tls any any -> 46.99.175.149 443 (msg:"LAB TrickBot C2 Beacon Detected"; threshold:type limit, track by_src, count 1, seconds 3600; sid:1000001; rev:3;) ``` 完整规则:[`rules/local.rules`](rules/local.rules) ![编辑规则](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/11-nano-local-rules.png) ![规则顺利触发](https://raw.githubusercontent.com/UscTrojansDodgers56/malware-traffic-analysis-trickbot/main/screenshots/12-suricata-custom-rule-fire.png) ## 入侵指标 | 类型 | 指标 | |---|---| | 受害者 | `10.8.19.101` / `DESKTOP-M1TFHB6` | | Payload | `ooiwy.pdf` → `RegistryDemo.EXE` (316 KB) | | SHA256 | `F25A780095730701EFAC67E9D5B84BC289AFEA56D96D8AFF8A44AF69AE606404` | | 恶意软件家族 | TrickBot | | 交付 IP | `185.244.41.29` | | C2 (beacon) | `46.99.175.149:443` | | C2 (check-in) | `103.148.41.195` | | C2 (secondary) | `182.253.210.130` | | 行为特征 | 请求 `api.ipify.org` (自身 IP 查询) | ## MITRE ATT&CK 映射 | 技术 | ID | 证据 | |---|---|---| | Drive-by / Delivery | T1189 | 从原始 IP 下载伪造的 PDF | | Ingress Tool Transfer | T1105 | TrickBot EXE 被拉取到主机上 | | System Network Config Discovery | T1016 | `api.ipify.org`, `ipconfig` | | Remote System Discovery | T1018 | `net view` | | Application Layer Protocol: Web | T1071.001 | 发往 `46.99.175.149` 的 HTTPS C2 beacon | | Exfiltration Over C2 Channel | T1041 | 侦测结果被 POST 回传给攻击者 | ## 感染时间线 | 时间 | 事件 | |---|---| | 19:40:36 | Payload 交付 (`ooiwy.pdf`) | | 19:40:58 | 通过 `api.ipify.org` 自身 IP 检查确认执行 | | 19:41:00 | C2 通道开启 — 发往 `46.99.175.149` 的 TLS beacon | | 19:45:37 | 侦测 + 窃取 — POST 到 `103.148.41.195` (`ipconfig`, `net view`, `nltest`) | | 19:45:43 | 收到 C2 check-in 响应 | | 20:24:13+ | Beacon 持续中 — 在网络中保持驻留 | ## 仓库结构 ``` malware-traffic-analysis-trickbot/ ├── README.md ├── LICENSE ├── rules/ │ └── local.rules └── screenshots/ └── (12 annotated screenshots referenced above) ``` ## 系列 - 实验 1 — SSH 暴力破解检测 (Sentinel / KQL) - 实验 2 — [Wireshark SSH 数据包分析](https://github.com/UscTrojansDodgers56/wireshark-ssh-bruteforce-analysis) - 实验 3 — Active Directory 攻击检测 (Kerberoasting, AS-REP Roasting, DCSync, Pass-the-Hash) - 实验 4 — 恶意软件流量分析 *(本仓库)* **作者:** Sean White — [LinkedIn](https://linkedin.com/in/seanwhite56) · [GitHub](https://github.com/UscTrojansDodgers56)
标签:AI合规, DAST, IP 地址批量处理, Metaprompt, Suricata, Wireshark, 句柄查看, 恶意软件分析, 现代安全运营, 网络安全, 网络流量分析, 隐私保护