Nmap 스캔 결과 비교

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 에서 스캔 결과를 비교하는 방법을 배우게 됩니다. 이 랩은 대상 IP 주소에 대해 SYN 및 TCP 스캔을 모두 수행하고, 출력을 별도의 파일에 저장한 다음, diff 명령을 사용하여 이러한 파일을 비교하는 과정을 포함합니다. 또한 상세 스캔을 탐색하고 Xfce 터미널에서 관찰된 차이점을 분석합니다.

과정은 nmap -sS -oN syn.txt 192.168.1.1을 사용하여 SYN 스캔을 실행하고, nmap -sT -oN tcp.txt 192.168.1.1을 사용하여 TCP 스캔을 실행하여 결과를 각각 syn.txttcp.txt에 저장하는 것으로 시작합니다. 그런 다음, diff syn.txt tcp.txt를 사용하여 이러한 파일을 비교합니다. 또한, nmap -v -sS 127.0.0.1nmap -v -sT 127.0.0.1을 사용하여 상세 스캔을 수행하고, Xfce 텍스트 편집기에 비교 노트를 저장하여 Xfce 터미널에서 분석합니다.

nmap -sS -oN syn.txt 192.168.1.1 명령으로 SYN 스캔 실행 및 저장

이 단계에서는 Nmap 을 사용하여 SYN 스캔을 수행하고 출력을 파일에 저장합니다. SYN 스캔은 반개방형 스캔 (half-open scan) 이라고도 하며, 대상 시스템의 TCP 포트 상태를 확인하려는 TCP 포트 스캔 유형입니다. 스캔 호스트가 TCP 연결 핸드셰이크를 완료하지 않기 때문에 "반개방형"이라고 합니다. 대신 SYN 패킷을 보내고 응답을 분석합니다. 이 기술은 전체 TCP 연결 스캔보다 은밀합니다. 전체 연결을 설정하지 않으므로 일부 방화벽 및 침입 탐지 시스템에 의한 탐지를 피할 수 있습니다.

다음은 명령에 대한 설명입니다.

  • nmap: Nmap 명령줄 스캐너입니다.
  • -sS: SYN 스캔 기술을 지정합니다.
  • -oN syn.txt: 출력을 일반 (사람이 읽을 수 있는) 형식으로 syn.txt라는 파일에 저장하도록 지정합니다.
  • 192.168.1.1: 스캔할 대상 IP 주소입니다. 이 값을 스캔하려는 대상의 실제 IP 주소로 바꿉니다. 가상 환경에서 이 랩을 실행하는 경우, 127.0.0.1 (localhost) 을 대상으로 사용할 수 있습니다.

명령을 실행해 보겠습니다. 먼저, ~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 SYN 스캔을 실행합니다.

sudo nmap -sS -oN syn.txt 192.168.1.1

참고: SYN 스캔을 수행하려면 원시 패킷을 보내야 하므로 sudo 권한이 필요할 수 있습니다. 다른 대상 IP 주소를 사용하는 경우 192.168.1.1을 올바른 IP 로 바꿉니다. localhost 를 스캔하는 경우 127.0.0.1을 사용할 수 있습니다.

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

cat syn.txt

출력에는 스캔 중에 수집된 열린 포트 및 기타 정보가 표시됩니다. 정확한 출력은 대상 시스템 및 해당 구성에 따라 다릅니다.

