mcpField
A
analyzing-network-traffic-for-incidents

analyzing-network-traffic-for-incidents

github.com/mukul975安全35.2k433 次安装8 周前更新
代码仓库

关于 analyzing-network-traffic-for-incidents

面向安全事件调查的网络流量分析技能,提供使用数据包捕获和网络元数据的流程。内容涵盖 C2 检测、横向移动、数据外传及证据报告。

主要功能

  1. 01分析 PCAP 和网络元数据
  2. 02检测 C2 信标通信
  3. 03追踪横向移动
  4. 04分析数据外传
  5. 05提取 IOC 并编写报告

适用场景

  1. 01确认疑似 C2 活动
  2. 02量化网络传出的数据
  3. 03追踪内部系统间的移动
  4. 04用数据包证据验证 IDS/IPS 告警

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill analyzing-network-traffic-for-incidents

安装后在 Claude Code 中输入/analyzing-network-traffic-for-incidents确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
agent.py

详细介绍

分析网络流量以调查事件

适用场景

  • SIEM 针对异常网络流量模式发出警报,需要深入调查
  • 怀疑存在 C2 信标通信,需要通过数据包级分析确认
  • 需要根据网络证据量化数据外泄的流量或目标
  • 需要通过网络连接追踪系统之间的横向移动
  • IDS/IPS 警报需要通过数据包级验证来确认或排除

请勿用于基于主机的取证分析(进程执行、文件系统痕迹);请改用端点取证工具。

前提条件

  • 完整数据包捕获(PCAP)基础设施或按需捕获能力(网络分路器、SPAN 端口)
  • 分析工作站已安装 Wireshark,并掌握相应的显示过滤器知识
  • 已部署 Zeek(原名 Bro),用于生成网络元数据(conn.log、dns.log、http.log、ssl.log)
  • 从网络设备收集 NetFlow/IPFIX 数据,以分析流量
  • 网络架构图,显示 VLAN 布局、防火墙位置和监控点
  • 用于关联已观测网络指标的威胁情报源

工作流

步骤 1:捕获或获取网络流量

获取与调查相关的流量数据:

实时捕获(如果事件正在发生):

# Capture on specific interface filtering by host
tcpdump -i eth0 -w capture.pcap host 10.1.5.42

# Capture C2 traffic to specific external IP
tcpdump -i eth0 -w c2_traffic.pcap host 185.220.101.42

# Capture with rotation (1GB files, keep 10)
tcpdump -i eth0 -w capture_%Y%m%d%H%M.pcap -C 1000 -W 10

从现有基础设施获取:

  • 从完整数据包捕获设备(Arkime/Moloch、ExtraHop、Corelight)导出 PCAP
  • 从 Zeek 集群提取调查时间段内的 Zeek 日志
  • 从网络设备导出 NetFlow 数据,以进行高层级流量分析
步骤 2:识别 C2 通信

检测命令与控制流量模式:

信标通信检测(Zeek conn.log):

# Extract connections to external IPs with regular intervals
cat conn.log | zeek-cut ts id.orig_h id.resp_h id.resp_p duration orig_bytes resp_bytes \
  | awk '$4 ~ /^185\.220/' | sort -t. -k1,1n -k2,2n

Wireshark 信标分析:

# Filter for traffic to suspected C2 IP
ip.addr == 185.220.101.42

# Filter HTTPS traffic to non-standard ports
tcp.port != 443 && ssl

# Filter DNS queries for suspicious domains
dns.qry.name contains "evil" or dns.qry.name matches "^[a-z0-9]{32}\."

# Filter HTTP POST (common C2 check-in method)
http.request.method == "POST" && ip.dst == 185.220.101.42

需要识别的信标通信特征:

  • 连接之间的时间间隔规律(例如,每 60 秒一次,抖动为 10-15%)
  • 请求和响应中的数据包大小一致
  • 通过 HTTPS 连接到未关联合法 CDN 或服务的外部 IP
  • 查询具有高熵子域名的 DNS(DNS 隧道指标)
步骤 3:分析横向移动流量

追踪攻击者在内部系统之间的移动:

Key protocols for lateral movement detection:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SMB (TCP 445):     PsExec, file share access, ransomware propagation
RDP (TCP 3389):    Remote desktop sessions
WinRM (TCP 5985):  PowerShell remoting
WMI (TCP 135):     Remote command execution
SSH (TCP 22):      Linux lateral movement
DCE/RPC (TCP 135): DCOM-based lateral movement

用于检测横向移动的 Wireshark 过滤器:

# SMB lateral movement
smb2 && ip.src == 10.1.5.42 && ip.dst != 10.1.5.42

# RDP connections from compromised host
tcp.dstport == 3389 && ip.src == 10.1.5.42

# Kerberos ticket requests (potential pass-the-ticket)
kerberos.msg_type == 12 && ip.src == 10.1.5.42

# NTLM authentication (potential pass-the-hash)
ntlmssp.auth.username && ip.src == 10.1.5.42
步骤 4:检测数据外泄

识别未经授权、流出网络的数据传输:

# Identify large outbound transfers in Zeek conn.log
cat conn.log | zeek-cut ts id.orig_h id.resp_h id.resp_p orig_bytes \
  | awk '$5 > 100000000' | sort -t$'\t' -k5 -rn

# DNS tunneling detection (high volume of TXT queries)
cat dns.log | zeek-cut query qtype | grep TXT | cut -f1 \
  | rev | cut -d. -f1,2 | rev | sort | uniq -c | sort -rn | head

# Unusual protocol usage (ICMP tunneling, DNS over HTTPS)
cat conn.log | zeek-cut proto id.resp_p orig_bytes | awk '$1 == "icmp" && $3 > 1000'

