Gobuster 를 사용하여 기본 DNS 하위 도메인 스캔 수행하기

Beginner
지금 연습하기

소개

사이버 보안 및 침투 테스트 분야에서 하위 도메인 (subdomain) 을 발견하는 것은 정찰 (reconnaissance) 의 중요한 단계입니다. 하위 도메인은 종종 메인 도메인에는 존재하지 않는 추가적인 공격 표면 (attack surface) 이나 취약점을 노출할 수 있는 다양한 애플리케이션, 서비스 또는 개발 환경을 호스팅합니다. Gobuster 는 URI(디렉터리 및 파일), DNS 하위 도메인, Amazon S3 버킷 및 가상 호스트 이름 (virtual host names) 을 무차별 대입 (brute-forcing) 하는 데 사용되는 인기 있는 도구입니다.

이 실습에서는 Gobuster 를 사용하여 기본적인 DNS 하위 도메인 스캔을 수행하는 과정을 안내합니다. 대상 선택 방법, 효과적인 단어 목록 (wordlist) 선택, 필요한 플래그 (flag) 를 사용하여 Gobuster 명령 구성, 스캔 실행 및 결과를 해석하여 활성 하위 도메인을 식별하는 방법을 배우게 됩니다. 이 실습이 끝나면 모든 보안 전문가 또는 애호가에게 필수적인 기술인 하위 도메인 열거 (subdomain enumeration) 를 위해 Gobuster 를 활용하는 방법에 대한 기초적인 이해를 갖게 될 것입니다.

대상 도메인 선택

이 단계에서는 하위 도메인 스캔을 위한 대상 도메인을 선택합니다. 교육 목적으로 scanme.nmap.org를 대상으로 사용하겠습니다. 이 도메인은 Nmap 에서 테스트 목적으로 제공하며 스캔해도 안전합니다.

먼저 Gobuster 가 설치되어 있는지 확인합니다. 설치되어 있지 않다면 apt를 사용하여 설치할 수 있습니다.

sudo apt update
sudo apt install -y gobuster

설치 후 버전을 확인하여 설치를 검증할 수 있습니다.

gobuster -v

다음과 유사한 출력이 표시되어 Gobuster 가 설치되었음을 나타냅니다.

gobuster v3.x

이제 대상 도메인을 확인해 보겠습니다. scanme.nmap.org를 사용합니다.

echo "Our target domain is: scanme.nmap.org"

이 명령은 단순히 대상 도메인을 터미널에 출력하여 선택을 확인합니다.

하위 도메인용 단어 목록 선택

이 단계에서는 하위 도메인 스캔에 적합한 단어 목록을 선택합니다. 단어 목록은 일반적인 하위 도메인 이름 (예: www, mail, dev, admin) 목록이 포함된 파일입니다. Gobuster 는 대상 도메인과 결합된 단어 목록의 각 이름을 확인하려고 시도합니다 (예: www.scanme.nmap.org, mail.scanme.nmap.org).

이 실습에서는 침투 테스트 배포판에서 흔히 볼 수 있는 일반적인 단어 목록을 사용하거나 다운로드할 수 있습니다. DNS 열거에 적합한 일반 목적 목록인 SecLists 프로젝트의 dns.txt 단어 목록을 사용하겠습니다.

먼저 SecLists 리포지토리가 복제되었거나 유사한 단어 목록을 사용할 수 있는지 확인합니다. 그렇지 않은 경우 특정 단어 목록을 다운로드할 수 있습니다.

wget -nc https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/DNS/dns.txt -P ~/project/

-nc 플래그는 파일이 이미 존재하는 경우 wget이 파일을 다시 다운로드하지 않도록 보장하므로 명령을 여러 번 실행할 때 유용합니다. -P ~/project/ 플래그는 파일을 저장할 디렉터리를 지정합니다.

다운로드 후 ~/project/ 디렉터리에 단어 목록 파일이 있는지 확인합니다.

ls -l ~/project/dns.txt

다음과 유사한 출력이 표시되어 파일의 존재를 확인해야 합니다.

-rw-r--r-- 1 labex labex XXXX Month Day HH:MM ~/project/dns.txt

이는 dns.txt가 단어 목록으로 사용될 준비가 되었음을 확인합니다.

기본 gobuster dns 명령어 구성

이 단계에서는 DNS 하위 도메인 스캔을 위한 기본 Gobuster 명령어를 구성합니다. Gobuster 는 다양한 유형의 무차별 대입 공격에 대해 다른 모드를 사용합니다. DNS 하위 도메인 열거를 위해 dns 모드를 사용합니다.

DNS 스캔에 필수적인 플래그는 다음과 같습니다.

  • -d: 대상 도메인을 지정합니다.
  • -w: 단어 목록의 경로를 지정합니다.