예시 출력 (특정 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

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

이 출력은 대상 시스템에서 포트 22, 80, 443 이 열려 있음을 나타냅니다. "filtered" 포트는 방화벽 규칙 또는 네트워크 조건으로 인해 Nmap 이 해당 포트가 열려 있는지 닫혀 있는지 확인할 수 없음을 의미합니다.

nmap -sT -oN tcp.txt 192.168.1.1 명령으로 TCP 스캔 실행 및 저장

이 단계에서는 Nmap 을 사용하여 TCP connect 스캔을 수행하고 출력을 파일에 저장합니다. -sT 옵션으로 지정된 TCP connect 스캔은 Nmap 이 각 포트에서 대상 호스트와 전체 TCP 연결을 설정하려고 시도하는 기본적인 TCP 스캔 형태입니다. 여기에는 3 방향 핸드셰이크 (SYN, SYN-ACK, ACK) 완료가 포함됩니다. 신뢰할 수 있지만, 이 방법은 대상 시스템이 연결을 기록하므로 쉽게 감지될 수 있습니다.

다음은 명령에 대한 설명입니다.

  • nmap: Nmap 명령줄 스캐너입니다.
  • -sT: TCP connect 스캔 기술을 지정합니다.
  • -oN tcp.txt: 출력을 일반 (사람이 읽을 수 있는) 형식으로 tcp.txt라는 파일에 저장하도록 지정합니다.
  • 192.168.1.1: 스캔할 대상 IP 주소입니다. 이 값을 스캔하려는 대상의 실제 IP 주소로 바꿉니다. 가상 환경에서 이 랩을 실행하는 경우, 127.0.0.1 (localhost) 을 대상으로 사용할 수 있습니다.

명령을 실행해 보겠습니다. 먼저, ~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 TCP connect 스캔을 실행합니다.

sudo nmap -sT -oN tcp.txt 192.168.1.1

참고: TCP connect 스캔에는 엄격하게 sudo가 필요하지 않지만, 일관성을 유지하고 잠재적인 권한 문제를 방지하기 위해 사용하는 것이 좋습니다. 다른 대상 IP 주소를 사용하는 경우 192.168.1.1을 올바른 IP 로 바꿉니다. localhost 를 스캔하는 경우 127.0.0.1을 사용할 수 있습니다.

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

cat tcp.txt

출력에는 스캔 중에 수집된 열린 포트 및 기타 정보가 표시됩니다. 정확한 출력은 대상 시스템 및 해당 구성에 따라 다릅니다.

예시 출력 (특정 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:05 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00020s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

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

이 출력은 대상 시스템에서 포트 22, 80, 443 이 열려 있음을 나타냅니다. "closed" 포트는 Nmap 이 SYN 패킷에 대한 응답으로 RST(reset) 패킷을 수신했음을 의미하며, 이는 포트가 닫혀 있음을 나타냅니다.

diff syn.txt tcp.txt 명령으로 파일 비교

이 단계에서는 이전 단계에서 생성한 syn.txttcp.txt 파일을 diff 명령을 사용하여 비교합니다. diff 명령은 두 파일 간의 차이점을 식별하는 강력한 도구입니다. 파일들을 줄 단위로 비교하고 추가, 삭제 또는 수정 사항을 강조 표시합니다.

diff 명령을 실행하기 전에 SYN 스캔 (-sS) 과 TCP connect 스캔 (-sT) 의 출력이 왜 다를 수 있는지 이해하는 것이 중요합니다. SYN 스캔은 "반개방형" 스캔으로, 전체 TCP 핸드셰이크를 완료하지 않습니다. 이는 더 은밀하게 만들 수 있지만, 방화벽 또는 네트워크 장치가 초기 SYN 패킷 또는 응답을 차단할 수 있으므로 경우에 따라 덜 신뢰할 수 있습니다. 반면에 TCP connect 스캔은 전체 TCP 핸드셰이크를 완료하므로 더 신뢰할 수 있지만, 감지하기도 더 쉽습니다.

파일을 비교하려면 다음 명령을 사용합니다.

diff syn.txt tcp.txt

이 명령은 syn.txttcp.txt 파일을 비교하고 터미널에 차이점을 표시합니다.

예시 출력 (특정 출력은 대상 시스템 및 네트워크 조건에 따라 다릅니다):

2,4c2,4
< Nmap scan report for 192.168.1.1
< Host is up (0.00020s latency).
< Not shown: 997 filtered ports
---
> Nmap scan report for 192.168.1.1
> Host is up (0.00020s latency).
> Not shown: 997 closed ports
5c5
< 22/tcp  open  ssh
---
> 22/tcp  open  ssh
6c6
< 80/tcp  open  http
---
> 80/tcp  open  http
7c7
< 443/tcp open  https
---
> 443/tcp open  https
10c10
< Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds
---
> Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

이 예에서 출력은 두 파일 간의 주요 차이점이 "Not shown" 줄임을 보여줍니다. SYN 스캔 (syn.txt) 은 "997 filtered ports"를 표시하는 반면, TCP connect 스캔 (tcp.txt) 은 "997 closed ports"를 표시합니다. 이는 SYN 스캔이 필터링으로 인해 일부 포트의 상태를 확인할 수 없었지만, TCP connect 스캔은 해당 포트가 닫혀 있음을 확인할 수 있었음을 나타냅니다.

diff 출력은 다음 기호를 사용합니다.

  • <: 첫 번째 파일 (syn.txt) 에만 존재하는 줄을 나타냅니다.
  • >: 두 번째 파일 (tcp.txt) 에만 존재하는 줄을 나타냅니다.
  • c: 파일들을 동일하게 만들기 위해 변경해야 하는 줄이 다르다는 것을 나타냅니다.

diff 출력을 분석하여 두 스캔 유형 간의 차이점과 대상 시스템을 어떻게 인식하는지에 대한 통찰력을 얻을 수 있습니다.

nmap -v -sS 127.0.0.1 및 nmap -v -sT 127.0.0.1 명령으로 상세 스캔 실행

이 단계에서는 상세 옵션을 활성화하여 localhost(127.0.0.1) 에 대해 SYN 및 TCP connect 스캔을 모두 실행합니다. Nmap 의 -v 옵션은 상세 수준을 높여 스캔 프로세스에 대한 더 자세한 정보를 제공합니다. 이는 Nmap 의 작동 방식을 이해하고 문제를 해결하는 데 도움이 될 수 있습니다.

먼저, 상세 SYN 스캔을 실행해 보겠습니다.

sudo nmap -v -sS 127.0.0.1

이 명령은 localhost 에서 SYN 스캔을 수행하고 터미널에 상세 출력을 표시합니다. 스캔 진행 상황, 스캔 중인 포트, 스캔 타이밍, 발생하는 오류 또는 경고를 포함한 더 많은 정보를 볼 수 있습니다.

예시 출력 (특정 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:15 UTC
NSE: Loaded 0 scripts for scanning.
Initiating SYN Stealth Scan
Scanning 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
Discovered open port 443/tcp on 127.0.0.1
Completed SYN Stealth Scan at 10:15, 2.50s elapsed (1000 total ports)
Nmap scan report for 127.0.0.1
Host is up (0.000020s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

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

다음으로, 상세 TCP connect 스캔을 실행합니다.

sudo nmap -v -sT 127.0.0.1

이 명령은 localhost 에서 TCP connect 스캔을 수행하고 상세 출력을 표시합니다.

예시 출력 (특정 출력은 다를 수 있습니다):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:16 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Connect Scan
Scanning 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
Discovered open port 443/tcp on 127.0.0.1
Completed Connect Scan at 10:16, 3.00s elapsed (1000 total ports)
Nmap scan report for 127.0.0.1
Host is up (0.000020s latency).
Not shown: 997 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

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

출력의 차이점을 관찰하십시오. 상세 출력은 "SYN Stealth Scan" 또는 "Connect Scan"과 같이 수행되는 스캔 유형, 스캔 중인 포트 수, 스캔 완료에 걸리는 시간과 같은 스캔 프로세스에 대한 더 자세한 정보를 제공합니다. 열려 있는 것으로 발견된 포트도 볼 수 있습니다.

SYN 및 TCP connect 스캔의 상세 출력을 비교하여 각 스캔 유형이 어떻게 작동하고 대상 시스템과 어떻게 상호 작용하는지 더 잘 이해할 수 있습니다.

Xfce 텍스트 편집기에서 비교 노트 저장

이 단계에서는 Xfce 텍스트 편집기를 사용하여 이전 단계에서 얻은 관찰 및 비교 내용을 저장합니다. 이는 발견 사항을 문서화하고 Nmap 스캔 유형 간의 차이점을 이해하는 데 중요한 단계입니다.

먼저 Xfce 텍스트 편집기를 엽니다. Xfce 응용 프로그램 메뉴에서 "Text Editor"를 검색하거나 터미널에서 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.

mousepad notes.txt

이 명령은 Xfce 텍스트 편집기 (Mousepad) 를 열고 ~/project 디렉토리에 notes.txt라는 새 파일을 생성합니다.

이제 텍스트 편집기에서 SYN 스캔과 TCP connect 스캔 간의 차이점에 대한 관찰 내용을 적어보세요. 다음 사항을 고려하십시오.

  • 속도: 어떤 스캔 유형이 더 빨랐습니까?
  • 정확성: 두 스캔 유형 모두 동일한 열린 포트를 식별했습니까? 그렇지 않은 경우, 그 이유는 무엇일 수 있습니까?
  • 은밀성: 어떤 스캔 유형이 더 은밀하다고 간주됩니까? 그 이유는 무엇입니까?
  • 방화벽 회피: 방화벽이 각 스캔 유형을 어떻게 다르게 처리할 수 있습니까?
  • 상세 출력: 상세 스캔에서 어떤 추가 정보를 얻었습니까?

다음은 노트가 어떻게 보일 수 있는지에 대한 예입니다.

Nmap 스캔 비교 노트:

SYN 스캔 (-sS):
- TCP connect 스캔보다 빠릅니다.
- 필터링된 포트로 인해 정확도가 떨어질 수 있습니다.
- 전체 TCP 핸드셰이크를 완료하지 않으므로 더 은밀하다고 간주됩니다.
- 방화벽이 SYN 패킷을 차단하여 부정확한 결과를 초래할 수 있습니다.

TCP Connect 스캔 (-sT):
- SYN 스캔보다 느립니다.
- 전체 TCP 핸드셰이크를 완료하므로 더 신뢰할 수 있습니다.
- 쉽게 감지할 수 있으므로 덜 은밀합니다.
- 방화벽에 의해 차단될 가능성이 적어 더 정확한 결과를 제공합니다.

상세 출력 (-v):
- 스캔 프로세스에 대한 더 자세한 정보를 제공합니다.
- Nmap의 작동 방식을 이해하고 문제를 해결하는 데 도움이 됩니다.
- 수행되는 스캔 유형과 스캔된 포트 수를 보여줍니다.

관찰된 차이점:
- SYN 스캔은 "filtered" 포트를 보고한 반면, TCP connect 스캔은 "closed" 포트를 보고했습니다.
- 이는 일부 포트가 필터링되어 SYN 스캔이 해당 상태를 확인할 수 없었음을 시사합니다.

노트 작성을 마친 후 텍스트 편집기에서 "File" -> "Save"를 클릭하거나 Ctrl+S를 눌러 파일을 저장합니다.

notes.txt 파일은 다음 단계에서 Xfce 터미널의 차이점을 분석하는 데 사용됩니다.

Xfce 터미널에서 차이점 분석

이 단계에서는 Xfce 터미널을 사용하여 이전 단계에서 저장한 노트를 기반으로 SYN 및 TCP connect 스캔 간의 차이점을 추가로 분석합니다. 명령줄 도구를 사용하여 특정 패턴을 검색하고 스캔 결과를 비교합니다.

먼저 Xfce 터미널을 엽니다.

이제 cat 명령을 사용하여 처음 두 단계에서 얻은 Nmap 스캔 결과를 포함하는 syn.txttcp.txt 파일의 내용을 표시해 보겠습니다.

cat syn.txt
cat tcp.txt

두 명령의 출력을 검토합니다. 보고된 포트 상태 (open, closed, filtered) 및 스캔 완료에 걸린 시간과 같은 스캔 결과의 차이점에 주의하십시오.

다음으로, grep 명령을 사용하여 스캔 결과에서 특정 키워드를 검색합니다. 예를 들어, 두 파일에서 "open"이라는 단어를 검색할 수 있습니다.

grep "open" syn.txt
grep "open" tcp.txt

이 명령의 출력을 비교합니다. 두 스캔 모두 동일한 열린 포트를 보고합니까? 그렇지 않은 경우, 차이점은 무엇입니까?

"closed" 또는 "filtered"와 같은 다른 키워드를 검색하여 스캔 결과를 추가로 분석할 수도 있습니다.

이제 diff 명령을 다시 사용하여 syn.txttcp.txt 파일을 비교해 보겠습니다.

diff syn.txt tcp.txt

diff 명령의 출력을 검토합니다. 이렇게 하면 두 파일 간의 차이점을 나타내는 줄이 강조 표시됩니다. 보고된 포트 상태의 차이점을 나타내는 줄에 주의하십시오.

마지막으로, cat 명령을 사용하여 이전 단계에서 얻은 관찰 내용을 포함하는 notes.txt 파일의 내용을 표시합니다.

cat notes.txt

관찰 내용을 되돌아보고 스캔 결과 및 diff 명령의 출력과 비교합니다. 관찰 내용이 스캔 결과와 일치합니까? 불일치를 설명할 수 있습니까?

Xfce 터미널과 명령줄 도구를 사용하여 Nmap 스캔 결과를 분석함으로써 SYN 및 TCP connect 스캔 간의 차이점과 대상 시스템과의 상호 작용에 대해 더 깊이 이해할 수 있습니다. 이 분석은 다양한 상황에서 사용할 스캔 유형에 대한 정보에 입각한 결정을 내리는 데 도움이 됩니다.

요약

이 랩에서는 nmap -sS -oN syn.txt 192.168.1.1 명령을 사용하여 대상 IP 주소 (192.168.1.1 또는 localhost) 에 대한 SYN 스캔을 수행하는 것으로 시작했습니다. 여기에는 전체 연결을 설정하지 않는 더 은밀한 "half-open" TCP 포트 스캔인 SYN 스캔의 목적을 이해하는 것이 포함되었습니다. 스캔의 출력은 일반 형식으로 syn.txt라는 파일에 저장되었습니다.

핵심 학습 포인트는 Nmap 을 사용하여 SYN 스캔을 실행하고, 명령의 매개변수 (-sS는 SYN 스캔, -oN은 파일에 대한 일반 출력) 를 해석하고, raw 패킷 사용으로 인해 sudo 권한이 필요할 수 있음을 이해하는 방법이었습니다. 또한 cat syn.txt를 사용하여 스캔 결과를 보는 방법도 배웠습니다.