L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

analyzing-network-traffic-for-incidents

analyzing-network-traffic-for-incidents

分析网络流量捕获和流量数据,以识别安全事件期间的攻击者活动,包括命令与控制(C2)通信、横向移动(lateral movement)、数据外泄(exfiltration)和漏洞利用尝试。使用 Wireshark、Zeek 和 NetFlow 分析技术。适用于网络流量分析、数据包捕获调查、PCAP 分析、网络取证、C2 流量检测或数据外泄检测等场景。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: analyzing-network-traffic-for-incidents description: > 分析网络流量捕获和流量数据,以识别安全事件期间的攻击者活动,包括命令与控制(C2)通信、横向移动(lateral movement)、数据外泄(exfiltration)和漏洞利用尝试。使用 Wireshark、Zeek 和 NetFlow 分析技术。适用于网络流量分析、数据包捕获调查、PCAP 分析、网络取证、C2 流量检测或数据外泄检测等场景。 domain: cybersecurity subdomain: incident-response tags: [network-forensics, PCAP-analysis, Wireshark, Zeek, traffic-analysis] version: 1.0.0 author: mahipal license: Apache-2.0

针对安全事件的网络流量分析

适用场景

  • SIEM 告警显示异常网络流量模式,需要深入调查
  • 怀疑存在 C2 信标(beaconing),需通过数据包级别分析加以确认
  • 需要从网络证据中量化数据外泄的规模或目标地址
  • 需要通过网络连接追踪系统间的横向移动
  • IDS/IPS 告警需要数据包级别验证以确认或排除

不适用于基于主机的取证分析(进程执行、文件系统制品);此类场景请使用终端取证工具。

前置条件

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

工作流程

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

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

实时捕获(事件仍在进行时):

# 在特定接口上按主机过滤进行捕获
tcpdump -i eth0 -w capture.pcap host 10.1.5.42

# 捕获发往特定外部 IP 的 C2 流量
tcpdump -i eth0 -w c2_traffic.pcap host 185.220.101.42

# 带滚动轮转的捕获(每个文件 1GB,保留 10 个)
tcpdump -i eth0 -w capture_%Y%m%d%H%M.pcap -C 1000 -W 10

从现有基础设施获取:

  • 从全量数据包捕获设备导出 PCAP(Arkime/Moloch、ExtraHop、Corelight)
  • 从 Zeek 集群拉取调查时间段内的 Zeek 日志
  • 从网络设备导出 NetFlow 数据,用于高层流量分析

步骤 2:识别 C2 通信

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

信标检测(Zeek conn.log):

# 提取具有规律间隔的对外连接
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 信标分析:

# 过滤发往可疑 C2 IP 的流量
ip.addr == 185.220.101.42

# 过滤非标准端口上的 HTTPS 流量
tcp.port != 443 && ssl

# 过滤可疑域名的 DNS 查询
dns.qry.name contains "evil" or dns.qry.name matches "^[a-z0-9]{32}\."

# 过滤 HTTP POST(常见 C2 上线方式)
http.request.method == "POST" && ip.dst == 185.220.101.42

信标特征识别要点:

  • 连接之间存在规律性时间间隔(例如每 60 秒,抖动(jitter)10-15%)
  • 请求和响应中数据包大小保持一致
  • HTTPS 连接发往与合法 CDN 或服务无关的外部 IP
  • DNS 查询子域熵值高(DNS 隧道(DNS tunneling)指标)

步骤 3:分析横向移动流量

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

横向移动检测关键协议:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SMB (TCP 445):     PsExec、文件共享访问、勒索软件传播
RDP (TCP 3389):    远程桌面会话
WinRM (TCP 5985):  PowerShell 远程访问
WMI (TCP 135):     远程命令执行
SSH (TCP 22):      Linux 横向移动
DCE/RPC (TCP 135): 基于 DCOM 的横向移动

横向移动的 Wireshark 过滤器:

# SMB 横向移动
smb2 && ip.src == 10.1.5.42 && ip.dst != 10.1.5.42

# 来自失陷主机的 RDP 连接
tcp.dstport == 3389 && ip.src == 10.1.5.42

# Kerberos 票据请求(潜在的票据传递(Pass-the-Ticket))
kerberos.msg_type == 12 && ip.src == 10.1.5.42

# NTLM 认证(潜在的哈希传递(Pass-the-Hash))
ntlmssp.auth.username && ip.src == 10.1.5.42

