Aiodnsbrute – Асинхронная утилита перебора DNS
Этичный Хакер
Инструмент Python 3.5+, который использует asyncio для асинхронного перебора доменных имен.
Скорость
Это быстро. Бенчмарки на небольших VPS-хостах показывают разрешение DNS около 100 тыс. за 1,5-2 минуты. С помощью ящика Amazon M3 можно было сделать 1 миллион запросов чуть более чем за 3 минуты. Ваш пробег может варьироваться. Вероятно, лучше избегать использования распознавателей Google, если вас интересует только скорость.
Отказ от ответственности
- DNS-серверы вашего интернет-провайдера и домашнего маршрутизатора, вероятно, отстой. Если вам нужна скорость, используйте VPS с быстрыми преобразователями (или настройте свои собственные).
- ПРЕДУПРЕЖДЕНИЕ Этот инструмент способен отправлять БОЛЬШИЕ объемы DNS-трафика. Я не несу ответственности, если вы DOS чьи-то DNS-серверы.
Установка
$ 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 is a command line tool for brute forcing domain names
utilizing Python's asyncio module.
credit: blark (@markbaseggio)
Options:
-w, --wordlist TEXT Wordlist to use for brute force.
-t, --max-tasks INTEGER Maximum number of tasks to run asynchronosly.
-r, --resolver-file FILENAME A text file containing a list of DNS resolvers
to use, one per line, comments start with #.
Default: use system resolvers
-v, --verbosity Increase output verbosity
-o, --output [csv|json|off] Output results to DOMAIN.csv/json (extension
automatically appended when not using -f).
-f, --outfile FILENAME O utput filename. Use '-f -' to send file
output to stdout overriding normal output.
--query / --gethostbyname DNS lookup type to use query (default) should
be faster, but won't return CNAME information.
--wildcard / --no-wildcard Wildcard detection, enabled by default
--verify / --no-verify Verify domain name is sane before beginning,
enabled by default
--version Show the version and exit.
--help Show this message and exit.
Примеры
Запустите перебор с некоторыми пользовательскими параметрами:
$ aiodnsbrute -w wordlist.txt -vv -t 1024 domain.com
Запустите перебор, подавите обычный вывод и отправьте только JSON в стандартный вывод:
$ aiodnbrute -f - -o json domain.com
... для расширенного шаблона используйте пользовательские восстановления и вывод в awesome 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 (определяет CNAMEs, которые могут быть полезны для обнаружения потенциального захвата поддомена)
$ aiodnsbrute --gethostbyname domain.com
Предоставьте список распознавателей из файла (игнорируя пустые строки и начиная с #), укажите-r -, что нужно читать список из stdin.
$ aiodnsbrute -r resolvers.txt domain.com