fkalam/network-traffic-analysis
GitHub: fkalam/network-traffic-analysis
使用 Wireshark 和 tshark 对恶意软件 PCAP 进行网络取证分析的实操练习,涵盖虚假下载站识别、C2 信标检测和受害主机溯源。
Stars: 0 | Forks: 0
# 网络流量分析 — 恶意软件 PCAP 调查
一项使用 Wireshark 分析真实恶意软件感染实操的网络取证练习。该场景模拟了 SOC 分析师的调查过程:一名用户从虚假软件网站下载了恶意软件,导致受感染的工作站向命令与控制(C2)服务器发送信标。
## 场景
内部网络(`10.1.17.0/24`)上的一名用户搜索了 Google Authenticator,并下载了看似合法的应用程序。该下载源自一个旨在冒充 Google 的欺诈网站。安装后,该机器开始向外部 C2 服务器发起出站连接——表明存在活跃的恶意软件感染。
**目标:** 仅使用网络流量识别受感染的主机、虚假下载网站和 C2 基础设施。
## 使用的工具
| 工具 | 用途 |
|---|---|
| Wireshark | 主要的数据包捕获分析工具 |
| tshark (CLI) | 通过命令行从 pcap 中提取特定字段 |
| Display filters | 隔离特定的流量类型(DNS、TLS、Kerberos) |
## 分析方法论
### 步骤 1 — HTTP 请求概览
**过滤器:** `http.request`
初步了解捕获期间发生了哪些 HTTP 流量。识别出受感染的主机 IP(`10.1.17.215`)是大多数出站请求的来源。确定了感染的时间线。
**原因:** HTTP 请求显示了机器正在连接的位置及其下载的内容。这是 SOC 分析师为了解主机曾执行的操作而首先要检查的内容。
### 步骤 2 — DNS 枚举
**过滤器:** `dns`
使用 tshark 提取捕获期间进行的所有 DNS 查询,以获取受感染机器尝试解析的每个域名的清晰列表。
**原因:** 恶意软件在连接到域名之前必须先对其进行解析。DNS 查询揭示了机器尝试访问的每个站点——包括虚假下载网站和 C2 域名——即使实际连接是加密的。
**使用的命令:**
```
tshark -r capture.pcap -Y "dns.flags.response == 0" -T fields -e dns.qry.name
```
**识别出的可疑域名:**
- `google-authenticator.burleson-appliance.net` — 虚假的 Google Authenticator 下载页面
- `authenticatoor.org` — 模仿 "authenticator" 的域名误植(typosquatting)域名(双写 "o")
- `appointedtimeagriculture.com` — 符合 DGA 生成的 C2 基础施特征的无意义域名
### 步骤 3 — 虚假下载网站识别
**过滤器:** `tls.handshake.extensions_server_name contains "burleson"`
与虚假网站的连接是通过 HTTPS 进行的,因此 HTTP host 头被加密了。TLS Client Hello 数据包仍然通过 **Server Name Indication (SNI)** 扩展以明文形式暴露了域名。
**原因:** 即使是加密的 HTTPS 流量,也会在 TLS 握手过程中透露目标域名。SNI 是一个标准的 TLS 扩展,用于告知服务器出示哪个证书——它没有被加密,任何网络观察者都可以看到。
**发现:** 受感染的主机连接到了 `google-authenticator.burleson-appliance.net` ——一个旨在看起来像 Google 资产,但实际上托管在不相关域名(`burleson-appliance.net`)上的子域名。
### 步骤 4 — C2 流量识别
**过滤器:** `tls.handshake.extensions_server_name contains "appointedtimeagriculture"`
确认了从受感染主机向 `appointedtimeagriculture.com` 发出的出站 C2 信标。该域名符合域名生成算法(DGA)的命名特征——随机生成的词汇串联在一起,以规避封锁列表。
**原因:** 恶意软件安装后,会向 C2 服务器“回连”以接收指令。识别此流量至关重要——封锁 C2 IP 可以切断攻击者对受感染机器的访问权限。
### 步骤 5 — 受害者识别
**过滤器:** `kerberos.CNameString and ip.src == 10.1.17.215` 和 `dhcp`
使用 Kerberos 身份验证数据包和 DHCP 流量来识别完整的受害者资料——IP、主机名、MAC 地址和 Windows 用户名。
**原因:** 在真实的安全事件中,SOC 需要准确识别哪台机器和哪个用户账户受到了破坏,以便 IT 部门能够隔离主机并重置凭据。Kerberos 数据包包含用于向域进行身份验证的用户名,而 DHCP 则揭示了机器的主机名。
## 调查结果汇总
| 字段 | 值 |
|---|---|
| 受感染 IP | 10.1.17.215 |
| 受感染主机名 | DESKTOP-L8C5GSJ |
| MAC 地址 | 00:d0:b7:26:4a:74 |
| Windows 用户名 | shutchenson |
| 虚假下载网站 | google-authenticator.burleson-appliance.net |
| C2 域名 | appointedtimeagriculture.com |
| C2 服务器 IP | 217.78.206.248 |
## 攻击时间线
1. 用户 `shutchenson` 搜索 Google Authenticator
2. 登陆 `google-authenticator.burleson-appliance.net` ——一个虚假网站
3. 下载并安装恶意软件
4. 恶意软件建立指向 `appointedtimeagriculture.com` (217.78.206.248) 的加密 C2 通道
5. 受感染机器开始发送信标——攻击者现已获得远程访问权限
## 截图
### 1. HTTP 请求概览

