ateebahmedkhan/network-traffic-analysis
GitHub: ateebahmedkhan/network-traffic-analysis
使用 Wireshark 对真实恶意软件 PCAP 进行网络流量分析,完整记录了 PowerShell C2 信标的识别、混淆 payload 的安全解码及应急响应流程的 SOC 分析师实战项目。
Stars: 0 | Forks: 0
# 网络流量分析 — PowerShell C2 恶意软件调查
这是一个实战性的 SOC 分析师项目。在此项目中,我使用 Wireshark 分析了真实的恶意软件感染 PCAP,提取并安全解码了混淆的 PowerShell payload,并识别出了一个功能完备的命令控制 (C2) 信标。本项目作为我的 SOC 分析师作品集的一部分而构建。
## 为什么做这个项目
网络流量分析是 SOC 的核心技能 —— 能够读取数据包捕获、识别可疑流量、提取文件以及理解攻击者的技术。我希望使用真实的恶意软件样本(而非人工合成的),并走完完整的分析师工作流:发现异常、提取 payload、在不执行的情况下安全解码,并像真实的应急响应报告那样记录调查结果。
## 配置
- **工具:** Wireshark
- **样本:** 真实恶意软件 PCAP — “从虚假软件网站下载”练习
- **来源:** [malware-traffic-analysis.net](https://malware-traffic-analysis.net/training-exercises.html)
- **数据集大小:** 39,427 个数据包
## 我所做的工作
1. 将包含 39,427 个数据包的 PCAP 加载到 Wireshark 中
2. 通过 DHCP/DNS 流量识别受害主机 (10.1.17.215 / DESKTOP-L8C5GSJ)
3. 过滤 HTTP 流量并发现了从外部 IP 下载的两个 `.ps1` 文件
4. 隔离了进出可疑 IP (5.252.153.241) 的所有流量 — 占总流量的 23%
5. 使用 Wireshark 的 HTTP 对象导出功能提取了这两个 PowerShell 文件
6. 安全地解码了两层混淆(未执行脚本)
7. 利用主机的硬盘序列号识别出针对每个受害者的 C2 信标
8. 调查了第二个 IP 并确认其为合法的 Microsoft CDN 流量(误报)
## 关键发现
| 发现 | 细节 | 严重程度 |
|---------|--------|----------|
| C2 服务器 | 5.252.153.241 — 9,076 个数据包(占捕获量的 23%) | 严重 |
| 恶意 Payload | 29842.ps1, pas.ps1 — 混淆的 PowerShell dropper | 严重 |
| C2 机制 | 使用硬盘序列号的受害者专属信标 URL,每 5 秒轮询一次 | 严重 |
| 代码执行 | 解码后的脚本对 C2 响应使用 `Invoke-Expression` — 完全 RCE | 严重 |
| 误报 | 199.232.214.172 — 合法的 Microsoft/Akamai Defender 更新流量 | 无 |
## 恶意软件工作流
1. 受害者从虚假软件网站下载文件
2. Dropper 脚本 (`29842.ps1`) 执行 — 使用字符替换混淆来隐藏 `FromBase64String`
3. Base64 解码并运行第二阶段 payload
4. 第二阶段读取受害者 C: 盘的序列号作为唯一 ID
5. 每 5 秒向 `http://5.252.153.241/` 发送信标请求
6. 来自 C2 的任何响应都会通过 `Invoke-Expression` 立即执行
这使得攻击者能够获得针对每个受害者的持久远程代码执行能力。
## 截图
| 步骤 | 截图 |
|------|-----------|
| HTTP 流量概览 — 发现 PowerShell 文件下载 |  |
| C2 服务器流量 (5.252.153.241) — 占捕获量的 23% |  |
| 通过 HTTP 对象导出提取的 .ps1 payload |  |
| 误报 — 合法的 Microsoft CDN 流量 |  |
## 我学到了什么
- 如何在 Wireshark 中根据 IP 和协议过滤并隔离可疑流量
- 如何使用导出对象功能提取通过 HTTP 传输的文件
- 攻击者如何使用字符替换混淆来隐藏诸如 `FromBase64String` 的函数名
- 如何在不执行的情况下安全解码混淆的 PowerShell payload
- 使用硬件标识符(硬盘序列号)的受害者专属 C2 通道是如何工作的
- 对远程响应使用 `Invoke-Expression` 是如何让攻击者获得完全的远程代码执行能力的
- 如何通过关联 IP、内容类型和流量上下文(而不仅仅是 URL 关键字)来区分真实威胁和误报
## 完整应急响应报告
包含 IOC、解码后的 payload 和 SOC 响应步骤的完整分析 → [`findings/incident-report.md`](findings/incident-report.md)
## 仓库结构
```
network-traffic-analysis/
├── findings/
│ └── incident-report.md # Full investigation report
└── screenshots/
├── 01-http-overview.png # HTTP traffic overview
├── 02-c2-server-traffic.png # C2 server traffic isolated
├── 03-ps1-files-exported.png # Extracted PowerShell payloads
└── 04-cdn-false-positive.png # False positive investigation
```
## 使用的工具
- [Wireshark](https://www.wireshark.org/) — 数据包捕获分析
- Python 3 — 安全的 base64 解码(只读)
- 样本来源:[malware-traffic-analysis.net](https://malware-traffic-analysis.net/training-exercises.html)
标签:AMSI绕过, DAST, OpenCanary, Wireshark, 句柄查看, 威胁检测, 安全运营(SOC), 恶意软件分析, 网络安全, 隐私保护