首页/安全/取证与溯源速查/DNS 查询日志溯源
日志溯源53 条

DNS 查询日志溯源

DNS 查询日志回答哪台主机在何时解析了哪个域名:解析恶意域名的主机就是下一批排查对象。

取证与溯源速查安全更新于 2026-10-13

DNS 查询日志的作用

DNS 查询日志回答“哪台主机在什么时候解析了哪个域名”,是把恶意域名与内网主机对应起来的最快途径:解析了可疑域名的主机就是下一批排查对象。常见来源包括 BIND 的 querylog、dnsmasq 的 log-queries、Windows DNS 服务器的调测日志,以及企业级 DNS 防护设备的查询日志。分析顺序通常是先按域名聚集客户端 IP,再看这些 IP 的其他行为,避免从主机出发做全量筛选。

基本信息

适用平台Linux(BIND 9、dnsmasq、Unbound)、Windows DNS 服务器与专用 DNS 防护设备
BINDrndc querylog on 开启查询日志,输出到 named 的日志通道
dnsmasq配置 log-queries 后写入系统日志或指定文件
Windows DNS需在管理控制台开启调测日志,写入 System32\dns\dns.log,对性能有一定影响
关键字段时间、客户端地址、查询域名、查询类型、响应结果

典型使用场景

  • 把情报中的恶意域名反查到内部主机清单,确定受影响范围
  • 识别域生成算法(DGA)行为:大量失败解析的随机域名
  • 发现 DNS 隧道:超长域名、异常查询类型(TXT、NULL)与固定周期的查询量
  • 确认钓鱼链接的解析时间,与邮件到达与用户点击时间对齐
  • 评估阻断效果:启用域名拦截后相关查询是否被拒绝

开启与检索

开启与检索
# BIND:动态开启查询日志
rndc querylog on
# dnsmasq:需在配置中启用 log-queries,随后在系统日志中检索
grep -i 'query\[' /var/log/syslog | tail -20
# 检索指定域名的解析记录,得到客户端清单
grep -i 'malicious.example' /var/log/syslog | awk '{print $(NF-1), $NF}' | sort | uniq -c | sort -rn | head
# 统计查询量最大的客户端,识别异常主机
awk '/query\[/{for(i=1;i<=NF;i++) if($i ~ /^\[/) print $(i+1)}' /var/log/syslog | sort | uniq -c | sort -rn | head
# Windows DNS 服务器:检索调试日志
type C:\Windows\System32\dns\dns.log | findstr /i "malicious.example"

线索形态对照

形态含义判读要点
同一域名多主机解析域名被广泛投递可能是钓鱼或恶意广告,需按主机分组处置
随机字符串域名大量失败DGA 或隧道尝试关注解析失败率与命名规律
超长或 TXT 类查询可能的 DNS 隧道比对查询量、响应大小与固定周期
固定周期解析同一域名心跳式 C2 或恶意更新检查间隔规律比单次记录更有辨识度
非业务网段主机查询不受管的设备接入结合资产台账确认设备身份
DoH/DoT 与部分应用内置解析器会绕过本地 DNS,日志里看不到对应查询;发现主机行为异常但 DNS 记录干净时,要考虑这类盲区。
泛域名(wildcard)与 CDN 会让解析结果多变,单次解析记录不足以定性,要结合时间窗与主机行为一起看。

易错点

  • 把 DNS 日志当作访问证据:查询成功不代表访问完成,连接可能被阻断或直接失败,结论要区分解析与访问
  • 开启查询日志后长期不关:查询日志体量增长极快,可能占满磁盘并影响 DNS 服务,取证时应设定开启时间窗
  • 忽略客户端映射:日志里只有 IP,需结合 DHCP 租约与资产台账才能对应到具体主机与使用者
  • 只看成功解析:失败解析的分布同样有价值,能反映 DGA 行为与被阻断的访问尝试
  • 忽略加密解析盲区:DoH/DoT 场景下本地 DNS 日志不完整,需用端点缓存与代理日志补充

数据来源与参考

  • BIND 9 管理员参考手册
  • dnsmasq 手册页
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