news 2026/9/10 3:00:26

隐蔽信道检测 API 全指南:用 Scapy、Zeek 与 tshark 识别恶意软件的 DNS 隧道、ICMP 外渗与协议滥用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
隐蔽信道检测 API 全指南:用 Scapy、Zeek 与 tshark 识别恶意软件的 DNS 隧道、ICMP 外渗与协议滥用

隐蔽信道检测 API 全指南:用 Scapy、Zeek 与 tshark 识别恶意软件的 DNS 隧道、ICMP 外渗与协议滥用

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

本篇技术指南聚焦于Anthropic-Cybersecurity-Skills仓库中analyzing-network-covert-channels-in-malware技能所配套的 API 参考文档(references/api-reference.md),系统讲解恶意软件隐蔽通信信道的检测方法、工具 API 用法与判读标准。读完本文,你将掌握:基于 Scapy 的 DNS 隧道与 ICMP 载荷分析、基于 Zeek 的 DNS 隧道指标脚本、基于 tshark 的协议过滤取证,以及如何结合仓库内 scripts/agent.py 的源码实现构建端到端的隐蔽信道检测流程。

背景:为什么要在网络捕获中检测隐蔽信道

恶意软件将命令与控制(C2)通信与数据外渗伪装进看似正常的网络流量中,形成隐蔽信道(covert channel)。常见的实现方式包括:

  • DNS 隧道:将数据编码进 DNS 查询与响应,被 iodine、dnscat2、dns2tcp 等工具以及 FrameworkPOS 等恶意软件家族使用;
  • ICMP 隧道:在 echo request/reply(type 8/0)的载荷中隐藏数据,代表工具如 icmpsh、ptunnel;
  • HTTP 隐蔽信道:将 C2 数据嵌入请求头、Cookie 或图片隐写中;
  • 协议滥用:利用被防火墙放行的协议承载非法数据流。

该技能在仓库元数据(SKILL.md 的 frontmatter)中映射了四条 MITRE ATT&CK 战术技术:T1071.001(应用层协议)、T1095(非应用层协议)、T1572(协议隧道)、T1001(数据混淆),同时映射了 NIST CSF 的 DE.AE-02、DE.CM-01、ID.RA-01、RS.AN-03 四项控制要求,以及 D3FEND 的 Application Protocol Command Analysis、Content Format Conversion 等防御技术,是 SOC 分析师构建检测规则、开展威胁狩猎时的结构化程序基础。

隐蔽信道类别总览

api-reference.md 给出了五类隐蔽信道的完整分类与对应检测方法:

信道类型协议检测方法
DNS 隧道DNS (53/udp)子域熵、查询量
ICMP 隧道ICMP (type 8/0)载荷大小、熵、流量
HTTP 头隐写HTTP (80/tcp)Cookie 大小、自定义头熵
协议滥用IP 选项、GRE异常的协议号
时序信道TCP包间时序分析

这些类别在 scripts/agent.py 中分别对应detect_dns_tunnelingdetect_icmp_covert_channeldetect_http_header_covertdetect_protocol_anomalies四个检测函数,下文将逐一展开。

环境前置条件

按 SKILL.md 的 Prerequisites 一节,搭建本技能所需环境:

  • Python 3.9+,安装scapydpktdnslib
  • Wireshark/tshark,用于 PCAP 分析
  • Zeek(原 Bro),用于网络监控
  • DNS 查询日志记录基础设施
  • 具备数据包层面的 DNS、ICMP、HTTP 协议理解
pip install scapy dpkt dnslib

如果缺少 Scapy,仓库代码会直接提示pip install scapy并退出(见 scripts/agent.py 第 17-18 行的导入兜底逻辑)。

Scapy 数据包分析 API

DNS 隧道检测

api-reference.md 给出的 Scapy DNS 解析骨架如下:

from scapy.all import rdpcap, DNS, DNSQR, IP packets = rdpcap("capture.pcap") for pkt in packets: if pkt.haslayer(DNSQR): qname = pkt[DNSQR].qname.decode().rstrip(".") src = pkt[IP].src qtype = pkt[DNSQR].qtype # 1=A, 16=TXT, 28=AAAA

关键字段说明:

  • qname:DNS 查询名,需先decode()rstrip(".")去掉末尾点号,得到完整的 FQDN;
  • qtype:查询类型,1 表示 A 记录、16 表示 TXT 记录、28 表示 AAAA 记录。TXT 记录常被隧道工具(如 dns2tcp)用作数据承载通道;
  • 使用haslayer(DNSQR)判断包内是否含 DNS 查询记录,是避免解析非 DNS 包的安全写法。

ICMP 载荷提取

from scapy.all import ICMP, Raw for pkt in packets: if pkt.haslayer(ICMP) and pkt.haslayer(Raw): payload = bytes(pkt[Raw].load) icmp_type = pkt[ICMP].type # 8=echo-request, 0=echo-reply