따라서 기본 명령어 구조는 gobuster dns -d <target_domain> -w <wordlist_path>가 됩니다.

선택한 대상 scanme.nmap.org와 단어 목록 ~/project/dns.txt를 사용하여 명령어를 조립해 보겠습니다.

echo "The Gobuster command will be: gobuster dns -d scanme.nmap.org -w ~/project/dns.txt"

이 명령은 실행할 전체 Gobuster 명령어를 출력합니다. 모든 도구를 효과적으로 사용하려면 실행하기 전에 명령어를 이해하는 것이 중요합니다.

-d 및 -w 플래그를 사용하여 스캔 실행

이 단계에서는 이전 단계에서 구성한 명령어를 사용하여 Gobuster DNS 하위 도메인 스캔을 실행합니다. 이렇게 하면 Gobuster 가 단어 목록의 각 항목을 대상 도메인의 하위 도메인으로 확인하려고 시도하는 무차별 대입 프로세스가 시작됩니다.

터미널에서 다음 명령을 실행합니다.

gobuster dns -d scanme.nmap.org -w ~/project/dns.txt

스캔이 실행되는 동안 Gobuster 는 성공적으로 확인된 하위 도메인을 표시합니다. 출력에는 확인된 하위 도메인과 해당 IP 주소가 표시됩니다.

예시 출력:

===============================================================
Gobuster v3.x
===============================================================
[+] Url: scanme.nmap.org
[+] Threads: 10
[+] Wordlist: /home/labex/project/dns.txt
[+] Status codes: 200,204,301,302,307,401,403,405,500
[+] Timeout: 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in DNS mode
===============================================================
Found: www.scanme.nmap.org (XXX.XXX.XXX.XXX)
Found: test.scanme.nmap.org (XXX.XXX.XXX.XXX)
Found: mail.scanme.nmap.org (XXX.XXX.XXX.XXX)
...

스캔은 단어 목록의 크기와 네트워크 조건에 따라 시간이 걸릴 수 있습니다. 발견된 하위 도메인의 포괄적인 목록을 얻으려면 완료될 때까지 기다리십시오.

발견된 하위 도메인 목록 분석

이 마지막 단계에서는 Gobuster 스캔의 출력을 분석합니다. 출력의 Found: 줄은 성공적으로 확인된 하위 도메인을 나타냅니다. 이는 존재하는 하위 도메인이며 해당 DNS 레코드가 있는 것입니다.

이전 단계의 출력을 검토합니다. Found:로 시작하고 그 뒤에 하위 도메인과 해당 IP 주소가 오는 줄을 찾으십시오.

예를 들어 다음과 같은 내용을 볼 수 있습니다.

  • Found: www.scanme.nmap.org (XXX.XXX.XXX.XXX)
  • Found: test.scanme.nmap.org (XXX.XXX.XXX.XXX)
  • Found: mail.scanme.nmap.org (XXX.XXX.XXX.XXX)

이 각각은 대상 도메인과 관련된 잠재적인 진입점 또는 흥미로운 자산을 나타냅니다. 실제 시나리오에서는 이러한 하위 도메인을 웹 브라우저에서 방문하거나, 포트 스캔을 수행하거나, 웹 취약점을 찾는 등의 추가 조사를 수행하게 됩니다.

출력을 분석했는지 확인하기 위해 www와 같은 일반적인 하위 도메인을 찾아보겠습니다.

echo "Look for 'www.scanme.nmap.org' in the Gobuster output."

이 단계는 정찰 도구의 결과를 검토하는 것의 중요성을 강조합니다. Gobuster 의 원시 출력은 후속 보안 평가를 안내할 수 있는 귀중한 정보를 제공합니다.

요약

이 실습에서는 Gobuster 를 사용하여 기본적인 DNS 하위 도메인 스캔을 성공적으로 수행했습니다. 다음을 배웠습니다.

  • 대상 도메인 (scanme.nmap.org) 선택하기
  • 적절한 단어 목록 (dns.txt) 선택 및 다운로드하기
  • dns 모드와 -d (도메인) 및 -w (단어 목록) 플래그를 사용하여 Gobuster 명령 구성하기
  • 스캔 실행 및 발견된 하위 도메인의 실시간 출력 관찰하기
  • 결과를 분석하여 활성 하위 도메인을 식별하고 그 중요성을 이해하기

이 기초 기술은 사이버 보안에서의 정찰에 매우 중요하며, 대상의 공격 표면 (attack surface) 에 대한 이해를 확장할 수 있게 해줍니다. 다른 단어 목록을 사용하거나, 스레드 수 (-t) 를 늘리거나, 사용자 지정 DNS 서버 (--resolver) 를 지정하여 Gobuster 스캔을 더욱 향상시킬 수 있습니다.