Обработка записей DNS с подстановочными знаками в Gobuster

Beginner
Практиковаться сейчас

Введение

В этой лабораторной работе вы научитесь эффективно использовать Gobuster для перечисления DNS-субдоменов, уделяя особое внимание работе с записями DNS с подстановочными знаками (wildcard DNS records). Записи DNS с подстановочными знаками часто могут приводить к большому количеству ложных срабатываний при сканировании субдоменов, что затрудняет идентификацию легитимных субдоменов. Gobuster предоставляет флаг --wildcard, который помогает отфильтровывать эти ответы, обеспечивая более чистые и точные результаты. Вы определите домен с записью с подстановочными знаками, понаблюдаете за влиянием стандартного сканирования, а затем используете флаг --wildcard, чтобы увидеть разницу.

Определение домена с записью DNS с подстановочными знаками

На этом шаге вы определите домен, который использует запись DNS с подстановочными знаками (wildcard DNS record). Запись DNS с подстановочными знаками (*.example.com) означает, что любой субдомен, у которого нет конкретной записи DNS, будет разрешаться в предопределенный IP-адрес. Это может вызвать проблемы при перечислении субдоменов, поскольку многие несуществующие субдомены будут разрешаться, что приведет к ложным срабатываниям.

Мы будем использовать dig для запроса несуществующего субдомена для нашего целевого домена wildcard.labex.io, чтобы подтвердить его поведение с подстановочными знаками.

Сначала давайте проверим содержимое файла нашего целевого домена:

cat ~/project/target_domain.txt

В качестве вывода вы должны увидеть wildcard.labex.io.

Теперь давайте запросим несуществующий субдомен, например, nonexistent.wildcard.labex.io, используя dig. Если он разрешается в IP-адрес, это указывает на наличие записи с подстановочными знаками.

dig nonexistent.wildcard.labex.io

Наблюдайте за разделом ANSWER SECTION в выводе. Если вы увидите IP-адрес для nonexistent.wildcard.labex.io, это подтвердит наличие записи DNS с подстановочными знаками.

; <<>> DiG 9.18.1-1ubuntu1.7-Ubuntu <<>> nonexistent.wildcard.labex.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;nonexistent.wildcard.labex.io. IN      A

;; ANSWER SECTION:
nonexistent.wildcard.labex.io. 300 IN   A       192.0.2.123  ## Example IP, will vary

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jan 01 12:00:00 UTC 2023
;; MSG SIZE  rcvd: 78

Наличие ANSWER SECTION для явно несуществующего субдомена подтверждает, что wildcard.labex.io имеет запись DNS с подстановочными знаками.

Выполнение стандартного сканирования DNS и наблюдение за ложными срабатываниями

На этом шаге вы выполните стандартное сканирование перечисления DNS-субдоменов на wildcard.labex.io с помощью Gobuster без какого-либо фильтрации подстановочных знаков. Это продемонстрирует, как записи DNS с подстановочными знаками могут приводить к многочисленным ложным срабатываниям, затрудняя различение между легитимными субдоменами и теми, которые разрешаются подстановочным знаком.

Мы будем использовать команду gobuster dns с флагом -d для домена и флагом -w для нашего списка слов (wordlist).

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt

Наблюдайте за выводом. Скорее всего, вы увидите, что почти каждая запись из вашего списка слов разрешается в IP-адрес, даже если это не "реальный" субдомен. Это происходит потому, что запись DNS с подстановочными знаками перехватывает все эти запросы и разрешает их.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
2023/01/01 12:00:00 Starting gobuster
Found: test.wildcard.labex.io (192.0.2.123)
Found: dev.wildcard.labex.io (192.0.2.123)
Found: www.wildcard.labex.io (192.0.2.123)
Found: mail.wildcard.labex.io (192.0.2.123)
Found: blog.wildcard.labex.io (192.0.2.123)
Found: admin.wildcard.labex.io (192.0.2.123)
Found: api.wildcard.labex.io (192.0.2.123)
Found: cdn.wildcard.labex.io (192.0.2.123)
Found: ftp.wildcard.labex.io (192.0.2.123)
Found: vpn.wildcard.labex.io (192.0.2.123)
2023/01/01 12:00:05 Finished

Как вы можете видеть, все записи из списка слов были "найдены", что является обманчивым из-за записи DNS с подстановочными знаками. Это подчеркивает проблему ложных срабатываний при перечислении субдоменов.

Повторное выполнение сканирования с флагом --wildcard

На этом шаге вы повторно выполните сканирование Gobuster DNS, но на этот раз вы включите флаг --wildcard. Этот флаг указывает Gobuster выполнить первоначальную проверку записей DNS с подстановочными знаками, а затем отфильтровать любые последующие результаты, которые разрешаются в тот же IP-адрес, что и подстановочный знак. Это значительно уменьшает количество ложных срабатываний и обеспечивает гораздо более чистый вывод.

Выполните команду Gobuster еще раз, добавив флаг --wildcard:

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

