analyzing-network-traffic-of-malware

分析恶意软件在沙箱执行或实时事件响应期间生成的网络流量, 使用 Wireshark、Zeek 和 Suricata 识别 C2 协议、数据泄露信道、 载荷下载和横向移动模式。适用于恶意软件网络分析、C2 流量解码、 恶意软件 PCAP 分析或基于网络的恶意软件检测相关请求。

9 stars

Best use case

analyzing-network-traffic-of-malware is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

分析恶意软件在沙箱执行或实时事件响应期间生成的网络流量, 使用 Wireshark、Zeek 和 Suricata 识别 C2 协议、数据泄露信道、 载荷下载和横向移动模式。适用于恶意软件网络分析、C2 流量解码、 恶意软件 PCAP 分析或基于网络的恶意软件检测相关请求。

Teams using analyzing-network-traffic-of-malware should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/analyzing-network-traffic-of-malware/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/analyzing-network-traffic-of-malware/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/analyzing-network-traffic-of-malware/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How analyzing-network-traffic-of-malware Compares

Feature / Agentanalyzing-network-traffic-of-malwareStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

分析恶意软件在沙箱执行或实时事件响应期间生成的网络流量, 使用 Wireshark、Zeek 和 Suricata 识别 C2 协议、数据泄露信道、 载荷下载和横向移动模式。适用于恶意软件网络分析、C2 流量解码、 恶意软件 PCAP 分析或基于网络的恶意软件检测相关请求。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 分析恶意软件的网络流量

## 适用场景

- 沙箱执行已捕获 PCAP 文件,需要详细分析网络行为
- 识别 C2 协议结构,用于编写网络检测签名
- 确定恶意软件泄露的数据及其目标外部基础设施
- 分析 DNS 隧道、域名生成算法(DGA)或快速通量行为
- 根据观察到的恶意软件网络模式创建 Suricata/Snort 签名

**不适用于**恶意软件行为的基于主机的分析;请使用 Cuckoo 沙箱报告或 Volatility 内存分析进行进程级活动分析。

## 前置条件

- Wireshark 4.x,用于交互式 PCAP 分析
- tshark(Wireshark CLI),用于脚本化数据包提取
- Zeek,用于从 PCAP 自动生成元数据
- Suricata,带 ET Open/ET Pro 规则集用于签名匹配
- NetworkMiner,用于从 PCAP 中提取文件和检测凭据
- Python 3.8+,安装 `scapy` 和 `dpkt` 用于程序化数据包分析

## 工作流程

### 步骤 1:PCAP 初步概览

获取网络流量的高层次理解:

```bash
# 捕获统计
capinfos malware.pcap

# 协议层次
tshark -r malware.pcap -q -z io,phs

# 端点统计(主要通信方)
tshark -r malware.pcap -q -z endpoints,ip

# 会话统计
tshark -r malware.pcap -q -z conv,tcp

# DNS 查询摘要
tshark -r malware.pcap -q -z dns,tree
```

### 步骤 2:分析 DNS 活动

检查 DNS 查询中的 DGA、隧道或 C2 域名解析:

```bash
# 提取所有 DNS 查询
tshark -r malware.pcap -T fields -e frame.time -e dns.qry.name -e dns.a \
  -Y "dns.flags.response == 1" | sort

# 检测 DGA 模式(高熵域名)
python3 << 'PYEOF'
import math
from collections import Counter

def entropy(s):
    p = [n/len(s) for n in Counter(s).values()]
    return -sum(pi * math.log2(pi) for pi in p if pi > 0)

# 从 tshark 输出解析 DNS 查询
import subprocess
result = subprocess.run(
    ["tshark", "-r", "malware.pcap", "-T", "fields", "-e", "dns.qry.name",
     "-Y", "dns.flags.response == 0"],
    capture_output=True, text=True
)

domains = set(result.stdout.strip().split('\n'))
print("可疑 DNS 查询(高熵):")
for domain in domains:
    if domain:
        subdomain = domain.split('.')[0]
        ent = entropy(subdomain)
        if ent > 3.5 and len(subdomain) > 10:
            print(f"  {domain}(熵值:{ent:.2f})")
PYEOF

# 检测 DNS 隧道(大型 TXT 响应)
tshark -r malware.pcap -T fields -e dns.qry.name -e dns.txt \
  -Y "dns.resp.type == 16 and dns.resp.len > 100"
```

### 步骤 3:分析 HTTP/HTTPS C2 通信

