Nmap 에서 TCP Null 스캔 실행

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 에서 TCP Null 스캔을 실행하는 방법을 배우게 됩니다. 이 랩은 특정 IP 주소에 대한 기본적인 Null 스캔 실행, 정의된 포트 범위 스캔, 스캔에 상세 정보 추가, 스캔 결과 저장, Null 스캔과 SYN 스캔 비교, Xfce 터미널에서 결과 검토 등 Null 스캔의 다양한 측면을 다룹니다.

모든 TCP 플래그가 0 으로 설정된 Null 스캔은 포트 상태를 결정하는 데 도움이 될 수 있지만, 특정 방화벽이나 플래그가 없는 패킷을 드롭하는 시스템으로 인해 항상 신뢰할 수 있는 것은 아닐 수 있습니다. 일련의 Nmap 명령을 통해 다양한 Null 스캔 작업을 직접 경험하게 됩니다.

nmap -sN 192.168.1.1 로 Null 스캔 실행

이 단계에서는 Nmap 을 사용하여 Null 스캔을 수행합니다. Null 스캔은 모든 TCP 플래그가 0 으로 설정되는 TCP 스캔 유형입니다. 즉, TCP 헤더에 플래그 (SYN, ACK, RST, FIN, URG, PSH) 가 설정되지 않습니다. Null 스캔에 대한 응답은 포트의 상태를 결정하는 데 도움이 될 수 있습니다.

Null 스캔이 작동하는 방식에 대한 간략한 개요는 다음과 같습니다.

  • Null 스캔: 플래그가 설정되지 않은 TCP 패킷을 보냅니다.
  • 열린 또는 필터링된 포트: 포트가 열려 있거나 필터링된 경우 응답이 없습니다.
  • 닫힌 포트: 포트가 닫힌 경우 대상 호스트는 RST (reset) 패킷으로 응답해야 합니다.

Null 스캔은 일부 방화벽 또는 시스템이 플래그가 없는 패킷을 드롭할 수 있으므로 항상 신뢰할 수 있는 것은 아니라는 점에 유의해야 합니다.

IP 주소 192.168.1.1에 대해 Null 스캔을 실행해 보겠습니다. Xfce 터미널을 열고 다음 명령을 실행합니다.

sudo nmap -sN 192.168.1.1

이 명령은 Nmap 에게 대상 IP 주소 192.168.1.1에 대해 Null 스캔 (-sN) 을 수행하도록 지시합니다. Nmap 을 실행하려면 sudo 권한이 필요합니다.

출력은 대상 시스템의 포트 상태를 표시합니다. Null 스캔은 종종 확실한 답을 제공하지 않으므로 포트가 open|filtered 또는 closed로 나열될 수 있습니다.

예시 출력 (실제 출력은 대상에 따라 다릅니다):

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
All 1000 scanned ports on 192.168.1.1 are filtered

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

이 예에서 스캔된 1000 개의 모든 포트는 필터링된 것으로 보고됩니다. 이는 방화벽 규칙 또는 기타 네트워크 구성으로 인해 Nmap 이 포트가 열려 있는지 또는 닫혀 있는지 확인할 수 없음을 의미합니다.

nmap -sN -p 1-100 127.0.0.1 로 포트 범위 스캔

이 단계에서는 스캔할 포트 범위를 지정하여 Null 스캔의 사용을 확장합니다. 이를 통해 1000 개의 기본 포트를 모두 스캔하는 대신 관심 있는 특정 포트에 스캔을 집중할 수 있습니다. 로컬 호스트 (127.0.0.1) 의 포트 1 에서 100 까지 스캔합니다.

Nmap 의 -p 옵션을 사용하면 포트 범위를 지정할 수 있습니다. 구문은 -p <start_port>-<end_port>입니다. 이 경우 -p 1-100을 사용하여 포트 1 부터 100 까지 스캔합니다.

Xfce 터미널을 열고 다음 명령을 실행합니다.

sudo nmap -sN -p 1-100 127.0.0.1

이 명령은 Nmap 에게 로컬 호스트 (127.0.0.1) 의 포트 1 에서 100 까지 (-p 1-100) Null 스캔 (-sN) 을 수행하도록 지시합니다. Nmap 을 실행하려면 sudo 권한이 필요합니다.

출력은 대상 시스템의 포트 1-100 의 상태를 표시합니다. 이전 Null 스캔과 마찬가지로 결과가 확실하지 않을 수 있으며 포트가 open|filtered 또는 closed로 나열될 수 있습니다.

예시 출력 (실제 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org )
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
Not shown: 99 filtered ports
PORT    STATE  SERVICE
7/tcp   closed echo

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

이 예에서 포트 7 (echo) 은 닫힌 것으로 보고되고 다른 99 개의 포트는 필터링되었습니다. 이는 대상 호스트가 포트 7 에 대해 RST 패킷으로 응답했고, 다른 포트는 응답하지 않았거나 응답이 방화벽에 의해 차단되었음을 나타냅니다.

nmap -v -sN 192.168.1.1 로 상세 정보 추가