Обратите пристальное внимание на вывод. Вы должны заметить, что Gobuster сначала определяет IP-адрес подстановочного знака, а затем приступает к фильтрации результатов, которые ему соответствуют.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

Обратите внимание на строку [+] Wildcard DNS detected. Filtering responses for 192.0.2.123. Это указывает на то, что Gobuster успешно определил IP-адрес подстановочного знака и теперь активно отфильтровывает результаты, которые разрешаются в него. В этом конкретном примере, поскольку все субдомены разрешаются в IP-адрес подстановочного знака, вы можете не увидеть никаких записей "Found", что является правильным поведением для домена с полной настройкой подстановочных знаков и отсутствием легитимных субдоменов в вашем списке слов.

Наблюдение за тем, как Gobuster отфильтровывает ответы подстановочных знаков

На этом шаге мы глубже изучим, как работает флаг --wildcard в Gobuster, наблюдая за его поведением в несколько измененном сценарии. В то время как наш предыдущий пример демонстрировал полную фильтрацию, важно понимать механизм. Gobuster сначала запрашивает случайный несуществующий субдомен (например, randomstring.yourdomain.com). Если этот запрос разрешается в IP-адрес, Gobuster считает этот IP-адрес IP-адресом подстановочного знака. Любой последующий субдомен, найденный во время перечисления, который разрешается в тот же IP-адрес подстановочного знака, будет отфильтрован. Будут сообщаться только субдомены, разрешающиеся в другой IP-адрес.

Чтобы проиллюстрировать это, давайте представим, что наш домен wildcard.labex.io также имел легитимный субдомен www.wildcard.labex.io, указывающий на другой IP-адрес. В этом случае Gobuster по-прежнему отфильтровывал бы все остальные записи подстановочных знаков, но сообщал бы о www.wildcard.labex.io.

Для целей этой лаборатории, поскольку wildcard.labex.io настроен так, что все субдомены разрешаются в один и тот же IP-адрес подстановочного знака, вывод из предыдущего шага (где не было "найдено" субдоменов) является ожидаемым и правильным поведением, демонстрирующим эффективную фильтрацию.

Давайте повторно выполним команду и сосредоточимся на начальной строке вывода, подтверждающей обнаружение подстановочного знака:

gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard

Ключевая строка для наблюдения: [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. Это подтверждает, что Gobuster определил IP-адрес подстановочного знака и активно использует его для фильтрации результатов.

Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished

Этот шаг укрепляет понимание того, что флаг --wildcard в Gobuster имеет решающее значение для получения точных результатов перечисления субдоменов на доменах с записями DNS с подстановочными знаками.

Анализ более чистых и точных результатов

На этом заключительном шаге вы проанализируете разницу между результатами, полученными при стандартном сканировании Gobuster, и сканировании, выполненном с флагом --wildcard. Цель состоит в том, чтобы оценить, как флаг --wildcard обеспечивает более чистые и точные результаты, устраняя ложные срабатывания.

Вспомните вывод из Шага 2 (без --wildcard): Каждая запись из списка слов была помечена как "Found" (найдено), хотя они разрешались только из-за записи DNS с подстановочным знаком. Этот вывод является избыточным и делает невозможным идентификацию реально существующих субдоменов.

Вспомните вывод из Шагов 3 и 4 (с --wildcard): Gobuster явно указал [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. В нашем конкретном случае, поскольку все субдомены разрешаются в IP-адрес подстановочного знака, записи "Found" не были сообщены. Это правильный и точный результат, указывающий на то, что ни один из субдоменов в нашем списке слов не является легитимным и не разрешается в уникальный IP-адрес.

Если бы существовали легитимные субдомены (например, www.wildcard.labex.io, разрешающийся в другой IP-адрес, отличный от подстановочного знака), они были бы перечислены в выводе при использовании флага --wildcard. Это демонстрирует мощь флага в различении реальных субдоменов от записей подстановочных знаков.

Флаг --wildcard необходим для эффективного и точного перечисления субдоменов, особенно при работе с большими списками слов и доменами, которые активно используют записи DNS с подстановочными знаками. Он экономит время, уменьшая необходимость ручной фильтрации ложных срабатываний, и гарантирует, что ваши усилия по перечислению сосредоточены на действительно релевантных субдоменах.

Вы успешно научились идентифицировать записи DNS с подстановочными знаками и использовать флаг --wildcard в Gobuster для получения точных результатов перечисления субдоменов.

Резюме

В этой лаборатории вы получили практический опыт работы с записями DNS с подстановочными знаками при перечислении субдоменов с помощью Gobuster. Вы научились идентифицировать домены с записями подстановочных знаков, наблюдали, как стандартные сканирования дают ложные срабатывания, и, самое главное, освоили использование флага --wildcard для фильтрации этих вводящих в заблуждение результатов. Этот навык имеет решающее значение для всех, кто проводит разведку или тестирование на проникновение, поскольку он обеспечивает точность и эффективность вашего процесса обнаружения субдоменов. Применяя флаг --wildcard, вы можете сосредоточиться на легитимных субдоменах, экономя ценное время и ресурсы.