一个Python 3.5+工具,使用asyncio异步暴力破解域名。

速度很快。 小规模VPS主机上的基准测试显示,约10万次DNS解析耗时1.5-2分钟。一台亚马逊M3机器在3分钟左右完成了100万次请求。实际速度可能因环境而异。如果你纯粹追求速度,最好避免使用谷歌的解析器。
免责声明
$ pip install aiodnsbrute
注意:强烈建议使用virtualenv。
你也可以通过常规方式安装:
$ git clone https://github.com/blark/aiodnsbrute.git
$ cd aiodnsbrute
$ python setup.py install .
获取帮助:
$ aiodnsbrute --help
Usage: cli.py [OPTIONS] DOMAIN
aiodnsbrute 是一个命令行工具,利用 Python 的 asyncio 模块对域名进行暴力破解。
致谢:blark (@markbaseggio)
Options:
-w, --wordlist TEXT 用于暴力破解的字典文件。
-t, --max-tasks INTEGER 异步运行的最大任务数。
-r, --resolver-file FILENAME 包含 DNS 解析器列表的文本文件,每行一个,以 # 开头的行是注释。
默认:使用系统解析器
-v, --verbosity 增加输出详细程度
-o, --output [csv|json|off] 将结果输出到 DOMAIN.csv/json(不使用 -f 时会自动追加扩展名)。
-f, --outfile FILENAME 输出文件名。使用 '-f -' 将文件输出发送到 stdout,覆盖正常输出。
--query / --gethostbyname DNS 查找类型:query(默认)应该更快,但不会返回 CNAME 信息。
--wildcard / --no-wildcard 通配符检测,默认启用
--verify / --no-verify 在开始前验证域名是否合法,默认启用
--version 显示版本并退出。
--help 显示此帮助信息并退出。
使用自定义选项运行暴力破解:
$ aiodnsbrute -w wordlist.txt -vv -t 1024 domain.com
运行暴力破解,抑制正常输出,仅将 JSON 输出到 stdout:
$ aiodnbrute -f - -o json domain.com
...对于高级用法,使用自定义解析器并将输出通过管道传给强大的 jq:
$ aiodnsbrute -r resolvers.txt -f - -o json google.com | jq '.[] | select(.ip[] | startswith("172."))'
通配符检测默认启用(使用 --no-wildcard 关闭):
$ aiodnsbrute foo.com
[*] Brute forcing foo.com with a maximum of 512 concurrent tasks...
[*] Using recursive DNS with the following servers: ['50.116.53.5', '50.116.58.5', '50.116.61.5']
[!] Wildcard response detected, ignoring answers containing ['23.23.86.44']
[*] Wordlist loaded, proceeding with 1000 DNS requests
[+] www.foo.com 52.73.176.251, 52.4.225.20
100%|██████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:05<00:00, 140.18records/s]
[*] Completed, 1 subdomains found
新功能 使用 gethostbyname(检测 CNAME,可用于潜在的子域名接管检测)
$ aiodnsbrute --gethostbyname domain.com
从文件中提供解析器列表(忽略空行和以 # 开头的行),使用 -r - 从 stdin 读取列表。
$ aiodnsbrute -r resolvers.txt domain.com
ulimit -n 来查看允许的打开文件数。你也可以使用同样的命令增加该数值,例如 ulimit -n <2048>。