CVE-2020-1350 (SIGRed) - Windows DNS 拒绝服务漏洞利用工具
该漏洞的发现完全归功于 Check Point Research (@_cpresearch_),他们对这个漏洞做了出色的分析(感谢 @sagitz_ 发布此文)
他们的分析见此处。
此漏洞利用工具由 @maxpl0it 编写
工作原理概述:
- 在局域网中,你对一个恶意域名(例如 9.evil_domain.com)触发 DNS 请求(更具体地说,是请求 SIG 记录)
- 该请求会被发送到存在漏洞的 Windows 服务器的 DNS 服务
- 该易受攻击的服务器随后向其转发请求的目标 DNS(通常是标准的 Google IP)发送请求
- Google DNS 以恶意域名的名称服务器作为响应
- 易受攻击的服务器随后充当 DNS 客户端,向恶意 DNS 服务器发送请求
- 恶意服务器以一个有效载荷进行响应,该载荷使一个 2 字节的数字溢出,从而导致分配的内存小于所需大小
- 签名被复制过去,然后一切开始出错(当然),最终使易受攻击服务器的 DNS 服务崩溃
通用设置:
- 该利用工具要求你设置一个域名,并将其名称服务器指向你的服务器。
- 配置好服务器后运行此脚本。它将同时在 TCP 和 UDP 协议的 53 端口上监听。
- 如果遇到提示端口被占用的错误,请使用 netstat -pa 查看是哪个程序在监听这些端口(通常是 systemd-resolved),然后禁用它并停止服务。如果服务器上没有程序在监听,请确保在重新运行前已终止此脚本的所有实例。
例如,我运行了 python sigred_dos.py ibrokethe.net 来启动恶意 DNS 服务器
测试设置:
- 如果你可以访问 Windows 服务器,可以配置一个条件转发器,将 ibrokethe.net 指向运行脚本的主机 IP 地址。这样可以有效跳过上述步骤 3 和 4。
执行:
- 为在 Windows DNS 服务器上触发该漏洞,请运行
nslookup -type=sig 9.your_domain_name_here dns_server_to_target
- 这里的子域名 '9' 确实必不可少。你无需为此修改任何域名记录,因为脚本会自行处理。
例如:我在服务器上运行时执行了 nslookup -type=sig 9.ibrokethe.net 127.0.0.1。