Nmap 을 활용한 고급 호스트 검색

NmapBeginner
지금 연습하기

소개

이 실습에서는 Nmap 을 사용하여 고급 호스트 검색을 수행하는 방법을 배웁니다. 호스트 검색은 네트워크상의 활성 장치를 식별하는 과정입니다. 이는 네트워크 정찰의 필수적인 첫 번째 단계로, 네트워크 레이아웃을 이해하고 추가 분석을 위한 잠재적인 대상을 식별하는 데 도움이 됩니다.

다양한 Nmap 기술을 탐색할 것입니다.

  • TCP Ping 스캔 (-PS): 특정 포트로 TCP SYN 패킷을 보내서 호스트가 온라인 상태인지, 해당 포트가 열려 있는지 확인합니다.
  • UDP Ping 스캔 (-PU): TCP 핑이 차단될 때 자주 사용되는 특정 포트로 UDP 패킷을 보내서 응답 유무에 따라 호스트 상태를 추론합니다.
  • 핑 스캔 건너뛰기 (-Pn): Nmap 의 기본 호스트 검색 단계를 건너뛰고 모든 대상 호스트가 온라인 상태라고 가정하고 바로 포트 스캔으로 진행합니다.
  • 기술 결합: 복잡한 네트워크 환경, 특히 방화벽이 있는 환경에서 호스트 감지의 신뢰도를 높이기 위해 여러 검색 방법을 활용합니다.
  • 결과 저장 및 분석: 나중에 검토하기 위해 Nmap 출력을 파일로 저장하고 기본적인 Linux 명령어를 사용하여 스캔 결과에서 유용한 정보를 추출합니다.

이 실습 과정에서 nmap -PS2222,8080 127.0.0.1과 같은 명령어를 실행하여 TCP 핑 스캔을 수행하고, nmap -PU5353 127.0.0.1로 UDP 핑을 수행하며, nmap -Pn -oN hosts.txt 127.0.0.1로 결과를 저장합니다. 이러한 실습 연습을 통해 Nmap 의 호스트 검색 기능을 더 잘 이해하고 실제 네트워크 정찰 작업에 대비할 수 있습니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

nmap -PS 명령어로 특정 포트에 대한 TCP 핑 사용

이 단계에서는 Nmap 을 사용하여 대상 호스트의 특정 포트에 대한 TCP 핑 스캔을 수행하는 방법을 배웁니다. 이 기술은 특히 방화벽으로 인해 전통적인 ICMP 핑이 차단될 때 호스트가 온라인 상태인지 및 해당 포트에서 특정 서비스가 실행 중인지 확인하는 데 유용합니다.

TCP 핑 이해:
전통적인 ICMP 핑과 달리 TCP 핑은 대상 호스트의 지정된 포트로 TCP SYN 패킷을 전송합니다.

  • 포트가 열려 있으면, 대상 호스트는 일반적으로 SYN/ACK 패킷으로 응답합니다.
  • 포트가 닫혀 있으면, 대상 호스트는 일반적으로 RST 패킷으로 응답합니다.
  • 포트가 필터링되면(예: 방화벽에 의해), 응답이 전혀 없을 수 있습니다.

Nmap 은 이러한 응답 (또는 응답 부재) 을 사용하여 호스트가 온라인 상태인지 및 지정된 포트의 상태를 확인합니다. Nmap 에서 TCP SYN 핑 스캔을 수행하려면 -PS 옵션을 사용합니다. 쉼표로 구분된 목록을 사용하여 스캔할 하나 이상의 포트를 지정할 수 있습니다.

이 실습에서는 설정 스크립트가 로컬 머신 (127.0.0.1) 에 여러 서비스를 구성했습니다. 포트 2222에서 실행 중인 SSH 서비스와 포트 8080에서 실행 중인 Nginx 웹 서버를 대상으로 합니다.

LabEx VM 의 터미널을 열고 기본 디렉토리가 ~/project인지 확인합니다. 다음 명령어를 실행합니다.

nmap -PS2222,8080 127.0.0.1

이 명령어는 Nmap 에 호스트 127.0.0.1의 포트 22228080으로 TCP SYN 패킷을 전송하도록 지시합니다.

