Zinebnid/emotet-suricata-analysis
GitHub: Zinebnid/emotet-suricata-analysis
基于 Suricata 的 Emotet 恶意软件流量分析实验,演示自定义检测规则开发、IOC 提取和 MITRE ATT&CK 映射的完整流程。
Stars: 0 | Forks: 0
# 使用 Suricata 进行网络入侵检测 + Emotet PCAP 分析
## 1. 目标
本项目演示了使用 Suricata IDS 和 Wireshark 进行网络入侵检测和流量分析的工作流程。通过分析真实的 Emotet 恶意软件 PCAP,检测命令与控制 (C2) 通信,使用 tshark 提取 IOC,并将攻击者行为映射到 MITRE ATT&CK 框架。
## 2. 实验环境设置
| 组件 | 详情 |
|---|---|
| 操作系统 | Kali Linux (VirtualBox) |
| IDS | Suricata 8.0.3 |
| 分析工具 | Wireshark, tshark |
| PCAP 来源 | pan-unit42 — Emotet infection 2021-01-06 |
| 威胁情报 | VirusTotal, AbuseIPDB |
## 3. 攻击概述
Emotet 是一种银行木马,最早于 2014 年被识别,被广泛认为是有史以来记录在案的最危险且最具破坏性的恶意软件家族之一。它通过包含恶意 Word 文档附件的钓鱼邮件进行传播。一旦执行,它就会窃取凭据、下载次要载荷,并使用基于 HTTP 的信标与攻击者控制的 C2 服务器建立持久通信。2021 年 1 月——与此 PCAP 同月——Emotet 的基础设施在一次协调的国际执法行动中被捣毁,这使得此捕获样本具有历史意义。
## 4. 分析过程
1. 在 Kali Linux 上安装并配置 Suricata 8.0.3
2. 从 pan-unit42 研究仓库下载真实的 Emotet 感染 PCAP
3. 对 PCAP 运行 Suricata 以生成检测警报
4. 使用 tshark 分析 HTTP 流量以识别 C2 通信模式
5. 观察到对随机生成 URL 的重复 POST 请求——确认了 Emotet C2 信标行为
6. 编写了一条针对 C2 URL 模式的自定义 Suricata 规则
7. 规则触发了 **19 个警报**,确认了活跃的 C2 通信

8. 在 Wireshark 中重建 TCP 流以检查恶意软件载荷内容

9. 使用 tshark 从 PCAP 中提取所有目标 IP
10. 在 VirusTotal 和 AbuseIPDB 上验证可疑 IP
## 5. 自定义 Suricata 规则
```
alert http any any -> any any (
msg:"CUSTOM - Emotet C2 POST Beacon Detected";
flow:established,to_server;
content:"POST";
http_method;
pcre:"/^\/[a-z0-9]{4,20}\/[a-z0-9]{4,20}\//Ui";
sid:9000001;
rev:1;
)
```
**该规则有效的原因:**
Emotet 为每个 C2 会话生成随机的多段 URL 路径(例如 `/abc123/def456/`),以逃避基于静态签名的检测。该规则不匹配固定的 URL,而是使用基于正则表达式的方法针对这些路径的结构模式——这是被动检测(拦截已知的恶意 URL)与行为检测(识别技术本身)之间的区别。这允许无论使用何种特定 URL 都能检测到 Emotet 流量。在分析过程中,该规则在两个确认的 C2 服务器上成功触发了 19 个警报,验证了其有效性。
完整的规则文件可在 `/rules` 文件夹中找到。
## 6. IOC (入侵指标)
以下 IOC 从 PCAP 中提取并使用外部威胁情报源进行了验证。