이 단계에서는 Null 스캔에 상세 정보 (verbosity) 를 추가합니다. Nmap 의 상세 정보는 스캔 프로세스에 대한 더 자세한 정보를 제공하며, Nmap 이 무엇을 하고 있는지 이해하고 문제를 해결하는 데 도움이 될 수 있습니다.

Nmap 의 -v 옵션은 상세 정보 수준을 높입니다. -v를 여러 번 사용할 수 있습니다 (예: -vv) 상세 정보를 더욱 높이려면. 이 단계에서는 단일 -v를 사용합니다.

Xfce 터미널을 열고 다음 명령을 실행합니다.

sudo nmap -v -sN 192.168.1.1

이 명령은 Nmap 에게 대상 IP 주소 192.168.1.1에 대해 Null 스캔 (-sN) 을 수행하도록 지시하며, 상세 정보 (-v) 를 높입니다. Nmap 을 실행하려면 sudo 권한이 필요합니다.

출력은 이전 Null 스캔보다 더 자세합니다. 스캔 진행 상황, 스캔 중인 포트, 발생하는 오류 또는 경고에 대한 정보를 볼 수 있습니다.

예시 출력 (실제 출력은 대상에 따라 다릅니다):

Starting Nmap 7.80 ( https://nmap.org )
NSE: Loaded 0 scripts for scanning.
Initiating Null scan for 192.168.1.1
Scanning 192.168.1.1 [1000 ports]
Completed Null scan for 192.168.1.1
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
All 1000 scanned ports on 192.168.1.1 are filtered

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

"NSE: Loaded 0 scripts for scanning.", "Initiating Null scan for 192.168.1.1", "Scanning 192.168.1.1 [1000 ports]", 및 "Completed Null scan for 192.168.1.1"과 같은 출력의 추가 줄에 유의하십시오. 이러한 줄은 스캔 프로세스에 대한 더 많은 통찰력을 제공합니다.

nmap -sN -oN null.txt 127.0.0.1 로 Null 스캔 결과 저장

이 단계에서는 Null 스캔의 결과를 파일에 저장합니다. 이는 나중에 분석하거나 결과를 문서화하는 데 유용합니다. Nmap 은 다양한 형식으로 스캔 결과를 저장하기 위한 여러 옵션을 제공합니다. 우리는 -oN 옵션을 사용할 것이며, 이 옵션은 결과를 사람이 읽을 수 있는 일반 형식으로 저장합니다.

-oN 옵션은 파일 이름을 인수로 사용합니다. 이 경우, 결과를 ~/project 디렉토리의 null.txt라는 파일에 저장합니다.

Xfce 터미널을 열고 다음 명령을 실행합니다.

sudo nmap -sN -oN null.txt 127.0.0.1

이 명령은 Nmap 에게 로컬 호스트 (127.0.0.1) 에 대해 Null 스캔 (-sN) 을 수행하고 결과를 일반 형식 (-oN) 으로 null.txt 파일에 저장하도록 지시합니다. Nmap 을 실행하려면 sudo 권한이 필요합니다.

스캔이 완료된 후, cat 명령 또는 nano와 같은 텍스트 편집기를 사용하여 null.txt 파일의 내용을 볼 수 있습니다.

cat null.txt

예시 출력 (실제 출력은 다를 수 있습니다):

## Nmap 7.80 scan initiated Mon Oct 26 14:35:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered

## Nmap done at Mon Oct 26 14:35:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds

nano로 파일 열 수도 있습니다:

nano null.txt

이렇게 하면 null.txt 파일이 nano 텍스트 편집기에서 열리며 내용을 보고 편집할 수 있습니다.

Xfce 터미널에서 Null 스캔과 SYN 스캔 비교

이 단계에서는 Null 스캔의 결과와 SYN 스캔의 결과를 비교합니다. 이를 통해 두 스캔 유형 간의 차이점과 대상에 대한 다양한 정보를 수집하는 데 어떻게 사용할 수 있는지 이해하는 데 도움이 됩니다.

SYN 스캔 (반개방형 스캔이라고도 함) 은 TCP 핸드셰이크를 완료하지 않는 더 은밀한 스캔입니다. 대상에 SYN 패킷을 보내고, 대상이 SYN/ACK로 응답하면 포트가 열려 있음을 나타냅니다. 그런 다음 Nmap 은 RST 패킷을 보내 연결을 닫습니다.

반면에 Null 스캔은 플래그가 설정되지 않은 TCP 패킷을 보냅니다. 대상의 응답은 대상의 운영 체제 및 방화벽 구성에 따라 포트가 열려 있는지, 닫혀 있는지 또는 필터링되었는지를 나타낼 수 있습니다.

먼저, 로컬 호스트 (127.0.0.1) 에 대해 SYN 스캔을 수행하고 결과를 syn.txt라는 파일에 저장해 보겠습니다.

Xfce 터미널을 열고 다음 명령을 실행합니다.

sudo nmap -sS -oN syn.txt 127.0.0.1

이 명령은 Nmap 에게 로컬 호스트 (127.0.0.1) 에 대해 SYN 스캔 (-sS) 을 수행하고 결과를 일반 형식 (-oN) 으로 syn.txt 파일에 저장하도록 지시합니다. Nmap 을 실행하려면 sudo 권한이 필요합니다.

이제 이전 단계에서 생성한 null.txt의 내용과 syn.txt의 내용을 비교해 보겠습니다. diff 명령을 사용하여 두 파일을 비교할 수 있습니다.

diff null.txt syn.txt

diff 명령은 두 파일 간의 차이점을 보여줍니다. nano와 같은 텍스트 편집기를 사용하여 두 파일을 모두 열고 나란히 비교할 수도 있습니다.

nano null.txt syn.txt

두 스캔의 출력을 검토하십시오. SYN 스캔은 Null 스캔보다 열린 포트를 식별할 가능성이 더 높다는 것을 알 수 있습니다. 특히 대상 시스템이 플래그가 설정되지 않은 패킷을 삭제하도록 구성된 경우 더욱 그렇습니다. Null 스캔은 종종 방화벽 또는 침입 탐지 시스템을 우회하기 위해 사용되지만 항상 신뢰할 수 있는 것은 아닙니다.

주요 차이점은 SYN 스캔은 연결을 설정하려고 시도하는 반면, Null 스캔은 플래그가 설정되지 않은 패킷을 보내고 대상의 응답에 의존하여 포트 상태를 추론한다는 것입니다.

Xfce 터미널에서 결과 검토

이 단계에서는 이전 단계에서 수행한 Null 및 SYN 스캔의 결과를 검토합니다. 여기에는 출력 파일 (null.txtsyn.txt) 을 검사하고 포함된 정보를 해석하는 작업이 포함됩니다.

Xfce 터미널을 열고 cat 명령 또는 nano 편집기를 사용하여 두 파일의 내용을 봅니다.

cat null.txt
cat syn.txt

또는 nano를 사용하여:

nano null.txt
nano syn.txt

결과를 검토할 때 다음 사항을 고려하십시오.

  • 호스트 상태: 대상 호스트가 "up" 또는 "down"으로 보고되는지 확인합니다. 호스트가 다운된 경우 Nmap 은 많은 정보를 수집하지 못할 수 있습니다.
  • 포트 상태: 각 포트의 상태를 확인합니다. 일반적인 포트 상태에는 "open", "closed", "filtered"가 있습니다.
    • Open: 포트가 연결을 수신 대기하고 있음을 나타냅니다.
    • Closed: 포트가 연결을 수신 대기하지 않음을 나타냅니다.
    • Filtered: 방화벽 또는 기타 네트워크 장치가 포트에 대한 액세스를 차단하여 상태를 확인하기 어렵게 만듭니다.
  • Null 및 SYN 스캔 간의 차이점: 두 스캔의 결과를 비교합니다. 한 스캔이 다른 스캔보다 더 많은 열린 포트를 식별했습니까? 한 스캔에서는 "filtered"로 보고되었지만 다른 스캔에서는 "closed"로 보고된 포트가 있었습니까?

예를 들어, null.txt는 모든 포트가 필터링된 것으로 표시될 수 있습니다.

## Nmap 7.80 scan initiated Mon Oct 26 14:35:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
All 1000 scanned ports on localhost (127.0.0.1) are filtered

## Nmap done at Mon Oct 26 14:35:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds

반면 syn.txt는 일부 포트가 열려 있는 것으로 표시될 수 있습니다.

## Nmap 7.80 scan initiated Mon Oct 26 14:36:00 2020
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000090s latency).
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   closed smtp
80/tcp   open  http
111/tcp  open  rpcbind
...
## Nmap done at Mon Oct 26 14:36:03 2020 -- 1 IP address (1 host up) scanned in 3.21 seconds

