Nmap 에서 TCP ACK 스캔 수행

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 을 사용하여 TCP ACK 스캔을 수행하는 방법을 배우게 됩니다. 이 랩은 기본적인 ACK 스캔 실행, 특정 포트 범위 스캔, 스캔에 상세 정보 추가, 스캔 결과 저장, 필터링된 포트 분석, Xfce 터미널에서 ACK 스캔과 SYN 스캔 비교 등 ACK 스캔의 다양한 측면을 다룹니다. TCP ACK 패킷을 대상 호스트로 전송하고 응답을 분석하여 포트가 필터링되었는지 또는 필터링되지 않았는지 확인하는 방식으로 ACK 스캔이 어떻게 작동하는지 이해하게 됩니다.

nmap -sA 192.168.1.1 로 ACK 스캔 실행

이 단계에서는 Nmap 을 사용하여 ACK 스캔을 수행하는 방법을 배우게 됩니다. ACK 스캔은 TCP ACK 패킷을 대상 호스트로 전송하는 TCP 스캔 유형입니다. 다른 스캔 유형과 달리 ACK 스캔은 완전한 TCP 연결을 설정하지 않습니다. 대신, 포트가 필터링되었는지 또는 필터링되지 않았는지 확인하기 위해 응답 (또는 응답 부재) 을 분석합니다.

ACK 스캔 기본 이해

  • ACK 패킷: TCP ACK (Acknowledgment, 승인) 패킷은 일반적으로 설정된 TCP 연결에서 데이터 수신을 승인하는 데 사용됩니다.
  • 방화벽 동작: 방화벽은 종종 원치 않는 수신 TCP 연결을 차단하는 규칙을 가지고 있습니다. ACK 스캔은 이 동작을 악용하여 방화벽 규칙 집합을 매핑합니다.
  • 필터링됨 vs. 필터링되지 않음:
    • 필터링되지 않음: 대상 포트가 필터링되지 않은 경우 Nmap 은 ACK 프로브에 대한 응답으로 RST (Reset, 재설정) 패킷을 수신합니다. 이는 방화벽이 연결을 차단하지 않음을 나타냅니다.
    • 필터링됨: 대상 포트가 필터링된 경우 Nmap 은 응답을 받지 않거나 ICMP 오류 메시지를 받습니다. 이는 방화벽이 연결을 차단하고 있음을 시사합니다.