| 类型 | 值 | 判定 | 来源 |
|------|-------|---------|--------|
| IP | 5.2.136.90 | **恶意** | VirusTotal 6/94, AbuseIPDB — RO |
| IP | 167.71.4.0 | **恶意** | VirusTotal 10/94 — DigitalOcean NL |
| IP | 103.92.235.25 | 疑似 C2 | PCAP 分析 |
| IP | 89.252.164.58 | 疑似 C2 | PCAP 分析 |
| IP | 173.255.195.246 | 疑似 C2 | PCAP 分析 |
| URL | /7u0e9j2avwlvnuynyo/szcm27k/fzb067wy/ | C2 端点 | HTTP 流 |
| URL | /ko5ezxmguvv/p8d4003oiu/utkdae7r/74uzr8n74r/ | C2 端点 | HTTP 流 |



完整的 IOC 列表可在 `/iocs` 文件夹中找到。
## 7. MITRE ATT&CK 映射
| 技术 ID | 名称 | 观察到的证据 |
|---|---|---|
| T1071.001 | 应用层协议: Web 协议 | Emotet 使用 HTTP POST 请求进行所有 C2 通信 |
| T1571 | 非标准端口 | 在端口 8080 上观察到发往 167.71.4.0 的 C2 流量 |
| T1036 | 伪装 | 使用伪造的 Internet Explorer User-Agent 字符串以混入正常流量 |
| T1102 | Web 服务 | 通过受损的合法 WordPress 站点路由 C2 流量 |
| T1041 | 经 C2 通道渗出 | 经由 HTTP POST 向 C2 服务器发送加密的二进制载荷 |
## 8. 事件报告
**受害主机:** 10.1.6.206
**日期:** 2021-01-06
**恶意软件家族:** Emotet
**检测方法:** Suricata IDS + tshark 流量分析
**事件时间线**
| 时间 | 事件 |
|------|-------|
| 16:41 UTC | 观察到首个 C2 信标 — 10.1.6.206 → 5.2.136.90:80 |
| 16:42 UTC | 确认向随机 C2 URL 发出多个 POST 请求 |
| 17:14 UTC | 观察到额外的 C2 通信 — 167.71.4.0:8080 |
| 18:17 UTC | 捕获中记录的最后一个 C2 信标 |
**恶意软件活动**
位于 10.1.6.206 的受感染主机使用带有随机生成 URL 路径的 HTTP POST 请求,主动向两个确认的 C2 服务器进行信标通信。TCP 流分析揭示了包含加密二进制内容的多部分表单数据载荷——这与 Emotet 的数据渗出和命令检索行为一致。该恶意软件使用伪造的 Internet Explorer User-Agent 字符串将其流量伪装为合法的浏览器活动。
**建议**
1. 立即将主机 10.1.6.206 从网络隔离
2. 在边界防火墙封锁 C2 IP:5.2.136.90, 167.71.4.0
3. 在所有网络日志中搜寻与已识别 C2 IP 的连接
4. 审查终端日志以查找持久化机制和横向移动
5. 重置受感染机器并重置所有凭据
6. 部署本项目中的自定义 Suricata 规则,以在整个环境中检测类似的信标行为
## 9. 检测差距分析
默认的 Suricata 规则集(435 条规则)针对此流量仅生成了 1 个警报。针对 Emotet URL 结构的自定义规则产生了 19 个警报——表明通用规则集会遗漏分析人员编写的规则所能捕捉到的行为模式。这凸显了自定义检测工程的重要性,而非仅仅依赖供应商提供的签名。
## 10. 展示的关键技能
- 使用 Suricata IDS 进行网络入侵检测
- 使用 Wireshark 和 tshark 进行 PCAP 取证分析
- 恶意软件 C2 流量识别和行为分析
- 基于观察到的流量模式开发自定义 IDS 规则
- IOC 提取和威胁情报验证
- VirusTotal 和 AbuseIPDB 调查
- MITRE ATT&CK 威胁映射
- SOC 风格的事件文档和报告
标签:C2通信, Cloudflare, DAST, DNS 反向解析, Emotet, IP 地址批量处理, Metaprompt, MITRE ATT&CK, PCAP分析, Suricata, Tshark, Wireshark, 入侵指标, 句柄查看, 威胁情报, 安全实验室, 开发者工具, 恶意软件分析, 现代安全运营, 红队防御, 网络安全, 自定义规则, 银行木马, 隐私保护