Aiodnsbrute – Асинхронная утилита перебора DNS

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



Report Page