ACK 스캔 수행

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. ACK 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -sA 192.168.1.1
    • nmap: Nmap 명령줄 스캐너.
    • -sA: ACK 스캔 유형을 지정합니다.
    • 192.168.1.1: 대상 IP 주소입니다. 스캔하려는 실제 IP 주소로 바꿉니다. 가상 환경에서 실행하는 경우 게이트웨이 또는 네트워크의 다른 머신을 스캔할 수 있습니다. 다른 머신이 없는 경우 localhost IP 주소 127.0.0.1을 스캔할 수 있습니다.
    nmap -sA 127.0.0.1
  3. 결과 분석: Nmap 은 스캔 결과를 표시합니다. "Unfiltered" 또는 "Filtered"로 표시된 포트를 찾습니다.

    예시 출력 (대상에 따라 다를 수 있음):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
    Nmap scan report for 127.0.0.1
    Host is up (0.00020s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 2.50 seconds

    이 예에서 포트 22, 80, 111 및 631 은 필터링되지 않았습니다. 즉, 이러한 포트로 전송된 ACK 패킷은 RST 응답을 받을 가능성이 높습니다.

중요 고려 사항:

  • ACK 스캔은 항상 포트의 정확한 상태를 결정하는 데 신뢰할 수 있는 것은 아닙니다. 방화벽 및 네트워크 장치는 때때로 오해의 소지가 있는 결과를 생성할 수 있습니다.
  • ACK 스캔은 주로 방화벽 규칙을 매핑하고 네트워크에 대한 잠재적 진입점을 식별하는 데 사용됩니다.

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

이 단계에서는 특정 포트 범위를 스캔하여 ACK 스캔에 대한 지식을 확장합니다. 이는 가장 일반적으로 사용되는 포트 또는 관심 있는 포트에 대한 조사를 좁히는 데 유용합니다.

포트 범위 이해

포트 범위는 모든 65535 개 포트를 스캔하는 대신 스캔할 포트 집합을 지정합니다. 이는 스캔 시간을 크게 줄이고 분석에 집중할 수 있습니다. 일반적인 포트 범위는 다음과 같습니다.

  • 1-1024: 잘 알려진 포트 (well-known ports), 종종 시스템 서비스에서 사용됩니다.
  • 1-100: 빠른 확인을 위한 더 작은 범위.
  • 80,443,8080: 관심 있는 특정 포트 (HTTP, HTTPS, 대체 HTTP).

Nmap 으로 포트 범위 스캔

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. 포트 범위를 사용하여 ACK 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -sA -p 1-100 127.0.0.1
    • nmap: Nmap 명령줄 스캐너.
    • -sA: ACK 스캔 유형을 지정합니다.
    • -p 1-100: 스캔할 포트 범위 (포트 1 에서 100 까지) 를 지정합니다.
    • 127.0.0.1: 대상 IP 주소 (이 경우 localhost) 입니다.
  3. 결과 분석: Nmap 은 지정된 범위 (1-100) 내의 포트에만 집중하여 스캔 결과를 표시합니다.

    예시 출력 (대상에 따라 다를 수 있음):

    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.00018s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT    STATE      SERVICE
    21/tcp  unfiltered ftp
    22/tcp  unfiltered ssh
    25/tcp  unfiltered smtp
    53/tcp  unfiltered domain
    80/tcp  unfiltered http
    
    Nmap done: 1 IP address (1 host up) scanned in 0.85 seconds

    이 출력은 localhost 의 포트 21, 22, 25, 53 및 80 의 상태를 보여줍니다. 모두 필터링되지 않았습니다.

포트 범위 스캔의 장점:

  • 효율성: 특정 포트에 집중하여 스캔 시간을 줄입니다.
  • 타겟 분석: 대상에서 실행 중인 특정 서비스 또는 애플리케이션을 조사할 수 있습니다.
  • 노이즈 감소: 관련 없는 정보를 필터링하여 잠재적 취약점을 쉽게 식별할 수 있습니다.

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

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

상세 정보 레벨 이해

Nmap 은 -v 옵션으로 제어되는 다양한 상세 정보 레벨을 제공합니다. -v를 한 번 사용하면 상세 정보 레벨이 증가하고, 여러 번 사용하면 (예: -vv) 더 증가합니다. 상세 정보 레벨이 높을수록 더 자세한 출력을 제공합니다.

ACK 스캔에 상세 정보 추가

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. 상세 정보와 함께 ACK 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -v -sA 192.168.1.1
    • nmap: Nmap 명령줄 스캐너.
    • -v: 상세 출력 (verbose output) 을 활성화합니다.
    • -sA: ACK 스캔 유형을 지정합니다.
    • 192.168.1.1: 대상 IP 주소입니다. 스캔하려는 실제 IP 주소로 바꿉니다. 가상 환경에서 실행하는 경우 게이트웨이 또는 네트워크의 다른 머신을 스캔할 수 있습니다. 다른 머신이 없는 경우 localhost IP 주소 127.0.0.1을 스캔할 수 있습니다.
    nmap -v -sA 127.0.0.1
  3. 결과 분석: Nmap 은 스캔 결과를 더 자세한 정보와 함께 표시합니다. 전송되는 프로브 및 수신되는 응답과 같은 스캔 프로세스에 대한 더 많은 출력을 볼 수 있습니다.

    예시 출력 (대상에 따라 다를 수 있음):

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
    Initiating Ping Scan at 10:10
    Scanning 127.0.0.1 [4 ports]
    Completed Ping Scan at 10:10, 0.00s elapsed (1 total hosts)
    Initiating ACK 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
    Discovered open port 111/tcp on 127.0.0.1
    Discovered open port 631/tcp on 127.0.0.1
    Completed ACK Scan at 10:10, 0.15s elapsed (1000 total ports)
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    Nmap done: 1 IP address (1 host up) scanned in 0.16 seconds

    상세 출력은 핑 스캔 및 ACK 스캔을 포함한 스캔의 다양한 단계와 발견된 포트를 보여줍니다.

상세 정보의 장점:

  • 문제 해결: 네트워크 연결 문제 또는 방화벽 간섭과 같은 스캔 프로세스 중의 문제를 식별하는 데 도움이 됩니다.
  • 더 깊은 이해: Nmap 이 작동하는 방식과 포트의 상태를 결정하는 방법에 대한 더 많은 통찰력을 제공합니다.
  • 상세 보고: 보고 및 분석을 위한 더 포괄적인 정보를 제공합니다.

nmap -sA -oN ack.txt 127.0.0.1 로 ACK 스캔 결과 저장

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

Nmap 출력 옵션 이해

Nmap 은 다양한 형식으로 스캔 결과를 저장하기 위한 여러 옵션을 제공합니다. -oN 옵션은 결과를 "일반 (normal)" 사람이 읽을 수 있는 형식으로 저장합니다. 다른 옵션으로는 XML 형식의 -oX 및 스크립트 키디 형식 (덜 읽기 쉬움) 의 -oS가 있습니다.

ACK 스캔 결과를 파일에 저장

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. 파일로 출력하는 ACK 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -sA -oN ack.txt 127.0.0.1
    • nmap: Nmap 명령줄 스캐너.
    • -sA: ACK 스캔 유형을 지정합니다.
    • -oN ack.txt: 출력을 ack.txt라는 이름의 파일에 일반 형식으로 저장하도록 지정합니다. 파일은 현재 디렉토리 (~/project) 에 저장됩니다.
    • 127.0.0.1: 대상 IP 주소 (이 경우 localhost) 입니다.
  3. 파일 생성 확인: 스캔이 완료된 후 ack.txt 파일이 ~/project 디렉토리에 생성되었는지 확인합니다. ls 명령을 사용하여 디렉토리의 파일을 나열할 수 있습니다.

    ls ~/project

    파일 목록에 ack.txt가 표시되어야 합니다.

  4. 파일 내용 보기: cat 명령 또는 nano와 같은 텍스트 편집기를 사용하여 ack.txt 파일의 내용을 볼 수 있습니다.

    cat ~/project/ack.txt

    또는

    nano ~/project/ack.txt

    파일에는 사람이 읽을 수 있는 형식의 Nmap 스캔 결과가 포함됩니다.

    ack.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.00016s latency).
    Other addresses for localhost (alias(es)): localhost
    
    PORT      STATE      SERVICE
    22/tcp    unfiltered ssh
    80/tcp    unfiltered http
    111/tcp   unfiltered rpcbind
    631/tcp   unfiltered ipp
    ...
    
    ## Nmap done at Fri Oct 27 10:15:01 2023 -- 1 IP address (1 host up) scanned in 0.85 seconds