다음과 유사한 출력이 표시되어야 합니다. 이는 호스트가 작동 중이고 지정된 포트가 열려 있음을 나타냅니다.

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

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

이 예에서 Nmap 은 호스트 127.0.0.1이 작동 중이고 포트 2222(SSH) 와 8080(HTTP 프록시) 가 열려 있음을 보고합니다. 포트가 닫혀 있으면 출력에 "closed"가 표시됩니다. 호스트가 작동하지 않거나 연결할 수 없으면 Nmap 은 "Host is down"을 보고합니다.

nmap -PU 명령어로 UDP 핑 수행

이 단계에서는 Nmap 을 사용하여 대상 호스트의 특정 포트에 대한 UDP 핑 스캔을 수행하는 방법을 배웁니다. 이 기술은 방화벽으로 인해 TCP 핑이 차단되거나 호스트에 UDP 서비스만 실행 중일 가능성이 있을 때 호스트 검색에 특히 유용합니다.

UDP 핑 이해:
TCP 핑이 SYN/ACK 또는 RST 응답을 기대하는 것과 달리 UDP 핑은 지정된 포트로 UDP 패킷을 전송합니다.

  • 포트가 열려 있으면, 대상 호스트는 특별한 요청이 없으면 대부분 응답하지 않습니다.
  • 포트가 닫혀 있으면, 대상 호스트는 일반적으로 ICMP "포트 연결 불가" 오류로 응답합니다.
  • 포트가 필터링되면, 응답이 없습니다.

Nmap 은 응답의 유무 (또는 응답 유형) 를 사용하여 호스트가 온라인 상태인지 확인합니다. Nmap 에서 UDP 핑 스캔을 수행하려면 -PU 옵션을 사용합니다. 스캔할 포트를 지정해야 합니다. 이 실습에서는 로컬 머신 (127.0.0.1) 의 포트 5353에서 실행 중인 DNS 서비스를 대상으로 합니다.

중요 참고 사항: UDP 핑 스캔에는 원시 네트워크 응답을 읽을 수 있는 루트 권한이 필요합니다. sudo를 사용하여 nmap 명령어를 실행해야 합니다.

LabEx VM 의 터미널을 열고 기본 디렉토리가 ~/project인지 확인합니다. 다음 명령어를 실행합니다.

sudo nmap -PU5353 127.0.0.1

이 명령어는 Nmap 에 호스트 127.0.0.1의 포트 5353으로 UDP 패킷을 전송하도록 지시합니다.

다음과 유사한 출력이 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

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

이 예에서 Nmap 은 호스트 127.0.0.1이 작동 중임을 보고합니다. UDP 핑을 사용하여 호스트를 검색할 때 Nmap 은 호스트가 살아 있는지 확인한 후 기본 포트 스캔을 수행하므로 출력에 TCP 포트가 표시되는 점에 유의하십시오. UDP 핑은 호스트가 온라인 상태임을 감지하는 데 성공했습니다.

nmap -Pn 명령어로 핑 생략

이 단계에서는 Nmap 의 -Pn 옵션을 사용하여 호스트 검색 핑을 건너뛰는 방법을 배웁니다. 이는 호스트가 온라인인지 먼저 확인하지 않고 호스트를 스캔하려는 경우에 특히 유용합니다. 이는 전통적인 핑 방법 (ICMP 또는 TCP/UDP 핑 등) 이 방화벽으로 인해 차단되거나 호스트가 작동 중이라고 가정하여 시간을 절약하고 싶을 때 유용합니다.

-Pn 이해:
일반적으로 Nmap 은 포트 스캔 전에 호스트 검색 단계를 수행합니다. 이는 대상 호스트가 온라인 상태인지 확인하기 위해 다양한 종류의 프로브 (ICMP 에코 요청, TCP SYN 패킷, UDP 패킷 등) 를 전송하는 것을 포함합니다. Nmap 이 호스트가 작동하지 않는다고 판단하면 해당 호스트에 대한 포트 스캔 단계를 건너뜁니다.

-Pn 옵션은 Nmap 에 이 호스트 검색 단계를 완전히 건너뛰고 모든 대상 호스트를 온라인 상태로 간주하도록 지시합니다. 즉, Nmap 은 호스트가 어떤 핑 프로브에도 응답하든 관계없이 바로 포트 스캔 단계로 진행합니다.

