
Утилита для асинхронного брутфорса DNS на Python 3.5+
Инструмент на Python 3.5+ для асинхронного перебора доменных имен с использованием asyncio.

Это быстро. Тесты на небольших VPS показывают около 100 тыс. DNS-разрешений за 1,5–2 минуты. На Amazon M3 было выполнено 1 млн запросов чуть более чем за 3 минуты. Ваши результаты могут отличаться. Вероятно, лучше избегать использования резолверов Google, если вас интересует исключительно скорость.
DISCLAIMER
$ 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 — это инструмент командной строки для перебора доменных имен
с использованием модуля asyncio в Python.
автор: 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 Обнаружение 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."))'
Обнаружение wildcard-записей включено по умолчанию (--no-wildcard отключает):
$ aiodnsbrute foo.com
[*] Перебор foo.com с максимумом 512 одновременных задач...
[*] Использование рекурсивного DNS со следующими серверами: ['50.116.53.5', '50.116.58.5', '50.116.61.5']
[!] Обнаружен ответ с wildcard, игнорирование ответов, содержащих ['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.18 записей/с]
[*] Завершено, найден 1 поддомен
НОВИНКА использование gethostbyname (обнаруживает CNAME, что может быть удобно для выявления потенциального захвата поддомена)
$ aiodnsbrute --gethostbyname domain.com
Укажите список резолверов из файла (пустые строки и строки, начинающиеся с #, игнорируются), используйте -r - для чтения списка из stdin.
$ aiodnsbrute -r resolvers.txt domain.com
ulimit -n, чтобы узнать, сколько открытых файлов разрешено. Вы также можете увеличить это число с помощью той же команды, например ulimit -n <2048>.