다양한 스캔 유형의 결과를 비교하여 대상 시스템의 보안 상태에 대한 보다 포괄적인 이해를 얻을 수 있습니다. 결과의 정확성은 방화벽, 침입 탐지 시스템 및 대상의 운영 체제 구성과 같은 다양한 요인의 영향을 받을 수 있음을 기억하십시오.

요약

이 랩에서 참가자들은 Nmap 을 사용하여 TCP Null 스캔을 실행하는 방법을 배웠습니다. 그들은 sudo nmap -sN 192.168.1.1 명령을 사용하여 IP 주소 192.168.1.1 에 대해 Null 스캔을 실행하는 것으로 시작했습니다. Null 스캔은 모든 TCP 플래그를 0 으로 설정하고 응답이 포트 상태를 결정하는 데 도움이 될 수 있음을 이해했습니다. 또한 127.0.0.1 에서 특정 포트 범위 (1 - 100) 를 스캔하고, 스캔에 상세 정보를 추가하고, 결과를 파일에 저장하고, Null 스캔을 SYN 스캔과 비교하고, Xfce 터미널에서 결과를 검토하는 방법을 배웠습니다. 일부 방화벽 또는 시스템이 플래그가 설정되지 않은 패킷을 삭제하기 때문에 Null 스캔이 항상 신뢰할 수 있는 것은 아니라는 점에 유의했습니다.