Nmap 을 이용한 DNS 레코드 열거

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 의 dns-brute 스크립트를 사용하여 DNS 레코드를 열거하는 방법을 배우게 됩니다. 목표는 대상 IP 주소와 관련된 유효한 호스트 이름과 서브도메인을 발견하여 대상 네트워크 인프라에 대한 귀중한 정보를 공개하는 것입니다.

dns-brute 스크립트를 대상 IP 에 대해 실행하고, DNS 포트를 스캔하며, 자세한 출력을 위해 상세도를 추가하고, 결과를 파일에 저장하고, Xfce 터미널에서 DNS 레코드를 검토하고, UDP 스캔 결과와 비교합니다. 이 실습을 통해 Nmap 을 사용한 DNS 열거에 대한 실질적인 기술을 습득할 수 있습니다.

nmap --script dns-brute 192.168.1.1 로 DNS 열거 실행

이 단계에서는 Nmap 의 dns-brute 스크립트를 사용하여 대상 IP 주소에 대한 DNS 열거를 수행합니다. DNS 열거는 DNS 서버에 쿼리하여 주어진 도메인에 대한 유효한 호스트 이름과 서브도메인을 발견하는 프로세스입니다. 이를 통해 대상 네트워크 인프라에 대한 귀중한 정보를 얻을 수 있습니다.

dns-brute 스크립트는 대상의 DNS 서버에 대해 일반적인 서브도메인 이름 목록을 확인하려고 시도하여 작동합니다. 서브도메인이 존재하면 DNS 서버는 IP 주소를 반환하여 서브도메인이 유효함을 나타냅니다.

먼저, 사용할 명령어를 이해해 보겠습니다.

  • nmap: 이것은 우리가 사용하고 있는 네트워크 매퍼 도구입니다.
  • --script dns-brute: 이것은 Nmap 에게 dns-brute 스크립트를 사용하도록 지시합니다.
  • 192.168.1.1: 이것은 대상 IP 주소입니다. 스캔하려는 실제 IP 주소로 바꾸십시오.

이제 명령을 실행해 보겠습니다. Xfce 터미널을 열고 다음 명령을 입력하십시오.

nmap --script dns-brute 192.168.1.1

참고: 192.168.1.1을 스캔하려는 대상의 실제 IP 주소로 바꾸십시오. 특정 대상이 없으면 127.0.0.1 (localhost) 와 같은 로컬 IP 주소를 사용할 수 있지만, 흥미로운 결과를 얻지 못할 수도 있습니다.

출력은 Nmap 이 다양한 서브도메인 이름을 확인하려고 시도하는 것을 보여줍니다. 서브도메인이 발견되면 해당 IP 주소와 함께 표시됩니다.