步骤 4:检测数据外泄

识别从网络中未经授权的数据传输:

# 在 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#x27;\t' -k5 -rn

# DNS 隧道检测(高量 TXT 查询)
cat dns.log | zeek-cut query qtype | grep TXT | cut -f1 \
  | rev | cut -d. -f1,2 | rev | sort | uniq -c | sort -rn | head

# 异常协议使用(ICMP 隧道、DNS over HTTPS)
cat conn.log | zeek-cut proto id.resp_p orig_bytes | awk '$1 == "icmp" && $3 > 1000'

Wireshark 数据外泄过滤器:

# 大型 HTTP POST 上传
http.request.method == "POST" && tcp.len > 10000

# FTP 数据传输
ftp-data && ip.src == 10.0.0.0/8

# 含大型 TXT 响应的 DNS(隧道)
dns.resp.type == 16 && dns.resp.len > 200

步骤 5:提取并关联 IOC

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

  • 失陷主机联系的外部 IP 地址
  • 事件期间通过 DNS 解析的域名
  • 通过 HTTP/HTTPS 访问的 URL(如已部署 SSL 检测)
  • TLS 证书详情(主题、颁发者、序列号、JA3/JA3S 哈希)
  • HTTP 请求中的 User-Agent 字符串
  • PCAP 中捕获的文件传输(使用 Wireshark 导出对象功能提取)

步骤 6:记录网络取证发现

将分析结果汇编为带证据引用的结构化报告:

  • 对每个发现引用具体的 PCAP 文件、帧编号和时间戳
  • 以截图或导出 PDF 形式保存关键证据的数据包捕获
  • 将网络活动映射到事件时间线
  • 将网络发现与终端取证的基于主机的证据进行关联

核心概念

术语定义
PCAP(数据包捕获)存储从网络接口捕获的原始网络数据包的文件格式,用于离线分析
信标(Beaconing)失陷主机向 C2 服务器发出的规律性、周期性网络连接,可通过一致的时间间隔识别
JA3/JA3S基于 ClientHello 和 ServerHello 参数的 TLS 客户端和服务器指纹方法;每个应用程序具有唯一指纹
NetFlow/IPFIX由路由器和交换机收集的网络流量元数据(源、目标、端口、字节数、持续时间),无需全量数据包捕获
DNS 隧道(DNS Tunneling)将数据编码在 DNS 查询和响应中,通过 DNS 协议进行数据外泄或维持 C2 的技术
网络分路器(Network Tap)创建网络流量精确副本用于监控的硬件设备,不影响网络性能
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 导出对象功能提取任何未加密的传输文件

常见陷阱:

  • 当 C2 在没有 SSL 检测的情况下通过 HTTPS 运行时,仅分析 HTTP 流量
  • 忽略 DNS 隧道,因为每个查询的数据量很小(但随时间累积后总量可观)
  • 未将网络时间戳与终端时间戳关联(时区不匹配问题)
  • 忽视被滥用于数据外泄的合法云服务(OneDrive、Google Drive、Dropbox)

输出格式

网络流量分析报告
=================================
事件编号:         INC-2025-1547
分析师:           [姓名]
捕获来源:         Arkime 全量数据包捕获
分析时段:         2025-11-15 14:00 UTC - 2025-11-15 18:00 UTC
PCAP 总大小:      4.7 GB

C2 通信
Source:           10.1.5.42 (WKSTN-042)
Destination:      185.220.101.42:443 (HTTPS)
Beacon Interval:  60 秒 ± 12% 抖动
Sessions:         4 小时内 237 次连接
JA3 Hash:         a0e9f5d64349fb13191bc781f81f42e1
TLS Certificate:  CN=update.evil[.]com(自签名)
Total Data Sent:  147 MB(出站)
Total Data Recv:  2.3 MB(入站 - 命令)

横向移动
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

数据外泄摘要
Protocol:         HTTPS 至 C2 服务器
Volume:           147 MB 出站
Duration:         14:23 UTC - 18:00 UTC
Files Extracted:  [如可从未加密通道恢复则列出]

DNS 分析
Suspicious Queries: 0 个 DNS 隧道指标
DGA Detection:      0 个算法生成域名

证据引用
PCAP File:        INC-2025-1547_capture.pcap (SHA-256: ...)
Zeek Logs:        /logs/zeek/2025-11-15/ (conn.log, ssl.log, dns.log)
Skills enregistrées