예를 들어, -Pn 옵션을 사용하여 로컬 호스트 주소 127.0.0.1을 스캔해 보겠습니다.

LabEx VM 의 터미널을 열고 기본 디렉토리가 ~/project인지 확인합니다. 다음 명령어를 실행합니다.

nmap -Pn 127.0.0.1

이 명령어는 Nmap 에 호스트 검색 핑을 건너뛰고 127.0.0.1의 포트를 스캔하도록 지시합니다.

실행 환경에서 설정된 포트를 포함하여 로컬 머신의 여러 열린 포트를 보여주는 다음과 유사한 출력이 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000098s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

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

이 예에서 Nmap 은 호스트 127.0.0.1이 작동 중임을 보고하고 열린 포트를 표시합니다. 시스템에서 ICMP 핑 또는 다른 호스트 검색 방법이 차단되었더라도 -Pn 옵션으로 인해 Nmap 은 여전히 포트를 스캔하려고 시도합니다.

-Pn 옵션을 사용하면 많은 호스트를 대상으로 하는 경우 스캔 시간이 길어질 수 있습니다. Nmap 은 실제로 오프라인인 많은 IP 주소에 대해서도 지정된 모든 IP 주소의 포트를 스캔하려고 시도하기 때문입니다.

호스트 검색을 위한 기술 결합

이 단계에서는 Nmap 에서 TCP 및 UDP 핑 기법을 결합하여 활성 호스트를 검색하는 방법을 배웁니다. 특히 한 종류의 프로브는 차단하지만 다른 종류의 프로브는 차단하지 않는 방화벽이나 기타 네트워크 보안 조치를 다룰 때 기법을 결합하면 호스트 검색의 신뢰성이 크게 향상됩니다.

이전 단계에서 학습한 내용:

  • -PS는 TCP SYN 핑에 사용됩니다.
  • -PU는 UDP 핑에 사용되며 (루트 권한 필요).

이러한 옵션을 결합하면 Nmap 은 지정된 TCP 포트로 TCP SYN 패킷과 지정된 UDP 포트로 UDP 패킷을 모두 전송합니다. 이러한 프로브 중 하나라도 응답을 받으면 Nmap 은 호스트가 작동 중이라고 간주합니다. 이는 활성 호스트를 감지하는 더욱 강력한 방법을 제공합니다.

이 예에서는 Nmap 을 사용하여 로컬 머신 (127.0.0.1) 의 포트 2222(SSH) 로 TCP SYN 패킷과 포트 5353(DNS) 로 UDP 패킷을 전송합니다.

LabEx VM 의 터미널을 열고 기본 디렉토리가 ~/project인지 확인합니다. 다음 명령어를 실행합니다.

sudo nmap -PS2222 -PU5353 127.0.0.1

이 명령어는 Nmap 에 다음 작업을 수행하도록 지시합니다.

  • -PS2222: 대상 호스트의 포트 2222로 TCP SYN 패킷을 전송합니다.
  • -PU5353: 대상 호스트의 포트 5353로 UDP 패킷을 전송합니다.
  • 127.0.0.1: 로컬 호스트를 스캔합니다.

다음과 유사한 출력이 표시됩니다.

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

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

이 예에서 Nmap 은 호스트 127.0.0.1이 작동 중이라고 보고합니다. Nmap 은 포트 2222로 전송된 TCP SYN 패킷 또는 포트 5353으로 전송된 UDP 패킷 중 하나에 대한 응답을 받아 이를 확인했습니다. 핑 프로브를 통해 호스트가 작동 중임을 확인한 후 Nmap 은 기본 포트 스캔을 계속하여 열린 TCP 포트를 표시합니다.

이러한 기법을 결합하면 한 가지 방법만 사용하는 것보다 효과적입니다. 이는 한 종류의 프로브는 차단하지만 다른 종류의 프로브는 차단하지 않는 방화벽이나 기타 보안 조치를 우회할 가능성이 높아지므로 더 정확한 호스트 검색 결과를 얻을 수 있습니다.

발견 결과 파일로 저장

