首页/安全/取证与溯源速查/DNS 缓存与解析记录核查
Windows 取证55 条

DNS 缓存与解析记录核查

解析缓存反映近期访问的域名(含过期条目):在端点侧补充"访问过哪些域名"的直证,输出为文本留档。

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

DNS 缓存怎么用

Windows 的 DNS 客户端服务会缓存本机近期的域名解析结果,条目在 TTL 到期后仍可能以“过期条目”形式短暂保留。导出这份缓存能得到“这台主机近期解析过哪些域名、解析到什么地址”,在端点侧补上域名访问的直证,与 DNS 服务器日志、代理日志互为依据。它反映的是解析行为而不是访问行为,缓存里有域名不等于数据真的传输成功。

基本信息

适用平台Windows 7/10/11 与 Windows Server 2008 及以上
查看命令ipconfig /displaydns(文本);Get-DnsClientCache(对象,便于筛选)
关键字段Entry/RecordName、Type、Data、TimeToLive、Status
权限要求查看与导出不需要提权;ipconfig /flushdns 清缓存需要管理员权限
已知盲区使用 DoH/DoT 的应用可能绕过系统解析器;部分条目会被新解析覆盖

典型使用场景

  • 快速判断主机是否解析过来自情报的恶意域名,命中即列为下一批排查对象
  • 在事件窗口内反查 C2 域名,对比解析缓存与代理日志中的实际访问
  • 确认钓鱼链接的域名解析时间,与邮件到达时间、浏览器历史对齐
  • 排查异常解析:内网主机解析了与本机业务无关的域名,提示存在恶意程序
  • 为离线环境补证:无法取得 DNS 服务器日志时,端点缓存是唯一可用的域名线索

导出与筛查

导出与筛查
# 立即导出原始文本留档(越早越好,缓存会被覆盖)
ipconfig /displaydns > C:\case\dns-cache.txt
# 结构化导出,便于按域名与 TTL 排序
Get-DnsClientCache | Select-Object Entry, RecordName, Type, Data, TimeToLive |
  Sort-Object RecordName | Out-File C:\case\dns-cache-objects.txt
# 按可疑关键字筛查(示例:非常见顶级域或已知情报域名)
Get-DnsClientCache | Where-Object { $_.Entry -match 'example-bad\.' } | Format-Table -AutoSize

输出逐列读法

列含义正常/异常
Entry被解析的域名出现与业务无关的随机串域名即为疑点
Type记录类型A/AAAA 常见;TXT 大量出现需关注隧道类行为
Data解析结果地址指向云主机或陌生网段时结合归属核查
TimeToLive剩余生存时间越接近 0 说明解析发生得越早,可粗估时间排序
Status解析状态Success 表示正常返回;其他状态说明查询未成功
采集期间不要执行 ipconfig /flushdns:清缓存会直接销毁证据。同样避免重启或让主机长时间无人看管,缓存条目会被新解析替换。
缓存条目存在过期但未清理的情况,TimeToLive 为负值或 0 时只能说明“曾解析过”,不能用来精确推断访问时间,时间判断要交给 DNS 服务器日志或代理日志。

易错点

  • 拿缓存当访问证据:解析记录只说明发起过查询,未命中的连接会被防火墙拦下,报告里要区分“解析”与“访问”
  • 发现缓存为空就断定没有解析:DoH/DoT、应用自带解析库与刚执行过的清缓存都会导致空白,需结合 DNS 服务器侧日志补证
  • 采集动作拖到处置之后:处置中重启、断网、清缓存都会冲刷条目,应把导出列为响应的最早步骤之一
  • 只导出文本不做结构化:文本导出不便按域名聚合,遗漏同域名多记录的情况,建议同时保存对象化结果
  • 忽略内网域名:部分恶意活动通过内部可信域名或 hosts 文件转向,缓存里同时出现内网与外部解析时要做对照

数据来源与参考

  • Microsoft Docs(Get-DnsClientCache)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