• Stars
    star
    271
  • Rank 151,717 (Top 3 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 4 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

BadDNS

BadDNS 是一款使用 Rust 开发的使用公共 DNS 服务器进行多层子域名探测的极速工具。

本软件只做初步探测,请使用者遵守《中华人民共和国网络安全法》,勿将 BadDNS 用于非授权的测试,莲隐科技/雾隐实验室不负任何连带法律责任。

设计思路

  • 使用随机字符串作为子域名,使用内置数个公共 DNS 服务器解析,以此来生成泛解析白名单,为后面排除泛解析做铺垫
  • 读取 subdomain 字典用于生成待查询目标,读取 depth 字典用于判断是否进行深层子域名查询
  • 使用 TCP 进行解析查询
  • 检查解析结果是否存在于白名单,如果存在于白名单则抛弃结果
  • 检查 sub 字段是否存在于 depth 字典中,如果存在则进行下一个深度的域名探测,不存在则不进行后续处理

深度探测

subapi 探测为例,该探测有结果并且不存在于泛解析白名单及 api 存在于 depth 字典,则进行下一级子域名探测;如果该探测没有相应的结果则不再进行 api 下一子域的探测。 这样解决市面上的爆破工具大量字典傻傻的问题 同时,希望大家能踊跃补充 depth 字典

命令行参数说明

参数 说明 默认值
-h 输出帮助 None
-v 输出日志信息 None
-V 输出版本信息 None
-t 指定目标文件 None
-d 指定depth字典文件 depthdict.txt
-l 设置子域深度 1
-m 设置内存占用率 0.5(50%)
-o 指定结果保存文件 baddns-output.json
-s 指定subdomain字典文件 domaindict-170W.txt
-w 设置线程池大小 500

入门示例

  • 使用默认配置

    ./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

推荐运行环境(防止各种诡异bug ^_^)

  • 该版本支持 Linux X64-86 平台
  • 入门配置1核2GB内存
  • 推荐配置8核16GB及以上内存
  • 推荐使用无限制带宽的VPS供应商
  • 需要配置Linux调优执行 ulimit -n 655350

演示视频

BadDNS example

源码编译

  1. 安装Rust并配置交叉编译环境

    • 安装Rust

      curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

    • 安装Linux-x86_64工具链

      rustup target add x86_64-unknown-linux-musl

    可参见官方教程

  2. 编译

    • git clone 源码

      git clone https://github.com/joinsec/BadDNS.git

    • 进入项目目录执行编译命令

      • 交叉编译

        cargo build --target x86_64-unknown-linux-musl --release

      • 普通编译

        cargo build --release

    • 可执行文件位于target目录下