hunting-for-dns-tunneling-with-zeek
通过分析 Zeek dns.log 中的高熵子域名查询、超量查询量、超长查询长度以及异常 DNS 记录类型,检测 DNS 隧道和数据外泄中的隐蔽通道通信。适用于:当需要狩猎基于 DNS 的 C2 或数据外泄通道、调查异常 DNS 查询模式、或响应涉及 DNS 隧道工具(iodine、dnscat2、DNSExfiltrator)的威胁情报时使用。
Best use case
hunting-for-dns-tunneling-with-zeek is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
通过分析 Zeek dns.log 中的高熵子域名查询、超量查询量、超长查询长度以及异常 DNS 记录类型,检测 DNS 隧道和数据外泄中的隐蔽通道通信。适用于:当需要狩猎基于 DNS 的 C2 或数据外泄通道、调查异常 DNS 查询模式、或响应涉及 DNS 隧道工具(iodine、dnscat2、DNSExfiltrator)的威胁情报时使用。
Teams using hunting-for-dns-tunneling-with-zeek 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
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/hunting-for-dns-tunneling-with-zeek/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How hunting-for-dns-tunneling-with-zeek Compares
| Feature / Agent | hunting-for-dns-tunneling-with-zeek | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
通过分析 Zeek dns.log 中的高熵子域名查询、超量查询量、超长查询长度以及异常 DNS 记录类型,检测 DNS 隧道和数据外泄中的隐蔽通道通信。适用于:当需要狩猎基于 DNS 的 C2 或数据外泄通道、调查异常 DNS 查询模式、或响应涉及 DNS 隧道工具(iodine、dnscat2、DNSExfiltrator)的威胁情报时使用。
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
# 使用 Zeek 狩猎 DNS 隧道
## 适用场景
- 狩猎通过 DNS 隐蔽通道进行的数据外泄时
- 威胁情报显示针对所在行业的基于 DNS 的 C2 框架活动时
- dns.log 显示向特定域名的查询量异常偏高时
- 调查未发现 HTTP/S 外泄的疑似数据窃取事件时
- 监控 iodine、dnscat2、DNSExfiltrator 或 DNS-over-HTTPS 隧道工具时
## 前置条件
- Zeek 部署在网络分流点或 SPAN 端口以捕获 DNS 流量
- 包含完整查询和响应字段的 Zeek dns.log
- 用于 dns.log 分析的 SIEM 平台(Splunk、Elastic)
- 用于自动化 DNS 分析的 RITA(Real Intelligence Threat Analytics)
- 用于域名历史解析上下文的被动 DNS 数据
## 工作流程
1. **分析查询长度分布**:计算每个域名查询长度的均值和标准差。阈值:正常 20-30 字符,隧道 > 50 字符。
2. **计算子域名熵值**:计算子域名标签的 Shannon 熵。阈值:> 3.5 比特/字符提示编码数据。
- **检查点**:确认已标记长度 > 50 且熵 > 3.5 的查询后再继续。
3. **统计每个域名的唯一子域名数量**:单个父域名下超过 100 个唯一子域名/小时为异常。
4. **监控 DNS 记录类型分布**:标记向单个域名发出的过量 TXT/NULL/CNAME/MX 查询(比例 > 50%)。
- **检查点**:至少满足 2 项以上指标(长度、熵、唯一数、记录类型)才升级为高优先级。
5. **检测高查询量**:标记单源每小时 > 100 次查询,尤其结合高子域名唯一性。
6. **分析查询时序**:对 DNS 查询时间戳应用频率分析,识别信标(规律)或突发(传输)模式。
7. **与 conn.log 交叉关联**:将 DNS 查询与连接元数据关联,识别源进程或终端。
- **检查点**:确认可疑域名已关联至具体终端后再进入情报验证。
8. **验证域名情报**:针对 WHOIS、证书透明度和威胁情报 feeds 核查可疑域名。
## 检测查询
### Zeek 脚本——DNS 隧道检测
```zeek
@load base/protocols/dns
module DNSTunnel;
export {
redef enum Notice::Type += { DNSTunnel::Long_DNS_Query };
const query_length_threshold = 50 &redef;
const query_count_threshold = 100 &redef;
}
event dns_request(c: connection, msg: dns_msg, query: string, qtype: count, qclass: count) {
if ( |query| > query_length_threshold ) {
NOTICE([$note=DNSTunnel::Long_DNS_Query,
$msg=fmt("Long DNS query detected: %s (%d chars)", query, |query|),
$conn=c]);
}
}
```
### Splunk——Zeek DNS 隧道指标
```spl
index=zeek sourcetype=bro_dns
| rex field=query "(?<subdomain>[^.]+)\.(?<basedomain>[^.]+\.[^.]+)$"
| stats count dc(subdomain) as unique_subs avg(len(query)) as avg_len max(len(query)) as max_len by src basedomain
| where count > 100 AND (unique_subs > 50 OR avg_len > 40)
| sort -unique_subs
```
### Splunk——高熵子域名检测
```spl
index=zeek sourcetype=bro_dns
| rex field=query "^(?<subdomain>[^.]+)"
| where len(subdomain) > 20
| eval char_count=len(subdomain)
| stats count dc(query) as unique_queries avg(char_count) as avg_sub_len by src query_type_name basedomain
| where unique_queries > 30 AND avg_sub_len > 25
| sort -unique_queries
```
### RITA 分析
```bash
rita import /path/to/zeek/logs dataset_name
rita show-dns-fqdn-ips-long dataset_name
rita show-exploded-dns dataset_name
rita show-dns-tunneling dataset_name --csv > dns_tunnel_results.csv
```
## 常见场景
1. **dnscat2 C2**:将命令与控制流量编码在 DNS CNAME/TXT 查询中,使用 Base64 编码的子域名标签。产生大量高熵长子域名查询。
2. **iodine IPv4 隧道**:通过 DNS 创建虚拟网络接口,隧传所有 IP 流量。产生大量使用 NULL 记录类型的 DNS 查询。
3. **DNS 数据外泄**:敏感数据编码在子域名标签中(如 `aGVsbG8gd29ybGQ.exfil.attacker.com`),以 A 或 TXT 查询形式发送。每次查询携带约 63 字节数据。
4. **DNS-over-HTTPS 隧道**:通过向公共解析器(8.8.8.8、1.1.1.1)发送 HTTPS 上的 DNS 查询,绕过传统 DNS 监控,需要 TLS 检查才能检测。
5. **Cobalt Strike DNS 信标**:使用 DNS A/TXT 记录进行 C2 通信,支持可配置的子域名编码方案。
## 输出格式
```
狩猎 ID:TH-DNSTUNNEL-[日期]-[序号]
源 IP:[内网 IP]
源主机:[主机名]
目标域名:[基础域名]
查询次数:[时间窗口内的总查询数]
唯一子域名数:[数量]
平均查询长度:[字符数]
最大查询长度:[字符数]
子域名熵值:[比特/字符]
主要记录类型:[A/TXT/CNAME/NULL]
估算数据量:[外泄字节数]
风险等级:[严重/高/中/低]
```Related Skills
performing-threat-hunting-with-yara-rules
使用 YARA 模式匹配规则在文件系统和内存转储中狩猎恶意软件、可疑文件和入侵指标。 涵盖规则编写、yara-python 扫描以及与威胁情报源的集成。
performing-threat-hunting-with-elastic-siem
使用 KQL/EQL 查询、检测规则和 Timeline 调查在 Elastic Security SIEM 中执行主动威胁狩猎, 识别绕过自动检测的威胁。适用于 SOC 团队针对特定 ATT&CK 技术进行狩猎、调查异常行为, 或使用 Elasticsearch 和 Kibana Security 验证检测覆盖缺口。
performing-network-traffic-analysis-with-zeek
部署 Zeek 网络安全监控器,捕获、解析和分析网络流量元数据,用于威胁检测、异常识别和取证调查。
performing-dns-tunneling-detection
通过计算 DNS 查询名称的香农熵(Shannon Entropy)、分析查询长度分布、检测 TXT 记录载荷以及 识别高子域名基数,检测 DNS 隧道(DNS Tunneling)攻击。使用 scapy 进行数据包捕获分析, 结合统计方法区分合法 DNS 流量和隐蔽信道。适用于数据泄露猎威场景。
hunting-living-off-the-land-binaries
检测 Windows 事件日志和 Sysmon 遥测数据中对离地攻击(Living Off The Land Binaries,LOLBAS)的滥用, 包括 certutil、wmic、mshta、regsvr32 和 rundll32 等工具。 通过将进程创建事件与 LOLBAS 项目数据库交叉比对来构建检测规则。 适用于针对无文件攻击技术的威胁狩猎或构建 SIEM 检测规则的场景。
hunting-for-webshells-in-web-servers
通过扫描高熵值文件、可疑的 PHP/JSP/ASP 模式(eval、base64_decode、system、passthru)、 Web 根目录中近期修改的文件以及异常文件大小,检测植入 Web 服务器的 Webshell(网页后门)。 使用香农熵(Shannon entropy)计算标记混淆载荷,并通过正则表达式模式匹配已知 Webshell 特征。
hunting-for-webshell-activity
通过分析 Web 目录中的文件创建行为、Web 服务器异常进程派生以及异常 HTTP 模式,狩猎面向互联网服务器上的 Webshell 部署。
hunting-for-unusual-service-installations
通过解析系统事件日志中的事件 ID 7045、分析服务二进制路径并识别持久化机制指标,检测可疑 Windows 服务安装(MITRE ATT&CK T1543.003)。
hunting-for-unusual-network-connections
通过分析出站流量模式、稀有目标地址、非标准端口和终端异常连接频率,狩猎异常网络连接。
hunting-for-supply-chain-compromise
狩猎供应链入侵指标,包括木马化软件更新、受损依赖项、未授权代码修改和被篡改的构建产物。
hunting-for-startup-folder-persistence
通过监控 Windows 启动目录中的可疑文件创建、分析 autoruns 条目以及使用 Python watchdog 进行实时文件系统监控,检测 T1547.001 启动文件夹持久化。
hunting-for-spearphishing-indicators
跨电子邮件日志、终端遥测和网络数据狩猎鱼叉式网络钓鱼活动指标,检测定向邮件攻击。