Nmap 에서 윈도우 스캔 수행하기

NmapBeginner
지금 연습하기

소개

이 랩에서는 네트워크 보안에 유용한 기술인 Nmap 에서 윈도우 스캔을 수행하는 방법을 배우게 됩니다. 랩은 대상 IP 주소에 대한 기본적인 윈도우 스캔을 실행하는 것으로 시작하여 특정 포트 범위를 스캔하는 것으로 진행됩니다. 또한 스캔에 상세 정보를 추가하고, 결과를 파일에 저장하며, Xfce 터미널에서 스캔을 분석하고, ACK 스캔과 비교할 것입니다. 이러한 실습 경험을 통해 Nmap 의 윈도우 스캔 기능에 대한 이해도를 높일 수 있습니다.

nmap -sW 192.168.1.1 로 윈도우 스캔 실행

이 단계에서는 Nmap 을 사용하여 윈도우 스캔을 수행합니다. 윈도우 스캔은 다른 스캔 유형보다 열린 포트와 필터링된 포트에 대한 더 많은 정보를 때때로 드러낼 수 있는 TCP 스캔 유형입니다. 다른 유형의 스캔을 차단할 수 있는 방화벽이 있는 경우 특히 유용합니다.

시작하기 전에 윈도우 스캔이 무엇을 하는지 간략하게 논의해 보겠습니다. 윈도우 스캔은 일부 TCP 구현의 특이성을 이용합니다. 대상 호스트로 SYN 플래그가 설정된 TCP 패킷을 보냅니다. 포트가 열려 있으면 대상은 SYN/ACK 패킷으로 응답합니다. 그런 다음 Nmap 은 응답의 TCP 윈도우 크기를 검사합니다. 이 윈도우 크기를 기반으로 Nmap 은 포트가 열려 있는지 또는 필터링되었는지 확인할 수 있습니다.

이제 윈도우 스캔을 실행해 보겠습니다. 다음 명령을 사용합니다.

nmap -sW 192.168.1.1

192.168.1.1을 스캔하려는 대상의 실제 IP 주소로 바꿉니다. 사용할 IP 주소를 모르는 경우 자체 머신을 참조하는 루프백 주소 127.0.0.1을 사용할 수 있습니다.

Xfce 터미널을 엽니다. 데스크톱 또는 애플리케이션 메뉴에서 터미널 아이콘을 찾을 수 있습니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

nmap -sW 127.0.0.1

이 명령은 Nmap 에게 루프백 주소 (127.0.0.1) 에 대해 윈도우 스캔 (-sW) 을 수행하도록 지시합니다.

다음과 유사한 출력을 볼 수 있습니다.

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

PORT     STATE  SERVICE
135/tcp  closed msrpc
139/tcp  closed netbios-ssn
445/tcp  closed microsoft-ds

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

출력은 대상 머신에서 열린 포트, 닫힌 포트 또는 필터링된 포트를 보여줍니다. 이 예제에서는 포트 135, 139 및 445 가 닫혀 있습니다. 특정 포트와 해당 상태는 대상 시스템에 따라 다릅니다.

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

이 단계에서는 포트 범위를 지정하여 윈도우 스캔을 확장합니다. 이를 통해 대상 머신에서 실행 중인 서비스를 식별하는 데 유용할 수 있는 특정 포트 집합에 스캔을 집중할 수 있습니다.

기본적으로 Nmap 은 일반적으로 사용되는 미리 정의된 포트 집합을 스캔합니다. 그러나 -p 옵션을 사용하여 특정 포트 또는 포트 범위를 대상으로 스캔을 사용자 정의할 수 있습니다. 이는 특정 서비스가 비표준 포트에서 실행 중인지 확인하거나, 더 작은 포트 집합에 집중하여 스캔 시간을 제한하려는 경우 특히 유용합니다.

이제 포트 범위를 사용하여 윈도우 스캔을 실행해 보겠습니다. 다음 명령을 사용합니다.

nmap -sW -p 1-100 127.0.0.1

이 명령은 Nmap 에게 루프백 주소 (127.0.0.1) 의 포트 1 에서 100(-p 1-100) 까지 윈도우 스캔 (-sW) 을 수행하도록 지시합니다.

Xfce 터미널을 엽니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

nmap -sW -p 1-100 127.0.0.1

다음과 유사한 출력을 볼 수 있습니다.

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.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http

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

출력은 대상 머신에서 지정된 범위 (1-100) 내의 열린 포트, 닫힌 포트 또는 필터링된 포트를 보여줍니다. 이 예제에서는 포트 22, 25 및 80 이 닫혀 있습니다. 특정 포트와 해당 상태는 대상 시스템에 따라 다릅니다.

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

이 단계에서는 윈도우 스캔에 상세 정보를 추가합니다. 상세 정보는 스캔 프로세스에 대한 더 자세한 정보를 제공하며, 문제 해결 또는 결과 이해에 도움이 될 수 있습니다.