检查基于 Web 的命令与控制流量:

```bash
# 提取 HTTP 请求
tshark -r malware.pcap -T fields \
  -e frame.time -e ip.src -e ip.dst -e http.host \
  -e http.request.method -e http.request.uri -e http.user_agent \
  -Y "http.request"

# 提取 HTTP 响应体(潜在的载荷下载)
tshark -r malware.pcap -T fields \
  -e http.host -e http.request.uri -e http.content_type -e tcp.len \
  -Y "http.response and tcp.len > 1000"

# 提取 POST 数据(潜在的数据泄露)
tshark -r malware.pcap -T fields \
  -e http.host -e http.request.uri -e http.file_data \
  -Y "http.request.method == POST"

# TLS 分析(SNI、JA3 指纹)
tshark -r malware.pcap -T fields \
  -e tls.handshake.extensions_server_name \
  -e tls.handshake.ja3 \
  -Y "tls.handshake.type == 1"

# 提取 TLS 证书详情
tshark -r malware.pcap -T fields \
  -e x509ce.dNSName -e x509af.serialNumber \
  -e x509sat.utf8String \
  -Y "tls.handshake.type == 11"

# 导出 HTTP 对象(下载的文件)
tshark -r malware.pcap --export-objects http,exported_files/
```

### 步骤 4:检测信标模式

识别表明 C2 信标的规律周期性通信:

```python
# 从 PCAP 进行信标检测
from scapy.all import rdpcap, IP, TCP
from collections import defaultdict
import statistics

packets = rdpcap("malware.pcap")

# 按目标 IP:端口分组连接
connections = defaultdict(list)
for pkt in packets:
    if IP in pkt and TCP in pkt:
        if pkt[TCP].flags & 0x02:  # SYN 标志
            dst = f"{pkt[IP].dst}:{pkt[TCP].dport}"
            connections[dst].append(float(pkt.time))

# 分析时序间隔以检测信标
print("信标分析:")
for dst, times in connections.items():
    if len(times) >= 5:
        intervals = [times[i+1] - times[i] for i in range(len(times)-1)]
        avg = statistics.mean(intervals)
        stdev = statistics.stdev(intervals) if len(intervals) > 1 else 0
        jitter = (stdev / avg * 100) if avg > 0 else 0

        if 10 < avg < 3600 and jitter < 30:  # 抖动 < 30% 的规律间隔
            print(f"  [!] {dst}:{len(times)} 次连接")
            print(f"      间隔:{avg:.1f}s ± {stdev:.1f}s(抖动:{jitter:.1f}%)")
            print(f"      模式:可能是信标")
```

### 步骤 5:生成网络检测签名

根据观察到的流量模式创建 Suricata/Snort 规则:

```bash
# 对 PCAP 运行 Suricata 以匹配现有签名
suricata -r malware.pcap -l suricata_output/ -c /etc/suricata/suricata.yaml

# 查看告警
cat suricata_output/fast.log

# 根据观察到的模式创建自定义 Suricata 规则
cat << 'EOF' > custom_malware.rules
# 基于观察到的 URI 模式的 C2 信标检测
alert http $HOME_NET any -> $EXTERNAL_NET any (
    msg:"MALWARE MalwareX C2 Beacon";
    flow:established,to_server;
    http.method; content:"POST";
    http.uri; content:"/gate.php?id=";
    http.user_agent; content:"Mozilla/5.0 (compatible; MSIE 10.0)";
    sid:9000001; rev:1;
)

# 已知 C2 域名的 DNS 查询
alert dns $HOME_NET any -> any any (
    msg:"MALWARE MalwareX C2 DNS Query";
    dns.query; content:"update.malicious.com";
    sid:9000002; rev:1;
)

# 恶意软件 TLS 客户端的 JA3 哈希匹配
alert tls $HOME_NET any -> $EXTERNAL_NET any (
    msg:"MALWARE MalwareX JA3 Match";
    ja3.hash; content:"a0e9f5d64349fb13191bc781f81f42e1";
    sid:9000003; rev:1;
)
EOF
```

### 步骤 6:从流量中提取文件和工件

恢复传输的文件和嵌入数据:

```bash
# 使用 Zeek 提取文件
zeek -r malware.pcap /opt/zeek/share/zeek/policy/frameworks/files/extract-all-files.zeek
ls extract_files/

# 使用 NetworkMiner 提取文件(GUI)
# 或使用 tshark 导出特定协议
tshark -r malware.pcap --export-objects http,http_objects/
tshark -r malware.pcap --export-objects smb,smb_objects/
tshark -r malware.pcap --export-objects tftp,tftp_objects/

# 对所有提取的文件计算哈希值
sha256sum http_objects/* smb_objects/* 2>/dev/null

# 生成 Zeek 日志以获取全面的元数据
zeek -r malware.pcap
# 输出:conn.log, dns.log, http.log, ssl.log, files.log 等
```

## 核心概念

| 术语 | 定义 |
|------|------------|
| **信标(Beaconing)** | 恶意软件到 C2 服务器的规律性周期连接,通过一致的时间间隔和数据包大小识别 |
| **JA3/JA3S** | TLS 指纹方法,通过 ClientHello/ServerHello 参数创建哈希值,唯一标识恶意软件 TLS 实现 |
| **DGA(域名生成算法)** | 生成恶意软件查询以定位 C2 服务器的伪随机域名的算法,规避静态域名黑名单 |
| **DNS 隧道** | 将数据编码在 DNS 查询和响应中,通过 DNS 基础设施建立 C2 信道或泄露数据 |
| **快速通量(Fast Flux)** | DNS 技术,快速轮换域名的 IP 地址以避免下线,并将 C2 分布到许多被攻陷的主机 |
| **SNI(服务器名称指示)** | TLS 扩展,显示客户端连接的主机名;即使在加密的 HTTPS 连接中也可见 |
| **网络签名** | Suricata/Snort 规则,匹配网络流量(头部、载荷、时序)中的特定模式以检测恶意通信 |

## 工具与系统

- **Wireshark**:开源数据包分析器,用于在协议级深入交互检查网络流量
- **Zeek**:网络分析框架,从实时或捕获的流量生成结构化元数据日志(conn、dns、http、ssl)
- **Suricata**:高性能网络 IDS/IPS,带 Lua 脚本支持签名检测和自定义检测逻辑
- **NetworkMiner**:网络取证分析工具,用于从 PCAP 文件中提取文件、图像和凭据
- **Scapy**:Python 数据包处理库,用于程序化数据包分析、信标检测和协议解码

## 常见场景

### 场景:解码自定义二进制 C2 协议

**场景背景**:恶意软件通过 TCP 端口 8443 使用自定义二进制协议与 C2 服务器通信。标准 HTTP 分析无结果。需要从 PCAP 逆向工程协议结构。

**方法**:
1. 过滤 TCP 端口 8443 的会话并跟踪 TCP 流
2. 识别消息框架(长度前缀、分隔符、固定大小头部)
3. 比较多条消息以识别静态头部字段与可变数据字段
4. 与 Ghidra 的逆向工程结果交叉验证(如果已分析二进制文件)
5. 为自定义协议编写 Wireshark 解析器或 Scapy 解析器
6. 创建 Suricata 规则,匹配静态头部字节用于网络检测
7. 记录完整的协议规范用于威胁情报共享

**常见陷阱**:
- 只分析最初几个数据包;某些 C2 协议在初始握手后会改变行为
- 当沙箱具有 MITM 能力时未解密 TLS 流量
- 将合法的 CDN 或云流量与 C2 混淆(验证目标 IP)
- 遗漏使用 DNS 或 ICMP 而非 TCP/UDP 的 C2 流量

## 输出格式

```
恶意软件网络流量分析
===================================
PCAP 文件:      malware_sandbox.pcap
时长:           300 秒
总数据包:       12,847
总字节数:       4.2 MB

DNS 活动
总查询数:       47
检测到 DGA:     是(23 个高熵查询到 .com TLD)
隧道:           否
解析的 C2:      update.malicious[.]com -> 185.220.101[.]42

C2 通信
协议:           HTTPS(TLS 1.2)
服务器:         185.220.101[.]42:443
SNI:            update.malicious[.]com
JA3 哈希:       a0e9f5d64349fb13191bc781f81f42e1
信标间隔:       60.2s ± 6.8s(抖动 11.3%)
总会话数:       237
发送数据:       147 MB
接收数据:       2.3 MB
证书:           CN=update.malicious[.]com(自签名,已过期)

载荷下载
GET /payload.dll from compromised-site[.]com
  大小:98,304 字节
  SHA-256:abc123def456...
  Content-Type:application/octet-stream

数据泄露
方法:           HTTPS POST 到 /gate.php
Content-Type:   application/octet-stream
平均大小:       每次请求 15,432 字节
总量:           4 小时内 147 MB

SURICATA 告警
[1:2028401] ET MALWARE Generic C2 Beacon Pattern
[1:2028500] ET POLICY Self-Signed Certificate

生成的签名
SID 9000001:MalwareX HTTP 信标模式
SID 9000002:MalwareX DNS C2 域名
SID 9000003:MalwareX JA3 TLS 指纹
```

