ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

隐蔽信道检测 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 ATTCK, 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/replytype 8/0的载荷中隐藏数据代表工具如 icmpsh、ptunnelHTTP 隐蔽信道将 C2 数据嵌入请求头、Cookie 或图片隐写中协议滥用利用被防火墙放行的协议承载非法数据流。该技能在仓库元数据SKILL.md 的 frontmatter中映射了四条 MITRE ATTCK 战术技术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_tunneling、detect_icmp_covert_channel、detect_http_header_covert、detect_protocol_anomalies四个检测函数下文将逐一展开。环境前置条件按 SKILL.md 的 Prerequisites 一节搭建本技能所需环境Python 3.9安装scapy、dpkt、dnslibWireshark/tshark用于 PCAP 分析Zeek原 Bro用于网络监控DNS 查询日志记录基础设施具备数据包层面的 DNS、ICMP、HTTP 协议理解pip install scapy dpkt dnslib如果缺少 Scapy仓库代码会直接提示pip install scapy并退出见 scripts/agent.py 第 17-18 行的导入兜底逻辑。Scapy 数据包分析 APIDNS 隧道检测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 # 1A, 16TXT, 28AAAA关键字段说明qnameDNS 查询名需先decode()再rstrip(.)去掉末尾点号得到完整的 FQDNqtype查询类型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 # 8echo-request, 0echo-replyICMP 隧道检测的核心是分析 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.logdns.logDNS 协议元数据用于查询名长度、类型、域名的统计分析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_threshold3.5、length_threshold50第 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.pcapDNS 隧道检测器detect_dns_tunneling第 30-62 行将每个 DNS 查询切分为子域与基础域取最后两个标签作为 base_domain计算子域的香农熵与长度当entropy 3.5且subdomain_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_exfilMEDIUM以x-开头的自定义头值超过 100 字符且熵大于 4.0 →http_custom_headerMEDIUM。这对应 api-reference 分类表中HTTP 头隐写 → Cookie 大小、自定义头熵的检测方法。协议异常检测器detect_protocol_anomalies第 130-141 行对每个 IP 包的proto字段做白名单校验非 1ICMP、6TCP、17UDP、47GRE、50ESP、51AH的协议号即报 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 与源码实际执行顺序为样本收集抓取可疑流量生成 PCAP或使用已有捕获文件Scapy 粗筛运行 agent.py对 DNS 隧道、ICMP 隧道、HTTP 头隐写、协议异常四类发现做初筛并定级Zeek 关联zeek -r capture.pcap local生成 dns.log/conn.log/weird.log结合查询量、weird 事件交叉验证tshark 精查对高价值流向用-Y过滤器提取明细字段读取具体载荷IOC 提取与报告整理可疑域名、IP、查询名作为 IOC按 assets/template.md含 SHA-256、发现明细、IOC、建议等字段分类标记 TLP:AMBER生成报告。标准映射与验证依据 references/standards.md本技能适用的标准包括 MITRE ATTCK 框架、NIST SP 800-83《恶意软件事件预防指南》、NIST SP 800-86《取证技术集成指南》具体技术映射见 SKILL.md 的 frontmatterT1071.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 ATTCK, 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),仅供参考
返回列表