Nmap 의 상세 정보 옵션 (-v) 은 스캔 중에 표시되는 정보의 양을 늘립니다. 여기에는 스캔 단계, 송수신되는 패킷, Nmap 이 특정 결정을 내리는 이유에 대한 세부 정보가 포함될 수 있습니다. 상세 정보를 사용하면 네트워크 문제를 진단하거나 Nmap 이 대상으로부터의 응답을 어떻게 해석하는지 이해하려는 경우 특히 유용할 수 있습니다.

이제 상세 정보와 함께 윈도우 스캔을 실행해 보겠습니다. 다음 명령을 사용합니다.

nmap -v -sW 192.168.1.1

192.168.1.1을 스캔하려는 대상의 실제 IP 주소로 바꿉니다. 사용할 IP 주소를 모르는 경우 자체 머신을 참조하는 루프백 주소 127.0.0.1을 사용할 수 있습니다.

Xfce 터미널을 엽니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

nmap -v -sW 127.0.0.1

이 명령은 Nmap 에게 루프백 주소 (127.0.0.1) 에 대해 윈도우 스캔 (-sW) 을 수행하고 상세 정보 수준 (-v) 을 높이도록 지시합니다.

다음과 유사한 출력을 볼 수 있습니다 (정확한 출력은 다를 수 있음).

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Window Scan at 10:10
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 22/tcp on 127.0.0.1
Discovered open port 80/tcp on 127.0.0.1
Completed Window Scan at 10:10, 0.12s elapsed (1000 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000039s latency).
Other addresses for localhost (alias(es)): localhost

PORT   STATE  SERVICE
22/tcp open   ssh
80/tcp open   http

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds

이제 출력에는 스캔 프로세스에 대한 더 많은 정보 (예: 시작 및 종료 시간, 스캔된 포트 수, 로드된 모든 스크립트) 가 포함됩니다. 특정 세부 정보는 대상 시스템 및 Nmap 구성에 따라 다릅니다.

nmap -sW -oN window.txt 127.0.0.1 로 윈도우 스캔 결과 저장

이 단계에서는 윈도우 스캔의 결과를 파일에 저장합니다. 이는 나중에 분석하거나 다른 사람과 결과를 공유하는 데 유용합니다.

Nmap 은 다양한 형식으로 스캔 결과를 저장하기 위한 여러 옵션을 제공합니다. -oN 옵션은 결과를 "일반" 사람이 읽을 수 있는 형식으로 저장합니다. 이 형식은 읽고 이해하기 쉽지만 자동 구문 분석에는 적합하지 않을 수 있습니다. 다른 옵션으로는 XML 형식의 -oX와 스크립트 키디 형식의 -oS가 있습니다.

이제 윈도우 스캔을 실행하고 결과를 ~/project 디렉토리에 있는 window.txt라는 파일에 저장해 보겠습니다. 다음 명령을 사용합니다.

nmap -sW -oN window.txt 127.0.0.1

이 명령은 Nmap 에게 루프백 주소 (127.0.0.1) 에 대해 윈도우 스캔 (-sW) 을 수행하고 결과를 일반 형식 (-oN) 으로 window.txt 파일에 저장하도록 지시합니다.

Xfce 터미널을 엽니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

nmap -sW -oN window.txt 127.0.0.1

다음과 유사한 출력을 볼 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http

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

이제 스캔 결과가 ~/project 디렉토리의 window.txt 파일에 저장됩니다.

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

cat window.txt

출력에서 Nmap 스캔 보고서를 볼 수 있습니다.

## 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.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds

Xfce 터미널에서 윈도우 스캔 분석

이 단계에서는 이전 단계에서 window.txt 파일에 저장한 윈도우 스캔의 결과를 분석합니다. 잠재적인 취약점과 보안 위험을 식별하려면 Nmap 스캔의 출력을 이해하는 것이 중요합니다.

window.txt 파일에는 스캔 결과에 대한 사람이 읽을 수 있는 보고서가 포함되어 있습니다. 보고서에는 대상 호스트, 스캔된 포트, 각 포트의 상태에 대한 정보가 포함되어 있습니다.

Xfce 터미널을 엽니다.

먼저 cat 명령을 사용하여 window.txt 파일의 내용을 표시해 보겠습니다.

cat window.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.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds

이 출력의 주요 부분을 분석해 보겠습니다.

  • Nmap scan report for localhost (127.0.0.1): 이 줄은 스캔이 루프백 주소 127.0.0.1에서 수행되었음을 나타냅니다.
  • Host is up: 이 줄은 대상 호스트에 연결할 수 있음을 확인합니다.
  • PORT STATE SERVICE: 이 섹션은 스캔된 포트와 해당 상태 및 서비스를 나열합니다.
  • 22/tcp closed ssh: 이 줄은 포트 22(SSH) 가 닫혀 있음을 나타냅니다.
  • 25/tcp closed smtp: 이 줄은 포트 25(SMTP) 가 닫혀 있음을 나타냅니다.
  • 80/tcp closed http: 이 줄은 포트 80(HTTP) 이 닫혀 있음을 나타냅니다.

