
Python 3.5+ DNS非同期ブルートフォースユーティリティ
Python 3.5+ で動作し、asyncio を使用して非同期にドメイン名をブルートフォースするツールです。

高速です。 小規模なVPSホストでのベンチマークでは、約10万件のDNS解決が1.5~2分でした。Amazon M3インスタンスでは、100万件のリクエストをわずか3分強で処理しました。実際の速度は環境によります。速度だけを重視するなら、Googleのリゾルバーの使用は避けたほうがいいでしょう。
免責事項
$ pip install aiodnsbrute
注意: virtualenv の使用を強くお勧めします。
あるいは、通常の方法でインストールすることもできます:
$ git clone https://github.com/blark/aiodnsbrute.git
$ cd aiodnsbrute
$ python setup.py install .
ヘルプを表示:
$ aiodnsbrute --help
使い方: cli.py [オプション] ドメイン
aiodnsbrute は、Python の asyncio モジュールを利用して
ドメイン名をブルートフォースするコマンドラインツールです。
クレジット: blark (@markbaseggio)
オプション:
-w, --wordlist TEXT ブルートフォースに使用する単語リスト。
-t, --max-tasks INTEGER 非同期に実行するタスクの最大数。
-r, --resolver-file FILENAME DNSリゾルバーのリストを含むテキストファイル。
1行に1つ、コメントは # で始まります。
デフォルト: システムのリゾルバーを使用。
-v, --verbosity 出力の詳細度を上げる。
-o, --output [csv|json|off] 結果を DOMAIN.csv/json に出力(-f を使用しない場合は
拡張子が自動的に追加されます)。
-f, --outfile FILENAME 出力ファイル名。'-f -' を使用すると、
通常の出力を上書きして標準出力に送信。
--query / --gethostbyname DNSルックアップタイプ。query(デフォルト)の方が
高速ですが、CNAME情報は返しません。
--wildcard / --no-wildcard ワイルドカード検出(デフォルトで有効)
--verify / --no-verify 開始前にドメイン名が正しいか確認(デフォルトで有効)
--version バージョンを表示して終了。
--help このメッセージを表示して終了。
カスタムオプションでブルートフォースを実行:
$ aiodnsbrute -w wordlist.txt -vv -t 1024 domain.com
ブルートフォースを実行し、通常の出力を抑制してJSONのみを標準出力に送信:
$ 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
[*] foo.com を最大 512 の同時タスクでブルートフォース中...
[*] 以下のサーバーで再帰的DNSを使用: ['50.116.53.5', '50.116.58.5', '50.116.61.5']
[!] ワイルドカード応答を検出、['23.23.86.44'] を含む回答を無視
[*] 単語リストを読み込み、1000件のDNSリクエストを実行中
[+] www.foo.com 52.73.176.251, 52.4.225.20
100%|██████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:05<00:00, 140.18records/s]
[*] 完了、1つのサブドメインが見つかりました
新機能 gethostbyname を使用(CNAMEを検出。サブドメイン乗っ取り検出に便利)
$ aiodnsbrute --gethostbyname domain.com
ファイルからリゾルバーのリストを指定(空行と#で始まる行は無視)。-r - を指定すると標準入力からリストを読み込みます。
$ aiodnsbrute -r resolvers.txt domain.com
ulimit -n で許可されているオープンファイル数を確認するとよいでしょう。同じコマンドで数値を増やすこともできます(例: ulimit -n <2048>)。