显示受感染主机(`10.1.17.215`)所有 HTTP 请求的初始过滤器。用于确定是哪台机器产生了恶意流量。
### 2. DNS 查询流量

感染窗口期间捕获的完整 DNS 流量。用于识别可疑域名的基础。
### 3. 与 Google 相关的 DNS 查询

包含 "google" 的过滤后 DNS 查询——揭示了受害者在感染前搜索 Google 相关内容的行为。
### 4. 虚假网站 TLS 握手

通过 SNI 暴露了 `google-authenticator.burleson-appliance.net` 的 TLS Client Hello 数据包。确认受感染主机连接到了欺诈性下载网站。
### 5. C2 信标流量

发往 `appointedtimeagriculture.com` 的 TLS 握手,确认恶意软件安装后受感染主机存在活跃的 C2 通信。
### 6. 通过 Kerberos 识别受害者

来自 `10.1.17.215` 的 Kerberos 身份验证数据包,揭示了 Windows 用户名 `shutchenson` 和机器账户 `DESKTOP-L8C5GSJ`。
## 关键要点
- 恶意软件作者使用 **子域名欺骗** ——将虚假页面托管在看似合法的子域名上(如 `google-authenticator.burleson-appliance.net`)来诱骗用户
- **DNS 默认从不加密** ——即使流量是 HTTPS 的,DNS 查询也会暴露 C2 域名
- **TLS SNI 以明文可见** ——加密连接仍会在握手过程中暴露目标域名
- **Kerberos 和 DHCP 流量** 包含对受害者身份识别非常有用的主机和用户身份信息
- **DGA 域名** (如 `appointedtimeagriculture.com`)使用随机词汇组合来规避静态封锁列表
## 防御建议
- 部署 **DNS 过滤**(例如 Cisco Umbrella, Pi-hole),在建立连接之前阻止已知的恶意域名
- 在网络边界启用 **SSL/TLS 检测**,对 HTTPS 流量进行解密和检查
- 强制执行 **应用程序白名单** ——防止安装来自未经批准来源的软件
- 监控 **指向新注册或低信誉域名的出站连接**
- 培训用户,确保仅从官方供应商网站验证和下载软件
## 数据来源
来自 [malware-traffic-analysis.net](https://www.malware-traffic-analysis.net/2025/01/22/index.html) 的 PCAP ——一个用于安全培训的真实恶意软件流量公共存储库。
标签:DAST, IP 地址批量处理, Wireshark, 句柄查看, 安全运营(SOC), 恶意软件分析, 数字取证, 网络信息收集, 网络安全, 自动化脚本, 隐私保护