Related Skills

scanning-network-with-nmap-advanced

9
from killvxk/cybersecurity-skills-zh

使用 Nmap 的脚本引擎、时序控制、规避技术和输出解析,对授权目标网络执行高级网络侦察, 发现主机、枚举服务、检测漏洞并识别操作系统。

reverse-engineering-rust-malware

9
from killvxk/cybersecurity-skills-zh

使用 IDA Pro 和 Ghidra 对 Rust 编译的恶意软件进行逆向工程,掌握处理非空终止字符串、提取 crate 依赖项和 Rust 特有控制流分析的专项技术。

reverse-engineering-malware-with-ghidra

9
from killvxk/cybersecurity-skills-zh

使用 NSA 的 Ghidra 反汇编器和反编译器对恶意软件二进制文件进行逆向工程,在汇编和伪 C 代码层面理解其内部逻辑、密码学例程、C2 协议和规避技术。适用于恶意软件逆向工程、反汇编分析、反编译、二进制分析或理解恶意软件内部机制等请求。

reverse-engineering-dotnet-malware-with-dnspy

9
from killvxk/cybersecurity-skills-zh

使用 dnSpy 反编译器和调试器对 .NET 恶意软件进行逆向工程,分析 C#/VB.NET 源代码,识别混淆技术,提取配置信息,理解包括信息窃取器、远程访问木马(RAT)和加载器在内的恶意功能。适用于 .NET 恶意软件分析、C# 恶意软件反编译、托管代码逆向工程或 .NET 混淆分析等请求。

reverse-engineering-android-malware-with-jadx

9
from killvxk/cybersecurity-skills-zh

使用 JADX 反编译器对恶意 Android APK 文件进行逆向工程,分析 Java/Kotlin 源代码,识别包括数据窃取、C2 通信、权限提升和覆盖攻击在内的恶意功能。检查 Manifest 权限、Receiver、Service 及原生库。适用于 Android 恶意软件分析、APK 逆向工程、移动端恶意软件调查或 Android 威胁分析等请求。

performing-wireless-network-penetration-test

9
from killvxk/cybersecurity-skills-zh

执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。

performing-static-malware-analysis-with-pe-studio

9
from killvxk/cybersecurity-skills-zh

使用 PEStudio 对 Windows PE(可移植可执行文件)恶意软件样本进行静态分析, 检查文件头、导入表、字符串、资源和指标,无需执行二进制文件。 识别可疑特征,包括加壳、反分析技术和恶意导入。适用于静态恶意软件分析、 PE 文件检查、Windows 可执行文件分析或执行前恶意软件分级等请求场景。

performing-ot-network-security-assessment

9
from killvxk/cybersecurity-skills-zh

本技能涵盖对运营技术(OT)网络(包括SCADA系统、DCS架构和工业控制系统通信路径)进行全面安全评估。内容涉及Purdue参考模型各层、识别IT/OT融合风险、评估区域间防火墙规则,以及映射工业协议流量(Modbus、DNP3、OPC UA、EtherNet/IP),以检测关键基础设施中的错误配置、未授权连接和攻击面。

performing-network-traffic-analysis-with-zeek

9
from killvxk/cybersecurity-skills-zh

部署 Zeek 网络安全监控器,捕获、解析和分析网络流量元数据,用于威胁检测、异常识别和取证调查。

performing-network-traffic-analysis-with-tshark

9
from killvxk/cybersecurity-skills-zh

使用 tshark 和 pyshark 自动化网络流量分析,进行协议统计、可疑流量检测、DNS 异常识别以及从 PCAP 文件中提取威胁指标(IOC)

performing-network-packet-capture-analysis

9
from killvxk/cybersecurity-skills-zh

使用 Wireshark、tshark 和 tcpdump 对网络数据包捕获(PCAP/PCAPNG)进行取证分析,重建网络通信、提取传输文件、识别恶意流量,并建立数据渗出或命令与控制活动的证据。

performing-network-forensics-with-wireshark

9
from killvxk/cybersecurity-skills-zh

使用 Wireshark 和 tshark 捕获并分析网络流量,重建网络事件、提取制品并识别恶意通信。