BadDNS 是一款使用 Rust 开发的使用公共 DNS 服务器进行多层子域名探测的极速工具。
设计思路
-
使用随机字符串作为子域名,使用内置数个公共 DNS 服务器解析,以此来生成泛解析白名单,为后面排除泛解析做铺垫
-
读取 subdomain 字典用于生成待查询目标,读取 depth 字典用于判断是否进行深层子域名查询
-
使用 TCP 进行解析查询
-
检查解析结果是否存在于白名单,如果存在于白名单则抛弃结果
-
检查 sub 字段是否存在于 depth 字典中,如果存在则进行下一个深度的域名探测,不存在则不进行后续处理
深度探测
以 sub 为 api 探测为例,该探测有结果并且不存在于泛解析白名单及 api 存在于 depth 字典,则进行下一级子域名探测;如果该探测没有相应的结果则不再进行 api 下一子域的探测。这样解决市面上的爆破工具大量字典傻傻的问题 同时,希望大家能踊跃补充 depth 字典
入门示例
-
使用默认配置
./baddns -t target.txt -s domaindict-170W.txt -d depthdict.txt
-
配置8个线程和结果保存至 baddns-outputs-8.json
./baddns -t target.txt -w 8 -o baddns-outputs-8.json -s domaindict-170W.txt -d depthdict.txt
-
配置二级子域深度探测
./baddns -t target.txt -s domaindict-170W.txt -d depthdict.txt -l 2
源码编译
-
安装Rust并配置交叉编译环境
可参见官方教程
-
安装Rust
curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
-
安装Linux-x86_64工具链
rustup target add x86_64-unknown-linux-musl
-
编译
-
交叉编译
cargo build –target x86_64-unknown-linux-musl –release
-
普通编译
cargo build –release
-
git clone 源码
git clone https://github.com/joinsec/BadDNS.git
-
进入项目目录执行编译命令
-
可执行文件位于target目录下
文章来源:
https://github.com/joinsec/BadDNS







暂无评论内容