STATE 열은 특히 중요합니다. 윈도우 스캔에서 가능한 상태는 일반적으로 open, closed 또는 filtered입니다.

  • open: 포트가 연결을 수신하고 있음을 나타냅니다.
  • closed: 포트가 연결을 수신하고 있지 않지만 호스트에 연결할 수 있음을 나타냅니다.
  • filtered: 네트워크 필터링으로 인해 Nmap 이 포트에 연결할 수 없으므로 Nmap 이 포트가 열려 있는지 닫혀 있는지 확인할 수 없음을 나타냅니다.

이 예제에서는 스캔된 모든 포트가 closed로 보고됩니다. 즉, 대상 호스트에 연결할 수 있지만 이러한 포트에서 연결을 허용하지 않습니다.

이 정보를 사용하여 잠재적인 취약점 또는 보안 위험을 식별할 수 있습니다. 예를 들어, 포트가 예상치 않게 open인 경우 해당 포트에서 취약한 서비스가 실행되고 있음을 나타낼 수 있습니다.

이제 grep 명령을 사용하여 window.txt 파일에서 열린 포트를 찾아보겠습니다.

grep "open" window.txt

열린 포트가 없으면 명령이 출력을 반환하지 않습니다. 이 예제에서는 출력이 비어 있습니다.

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

이 단계에서는 ACK 스캔을 수행하고 이전 단계에서 수행한 윈도우 스캔 결과와 비교합니다. 이 비교를 통해 두 스캔 유형 간의 차이점과 대상 시스템에 대한 다양한 유형의 정보를 수집하는 데 어떻게 사용할 수 있는지 이해할 수 있습니다.

ACK 스캔 (-sA) 은 TCP ACK 패킷을 대상 호스트로 보냅니다. SYN 스캔과 달리 ACK 스캔은 연결을 설정하려고 시도하지 않습니다. 대신, 방화벽이 있는지 여부와 방화벽이 원치 않는 ACK 패킷을 어떻게 처리하는지 확인하는 데 사용됩니다.

방화벽이 있고 원치 않는 ACK 패킷을 차단하도록 구성된 경우 ACK 스캔은 모든 포트를 filtered로 보고합니다. 방화벽이 없거나 원치 않는 ACK 패킷을 허용하도록 구성된 경우 ACK 스캔은 포트를 unfiltered 또는 closed로 보고합니다.

이제 루프백 주소 (127.0.0.1) 에서 ACK 스캔을 수행하고 결과를 ack.txt라는 파일에 저장해 보겠습니다.

Xfce 터미널을 엽니다.

터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

nmap -sA -oN ack.txt 127.0.0.1

다음과 유사한 출력을 볼 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE      SERVICE
22/tcp  unfiltered ssh
25/tcp  unfiltered smtp
80/tcp  unfiltered http

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

이제 ACK 스캔의 결과를 윈도우 스캔과 비교해 보겠습니다.

윈도우 스캔의 출력 (window.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.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE  SERVICE
22/tcp  closed ssh
25/tcp  closed smtp
80/tcp  closed http
## Nmap done: 1 IP address (1 host up) scanned in 2.35 seconds

윈도우 스캔에서 포트는 closed로 보고되었습니다. ACK 스캔에서는 포트가 unfiltered로 보고됩니다. 이러한 차이는 두 스캔 유형의 작동 방식 때문입니다. 윈도우 스캔은 연결을 설정하려고 시도하는 반면, ACK 스캔은 ACK 패킷만 보냅니다.

ACK 스캔에서 unfiltered 상태는 ACK 패킷이 필터링되지 않기 때문에 Nmap 이 포트가 열려 있는지 닫혀 있는지 확인할 수 없음을 의미합니다. 이는 방화벽이 없거나 방화벽이 원치 않는 ACK 패킷을 허용하도록 구성되었음을 나타낼 수 있습니다.

cat 명령을 사용하여 ack.txt 파일의 내용을 표시할 수도 있습니다.

cat ack.txt

출력에서 Nmap 스캔 보고서를 볼 수 있습니다.

## 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.000070s latency).
Other addresses for localhost (alias(es)): localhost

PORT    STATE      SERVICE
22/tcp  unfiltered ssh
25/tcp  unfiltered smtp
80/tcp  unfiltered http

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

요약

이 랩에서는 참가자들이 Nmap 에서 윈도우 스캔을 수행하는 방법을 배웁니다. 먼저 nmap -sW 명령과 IP 주소를 사용하여 기본적인 윈도우 스캔을 실행하고, TCP 구현의 특성을 활용하여 포트 상태를 파악하는 방법을 이해합니다. 그런 다음, nmap -sW -p 1-100을 사용하여 특정 포트 범위를 스캔하고, -v를 사용하여 스캔에 상세 정보를 추가하며, -oN을 사용하여 스캔 결과를 파일에 저장합니다. 마지막으로, Xfce 터미널에서 윈도우 스캔을 분석하고 ACK 스캔과 비교합니다.