Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dns_watchdog_windows2 — PowerShell 脚本,通过 pktmon 监控 Windows DNS 流量,以检测投毒、欺骗、恶意解析器响应和网关 MAC 地址变更,并记录警报。 | Kitploit
工具/GitHubGitHub/microlaser/dns_watchdog_windows2
防御工具数据包嗅探与分析网络取证信息收集网络安全入侵检测DNS 分析异常检测
GitHubmicrolaser/dns_watchdog_windows2

dns_watchdog_windows2

PowerShell 脚本,通过 pktmon 监控 Windows DNS 流量,以检测投毒、欺骗、恶意解析器响应和网关 MAC 地址变更,并记录警报。

查看仓库
311天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DNS Watchdog (Windows)

一个单文件 PowerShell 脚本,使用 pktmon 监视 Windows 机器自身的网络流量,以发现 DNS 投毒 / 欺骗 的迹象。pktmon 是 Windows 10(1809+)、Windows 11 和 Windows Server 2019+ 内置的数据包捕获工具。无需第三方捕获工具(Wireshark、Npcap、tcpdump)。

它在操作系统网络栈处捕获 DNS 流量(UDP/TCP 端口 53),这覆盖了典型机器上的 LAN 和 WAN 流量,然后自行解析原始数据包——pcapng 二进制格式、Ethernet/IP/UDP/TCP 报头以及 DNS 消息格式,包括名称压缩指针——完全使用原生 PowerShell。

配套的 bash/tcpdump 版本 覆盖 macOS 和 Linux。

它检测什么

信号为什么重要
对同一 DNS 查询的冲突应答投毒尝试的教科书式特征:攻击者用伪造应答与真实应答竞争,希望伪造应答先到达并被缓存。
来自你从未配置过的 DNS 服务器的响应与 Get-DnsClientServerAddress 进行比对。来自无法识别服务器的应答可能表明存在路径外攻击者注入应答。
没有匹配的未完成查询的响应针对监视器从未见过被询问的问题的应答——可能是注入/欺骗流量的迹象(带有启动宽限期以避免误报)。
会话中途默认网关 MAC 地址发生变化每个捕获周期通过 Get-NetNeighbor 轮询。ARP 欺骗通常是攻击者为在 LAN 内进行 DNS 篡改而采取的第一步。

每个警报打印两部分:

  • [TECHNICAL] — 原始数据包细节,供进一步调查的人使用
  • [WHAT THIS MEANS] — 用通俗语言解释为什么重要

所有输出也会写入带时间戳的日志文件。

要求

  • Windows 10(1809+)、Windows 11 或 Windows Server 2019+,且 pktmon.exe 可用(这些系统均内置)
  • 相当新的版本——pktmon pcapng(用于转换捕获以供分析)是在最初的 1809 版本之后添加的;如果缺失,请更新 Windows
  • PowerShell 以 管理员身份 运行(数据包捕获需要)

安装

git clone https://github.com/microlaser/dns-watchdog.git
cd dns-watchdog\windows

无需安装模块或外部依赖——只需脚本本身。

用法

从 提升权限(管理员) 的 PowerShell 中:

.\dns_watchdog.ps1

默认情况下,脚本会自动检测你的默认网关和已配置的 DNS 服务器,并跨所有网络适配器进行捕获(pktmon 在操作系统网络栈处运行,因此这自然覆盖 LAN 和 WAN 流量,无需选择特定适配器)。使用 Ctrl+C 停止监视;退出时会打印会话摘要。

参数

.\dns_watchdog.ps1 [-LogFile <path>] [-CaptureIntervalSeconds <n>] [-GraceResponses <n>] [-KeepCaptures]
参数描述
-LogFile会话日志的路径(默认:.\dns_watchdog_<timestamp>.log)
-CaptureIntervalSeconds每个捕获窗口在被转换和分析之前的长度。越低 = 检测延迟越小,开销越大。默认:5
-GraceResponses在“无匹配查询”警报激活之前观察的响应数量,以避免启动噪音。默认:10
-KeepCaptures将每个窗口的 .etl/.pcapng 文件保留在磁盘上,而不是在分析后删除

示例会话

=========================================================================
 DNS Watchdog (Windows) - DNS poisoning / spoofing monitor
=========================================================================
Capturing on:      all network adapters (pktmon captures at the OS networking stack,
                   which covers this host's LAN and WAN traffic together)
Default gateway:   192.168.1.1  (MAC baseline: 60-95-F8-2B-5E-78)
Configured DNS:    192.168.0.1, 192.168.1.1
Log file:          .\dns_watchdog_20260918_204725.log
...

[20:47:44.872] [ALERT] Conflicting DNS responses for the same query
  [TECHNICAL] txn=64878  query=example.com (type 28)  first_response=[AAAA:2607:f8b0:...]  conflicting_response(src=10.0.0.9)=[AAAA:dead:beef::1]
  [WHAT THIS MEANS] This machine's DNS question got two DIFFERENT answers back. Legitimate DNS servers don't normally do this. This is the textbook signature of a DNS poisoning attempt, where an attacker races a forged answer against the real one, hoping the forged one arrives first and gets cached.

工作原理

Windows 没有直接将 tcpdump 管道传输到文本解析器的直接对应物——pktmon 的实时控制台输出是原始字节,而不是解码后的行。因此,此脚本改为:

  1. 以短轮换窗口(默认 5 秒)运行 pktmon,捕获到 .etl
  2. 将每个窗口转换为 .pcapng(pktmon pcapng)
  3. 直接解析 pcapng 二进制格式——读取 Enhanced Packet Blocks,然后遍历每一帧的 IP → UDP/TCP → DNS 消息报头,包括 DNS 名称压缩指针解码——不使用外部库
  4. 使用在进程生命周期内持续存在的原生 PowerShell 哈希表跨捕获窗口跟踪 DNS 事务 ID,在发现冲突和异常时标记它们
  5. 每个周期单独轮询网关的 ARP 条目以捕获 MAC 地址变化

一个值得了解的怪癖: Windows 经常在某些栈检查点处,在添加 Ethernet 报头 之前 捕获本地生成(出站)的数据包,因此出站 DNS 查询可能以完全没有链路层帧的裸 IP 数据包形式到达,而入站响应则从线路上以完整的 Ethernet 帧到达。解析器检测并处理这两种情况。pktmon 也倾向于多次报告同一个物理数据包(在网络栈的多个点捕获);脚本在每个捕获窗口内对字节完全相同的重复项进行去重,因此一个真实数据包不会被多次警报——真正冲突/被投毒的响应具有不同的内容,因此永远不会受此去重影响。

限制

  • 这是一个 启发式监视器,不是保证。单个孤立警报可能是误报(例如 VPN 在会话中途切换解析器,或 CDN 返回多个有效 IP)。重复或聚集的警报远比一次性警报更有意义。
  • 捕获窗口之间存在一个小间隙(停止 → 转换 → 重启),而不是真正连续的捕获。
  • 跨多个 TCP 段的 DNS-over-TCP 响应不会被重组——对于普通查询没问题,但对于大型区域传输式响应是一个真正的限制。
  • pktmon pcapng 转换需要相当新的 Windows 版本;非常古老的 1809 时代系统可能需要回退到 pktmon etl2txt(此处未实现)。
  • 它观察运行所在主机上的流量;它无法看到纯粹发生在远程解析器缓存中、在应答到达此机器之前就已发生的投毒。

许可证

MIT(或根据你的偏好更新)。

下载工具