一款用Go编写的便捷DNS服务,用于协助检测多种类型的盲注漏洞。它能监控渗透测试人员的服务器,捕捉带外DNS交互,并通过Slack发送包含所接收请求详情的通知。DNSObserver可帮助您发现诸如盲注操作系统命令注入、盲注SQL注入、盲注XXE等漏洞!

如需更详细的概述和设置说明,请参阅:
https://www.allysonomalley.com/2020/05/22/dnsobserver/
您需要准备:
如果尚未准备好可用的VPS,请先向您偏好的提供商创建一台新的Linux VPS。记下其公网IP地址。
向您偏好的域名注册商注册一个新域名——只要能设置自定义名称服务器和胶合记录,任何注册商都可以。
进入新域名的DNS设置,找到“胶合记录”部分。在此添加两条记录,分别对应两个新的名称服务器,并均使用您VPS的公网IP地址。
接下来,将默认名称服务器改为:
ns1.<你的域名>
ns2.<你的域名>
通过SSH登录到您的VPS,并执行以下步骤:
如果尚未安装Go,请先安装。安装说明请见此处
确保默认DNS端口已开放——53/UDP和53/TCP。运行:
sudo ufw allow 53/udp
sudo ufw allow 53/tcp
获取DNSObserver及其依赖项:
go get github.com/allyomalley/dnsobserver/...
共有两个必需参数和两个可选参数:
domain [必需]
您的新域名。
ip [必需]
您VPS的公网IP地址。
webhook [可选]
如果您希望接收通知,请提供您的Slack Webhook URL。当您的域名或任何子域名被查询时,您将收到通知(我已排除了针对其他顶级域名和自定义名称服务器的查询通知,以避免过多或随机的通知)。如果不提供Webhook,交互信息将输出到标准输出。Webhook设置说明请见此处。
recordsFile [可选]
默认情况下,DNSObserver仅对您域名或任一名称服务器的查询做出应答。对于其他主机,它仍会通知您交互(只要属于您的域名或子域名),但会返回空响应。如果您希望DNSObserver对某些主机的A记录查询返回地址,可以编辑本项目中的config.yml文件,或基于以下模板创建自己的配置文件:
a_records:
- hostname: ""
ip: ""
- hostname: ""
ip: ""
目前,该工具仅使用A记录——未来可能会添加CNAME、AAAA等。以下是一个完整自定义记录文件的示例:
a_records:
- hostname: "google.com"
ip: "1.2.3.4"
- hostname: "github.com"
ip: "5.6.7.8"
这些设置表示我希望对'google.com'的查询返回'1.2.3.4',对'github.com'的查询返回'5.6.7.8'。
现在,我们已准备好开始监听!如果您希望在DNSObserver运行时还能在VPS上进行其他工作,请先启动一个新的tmux会话。
对于标准设置,传入必需参数和您的Webhook:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX
若要实现上述功能,并同时包含一些自定义的A记录响应,请添加记录文件参数:
dnsobserver --domain example.com --ip 11.22.33.44 --webhook https://hooks.slack.com/services/XXX/XXX/XXX --recordsFile my_records.yml
假设您已正确完成所有设置,DNSObserver现在应该正在运行。要确认其是否正常工作,请在桌面终端上对您的新域名(此演示中为'example.com')执行查找:
dig example.com
现在您应该会收到一条包含请求详情的Slack通知!