스캔 결과 저장의 장점:

  • 문서화: 향후 참조를 위해 스캔 결과의 기록을 제공합니다.
  • 분석: 텍스트 처리 도구 또는 스크립트를 사용하여 결과를 더 자세히 분석할 수 있습니다.
  • 보고: 스캔 결과를 기반으로 보고서를 쉽게 만들 수 있습니다.
  • 비교: 네트워크의 변경 사항을 추적하기 위해 시간이 지남에 따라 다른 스캔의 결과를 비교할 수 있습니다.

Xfce 터미널에서 필터링된 포트 분석

이 단계에서는 Nmap ACK 스캔 중에 식별된 필터링된 포트를 분석하는 방법을 배우게 됩니다. 포트가 필터링되는 이유를 이해하는 것은 네트워크 보안을 평가하고 잠재적인 취약점을 식별하는 데 매우 중요합니다.

필터링된 포트 이해

Nmap 에서 "필터링된 (filtered)" 포트는 패킷 필터링으로 인해 Nmap 의 프로브가 포트에 도달하지 못하여 포트가 열려 있는지 닫혀 있는지 Nmap 이 확인할 수 없음을 의미합니다. 이는 Nmap 이 스캔에 사용하는 특정 유형의 트래픽을 차단하는 방화벽 규칙 때문인 경우가 많습니다. ACK 스캔의 경우, 필터링된 포트는 일반적으로 ACK 패킷을 차단하는 방화벽 또는 기타 네트워크 장치의 존재를 나타냅니다.