ICMP 隧道检测的核心是分析 ICMP 报文的Raw载荷:正常 ping 的载荷通常是固定内容的字节(如 64 字节的周期序列),而隧道数据是熵值极高、长度异常的编码数据。icmp_type用于区分请求(8)与应答(0),隧道工具往往同时利用两个方向传输。

仓库实现中的熵计算

scripts/agent.py 第 21-27 行的shannon_entropy函数给出了标准香农熵实现,这是判断"数据是否被编码/加密"的核心量化指标:

def shannon_entropy(data): """Calculate Shannon entropy of byte data.""" if not data: return 0.0 freq = Counter(data) length = len(data) return -sum((c / length) * math.log2(c / length) for c in freq.values())

自然语言或常规命名的熵值较低,而 Base32/Base64 编码或加密后的随机字节熵值显著升高——这正是后续"熵阈值判读"表能够成立的理论基础。

Zeek 隐蔽信道检测

DNS 隧道指标脚本

Zeek 通过事件驱动脚本监控 DNS 查询,api-reference.md 给出的示例检测超长查询名:

@load base/protocols/dns event dns_request(c: connection, msg: dns_msg, query: string, qtype: count) { if (|query| > 60) print fmt("Long DNS query: %s from %s", query, c$id$orig_h); }

|query| > 60利用 Zeek 的字符串长度操作符过滤出超长查询名——这是 DNS 隧道最直观的指示器之一,因为正常业务查询名极少超过 60 字符。

运行与输出

zeek -r capture.pcap local # Outputs: dns.log, conn.log, weird.log
  • dns.log:DNS 协议元数据,用于查询名长度、类型、域名的统计分析;
  • conn.log:连接级记录,用于查询量统计与流分析;
  • weird.log:协议异常记录,Zeek 解析器发现的畸形或可疑报文。

结合detecting-dns-exfiltration-with-dns-query-analysis等仓库中相邻技能的做法,生产环境中一般将 Zeek 的dns.log灌入 SIEM,用查询量、熵值、TXT 记录比例等维度做关联分析。

tshark 协议过滤分析

DNS 分析

tshark 适合对离线 PCAP 做快速、可脚本化的字段提取:

tshark -r capture.pcap -Y "dns" -T fields \ -e ip.src -e dns.qry.name -e dns.qry.type -e frame.len # Filter long DNS queries tshark -r capture.pcap -Y "dns.qry.name matches \"^.{60,}\"" -T fields -e dns.qry.name
  • -Y指定显示过滤器,-T fields配合-e输出结构化字段,便于后续 grep/awk/导入分析;
  • 正则"^.{60,}"匹配长度 60 以上的查询名,与 Zeek 脚本的 60 字符阈值保持一致;
  • frame.len字段可辅助判断响应是否携带异常大的数据(TXT/CNAME 隧道常见的特征)。

ICMP 载荷分析

tshark -r capture.pcap -Y "icmp && data.len > 64" -T fields \ -e ip.src -e ip.dst -e icmp.type -e data.len -e data.data

该命令筛选载荷长度超过 64 字节的 ICMP 报文,并输出源/目的 IP、ICMP 类型、载荷长度与十六进制载荷。data.len > 64的判断依据是:正常 ICMP echo 请求载荷通常不超过 64 字节(或为固定大小),超长且高熵的载荷强烈暗示隧道行为。

熵阈值判读:量化可疑程度

api-reference.md 给出的熵区间解释,是整个检测体系中把"感觉可疑"变为"量化评分"的关键:

熵范围解读
< 2.0正常域名标签(英文单词)
2.0 - 3.5可能被编码,但也可能合法
3.5 - 5.0很可能是 Base32/Base64 编码(隧道特征)
> 5.0加密/随机数据(强隧道指示)

在仓库的 agent.py 中,熵阈值被直接落为检测参数:detect_dns_tunneling的默认entropy_threshold=3.5length_threshold=50(第 30 行);detect_icmp_covert_channel则在载荷长度超过 64 字节且熵大于 5.0 时才判为 HIGH 的icmp_covert发现(第 77 行),与上表"5.0 以上为强指示"完全对应。

DNS 隧道工具指纹

api-reference.md 汇总了主流 DNS 隧道工具的协议偏好与检测要点:

工具技术检测方法
iodineTXT/NULL/CNAME 记录高熵子域
dns2tcpTXT 记录编码的查询名
dnscat2TXT/CNAME/MX/A 记录Base32/Base64 子域模式
DNSExfiltratorTXT 记录对单一域名的高查询量

这些指纹直接指导检测规则的设计方向:

  • 监测TXT 记录占比——多个隧道工具都以 TXT 作为主承载记录;
  • 监测子域熵——工具会把数据编码进子域标签,破坏英文单词级的低熵分布;
  • 监测单域名查询量——外渗是持续性行为,会产生对同一权威域名的密集查询(agent.py 中以query_count > 100且平均熵大于 3.0 作为高流量异常的判据,见第 54-60 行)。

仓库源码级实现:agent.py 的检测原理

