Nmap 에서 TCP FIN 스캔 수행

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 을 사용하여 TCP FIN 스캔을 수행하는 방법을 배우게 됩니다. 먼저 대상 IP 에 대한 기본적인 FIN 스캔을 수행한 다음, 특정 포트를 스캔하고, 스캔에 상세 정보를 추가하며, 결과를 저장하는 것으로 시작합니다. 또한 FIN 스캔을 TCP 스캔과 비교하고 Xfce 터미널에서 열린 포트를 분석합니다. FIN 스캔은 FIN 패킷을 대상 호스트로 전송하며, 이는 특정 방화벽 또는 침입 탐지 시스템을 우회하는 데 도움이 될 수 있습니다.

nmap -sF 192.168.1.1 로 FIN 스캔 실행

이 단계에서는 Nmap 을 사용하여 FIN 스캔을 수행하는 방법을 배우게 됩니다. FIN 스캔은 FIN (finish) 패킷을 대상 호스트로 전송하는 TCP 스캔 유형입니다. 연결을 시도하는 SYN 스캔과 달리, FIN 스캔은 단순히 FIN 패킷을 보내고 응답을 관찰합니다. 이는 특정 방화벽 또는 침입 탐지 시스템을 우회하는 데 유용할 수 있습니다.

시작하기 전에 FIN 패킷이 무엇인지 명확히 해 봅시다. TCP 통신에서 FIN 플래그는 연결의 종료를 알립니다. 호스트가 FIN 패킷을 보낼 때, 본질적으로 "데이터 전송을 완료했습니다"라고 말하는 것입니다.

이제 FIN 스캔을 수행해 보겠습니다. Xfce 터미널을 엽니다.

다음 명령을 실행합니다.

sudo nmap -sF 192.168.1.1
  • -sF: 이 옵션은 Nmap 에게 FIN 스캔을 수행하도록 지시합니다.
  • 192.168.1.1: 이것은 대상 IP 주소입니다. 다른 IP 주소를 스캔하려는 경우, 이 값을 실제 머신의 IP 주소로 바꿉니다.

LabEx VM 에서 접근 가능한 대상 머신의 IP 주소에 맞게 IP 주소 192.168.1.1을 조정해야 할 수 있습니다. 특정 대상을 염두에 두고 있지 않다면, 게이트웨이의 IP 주소 또는 로컬 네트워크의 다른 장치를 사용할 수 있습니다. 확실하지 않은 경우, 127.0.0.1 (localhost) 를 사용하여 자신의 머신을 스캔해 볼 수 있습니다.

출력은 대상 머신의 각 포트의 상태를 보여줍니다. 열린 포트는 일반적으로 FIN 패킷에 응답하지 않지만, 닫힌 포트는 RST (reset) 패킷으로 응답합니다. 필터링된 포트는 전혀 응답하지 않을 수 있으므로 상태를 파악하기 어려울 수 있습니다.

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

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.00043s latency).
Not shown: 999 closed ports
PORT    STATE    SERVICE
22/tcp  filtered ssh

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

이 예에서 포트 22 (SSH) 는 필터링된 것으로 표시됩니다. 이는 방화벽 규칙 또는 기타 네트워크 조건으로 인해 Nmap 이 포트가 열려 있는지 닫혀 있는지 확인할 수 없음을 의미합니다. "Not shown: 999 closed ports" 줄은 Nmap 이 출력을 간결하게 유지하기 위해 999 개의 닫힌 포트를 표시하지 않았음을 나타냅니다.

nmap -sF -p 22,80 127.0.0.1 로 특정 포트 스캔

이전 단계에서 기본적인 FIN 스캔을 수행하는 방법을 배웠습니다. 이제 FIN 스캔 중에 특정 포트를 타겟팅하는 방법을 배우게 됩니다. 이는 SSH (포트 22) 및 HTTP (포트 80) 와 같이 특정 포트에서 실행될 가능성이 높은 서비스에 스캔을 집중하려는 경우 유용합니다.

포트를 지정하면 스캔 시간을 크게 줄이고 결과를 더욱 관련성 있게 만들 수 있습니다. 65535 개의 모든 포트를 스캔하는 대신, 관심 대상이 될 가능성이 가장 높은 포트에 집중할 수 있습니다.

Xfce 터미널을 엽니다.

다음 명령을 실행합니다.

sudo nmap -sF -p 22,80 127.0.0.1
  • -sF: 이 옵션은 Nmap 에게 FIN 스캔을 수행하도록 지시합니다.
  • -p 22,80: 이 옵션은 포트 22 와 80 을 스캔하려는 것을 지정합니다. 단일 포트, 포트 범위 (예: 1-100), 또는 쉼표로 구분된 포트 목록을 지정할 수 있습니다.
  • 127.0.0.1: 이것은 대상 IP 주소이며, 이 경우 자신의 머신 (localhost) 입니다.

출력은 머신의 포트 22 와 80 의 상태를 보여줍니다.