ACK 스캔에서 필터링된 포트 분석

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. ack.txt 파일 검토: 이전 단계에서 ACK 스캔 결과를 ack.txt 파일에 저장했습니다. cat 명령 또는 nano를 사용하여 파일의 내용을 봅니다.

    cat ~/project/ack.txt

    또는

    nano ~/project/ack.txt
  3. 필터링된 포트 식별: 출력에서 포트가 "필터링됨 (filtered)" 상태임을 나타내는 줄을 찾습니다. 예를 들어:

    PORT      STATE      SERVICE
    21/tcp    filtered  ftp
    23/tcp    filtered  telnet

    이는 포트 21 (FTP) 및 23 (Telnet) 이 필터링되었음을 나타냅니다.

  4. 필터링 원인 조사: 포트가 필터링되었다는 사실은 방화벽 또는 기타 네트워크 장치가 해당 포트로 전송된 ACK 패킷을 차단하고 있음을 시사합니다. 더 자세히 조사하려면 다음을 고려할 수 있습니다.

    • 방화벽 규칙: 특정 포트로의 ACK 패킷을 차단하는 규칙이 있는지 대상 머신 또는 네트워크의 방화벽 구성을 확인합니다. 127.0.0.1을 스캔하고 있으므로 로컬 방화벽 규칙을 확인할 수 있습니다. 그러나 LabEx 환경에서는 방화벽 규칙을 수정할 수 있는 권한이 없을 것입니다.
    • 네트워크 토폴로지: 스캔 머신과 대상 간의 네트워크 토폴로지를 고려합니다. 트래픽을 필터링할 수 있는 중간 장치 (예: 라우터, 방화벽) 가 있습니까?
    • 기타 스캔 유형: 다른 Nmap 스캔 유형 (예: SYN 스캔, TCP 연결 스캔) 을 사용하여 포트 상태에 대한 더 많은 정보를 제공하는지 확인합니다. 다음 단계에서 이 작업을 수행합니다.
  5. 예시 분석:

    21 (FTP), 23 (Telnet) 및 80 (HTTP) 과 같은 일반적인 포트가 필터링된 경우, 방화벽이 이러한 포트로의 원치 않는 수신 연결을 차단하도록 구성되었을 가능성이 높습니다. 이는 대상 머신에서 실행되는 서비스에 대한 무단 액세스를 방지하기 위한 일반적인 보안 관행입니다.

중요 고려 사항:

  • ACK 스캔은 종종 방화벽 규칙 집합을 매핑하는 데 사용됩니다. 서로 다른 포트로 ACK 패킷을 전송하여 어떤 포트가 필터링되고 어떤 포트가 필터링되지 않는지 확인할 수 있습니다.
  • ACK 스캔의 결과는 네트워크 구성 및 방화벽의 존재에 의해 영향을 받을 수 있습니다.
  • 필터링된 포트가 반드시 서비스가 실행되고 있지 않다는 것을 의미하지는 않습니다. 단순히 필터링으로 인해 Nmap 이 해당 상태를 확인할 수 없음을 의미합니다.

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

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

ACK 및 SYN 스캔 이해

  • ACK 스캔 (-sA): 대상에 TCP ACK 패킷을 보냅니다. 주로 방화벽 규칙 집합을 매핑하는 데 사용됩니다. 포트가 필터링되지 않은 경우, 일반적으로 방화벽이 ACK 패킷을 통과시키도록 허용한다는 의미입니다. 포트가 필터링된 경우, 방화벽이 ACK 패킷을 차단하고 있을 가능성이 높습니다. ACK 스캔은 포트가 열려 있는지 닫혀 있는지 확인하지 않습니다.
  • SYN 스캔 (-sS): 대상에 TCP SYN 패킷을 보냅니다. TCP 핸드셰이크를 완료하지 않기 때문에 전체 TCP 연결 스캔보다 더 은밀한 스캔입니다. SYN/ACK 패킷을 수신하면 포트가 열려 있는 것으로 간주됩니다. RST 패킷을 수신하면 포트가 닫힌 것으로 간주됩니다.

