murpheelee/network-traffic-analysis

GitHub: murpheelee/network-traffic-analysis

一个涵盖C2检测、DNS隧道、横向移动等多种攻击场景的网络流量分析实战教程,包含Wireshark过滤器和Suricata检测规则。

Stars: 0 | Forks: 0

Wireshark tcpdump NetSec

# 网络流量分析实验 ## 目标 通过检查包含真实攻击模式的数据包捕获内容,培养网络分析实战技能。每个场景都涉及捕获或分析网络流量、识别恶意指标,并记录适用于事件响应报告的发现结果。 ## 工具与环境 | 工具 | 用途 | |------|---------| | 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, 协议分析, 句柄查看, 威胁情报, 安全实验室, 开发者工具, 恶意软件分析, 权限提升, 现代安全运营, 红队行动, 网络安全, 脆弱性评估, 隐私保护