예시 출력:

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.000027s latency).

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

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

이 예에서 포트 22 와 80 은 모두 필터링된 것으로 표시됩니다. 이는 Nmap 이 이러한 포트가 열려 있는지 닫혀 있는지 확인할 수 없음을 의미합니다. 이는 FIN 스캔에서 흔히 나타나는 결과이며, 특히 방화벽이 있는 경우 더욱 그렇습니다.

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

이 단계에서는 Nmap FIN 스캔의 상세 정보 (verbosity) 를 늘리는 방법을 배우게 됩니다. 상세 정보는 스캔 프로세스에 대한 더 자세한 정보를 제공하며, 문제 해결 또는 결과 이해에 도움이 될 수 있습니다.

Nmap 의 -v 옵션은 상세 정보 수준을 높입니다. 더 자세한 출력을 위해 여러 번 사용할 수 있습니다 (예: -vv).

Xfce 터미널을 엽니다.

다음 명령을 실행합니다.

sudo nmap -v -sF 192.168.1.1
  • -v: 이 옵션은 상세 정보 수준을 높입니다.
  • -sF: 이 옵션은 Nmap 에게 FIN 스캔을 수행하도록 지시합니다.
  • 192.168.1.1: 이것은 대상 IP 주소입니다. 필요한 경우 유효한 IP 주소로 바꾸는 것을 잊지 마십시오.

이제 출력에는 전송 및 수신된 패킷, 특정 결정의 이유, 전체 진행 상황 등 스캔에 대한 더 많은 정보가 포함됩니다.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
NSE: Loaded 0 scripts for scanning.
Initiating Ping Scan at 10:10
Scanning 192.168.1.1 [2 ports]
Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
Initiating FIN Scan at 10:10
Scanning 192.168.1.1 [1000 ports]
Completed FIN Scan at 10:10, 2.12s elapsed (1000 total ports)
Nmap scan report for 192.168.1.1
Host is up (0.00038s latency).
Not shown: 999 closed ports
PORT    STATE    SERVICE
22/tcp  filtered ssh

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.18 seconds
Raw packets sent: 1001 (44.044KB) | Rcvd: 1 (44B)

NSE 스크립트 로딩, 핑 및 FIN 스캔의 시작 및 완료 시간, 전송 및 수신된 패킷 수와 같은 추가 정보를 확인하십시오. 이러한 세부 정보 수준은 네트워크 문제를 해결하거나 스캔 결과를 분석할 때 매우 유용할 수 있습니다.

nmap -sF -oN fin.txt 127.0.0.1 로 FIN 스캔 결과 저장

이 단계에서는 Nmap FIN 스캔의 결과를 파일에 저장하는 방법을 배우게 됩니다. 이는 나중에 분석, 보고 또는 다른 스캔과의 비교에 유용합니다.

Nmap 은 다양한 형식으로 스캔 결과를 저장하기 위한 여러 옵션을 제공합니다. -oN 옵션은 결과를 "일반" 사람이 읽을 수 있는 형식으로 저장합니다.

Xfce 터미널을 엽니다.

다음 명령을 실행합니다.

sudo nmap -sF -oN fin.txt 127.0.0.1
  • -sF: 이 옵션은 Nmap 에게 FIN 스캔을 수행하도록 지시합니다.
  • -oN fin.txt: 이 옵션은 결과를 일반 형식으로 fin.txt라는 파일에 저장하려는 것을 지정합니다. 파일은 현재 디렉토리 (~/project) 에 저장됩니다.
  • 127.0.0.1: 이것은 대상 IP 주소이며, 이 경우 자신의 머신 (localhost) 입니다.

스캔이 완료된 후, nano와 같은 텍스트 편집기로 fin.txt 파일을 열어 저장된 결과를 볼 수 있습니다.

nano fin.txt

파일에는 스캔 중에 화면에 표시된 것과 동일한 정보가 구조화된 형식으로 포함됩니다.

fin.txt의 예시 내용:

## Nmap 7.80 scan initiated Tue Oct 27 10:15:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000027s latency).
Not shown: 999 closed ports
PORT    STATE    SERVICE
22/tcp  filtered ssh

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

이제 이 파일을 추가 분석 또는 보고에 사용할 수 있습니다.

Xfce 터미널에서 FIN 스캔과 TCP 스캔 비교

이 단계에서는 FIN 스캔의 결과를 TCP connect 스캔과 비교합니다. 이 비교는 이러한 스캔이 열린 포트를 식별하는 방식의 차이점과 방화벽이 이를 다르게 처리하는 방식을 강조합니다.

TCP connect 스캔 (-sT) 은 대상과 완전한 TCP 연결을 설정하므로 더 신뢰할 수 있지만 감지하기도 더 쉽습니다. 반면에 FIN 스캔 (-sF) 은 FIN 패킷을 전송하며, 이는 방화벽에 의해 기록될 가능성이 적지만 항상 정확한 결과를 제공하지 않을 수 있습니다.

