Gobuster 에서 와일드카드 DNS 레코드 처리하기

Beginner
지금 연습하기

소개

이 실험에서는 Gobuster 를 사용하여 DNS 하위 도메인 열거를 효과적으로 수행하는 방법을 배우고, 특히 와일드카드 DNS 레코드 처리에 중점을 둘 것입니다. 와일드카드 DNS 레코드는 하위 도메인 스캔에서 많은 수의 오탐 (false positives) 을 유발하여 합법적인 하위 도메인을 식별하기 어렵게 만들 수 있습니다. Gobuster 는 이러한 응답을 필터링하는 데 도움이 되는 --wildcard 플래그를 제공하여 더 깨끗하고 정확한 결과를 보장합니다. 와일드카드 레코드가 있는 도메인을 식별하고, 표준 스캔의 영향을 관찰한 다음, --wildcard 플래그를 사용하여 차이점을 확인할 것입니다.

와일드카드 DNS 레코드가 있는 도메인 식별

이 단계에서는 와일드카드 DNS 레코드를 사용하는 도메인을 식별합니다. 와일드카드 DNS 레코드 (*.example.com) 는 특정 DNS 레코드가 없는 모든 하위 도메인이 미리 정의된 IP 주소로 해석됨을 의미합니다. 이는 존재하지 않는 많은 하위 도메인이 해석되는 것처럼 보여 오탐으로 이어지기 때문에 하위 도메인 열거 중에 문제를 일으킬 수 있습니다.

dig를 사용하여 대상 도메인 wildcard.labex.io에 대한 존재하지 않는 하위 도메인을 쿼리하여 와일드카드 동작을 확인합니다.

먼저 대상 도메인 파일의 내용을 확인합니다.

cat ~/project/target_domain.txt

출력으로 wildcard.labex.io가 표시되어야 합니다.

이제 dig를 사용하여 존재하지 않는 하위 도메인, 예를 들어 nonexistent.wildcard.labex.io를 쿼리합니다. IP 주소로 해석되면 와일드카드 레코드가 설정되어 있음을 나타냅니다.

dig nonexistent.wildcard.labex.io

출력의 ANSWER SECTION을 관찰합니다. nonexistent.wildcard.labex.io에 대한 IP 주소가 보이면 와일드카드 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 스캔 실행 및 오탐 관찰

이 단계에서는 와일드카드 필터링 없이 Gobuster 를 사용하여 wildcard.labex.io에 대한 표준 DNS 하위 도메인 열거 스캔을 수행합니다. 이를 통해 와일드카드 DNS 레코드가 어떻게 수많은 오탐을 유발하여 실제 하위 도메인과 와일드카드에 의해 해석된 하위 도메인을 구별하기 어렵게 만드는지 시연할 것입니다.

도메인에는 -d 플래그를, 단어 목록에는 -w 플래그를 사용하여 gobuster dns 명령을 사용합니다.

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 주소로 해석되는 후속 결과는 필터링하도록 지시합니다. 이를 통해 오탐이 크게 줄어들고 훨씬 더 깔끔한 출력을 얻을 수 있습니다.

--wildcard 플래그를 추가하여 Gobuster 명령을 다시 실행합니다.

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 로 해석되는 결과를 적극적으로 필터링하고 있음을 나타냅니다. 이 특정 예에서는 모든 하위 도메인이 와일드카드 IP 로 해석되므로 "Found" 항목이 표시되지 않을 수 있습니다. 이는 전체 와일드카드 설정이 있고 단어 목록에 실제 하위 도메인이 없는 도메인에 대한 올바른 동작입니다.

Gobuster 가 와일드카드 응답을 필터링하는 방법 관찰