scripts/agent.py 是上述 API 参考文档的可运行实现,包含四个检测器与一个汇总报告器,可直接对 PCAP 执行端到端分析:

python agent.py capture.pcap

DNS 隧道检测器

detect_dns_tunneling(第 30-62 行)将每个 DNS 查询切分为子域与基础域(取最后两个标签作为 base_domain),计算子域的香农熵与长度,当entropy > 3.5subdomain_len > 50时产生 HIGH 严重级的dns_tunneling发现;同时对查询量超过 100、平均熵超过 3.0 的域名产生dns_high_volume发现。这与 SKILL.md 工作流中基于"平均子域长度、唯一子域占比、子域熵、TXT 查询数"四项指标累加打分(score >= 50 判为可疑)的评分模型互为印证。

ICMP 隐蔽信道检测器

detect_icmp_covert_channel(第 65-92 行)按src->dst聚合 ICMP 载荷:单包载荷超 64 字节且熵超 5.0 判为icmp_covert;同流向累计传输超过 10000 字节判为icmp_exfiltration——后者对应数据外渗的宏观视角。

HTTP 头隐写检测器

detect_http_header_covert(第 95-127 行)解析 TCP 载荷中的 HTTP 请求行与头字段:

  • Cookie值超过 500 字符且熵大于 4.5 →http_cookie_exfil(MEDIUM);
  • x-开头的自定义头,值超过 100 字符且熵大于 4.0 →http_custom_header(MEDIUM)。

这对应 api-reference 分类表中"HTTP 头隐写 → Cookie 大小、自定义头熵"的检测方法。

协议异常检测器

detect_protocol_anomalies(第 130-141 行)对每个 IP 包的proto字段做白名单校验,非 1(ICMP)、6(TCP)、17(UDP)、47(GRE)、50(ESP)、51(AH)的协议号即报 MEDIUM——这是"协议滥用"类隐蔽信道的基础层检测。

报告生成与风险定级

generate_report(第 144-155 行)将四类发现聚合成结构化 JSON 报告,并按发现总数定级:>10为 HIGH、>3为 MEDIUM、否则为 LOW。运行脚本会输出各检测器的 Top 发现摘要与完整 JSON,可直接对接 assets/template.md 报告模板完成取证归档。

端到端分析工作流

references/workflows.md 定义了本技能的主工作流:

[Sample Collection] --> [Static Analysis] --> [Dynamic Analysis] --> [IOC Extraction] | v [Report Generation]

结合上述 API 与源码,实际执行顺序为:

  1. 样本收集:抓取可疑流量生成 PCAP,或使用已有捕获文件;
  2. Scapy 粗筛:运行 agent.py,对 DNS 隧道、ICMP 隧道、HTTP 头隐写、协议异常四类发现做初筛并定级;
  3. Zeek 关联zeek -r capture.pcap local生成 dns.log/conn.log/weird.log,结合查询量、weird 事件交叉验证;
  4. tshark 精查:对高价值流向用-Y过滤器提取明细字段,读取具体载荷;
  5. IOC 提取与报告:整理可疑域名、IP、查询名作为 IOC,按 assets/template.md(含 SHA-256、发现明细、IOC、建议等字段,分类标记 TLP:AMBER)生成报告。

标准映射与验证

依据 references/standards.md,本技能适用的标准包括 MITRE ATT&CK 框架、NIST SP 800-83《恶意软件事件预防指南》、NIST SP 800-86《取证技术集成指南》;具体技术映射见 SKILL.md 的 frontmatter(T1071.001、T1095、T1572、T1001)。

一次合格的检测分析应满足 SKILL.md 的 Validation Criteria:

  • 通过熵、子域长度与查询量分析识别出 DNS 隧道;
  • 通过载荷大小异常识别出 ICMP 隐蔽信道;
  • 能够将隧道域名与合法的 CDN/云流量区分开;
  • 能够从捕获流量估算数据外渗量;
  • 能够提取 C2 通信模式与 beacon 间隔特征。

需要强调的是,现代 ML 方案对 DNS 隧道检测可达到较高召回率,但低吞吐量外渗仍是业界公认的检测难点,这也是为什么本技能强调"熵 + 长度 + 流量"多维联合判定,而非依赖单一指标。

【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 2:59:28

CANN/ge动态批量图片分类样例

样例使用指导 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前…

作者头像 李华
网站建设 2026/9/10 2:59:13

JWT认证授权实战:从签发到校验的完整避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 2:58:03

分布式光伏配电网集群划分与电压协调控制的Matlab实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 2:57:10

写真打赏系统源码部署指南:从PHP选型到支付回调幂等处理

简介&#xff1a;2025最新写真图片视频打赏系统源码是一套可直接部署的完整建站资源&#xff0c;主要面向想搭建图片/视频打赏平台的技术开发者和内容运营者。系统内置易支付接口&#xff0c;覆盖网银、手机支付等多种收款方式&#xff0c;并提供独立代理后台用于内容审核、财务…

作者头像 李华