用于检测数据外泄的 Wireshark 过滤器:

# Large HTTP POST uploads
http.request.method == "POST" && tcp.len > 10000

# FTP data transfers
ftp-data && ip.src == 10.0.0.0/8

# DNS with large TXT responses (tunneling)
dns.resp.type == 16 && dns.resp.len > 200
步骤 5:提取并关联 IOC

从流量分析中提取基于网络的指标:

  • 受感染主机连接过的外部 IP 地址
  • 事件时间段内通过 DNS 解析的域名
  • 通过 HTTP/HTTPS 访问的 URL(如果启用了 SSL 检查)
  • TLS 证书详情(主题、颁发者、序列号、JA3/JA3S 哈希)
  • HTTP 请求中的 User-Agent 字符串
  • PCAP 中捕获的文件传输(使用 Wireshark Export Objects 提取)
步骤 6:记录网络取证发现

整理分析结果,形成包含证据引用的结构化报告:

  • 为每项发现注明具体的 PCAP 文件、帧编号和时间戳
  • 将关键证据的数据包捕获内容作为屏幕截图或导出的 PDF 附上
  • 将网络活动映射到事件时间线
  • 将网络发现与端点取证中的基于主机的证据相关联

关键概念

术语定义
PCAP(数据包捕获)一种文件格式,用于存储从网络接口捕获的原始网络数据包,以供离线分析
信标通信受感染主机定期与 C2 服务建立的网络连接,可通过一致的时间间隔识别
JA3/JA3S基于 ClientHello 和 ServerHello 参数对 TLS 客户端和服务器进行指纹识别的方法;每种应用程序的指纹都独一无二
NetFlow/IPFIX路由器和交换机收集的网络流量元数据(源地址、目标地址、端口、字节数、持续时间),无需完整捕获数据包
DNS 隧道将数据编码到 DNS 查询和响应中的技术,用于通过 DNS 协议外传数据或维持 C2 通信
网络分流器一种硬件设备,可精确复制网络流量以供监控,且不会影响网络性能
Zeek 日志由 Zeek 网络分析框架生成的结构化元数据日志,涵盖连接、DNS、HTTP、SSL 等信息

工具与系统

  • Wireshark:开源数据包分析器,可在数据包级别深入检查网络协议
  • Zeek(前身为 Bro):网络分析框架,可从实时流量或捕获的流量生成结构化元数据日志
  • Arkime(前身为 Moloch):开源全量数据包捕获与搜索平台,适用于大规模网络取证
  • NetworkMiner:网络取证分析工具,可从 PCAP 文件中提取文件、图像和凭据
  • RITA(Real Intelligence Threat Analytics):开源信标检测和 DNS 隧道分析工具,可分析 Zeek 日志

常见场景

场景:确认 C2 信标通信并量化数据外传量

背景:EDR 在工作站上检测到可疑进程,但无法确定外传数据的数量。网络团队提供了覆盖事件时间段的全量数据包捕获设备生成的 PCAP。

处理方法:

  1. 筛选 PCAP,保留从受感染主机 IP 发往外部目标的流量
  2. 通过分析连接时间模式识别 C2 通道(信标检测)
  3. 从 C2 连接中提取 TLS 证书和 JA3 哈希,用于生成 IOC
  4. 计算事件期间传输到 C2 基础设施的总字节数
  5. 检查是否存在其他数据外传通道(DNS 隧道、云存储上传)
  6. 使用 Wireshark 的“导出对象”功能提取传输的未加密文件

注意事项:

  • 只分析 HTTP 流量,而 C2 实际通过 HTTPS 运行且未进行 SSL 检查
  • 因为每次查询的数据量很小而漏掉 DNS 隧道(但长期累计数据量可能很大)
  • 未将网络时间戳与终端时间戳关联起来(时区不匹配)
  • 忽视被滥用于数据外传的合法云服务(OneDrive、Google Drive、Dropbox)

输出格式

NETWORK TRAFFIC ANALYSIS REPORT
=================================
Incident:         INC-2025-1547
Analyst:          [Name]
Capture Source:   Arkime full packet capture
Analysis Period:  2025-11-15 14:00 UTC - 2025-11-15 18:00 UTC
Total PCAP Size:  4.7 GB

C2 COMMUNICATIONS
Source:           10.1.5.42 (WKSTN-042)
Destination:      185.220.101.42:443 (HTTPS)
Beacon Interval:  60 seconds ± 12% jitter
Sessions:         237 connections over 4 hours
JA3 Hash:         a0e9f5d64349fb13191bc781f81f42e1
TLS Certificate:  CN=update.evil[.]com (self-signed)
Total Data Sent:  147 MB (outbound)
Total Data Recv:  2.3 MB (inbound - commands)

LATERAL MOVEMENT
10.1.5.42 → 10.1.10.15 (SMB, TCP 445) - 14:35 UTC
10.1.5.42 → 10.1.10.20 (RDP, TCP 3389) - 14:42 UTC
10.1.5.42 → 10.1.1.5  (LDAP, TCP 389) - 15:10 UTC

EXFILTRATION SUMMARY
Protocol:         HTTPS to C2 server
Volume:           147 MB outbound
Duration:         14:23 UTC - 18:00 UTC
Files Extracted:  [list if recoverable from unencrypted channels]

DNS ANALYSIS
Suspicious Queries: 0 DNS tunneling indicators
DGA Detection:      0 algorithmically generated domains

EVIDENCE REFERENCES
PCAP File:        INC-2025-1547_capture.pcap (SHA-256: ...)
Zeek Logs:        /logs/zeek/2025-11-15/ (conn.log, ssl.log, dns.log)

评论

支持 Markdown