이 단계에서는 약간 수정된 시나리오를 사용하여 Gobuster 의 --wildcard 플래그가 어떻게 작동하는지 더 자세히 살펴보겠습니다. 이전 예에서는 완전한 필터링을 보여주었지만 메커니즘을 이해하는 것이 중요합니다. Gobuster 는 먼저 임의의 존재하지 않는 하위 도메인 (예: randomstring.yourdomain.com) 을 쿼리합니다. 이 쿼리가 IP 주소로 해석되면 Gobuster 는 해당 IP 주소를 와일드카드 IP 로 간주합니다. 열거 중에 발견된 후속 하위 도메인 중 이 동일한 와일드카드 IP 로 해석되는 것은 필터링됩니다. 다른 IP 주소로 해석되는 하위 도메인만 보고됩니다.

이를 설명하기 위해 wildcard.labex.io 도메인에 다른 IP 주소를 가리키는 실제 www.wildcard.labex.io 하위 도메인이 있다고 가정해 보겠습니다. 그런 경우 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

이 단계는 Gobuster 의 --wildcard 플래그가 와일드카드 DNS 레코드가 있는 도메인에서 정확한 하위 도메인 열거 결과를 얻는 데 중요하다는 이해를 강화합니다.

더 깔끔하고 정확한 결과 분석

이 마지막 단계에서는 표준 Gobuster 스캔과 --wildcard 플래그로 수행한 스캔에서 얻은 결과 간의 차이를 분석합니다. 목표는 --wildcard 플래그가 오탐을 제거하여 어떻게 더 깔끔하고 정확한 결과를 제공하는지 이해하는 것입니다.

2 단계 ( --wildcard 없음) 의 결과를 다시 생각해 봅시다.
와일드카드 DNS 레코드로 인해 해석되었음에도 불구하고 단어 목록의 모든 항목이 "Found"로 보고되었습니다. 이 출력은 노이즈가 많아 실제로 존재하는 하위 도메인을 식별할 수 없습니다.

3 단계 및 4 단계 ( --wildcard 포함) 의 결과를 다시 생각해 봅시다.
Gobuster 는 명시적으로 [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>라고 명시했습니다. 저희의 특정 사례에서는 모든 하위 도메인이 와일드카드 IP 로 해석되므로 "Found" 항목이 보고되지 않았습니다. 이것이 올바른 정확한 결과이며, 단어 목록의 하위 도메인 중 어느 것도 합법적이지 않고 고유한 IP 주소로 해석되지 않음을 나타냅니다.

합법적인 하위 도메인 (예: 와일드카드와 다른 IP 로 해석되는 www.wildcard.labex.io) 이 있었다면 --wildcard 플래그를 사용할 때 출력에 나열되었을 것입니다. 이는 실제 하위 도메인과 와일드카드 항목을 구별하는 플래그의 강력함을 보여줍니다.

--wildcard 플래그는 특히 대규모 단어 목록과 와일드카드 DNS 레코드를 광범위하게 사용하는 도메인을 처리할 때 효율적이고 정확한 하위 도메인 열거에 필수적입니다. 오탐의 수동 필터링 필요성을 줄여 시간을 절약하고 열거 노력이 실제로 관련 있는 하위 도메인에 집중되도록 보장합니다.

와일드카드 DNS 레코드를 식별하고 Gobuster 의 --wildcard 플래그를 사용하여 정확한 하위 도메인 열거 결과를 얻는 방법을 성공적으로 배웠습니다.

요약

이 실습에서는 Gobuster 를 사용하여 하위 도메인 열거 중에 와일드카드 DNS 레코드를 처리하는 실질적인 경험을 쌓았습니다. 와일드카드 레코드가 있는 도메인을 식별하는 방법을 배우고, 표준 스캔이 어떻게 오탐을 생성하는지 관찰했으며, 가장 중요하게는 이러한 오해의 소지가 있는 결과를 필터링하기 위해 --wildcard 플래그를 사용하는 방법을 익혔습니다. 이 기술은 모든 정찰 또는 침투 테스터에게 중요하며, 하위 도메인 검색 프로세스의 정확성과 효율성을 보장합니다. --wildcard 플래그를 적용하면 합법적인 하위 도메인에 집중하여 귀중한 시간과 리소스를 절약할 수 있습니다.