Xfce 터미널을 엽니다.

먼저, localhost (127.0.0.1) 에서 TCP connect 스캔을 수행합니다.

sudo nmap -sT 127.0.0.1

이 명령은 로컬 머신의 각 포트에 완전한 TCP 연결을 설정하려고 시도합니다.

다음으로, 동일한 대상에서 FIN 스캔을 수행합니다.

sudo nmap -sF 127.0.0.1

이제 두 스캔의 결과를 비교합니다. TCP connect 스캔이 FIN 스캔보다 더 많은 열린 포트를 식별하는 것을 알 수 있습니다. 이는 일부 방화벽 또는 시스템이 FIN 패킷을 차단하거나 무시하여 부정확한 결과를 초래할 수 있기 때문입니다.

TCP connect 스캔의 예시 출력:

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.000026s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
3306/tcp open  mysql

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

FIN 스캔의 예시 출력:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:21 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000026s latency).
Not shown: 999 closed ports
PORT    STATE    SERVICE
22/tcp  filtered ssh

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

이 예에서 TCP connect 스캔은 포트 22, 631, 3306 을 열린 상태로 표시하는 반면, FIN 스캔은 포트 22 만 필터링된 상태로 표시합니다. 이는 서로 다른 스캔 유형이 어떻게 다른 결과를 생성할 수 있는지, 그리고 네트워크 정찰을 수행할 때 다양한 기술을 사용하는 것이 왜 중요한지를 보여줍니다. filtered 상태는 방화벽, 필터 또는 기타 네트워크 장애물이 포트를 차단하여 Nmap 이 열려 있는지 닫혀 있는지 여부를 결정하지 못하게 함을 의미합니다.

Xfce 터미널에서 열린 포트 분석

이 단계에서는 이전 스캔에서 식별된 열린 포트를 분석하여 대상 시스템에서 실행 중인 서비스를 이해합니다. 여기에는 Nmap 출력을 해석하고 각 열린 포트의 목적을 조사하는 작업이 포함됩니다.

Xfce 터미널을 엽니다.

이전 단계에서 TCP connect 스캔 (sudo nmap -sT 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.000026s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
3306/tcp open  mysql

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

이 출력은 포트 22, 631, 3306 이 로컬 머신에서 열려 있음을 나타냅니다. 이제 각 포트를 분석해 보겠습니다.

  • 포트 22 (ssh): 이 포트는 일반적으로 원격 로그인 및 명령 실행을 위한 보안 프로토콜인 SSH (Secure Shell) 에 사용됩니다. 이 포트가 열려 있으면 SSH 서버가 머신에서 실행 중이며 원격으로 연결할 수 있음을 의미합니다.

  • 포트 631 (ipp): 이 포트는 네트워크를 통한 인쇄를 위한 프로토콜인 IPP (Internet Printing Protocol) 에 사용됩니다. 이 포트가 열려 있으면 인쇄 서비스가 머신에서 실행 중이며 원격으로 문서를 인쇄할 수 있음을 의미합니다.

  • 포트 3306 (mysql): 이 포트는 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템인 MySQL 의 기본 포트입니다. 이 포트가 열려 있으면 MySQL 서버가 머신에서 실행 중이며 데이터베이스에 액세스하고 관리할 수 있음을 의미합니다.

이러한 서비스를 더 자세히 조사하려면 netstat 또는 ss와 같은 다른 도구를 사용하여 이러한 포트에서 어떤 프로세스가 수신 대기하는지 확인할 수 있습니다. 예를 들어, 포트 22 에서 수신 대기하는 프로세스를 확인하려면 다음 명령을 사용할 수 있습니다.

sudo netstat -tulnp | grep :22

이 명령은 포트 22 에서 수신 대기하는 프로세스의 프로세스 ID (PID) 와 이름을 표시합니다.

예시 출력:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd

이 출력은 sshd 프로세스 (SSH 데몬) 가 포트 22 에서 수신 대기하고 있음을 나타냅니다.

열린 포트와 해당 포트에서 실행 중인 서비스를 분석하여 대상 시스템의 보안 상태에 대한 귀중한 통찰력을 얻고 잠재적인 취약점을 식별할 수 있습니다.

요약

이 Lab 에서는 Nmap 을 사용하여 TCP FIN 스캔을 수행하는 방법을 배웠습니다. nmap -sF 명령과 대상 IP 를 사용하여 기본적인 FIN 스캔을 수행하는 것으로 시작했습니다. 또한 특정 포트를 스캔하고, 스캔에 상세 정보를 추가하고, 결과를 파일에 저장하는 방법을 배웠습니다. 또한 FIN 스캔을 TCP 스캔과 비교하고 Xfce 터미널에서 열린 포트를 분석했습니다. FIN 스캔은 FIN 패킷을 대상 호스트로 전송하며, 이는 특정 방화벽 또는 침입 탐지 시스템을 우회하는 데 도움이 될 수 있습니다.