이 단계에서는 -oN 옵션을 사용하여 Nmap 스캔 결과를 파일에 저장하는 방법을 배웁니다. 스캔 결과를 저장하는 것은 발견 내용을 기록하고, 나중에 분석하거나 다른 사람들과 정보를 공유하는 데 필수적입니다.

-oN 옵션은 Nmap 에 지정된 파일에 스캔 결과를 "표준" 형식으로 저장하도록 지시합니다. 표준 형식은 보기 쉽고 구문 분석하기 쉬운 사람이 읽을 수 있는 텍스트 파일입니다.

이 예에서는 Nmap 을 사용하여 호스트 127.0.0.1을 스캔하고, 호스트 검색 핑 (-Pn) 을 건너뛰고, ~/project 디렉토리에 hosts.txt라는 파일로 결과를 저장합니다.

LabEx VM 의 터미널을 열고 기본 디렉토리가 ~/project인지 확인합니다. 다음 명령어를 실행합니다.

nmap -Pn -oN hosts.txt 127.0.0.1

이 명령어는 Nmap 에 다음 작업을 수행하도록 지시합니다.

  • -Pn: 호스트 검색 핑을 건너뜁니다 (호스트가 작동 중이라고 가정).
  • -oN hosts.txt: 스캔 결과를 표준 형식으로 파일 hosts.txt에 저장합니다.
  • 127.0.0.1: 호스트 127.0.0.1을 스캔합니다.

스캔이 완료되면 cat 명령어를 사용하여 hosts.txt 파일의 내용을 볼 수 있습니다.

cat hosts.txt

다음과 유사한 출력이 표시됩니다. 이 출력에는 Nmap 버전, 스캔 시간, 호스트 상태 및 열린 포트가 포함됩니다.

## Nmap 7.80 scan initiated Tue Jun  3 10:50:49 2025 as: nmap -Pn -oN hosts.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

## Nmap done at Tue Jun  3 10:50:49 2025 -- 1 IP address (1 host up) scanned in 0.05 seconds

이제 hosts.txt 파일에는 사람이 읽을 수 있는 형식의 Nmap 스캔 결과가 포함됩니다. 이 파일을 사용하여 문서화, 보고서 작성 또는 grep과 같은 기본적인 Linux 명령어를 사용하여 발견된 호스트 및 서비스에 대한 특정 정보를 추출하여 추가 분석을 수행할 수 있습니다.

요약

이 실습에서는 Nmap 을 사용하여 고급 호스트 검색을 수행하는 방법을 배웠습니다. 호스트 검색을 위해 특정 Nmap 옵션을 이해하고 적용하는 것으로 시작했습니다.

  • TCP 핑 스캔 (-PS): nmap -PS2222,8080 127.0.0.1을 사용하여 활성 호스트와 열린 TCP 포트를 식별했습니다.
  • UDP 핑 스캔 (-PU): TCP 가 제한된 경우 유용한 UDP 프로브를 사용하여 sudo nmap -PU5353 127.0.0.1을 통해 호스트를 검색했습니다.
  • 핑 스캔 건너뛰기 (-Pn): nmap -Pn 127.0.0.1을 사용하여 방화벽 환경에서 필수적인 사전 호스트 검색 없이 Nmap 이 호스트를 스캔하도록 강제하는 방법을 배웠습니다.
  • 기법 결합: sudo nmap -PS2222 -PU5353 127.0.0.1을 사용하여 TCP 및 UDP 핑 스캔을 결합하여 더욱 신뢰할 수 있는 호스트 감지를 달성했습니다.

또한 Nmap 출력 관리에 대한 실질적인 기술을 습득했습니다.

  • 결과 저장: nmap -Pn -oN hosts.txt 127.0.0.1을 사용하여 사람이 읽을 수 있는 파일로 스캔 결과를 저장했습니다.

이러한 Nmap 기법을 숙달함으로써 효과적인 네트워크 정찰, 활성 장치 식별 및 보안 평가 또는 네트워크 관리 작업에 필수적인 정보 수집에 더욱 잘 대비할 수 있습니다. 저장된 출력 파일은 표준 Linux 텍스트 처리 도구를 사용하여 자세한 보고서 및 문서화를 위해 추가 분석할 수 있습니다.