예시 출력 (표시되는 출력은 대상에 따라 다릅니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Starting dns-brute scan
NSE: DNS Brute-force hostnames: 216.58.216.142
google.com A 216.58.216.142
www.google.com A 216.58.216.142
mail.google.com A 216.58.216.142
NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 5.00 seconds

이 출력은 dns-brute 스크립트가 IP 주소 216.58.216.142와 관련된 서브도메인 google.com, www.google.com, 및 mail.google.com을 발견했음을 보여줍니다.

nmap --script dns-brute -p 53 127.0.0.1 로 DNS 포트 스캔

이 단계에서는 Nmap 과 dns-brute 스크립트를 사용하여 DNS 포트 (포트 53) 를 스캔하는 데 집중합니다. 포트를 지정함으로써 DNS 열거 노력을 표준 DNS 포트로 집중시킬 수 있으며, 이는 종종 더 효율적입니다.

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 스캔 도구입니다.
  • --script dns-brute: DNS 열거를 위해 dns-brute 스크립트를 지정합니다.
  • -p 53: 이 옵션은 Nmap 에게 DNS 의 표준 포트인 포트 53 만 스캔하도록 지시합니다.
  • 127.0.0.1: 이것은 대상 IP 주소입니다. 이 경우, 로컬 머신 (localhost) 을 나타내는 127.0.0.1을 사용하고 있습니다.

이제 Xfce 터미널을 열고 다음 명령을 실행하십시오.

nmap --script dns-brute -p 53 127.0.0.1

이 명령어는 로컬 호스트의 포트 53 에 대해 특별히 dns-brute 스크립트를 실행합니다. 127.0.0.1은 일반적으로 많은 레코드를 가진 DNS 서버를 호스팅하지 않으므로 결과가 제한적일 수 있습니다. 그러나 이것은 DNS 열거를 위해 특정 포트를 타겟팅하는 방법을 보여줍니다.

예시 출력 (표시되는 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).

PORT   STATE SERVICE
53/tcp open  domain
| dns-brute:
|_  records-from-AXFR: No zone transfer allowed.

Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

이 예에서 Nmap 은 포트 53 이 열려 있고 domain 서비스 (DNS) 를 실행하고 있음을 보여줍니다. dns-brute 스크립트는 영역 전송 (AXFR) 을 시도하지만 거부됩니다. 이는 DNS 레코드에 대한 무단 액세스를 방지하기 위한 일반적인 보안 조치입니다.

nmap -v --script dns-brute 192.168.1.1 로 상세 정보 추가

이 단계에서는 Nmap 명령어에 상세 정보를 추가합니다. 상세 정보는 스캔 중에 Nmap 이 표시하는 정보의 양을 늘리며, Nmap 이 무엇을 하고 있는지 이해하고 문제를 해결하는 데 도움이 될 수 있습니다.

Nmap 의 -v 옵션은 상세 모드를 활성화합니다. -v를 한 번 사용하면 상세 정보 수준이 증가합니다. 더 자세한 출력을 위해 -vv를 사용할 수 있습니다.

사용할 명령어를 살펴보겠습니다.

  • nmap: 네트워크 스캔 도구입니다.
  • -v: 상세 모드를 활성화하여 더 자세한 출력을 제공합니다.
  • --script dns-brute: DNS 열거를 위해 dns-brute 스크립트를 지정합니다.
  • 192.168.1.1: 대상 IP 주소입니다. 스캔하려는 실제 IP 주소로 바꾸는 것을 잊지 마십시오.

이제 Xfce 터미널을 열고 다음 명령을 입력하십시오.

nmap -v --script dns-brute 192.168.1.1

참고: 192.168.1.1을 스캔하려는 대상의 실제 IP 주소로 바꾸십시오.

출력은 이전 단계보다 더 자세할 것입니다. 스캔 진행 상황, 실행 중인 스크립트, 발생한 오류 또는 경고에 대한 정보를 볼 수 있습니다.

예시 출력 (표시되는 출력은 대상 및 네트워크 조건에 따라 다릅니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Starting dns-brute scan
NSE: Loaded 1795 records from /usr/share/nmap/nselib/data/dns-brute.lst
massdns: warning: id 4255 (inbound): query timed out
massdns: warning: id 4256 (inbound): query timed out
massdns: warning: id 4257 (inbound): query timed out
massdns: warning: id 4258 (inbound): query timed out
massdns: warning: id 4259 (inbound): query timed out
NSE: DNS Brute-force hostnames: 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.0020s latency).
Not shown: 999 filtered ports
PORT   STATE SERVICE
22/tcp open  ssh

NSE: Finished dns-brute scan
Nmap done: 1 IP address (1 host up) scanned in 10.00 seconds

상세 출력은 dns-brute 스크립트의 작동에 대한 더 자세한 정보를 보여주며, 로드된 레코드 수와 스캔 중에 발생한 경고를 포함합니다. 이는 문제를 진단하거나 스크립트의 동작을 이해하는 데 도움이 될 수 있습니다.

nmap --script dns-brute -oN dns.txt 127.0.0.1 로 DNS 결과 저장

이 단계에서는 Nmap 스캔 결과를 파일에 저장하는 방법을 배웁니다. 이는 나중에 분석하거나 보고서를 작성하는 데 유용합니다. Nmap 은 다양한 형식으로 출력을 저장하기 위한 여러 옵션을 제공합니다. 여기서는 일반 출력 형식 (-oN) 을 사용합니다.

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 스캔 도구입니다.
  • --script dns-brute: DNS 열거를 위해 dns-brute 스크립트를 지정합니다.
  • -oN dns.txt: 이 옵션은 Nmap 에게 일반 형식으로 dns.txt라는 파일에 출력을 저장하도록 지시합니다. 파일은 현재 디렉토리 (~/project) 에 저장됩니다.
  • 127.0.0.1: 대상 IP 주소입니다. 이 경우, 로컬 머신 (localhost) 을 나타내는 127.0.0.1을 사용하고 있습니다.

이제 Xfce 터미널을 열고 다음 명령을 실행하십시오.

nmap --script dns-brute -oN dns.txt 127.0.0.1

스캔이 완료되면 ~/project 디렉토리에 dns.txt라는 파일이 생성됩니다. 이 파일에는 사람이 읽을 수 있는 형식으로 Nmap 출력이 포함됩니다.

파일이 생성되었고 스캔 결과가 포함되어 있는지 확인하려면 cat 명령을 사용하여 파일의 내용을 표시할 수 있습니다.

cat dns.txt

예시 출력 (표시되는 출력은 다를 수 있습니다):

## Nmap 7.80 scan initiated Fri Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT   STATE SERVICE
53/tcp open  domain
| dns-brute:
|_  records-from-AXFR: No zone transfer allowed.

## Nmap done at Fri Oct 27 10:15:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds

이 출력은 로컬 호스트에 대한 Nmap 스캔 보고서를 포함하는 dns.txt 파일의 내용을 보여줍니다.

Xfce 터미널에서 DNS 레코드 검토

이 단계에서는 이전 단계에서 식별된 DNS 레코드를 검토합니다. cat 명령을 사용하여 이전에 생성한 dns.txt 파일의 내용을 봅니다. 이를 통해 dns-brute 스크립트의 출력을 검사하고 어떤 정보가 발견되었는지 이해할 수 있습니다.

Xfce 터미널을 열고 다음 명령을 입력하십시오.

cat dns.txt

이 명령은 터미널에 dns.txt 파일의 내용을 표시합니다.

출력은 다음과 유사하게 보일 것입니다 (정확한 출력은 대상 및 DNS 열거 결과에 따라 다릅니다):

## Nmap 7.80 scan initiated Fri Oct 27 10:20:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).
PORT   STATE SERVICE
53/tcp open  domain
| dns-brute:
|_  records-from-AXFR: No zone transfer allowed.

## Nmap done at Fri Oct 27 10:20:02 2023 -- 1 IP address (1 host up) scanned in 2.50 seconds

출력을 분석해 보겠습니다.

  • Nmap scan report for localhost (127.0.0.1): 이는 스캔이 로컬 머신에서 수행되었음을 나타냅니다.
  • PORT STATE SERVICE: 이 섹션은 대상에서 열린 포트를 보여줍니다.
  • 53/tcp open domain: 이는 포트 53 (표준 DNS 포트) 이 열려 있고 도메인 서비스를 실행하고 있음을 나타냅니다.
  • dns-brute: 이 섹션은 dns-brute 스크립트의 결과를 보여줍니다.
  • records-from-AXFR: No zone transfer allowed.: 이는 대상이 영역 전송을 허용하지 않음을 나타내며, 이는 DNS 정보에 대한 무단 액세스를 방지하기 위한 보안 조치입니다.

이 예제에서 dns-brute 스크립트는 영역 전송이 허용되지 않기 때문에 특정 DNS 레코드를 찾지 못했습니다. 그러나 대상이 영역 전송을 허용하거나 dns-brute 스크립트가 다른 DNS 레코드를 찾은 경우, 해당 레코드는 이 섹션에 나열됩니다.

dns-brute 스크립트의 출력을 검토하여 대상의 DNS 구성에 대한 귀중한 정보를 얻고 잠재적인 취약점을 식별할 수 있습니다.

Xfce 터미널에서 UDP 스캔과 비교

이 단계에서는 DNS 포트 (53) 에 대해 UDP 스캔을 수행하고 결과를 이전에 수행한 TCP 스캔과 비교합니다. TCP 및 UDP 스캔 간의 차이점을 이해하는 것은 포괄적인 네트워크 정찰에 매우 중요합니다.

DNS 는 일반적으로 TCP 및 UDP 프로토콜을 모두 사용합니다. UDP 는 일반적으로 표준 DNS 쿼리에 사용되는 반면, TCP 는 영역 전송 또는 응답 크기가 UDP 제한을 초과할 때 사용됩니다.

포트 53 에서 UDP 스캔을 수행하려면 Xfce 터미널에서 다음 Nmap 명령을 사용하십시오.

nmap -sU -p 53 127.0.0.1

명령어를 분석해 보겠습니다.

  • nmap: 네트워크 스캔 도구입니다.
  • -sU: UDP 스캔을 지정합니다.
  • -p 53: 포트 53 (DNS) 을 지정합니다.
  • 127.0.0.1: 대상 IP 주소 (localhost) 입니다.

명령을 실행하고 출력을 관찰하십시오. 다음과 같이 보일 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:25:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).

