원클릭으로
dns-cache-detection
当用户要求"DNS缓存探测"、"检测DNS缓存威胁"、"DNS威胁狩猎"、"检测企业DNS恶意访问"、"C2域名检测"、"央企DNS检测"、"检测内网威胁"时使用此技能。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
当用户要求"DNS缓存探测"、"检测DNS缓存威胁"、"DNS威胁狩猎"、"检测企业DNS恶意访问"、"C2域名检测"、"央企DNS检测"、"检测内网威胁"时使用此技能。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
邮箱情报调查与关联分析。当用户要求"邮箱调查"、"邮箱搜索"、"查邮箱"、"邮箱关联"、"社交账号发现"、"用户名搜索"、"数字足迹"、"OSINT调查"、"人肉搜索"时使用此技能。
企业级目标情报收集。对目标企业进行资产发现、技术栈识别和攻击面测绘。当用户要求"企业资产发现"、"攻击面测绘"、"目标侦察"、"企业情报收集"、"外部资产发现"时使用此技能。
NGO组织攻击面侦察。针对非政府组织的攻击面测绘和社工预研。当用户要求"NGO渗透测试"、"非营利组织侦察"、"人权组织攻击面"、"媒体组织渗透"、"公民社会目标分析"时使用此技能。
个人目标情报收集。针对特定个人的OSINT收集和社工画像分析。当用户要求"人物画像"、"个人情报"、"OSINT调查"、"社工预研"、"VIP安全评估"、"高管风险评估"时使用此技能。
Evaluate access requests and existing privileges with least-privilege policy, segregation-of-duties checks, and approval recommendations.
Identify noisy or redundant alerts and propose safe suppression, deduplication, and threshold tuning with validation criteria.
| name | dns-cache-detection |
| description | 当用户要求"DNS缓存探测"、"检测DNS缓存威胁"、"DNS威胁狩猎"、"检测企业DNS恶意访问"、"C2域名检测"、"央企DNS检测"、"检测内网威胁"时使用此技能。 |
| metadata | {"version":"2.0.0","builtin":true} |
基于TruffleHunter (IMC 2020)学术研究的企业DNS威胁检测技能。通过DNS缓存探测技术检测企业内网是否有主机访问过恶意域名,发现潜在的C2通信、数据外泄等安全威胁。
| 能力 | 脚本 | 说明 |
|---|---|---|
| 快速威胁检测 | main_v2.py --mode quick | V2优化版,权威TTL缓存+自动验证 |
| 深度威胁检测 | main_v2.py --mode deep | 完整检测+三阶段验证 |
| 央企DNS检测 | --config config_soe.yaml | 7家央企19台DNS服务器 |
| 自定义DNS检测 | --config config.yaml | 自定义DNS服务器列表 |
| IOC有效性验证 | verify_real_iocs.py | 验证IOC域名是否仍然活跃 |
| 央企DNS发现 | find_soe_dns.py | 自动发现央企DNS服务器 |
python scripts/test_rd0_pollution.py缓存年龄 = 权威TTL - 缓存TTLPython版本: 3.8+
依赖包:
pip install dnspython pyyaml requests
或直接安装:
cd scripts && pip install -r requirements.txt
# V2优化版(推荐)
python scripts/main_v2.py --config scripts/config_soe.yaml
# 启用详细日志
python scripts/main_v2.py --config scripts/config_soe.yaml --verbose
预期输出:
========== 性能统计 ==========
权威TTL缓存命中: 185
失效域名已跳过: 198
自动验证次数: 9
验证确认威胁: 9
========== 检测结果 ==========
⚠️ 发现 1 个潜在威胁!
[1] ✅ 已验证 accesserdsc.com
DNS服务器: 210.77.176.2
威胁类别: C2
缓存年龄: 1 秒
严重程度: high
# 添加可疑域名到临时IOC
echo "suspicious.example.com" > /tmp/custom_iocs.txt
# 检测该域名
python scripts/main_v2.py --config scripts/config_soe.yaml
# JSON格式
cat scripts/reports/dns_detection_*.json | jq .
# CSV格式(Excel可打开)
open scripts/reports/dns_detection_*.csv
# 验证IOC库中的域名是否仍然活跃
python scripts/verify_real_iocs.py
输出示例:
[✓] accesserdsc.com - 可解析 (104.21.25.11)
[✓] aiaggregator.com - 可解析 (172.67.221.140)
[✗] badbutperfect.com - 无法解析(已失效)
总计: 34个域名
活跃: 14个 (41.2%)
失效: 20个 (58.8%)
核心思想: 对比权威TTL和缓存TTL,差异表示访问时间
检测流程:
1. 查询权威DNS获取原始TTL (例如: 300秒)
└─ 使用公共DNS: 223.5.5.5 (阿里云)
2. 用RD=0探测企业DNS的缓存TTL (例如: 299秒)
└─ 非递归查询,不触发新的DNS解析
3. 判定
└─ 如果TTL差异 > 0 → 缓存命中 → 有主机访问过该域名
└─ 差异值 = 访问发生在多少秒前 (1秒前)
4. 自动验证(V2新增)
└─ 等待2秒后再次探测
└─ 连续观察TTL衰减
└─ 验证TTL衰减是否正常
RD=0 (Recursion Desired = 0) 是DNS协议中的标志位:
# DNS查询构造
query = dns.message.make_query(domain, dns.rdatatype.A)
query.flags &= ~dns.flags.RD # 清除RD标志位
# DNS服务器行为
if has_cache:
return cached_result # 返回缓存
else:
return REFUSED # 拒绝查询,不向上游递归
关键特性:
实验验证:
python scripts/test_rd0_pollution.py
三阶段验证流程:
[Stage 1] 初次检测
↓
缓存命中? → No → 结束
↓ Yes
等待2秒
↓
[Stage 2] 二次探测
↓
仍命中? → No → 可能误报
↓ Yes
[Stage 3] 连续观察TTL衰减
↓
观察3次,间隔2秒
↓
TTL衰减正常? → Yes → ✅ 威胁确认
↓ No
⚠️ 需人工复核
示例:
[自动验证] accesserdsc.com @ 210.77.176.2
初次检测: TTL=299秒 (缓存命中)
等待2秒
二次探测: TTL=297秒 (仍命中)
观察TTL衰减:
[1] TTL=297秒
[2] TTL=295秒 (-2秒)
[3] TTL=293秒 (-2秒)
TTL衰减: 4秒 (期望6秒)
验证结果: ✅ 威胁确认 (误差±2秒可接受)
| 央企 | DNS数量 | 代表服务器 |
|---|---|---|
| 国家电网 | 3台 | 210.77.176.2 |
| 中国石油 | 2台 | 219.143.68.254 |
| 工商银行 | 3台 | 219.142.91.125 |
| 建设银行 | 2台 | 124.126.72.2 |
| 中国移动 | 2台 | 211.136.20.201 |
| 中石化 | 2台 | 114.246.38.132 |
| 中国建筑 | 5台 | 61.162.101.1 |
| 总计 | 19台 | - |
可在配置文件中自定义要检测的DNS服务器列表。
来源:
活跃度(2026-01-06验证):
域名示例:
accesserdsc.com - C2域名,Cloudflare托管
aiaggregator.com - 多家族C2
allocatinow.sbs - Lumma Stealer窃密软件
7p1e0901tm70n.cfc-execute.bj.baidubce.com - 百度云函数C2
检测时间: 2026-01-06 17:50:13
检测对象: 国家电网 3台DNS服务器
检测结果:
域名: accesserdsc.com
类型: C2域名
命中DNS:
- 210.77.176.2 (dl-dns1.sgcc.cn)
- 210.77.177.2 (dl-dns2.sgcc.cn)
缓存年龄: 1秒前解析
C2服务器: 104.21.25.11, 172.67.221.140 (Cloudflare)
验证过程:
威胁评估: ⭐⭐⭐⭐⭐ 真实威胁
详细报告: references/SGCC_VERIFICATION_REPORT.md
测试目的: 验证系统是否产生假阳性
测试域名: 7个IOC域名
测试结果:
测试域名: 7个
缓存命中: 1个 (accesserdsc.com)
正确判定: 6个 (无威胁)
误报率: 0%
结论: 系统精确性验证通过 ✅
详细报告: references/MULTI_DOMAIN_TEST_REPORT.md
测试环境:
V2性能:
总耗时: 56.2秒
探测速度: 5.4次/秒(含自动验证)
纯探测速度: 138次/秒(去掉验证)
性能优化效果:
权威TTL缓存命中: 185次 (40.5%)
失效域名跳过: 198次 (节省396秒)
自动验证: 9次 (100%通过)
1. 检查DNS日志定位源IP
# 在DNS服务器上
grep "accesserdsc.com" /var/log/named/queries.log | \
awk '{print $1, $2, $6}' | \
grep "17:50\|18:0[01]"
# 预期输出
# 2026-01-06 17:50:12 192.168.1.100
2. 检查防火墙日志确认外连
# 搜索C2服务器IP
grep "104.21.25.11\|172.67.221.140" /var/log/firewall.log
3. 隔离受感染主机
# 方案1: iptables
iptables -A INPUT -s 192.168.1.100 -j DROP
iptables -A OUTPUT -d 192.168.1.100 -j DROP
# 方案2: 交换机端口shutdown
# interface GigabitEthernet0/1
# shutdown
4. 封禁C2域名和IP
# DNS黑洞
cat >> /etc/bind/named.conf.local <<EOF
zone "accesserdsc.com" {
type master;
file "/etc/bind/db.null";
};
EOF
# 防火墙封禁
iptables -A OUTPUT -d 104.21.25.11 -j DROP
iptables -A OUTPUT -d 172.67.221.140 -j DROP
# 重启BIND
systemctl restart bind9
5. 主机取证
6. 威胁狩猎
# 全网搜索该域名
# Windows Sysmon日志
Get-WinEvent -FilterHashtable @{
LogName='Microsoft-Windows-Sysmon/Operational'
ID=3 # 网络连接
} | Where-Object {
$_.Message -match "accesserdsc.com|104.21.25.11"
}
7. IOC扩展
8. 持续监控
# crontab: 每小时检测
0 * * * * cd /opt/dns_detector && \
python scripts/main_v2.py --config scripts/config_soe.yaml >> /var/log/dns_threat.log 2>&1
9. SIEM集成
10. 防御加固
# DNS服务器配置
dns:
enterprise:
- "210.77.176.2" # 国家电网
- "219.143.68.254" # 中国石油
# ... 更多DNS
# 威胁情报
threat_intel:
sources:
- type: "file"
path: "iocs/real_c2_domains.txt"
# V2高级选项
advanced:
auto_verify_threats: true # 启用自动验证
# 钉钉告警(可选)
alerting:
methods:
- type: "dingtalk"
enabled: false
webhook: "" # 填入钉钉Webhook URL
dns:
enterprise:
- "8.8.8.8" # Google DNS(测试用)
- "1.1.1.1" # Cloudflare DNS
threat_intel:
sources:
- type: "file"
path: "iocs/malware_domains.txt"
| 指标 | V1 | V2 | 提升 |
|---|---|---|---|
| 探测速度 | 9.9次/秒 | 21.5次/秒 | +117% |
| 权威TTL查询 | 646次 | ~322次 | -50% |
| 超时时间 | 5秒 | 2秒 | -60% |
✅ 权威TTL缓存 - 5分钟缓存,减少重复查询 ✅ 失效域名黑名单 - 自动跳过超时域名 ✅ 自动验证机制 - 三阶段自动验证威胁 ✅ 钉钉实时告警 - Webhook告警,秒级响应
详细说明: references/DETECTOR_V2_README.md
# crontab配置 - 每小时检测
0 * * * * cd /opt/dns_detector && \
python scripts/main_v2.py --config scripts/config_soe.yaml >> /var/log/dns_threat.log 2>&1
# 每周验证IOC有效性
python scripts/verify_real_iocs.py
# 每周更新IOC库
git -C iocs/ pull
# 高危: 自动验证通过
if detection['auto_verified']:
send_urgent_alert(detection)
# 中危: 未验证
else:
send_normal_alert(detection)
# config_soe.yaml
alerting:
methods:
- type: "dingtalk"
enabled: true
webhook: "https://oapi.dingtalk.com/robot/send?access_token=xxx"
告警效果:
### 🚨 DNS威胁检测告警
**检测时间**: 2026-01-07 09:30:15
**威胁数量**: 1 个
**✅ accesserdsc.com**
DNS服务器: 210.77.176.2
威胁类别: C2
缓存年龄: 1秒
实验验证:
python scripts/test_rd0_pollution.py
预期输出:
========== 实验:RD=0探测是否污染DNS缓存 ==========
[1] RD=0探测(初始): MISS
[2] RD=0探测(再次): MISS
✅ 验证通过:RD=0探测不污染缓存!
对比实验:RD=1会污染缓存
[1] RD=0探测(初始): MISS
[2] RD=1查询(污染): HIT
[3] RD=0探测(验证): HIT(被RD=1污染)
结论:
基于多域名测试(7个IOC,19台DNS):
详细报告: references/MULTI_DOMAIN_TEST_REPORT.md
检查清单:
enabled: true 是否设置测试方法:
import requests
webhook = "YOUR_WEBHOOK_URL"
message = {
"msgtype": "text",
"text": {"content": "测试消息"}
}
requests.post(webhook, json=message)
检查配置:
advanced:
auto_verify_threats: true # 确保为true
查看日志:
grep "自动验证" logs/dns_detector_v2.log
可能原因:
诊断命令:
python scripts/test_v2.py --verbose
TruffleHunter (IMC 2020)
DNS Cache Snooping
MITRE ATT&CK - C2
详见 references/ 目录:
main_v2.py - V2主程序(推荐)main.py - V1主程序detector_v2.py - V2检测器dns_probe.py - DNS探测核心verify_real_iocs.py - IOC验证工具find_soe_dns.py - 央企DNS发现工具test_v2.py - V2性能测试test_rd0_pollution.py - RD=0污染验证免责声明: 本技能仅用于授权的安全测试和研究目的。使用者需遵守相关法律法规,对使用本技能产生的任何后果负责。
版本: 2.0.0 更新时间: 2026-01-07 维护者: DNS Security Research Team