murpheelee/network-traffic-analysis
GitHub: murpheelee/network-traffic-analysis
一个涵盖C2检测、DNS隧道、横向移动等多种攻击场景的网络流量分析实战教程,包含Wireshark过滤器和Suricata检测规则。
Stars: 0 | Forks: 0
# 网络流量分析实验
## 目标
通过检查包含真实攻击模式的数据包捕获内容,培养网络分析实战技能。每个场景都涉及捕获或分析网络流量、识别恶意指标,并记录适用于事件响应报告的发现结果。
## 工具与环境
| 工具 | 用途 |
|------|---------|
| Wireshark | 深度包检测与协议分析 |
| tcpdump | 命令行数据包捕获与过滤 |
| NetworkMiner | 网络取证分析与工件提取 |
| Azure VMs | 用于产生流量的实验环境 |
| Suricata | 基于特征检测的网络 IDS |
## 分析场景
### 场景 1:命令与控制 (C2) 信标检测
**目标:** 识别隐藏在正常 HTTP/HTTPS 流量中的周期性 C2 信标活动。
**失陷指标:**
- 固定间隔的 HTTP POST 请求(每 60 秒 ± 抖动)
- 负载大小一致,暗示心跳通信
- 连接到没有关联域名的 IP 地址
- User-Agent 字符串与已安装的浏览器不一致
**使用的 Wireshark 过滤器:**
```
http.request.method == "POST" && ip.dst == 203.0.113.50
```
**关键发现:**
| 指标 | 数值 |
|-----------|-------|
| C2 服务器 IP | 203.0.113.50 |
| 信标间隔 | ~60 秒 |
| 协议 | HTTP POST |
| 平均负载 | 256 字节 |
| 持续时间 | 4 小时 23 分钟 |
| 信标总数 | 263 |
### 场景 2:DNS 隧道 / 数据渗出
**目标:** 通过检测使用编码子域名请求的 DNS 查询,发现数据渗出行为。
**失陷指标:**
- 异常长的 DNS 查询名称(50 个字符以上)
- 对单一域名的 TXT 记录查询量巨大
- Base64 编码的子域名标签
- DNS 查询频率超过正常基线
**使用的 Wireshark 过滤器:**
```
dns.qry.name contains ".exfil-domain.com" && dns.qry.type == 16
```
**关键发现:**
| 指标 | 数值 |
|-----------|-------|
| 渗出域名 | data.exfil-domain.com |
| 查询类型 | TXT |
| 查询总数 | 1,847 |
| 平均查询长度 | 73 个字符 |
| 估计渗出数据量 | ~135 KB |
| 持续时间 | 2 小时 11 分钟 |
### 场景 3:ARP 欺骗 / 中间人攻击 (MITM)
**目标:** 检测本地网段上的 ARP 欺骗攻击。
**失陷指标:**
- ARP 表中出现重复的 IP 到 MAC 映射
- Gratuitous ARP 回复与已知设备资产清单不符
- ARP 风暴(大量的 ARP 流量)
- 流量被重定向到异常的 MAC 地址
**使用的 Wireshark 过滤器:**
```
arp.duplicate-address-detected || arp.opcode == 2
```
**关键发现:**
| 指标 | 数值 |
|-----------|-------|
| 攻击者 MAC | aa:bb:cc:dd:ee:ff |
| 被欺骗的 IP | 10.0.0.1 (网关) |
| 合法网关 MAC | 00:11:22:33:44:55 |
| 被投毒的主机 | 12 |
| 持续时间 | 47 分钟 |
### 场景 4:SMB 横向移动
**目标:** 检测通过 SMB/Windows 文件共享在被攻陷主机之间进行的横向移动。
**失陷指标:**
- 工作站到工作站的 SMB 连接(在大多数环境中这并不常见)
- 访问管理共享 (C$, ADMIN$, IPC$)
- 通过命名管道安装 PsExec 服务
- 在短时间内连续连接多个主机
**使用的 Wireshark 过滤器:**
```
smb2.cmd == 5 && smb2.filename contains "$"
```
**关键发现:**
| 指标 | 数值 |
|-----------|-------|
| 源主机 | 10.0.0.105 (WS-01) |
| 目标 | 10.0.0.106, .107, .108, .110 |
| 访问的共享 | ADMIN$, C$, IPC$ |
| 方法 | 通过命名管道的 PsExec (PSEXESVC) |
| 时间跨度 | 8 分钟 |
### 场景 5:暴力破解攻击 (RDP)
**目标:** 识别来自外部 IP 针对面向公众服务器的 RDP 暴力破解尝试。
**失陷指标:**
- 来自单一来源的大量指向端口 3389 的 TCP SYN 包
- 反复的 TLS 握手失败
- 固定间隔的连接尝试,暗示使用了自动化工具
**使用的 tcpdump 过滤器:**
```
tcpdump -r capture.pcap 'tcp dst port 3389 and tcp[tcpflags] & (tcp-syn) != 0' | awk '{print $3}' | sort | uniq -c | sort -rn | head 10
```
**关键发现:**
| 指标 | 数值 |
|-----------|-------|
| 攻击者 IP | 198.51.100.22 |
| 目标 | 10.0.0.50:3389 |
| 尝试总次数 | 4,721 |
| 持续时间 | 6 小时 14 分钟 |
| 速率 | ~12.6 次尝试/分钟 |
| 成功认证 | 1 (在第 3,847 次尝试时) |
## 网络检测特征
### 开发的 Suricata 规则
```
# C2 Beacon 检测 (HTTP POST to known C2)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"Possible C2 Beacon - Regular POST Interval"; flow:established,to_server; content:"POST"; http_method; threshold:type both, track by_src, count 10, seconds 600; classtype:trojan-activity; sid:1000001; rev:1;)
# DNS Tunneling 检测 (Long DNS queries)
alert dns $HOME_NET any -> any 53 (msg:"Possible DNS Tunneling - Abnormally Long Query"; dns.query; content:"."; pcre:"/^[a-zA-Z0-9]{50,}\./"; classtype:bad-unknown; sid:1000002; rev:1;)
# SMB Lateral Movement (Admin share access)
alert smb any any -> $HOME_NET 445 (msg:"SMB Admin Share Access - Possible Lateral Movement"; content:"|00|A|00|D|00|M|00|I|00|N|00|$|00|"; classtype:attempted-admin; sid:1000003; rev:1;)
```
## 展示的关键技能
- 使用 Wireshark 和 tcpdump 进行深度包检测
- 网络取证与攻击重构
- C2 流量模式识别
- DNS 隧道与数据渗出检测
- ARP 欺骗与 MITM 攻击检测
- 通过 SMB 进行横向移动分析
- 网络 IDS 特征开发 (Suricata)
- 事件响应报告与文档编写
标签:Beacon Object File, C2检测, DAST, DNS隧道, EDR, Incident Response, IP 地址批量处理, Metaprompt, Suricata, Wireshark, 协议分析, 句柄查看, 威胁情报, 安全实验室, 开发者工具, 恶意软件分析, 权限提升, 现代安全运营, 红队行动, 网络安全, 脆弱性评估, 隐私保护