SYN 스캔 수행

  1. Xfce 터미널 열기: 아직 열려 있지 않은 경우 데스크톱 환경에서 Xfce 터미널을 실행합니다.

  2. SYN 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -sS 127.0.0.1
    • nmap: Nmap 명령줄 스캐너.
    • -sS: SYN 스캔 유형을 지정합니다.
    • 127.0.0.1: 대상 IP 주소 (이 경우 localhost) 입니다.
  3. 파일로 출력하는 SYN 스캔 명령 실행: 터미널에서 다음 명령을 입력하고 Enter 키를 누릅니다.

    nmap -sS -oN syn.txt 127.0.0.1
    • nmap: Nmap 명령줄 스캐너.
    • -sS: SYN 스캔 유형을 지정합니다.
    • -oN syn.txt: 출력을 syn.txt라는 이름의 파일에 일반 형식으로 저장하도록 지정합니다. 파일은 현재 디렉토리 (~/project) 에 저장됩니다.
    • 127.0.0.1: 대상 IP 주소 (이 경우 localhost) 입니다.

결과 비교

  1. SYN 스캔 결과 보기: SYN 스캔이 완료된 후 터미널에서 결과를 봅니다. 열린 포트, 닫힌 포트 및 필터링된 포트 목록이 표시됩니다.

  2. 파일 내용 보기: cat 명령 또는 nano와 같은 텍스트 편집기를 사용하여 syn.txt 파일의 내용을 볼 수 있습니다.

    cat ~/project/syn.txt

    또는

    nano ~/project/syn.txt

    파일에는 사람이 읽을 수 있는 형식의 Nmap 스캔 결과가 포함됩니다.

  3. ACK 스캔 결과와 비교: SYN 스캔 결과를 이전 단계에서 얻은 ACK 스캔 결과 (터미널 출력 또는 ack.txt 파일에서) 와 비교합니다.

  4. 차이점 분석:

    • 열린 포트: SYN 스캔은 대상에서 실제로 열려 있는 포트를 보여줍니다. ACK 스캔은 직접적으로 열린 포트를 표시하지 않습니다.
    • 필터링된 포트: ACK 스캔에서 포트가 필터링되었지만 SYN 스캔에서 열려 있는 경우, 방화벽이 해당 포트로의 ACK 패킷을 차단하지만 SYN 패킷은 허용하고 있음을 시사합니다. 이는 일반적인 시나리오입니다.
    • 닫힌 포트: SYN 스캔은 닫힌 포트를 보여줍니다. ACK 스캔은 직접적으로 닫힌 포트를 표시하지 않습니다.

예시 비교:

ACK 스캔에서 포트 80 (HTTP) 이 필터링된 것으로 표시되고 SYN 스캔에서 포트 80 이 열려 있는 것으로 표시된다고 가정해 보겠습니다. 이는 방화벽이 포트 80 으로의 ACK 패킷을 차단하지만 SYN 패킷은 허용하고 있음을 나타냅니다. 이는 웹 서버의 일반적인 구성으로, 수신 SYN 패킷은 연결을 설정하도록 허용하지만 원치 않는 ACK 패킷은 차단합니다.

핵심 내용:

  • ACK 및 SYN 스캔은 대상에 대한 서로 다른 유형의 정보를 제공합니다.
  • ACK 스캔은 방화벽 규칙 집합을 매핑하는 데 유용합니다.
  • SYN 스캔은 열린 포트를 식별하는 데 유용합니다.
  • 이러한 스캔의 결과를 비교하여 대상의 보안 상태를 더 잘 이해할 수 있습니다.

요약

이 Lab 에서는 Nmap 을 사용하여 TCP ACK 스캔을 수행하는 방법을 배우게 됩니다. nmap -sA <target_ip> 명령을 사용하여 기본적인 ACK 스캔을 수행하는 것으로 시작하여 ACK 패킷이 어떻게 작동하는지, 응답을 기반으로 포트가 필터링되었는지 또는 필터링되지 않았는지 확인하는 방법을 이해하게 됩니다. 또한 특정 포트 범위를 스캔하고, 스캔에 상세성을 추가하고, 결과를 파일에 저장하는 방법도 배우게 됩니다. 또한 Xfce 터미널에서 필터링된 포트를 분석하고 ACK 스캔을 SYN 스캔과 비교합니다.