PORT   STATE         SERVICE
53/udp open|filtered domain

Nmap done: 1 IP address (1 host up) scanned in 3.50 seconds

이제 이 출력을 이전에 수행한 TCP 스캔 ( --script dns-brute -p 53 127.0.0.1 사용) 과 비교해 보겠습니다. 2 단계에서 본 출력을 참조하거나 TCP 스캔을 다시 실행할 수 있습니다.

nmap -sT -p 53 127.0.0.1

(참고: -sT는 TCP 연결 스캔을 지정하며, 스캔 유형이 지정되지 않은 경우 기본값입니다.)

TCP 스캔의 출력은 다음과 같이 보일 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at Fri Oct 27 10:26:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000072s latency).

PORT   STATE SERVICE
53/tcp open  domain

Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds

관찰해야 할 주요 차이점:

  • STATE: UDP 스캔은 open|filtered를 표시할 수 있는 반면, TCP 스캔은 open을 표시합니다. open|filtered는 UDP 의 특성으로 인해 Nmap 이 포트가 열려 있는지 또는 필터링되었는지 확실하게 결정할 수 없음을 의미합니다. UDP 는 비연결형이므로 Nmap 은 TCP 와 같이 확실한 "연결 거부"를 수신하지 않습니다.
  • Reliability (신뢰성): TCP 스캔은 3 방향 핸드셰이크 (three-way handshake) 때문에 포트가 열려 있는지 확인하는 데 일반적으로 더 신뢰할 수 있습니다. UDP 스캔은 패킷 손실 및 연결 지향 프로토콜의 부재로 인해 덜 신뢰할 수 있습니다.

요약하면, TCP 및 UDP 스캔을 비교하면 대상의 네트워크 서비스에 대한 보다 완전한 그림을 제공합니다. TCP 는 신뢰성 때문에 종종 선호되지만, UDP 스캔은 TCP 만으로는 나타나지 않을 수 있는 서비스를 드러낼 수 있습니다.

요약

이 랩에서는 Nmap 의 dns-brute 스크립트를 사용하여 DNS 열거를 탐구했습니다. DNS 서버를 쿼리하여 주어진 도메인에 대한 유효한 호스트 이름과 서브 도메인을 발견하는 방법을 배웠습니다. 이 랩에서는 nmap --script dns-brute <target_ip> 명령을 실행하여 대상 IP 주소와 관련된 서브 도메인을 식별하는 방법을 시연했습니다.

또한, 이 랩에서는 대상 IP 주소를 올바르게 지정하고 출력을 해석하여 발견된 서브 도메인과 해당 IP 주소를 식별하는 것의 중요성을 강조했습니다. 또한 자세한 정보 표시 (verbosity) 를 사용하고 나중에 검토할 수 있도록 출력을 파일에 저장하는 방법에 대해서도 언급했습니다.