Nmap 스캔 및 출력 분석 학습

NmapBeginner
지금 연습하기

소개

이 랩에서는 보안 전문가들이 컴퓨터 네트워크에서 호스트와 서비스를 발견하기 위해 널리 사용하는 강력한 네트워크 스캔 도구인 Nmap 사용법을 배우게 됩니다. 스캔 결과를 해석하고 추가 분석을 수행하는 데 필수적인 Nmap 에서 제공하는 다양한 출력 형식을 살펴볼 것입니다.

Nmap 은 Network Mapper 의 약자로, 네트워크 검색 및 보안 감사를 위한 무료 오픈 소스 유틸리티입니다. 원시 IP 패킷을 사용하여 사용 가능한 서비스 및 운영 체제와 같은 네트워크 호스트에 대한 정보를 수집합니다. 이 랩에서는 테스트 서비스를 설정하고 다양한 Nmap 출력 옵션으로 스캔하는 과정을 안내합니다. 이는 효과적인 네트워크 분석 및 문서화에 매우 중요합니다.

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

Nmap 스캔을 위한 테스트 환경 설정

이 단계에서는 Nmap 스캔을 연습할 수 있는 간단한 환경을 만들 것입니다. Nmap 은 네트워크 탐색 및 보안 감사를 위해 사용되는 강력한 도구입니다. 로컬 머신에 기본 웹 서버를 설정한 다음 Nmap 으로 스캔하면 안전하고 제어된 환경에서 네트워크 스캔에 대해 배울 수 있습니다. 이렇게 하면 실제 네트워크에 영향을 주지 않고 실험할 수 있습니다.

로컬 웹 서버 설정

먼저 Nmap 으로 스캔할 수 있는 간단한 웹 서버를 설정해야 합니다. Python 은 기본 HTTP 서버를 쉽게 만들 수 있는 방법을 제공합니다. HTTP 서버는 브라우저와 같은 클라이언트에 웹 페이지를 제공할 수 있는 소프트웨어입니다.

  1. 터미널을 열고 프로젝트 디렉토리로 이동합니다.

    cd /home/labex/project

    cd 명령은 "change directory"의 약자입니다. 이를 통해 파일 시스템에서 이동할 수 있습니다. 이 경우 웹 서버를 설정할 /home/labex/project 디렉토리로 이동합니다.

  2. 제공할 간단한 HTML 파일을 만듭니다.

    echo "Welcome to Nmap Testing Environment" > index.html

    echo 명령은 터미널에 텍스트를 출력합니다. > 기호는 해당 출력을 파일로 리디렉션합니다. 따라서 "Welcome to Nmap Testing Environment" 텍스트가 있는 index.html이라는 파일을 만들고 있습니다. 이것이 서버가 제공할 웹 페이지입니다.

  3. 포트 8080 에서 Python HTTP 서버를 시작합니다.

    python3 -m http.server 8080 &

    python3 -m http.server 명령은 Python 을 사용하여 간단한 HTTP 서버를 시작합니다. 8080은 서버가 수신할 포트 번호를 지정합니다. 포트는 네트워크 트래픽이 컴퓨터에 들어가거나 나가는 문과 같습니다. 명령 끝에 있는 &는 서버를 백그라운드에서 실행하여 다른 명령에 터미널을 계속 사용할 수 있도록 합니다.

  4. 웹 서버에 액세스하여 웹 서버가 실행 중인지 확인합니다.

    curl http://localhost:8080

    curl 명령은 서버에서 또는 서버로 데이터를 전송하는 데 사용됩니다. 여기서는 방금 설정한 웹 서버 http://localhost:8080에 액세스하려고 합니다. localhost는 현재 컴퓨터를 나타냅니다.

    다음 출력이 표시되어야 합니다.

    Welcome to Nmap Testing Environment

    이 출력이 표시되면 웹 서버가 올바르게 실행되고 있는 것입니다.

기본 Nmap 스캔

이제 웹 서버가 실행 중이므로 Nmap 을 사용하여 스캔할 수 있습니다. 서버를 스캔하면 어떤 포트가 열려 있는지, 어떤 서비스가 실행 중인지 확인할 수 있습니다.

  1. 로컬 웹 서버에서 기본 Nmap 스캔을 실행합니다.

    nmap -p 8080 localhost

    nmap 명령의 -p 옵션은 스캔할 포트를 지정합니다. 이 경우 Nmap 에 localhost(IP 주소 127.0.0.1) 의 포트 8080 만 스캔하도록 지시하고 있습니다.

    다음과 유사한 출력이 표시되어야 합니다.

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-08 12:34 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    
    PORT     STATE SERVICE
    8080/tcp open  http-proxy
    
    Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

    이 출력은 Nmap 의 기본 형식으로, 사람이 읽을 수 있으며 스캔에 대한 기본 정보를 표시합니다.

기본 Nmap 출력 이해

기본 출력이 무엇을 나타내는지 이해해 보겠습니다.

  • Starting Nmap: 이 줄은 사용 중인 Nmap 의 버전과 스캔이 시작된 시간을 보여줍니다. 스캔이 언제 시작되었는지 추적하는 데 도움이 됩니다.
  • Nmap scan report: 이는 스캔 대상임을 나타냅니다. 이 경우 대상은 localhost입니다.
  • Host is up: 이는 대상이 온라인 상태임을 확인합니다. 대기 시간은 Nmap 이 대상으로부터 응답을 받는 데 걸린 시간을 보여줍니다.
  • PORT: 이는 스캔된 포트 번호를 보여줍니다. 스캔에서는 포트 8080 을 스캔했습니다.
  • STATE: 이는 포트가 열려 있는지, 닫혀 있는지 또는 필터링되었는지를 나타냅니다. 열린 포트는 해당 포트에서 서비스를 수신하고 연결을 허용한다는 의미입니다.
  • SERVICE: Nmap 은 해당 포트에서 어떤 서비스가 실행 중인지 추측하려고 합니다. 여기서는 http - proxy를 추측했습니다.
  • Nmap done: 이는 스캔 요약입니다. 스캔된 IP 주소 수와 스캔에 걸린 시간을 알려줍니다.

이제 테스트 환경을 성공적으로 설정하고 기본 Nmap 스캔을 수행했습니다. 다음 단계에서는 Nmap 에서 제공하는 다양한 출력 형식을 살펴볼 것입니다.

다양한 Nmap 출력 형식 탐색

이 단계에서는 Nmap 이 제공하는 다양한 출력 형식에 대해 배우게 됩니다. 출력 형식은 사이버 보안에서 매우 중요합니다. 이는 필요에 따라 스캔 결과를 다양한 방식으로 표시할 수 있기 때문입니다. 예를 들어, 일부 형식은 사람이 읽기 쉽고, 다른 형식은 기계가 구문 분석하도록 설계되어 다른 도구와 통합할 때 유용합니다.

Nmap 출력 형식 개요

Nmap 은 여러 출력 형식을 지원하며, 각 형식은 고유한 특성과 사용 사례를 가지고 있습니다.

  1. Normal Output (기본값): 이는 사람이 읽을 수 있는 형식입니다. 스캔 결과를 한눈에 이해하기 쉽도록 표시하므로 빠른 수동 분석에 적합합니다.
  2. XML Output (-oX): XML 은 Extensible Markup Language 의 약자입니다. 이는 구조화된 형식으로, 데이터가 계층적 방식으로 구성됨을 의미합니다. 이를 통해 프로그램과 스크립트가 데이터를 쉽게 구문 분석할 수 있으며, Nmap 을 다른 보안 도구와 통합할 때 일반적으로 사용됩니다.
  3. Grepable Output (-oG): 이는 라인 기반 형식입니다. grep, awk, cut 과 같은 Unix 도구로 쉽게 처리하도록 설계되었습니다. 이 형식은 스캔 결과에서 특정 정보를 빠르게 추출하려는 경우에 유용합니다.
  4. Script Kiddie Output (-oS): 이 형식은 일반 출력과 유사하지만 ASCII 아트를 포함합니다. 그러나 실제 시나리오에서는 거의 사용되지 않습니다.
  5. All Formats (-oA): 이 옵션을 사용하면 스캔 결과를 일반, XML 및 grepable 형식으로 동시에 저장할 수 있습니다. 모든 유형의 출력을 한 번에 사용할 수 있는 편리한 방법입니다.

로컬 웹 서버를 다시 스캔하여 이러한 형식을 살펴보겠습니다.

XML 출력 형식

XML(Extensible Markup Language) 은 데이터 저장 및 교환에 널리 사용되는 구조화된 형식입니다. 계층적 구조로 인해 프로그램이 데이터를 쉽게 구문 분석할 수 있으므로 다른 보안 도구와의 통합에 일반적으로 사용됩니다.

  1. Nmap 스캔을 실행하고 출력을 XML 형식으로 저장합니다.

    nmap -p 8080 localhost -oX /home/labex/project/scan_results.xml

    이 명령에서 -p 8080은 포트 8080 을 스캔하고 있음을 지정하고, localhost는 스캔 대상 (로컬 머신) 이며, -oX는 Nmap 에 출력을 XML 형식으로 지정된 파일 경로에 저장하도록 지시합니다.

  2. XML 출력을 봅니다.

    cat /home/labex/project/scan_results.xml

    cat 명령은 파일의 내용을 표시하는 데 사용됩니다. 이 명령을 실행하면 다음과 유사한 XML 형식의 출력이 표시됩니다 (약어).

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE nmaprun>
    <nmaprun scanner="nmap" args="nmap -p 8080 localhost -oX /home/labex/project/scan_results.xml" ...>
      <scaninfo type="connect" protocol="tcp" .../>
      <verbose level="0"/>
      <debugging level="0"/>
      <host>
        <status state="up" reason="conn - refused" reason_ttl="0"/>
        <address addr="127.0.0.1" addrtype="ipv4"/>
        <hostnames>
          <hostname name="localhost" type="user"/>
          <hostname name="localhost" type="PTR"/>
        </hostnames>
        <ports>
          <port protocol="tcp" portid="8080">
            <state state="open" reason="syn - ack" reason_ttl="0"/>
            <service name="http - proxy" method="table" conf="3"/>
          </port>
        </ports>
        <times srtt="97" rttvar="5000" to="100000"/>
      </host>
      <runstats>...</runstats>
    </nmaprun>
  3. XML 형식에는 계층적 구조로 구성된 자세한 정보가 포함되어 있습니다. 특정 포트 정보를 추출해 보겠습니다.

    grep -A5 "<port " /home/labex/project/scan_results.xml > /home/labex/project/port_details.txt

    grep 명령은 파일에서 특정 패턴을 검색하는 데 사용됩니다. -A5는 패턴과 일치하는 줄 이후 5 줄을 표시함을 의미합니다. XML 파일에서 <port를 포함하는 줄을 검색하고 결과를 port_details.txt라는 새 파일에 저장합니다.

  4. 추출된 포트 세부 정보를 봅니다.

    cat /home/labex/project/port_details.txt

    이 명령을 실행하면 XML 의 포트 정보 섹션이 표시됩니다.

Grepable 출력 형식

Grepable 출력은 grep, awk, cut 과 같은 도구로 쉽게 처리하도록 특별히 설계되었습니다. 이러한 Unix 도구는 텍스트 처리에 매우 강력하며 스캔 결과에서 필요한 정보를 빠르게 추출하는 데 도움이 될 수 있습니다.

  1. Nmap 스캔을 실행하고 출력을 grepable 형식으로 저장합니다.

    nmap -p 8080 localhost -oG /home/labex/project/scan_results.grep

    여기서 -oG는 Nmap 에 출력을 grepable 형식으로 지정된 파일에 저장하도록 지시합니다.

  2. grepable 출력을 봅니다.

    cat /home/labex/project/scan_results.grep

    출력은 다음과 유사하게 표시됩니다.

    ## Nmap 7.80 scan initiated Wed Nov 8 12:40:00 2023 as: nmap -p 8080 localhost -oG /home/labex/project/scan_results.grep
    Host: 127.0.0.1 (localhost)   Status: Up
    Host: 127.0.0.1 (localhost)   Ports: 8080/open/tcp//http - proxy///
    ## Nmap done at Wed Nov 8 12:40:00 2023 -- 1 IP address (1 host up) scanned in 0.05 seconds
  3. grepable 형식은 모든 호스트 정보를 단일 줄에 배치하여 텍스트 처리 도구와 함께 사용하기 쉽게 만듭니다. 예를 들어, 포트 정보를 포함하는 줄만 추출할 수 있습니다.

    grep "Ports:" /home/labex/project/scan_results.grep > /home/labex/project/ports_info.txt

    이 명령은 grepable 출력 파일에서 "Ports:"라는 단어를 포함하는 줄을 검색하고 일치하는 줄을 ports_info.txt라는 새 파일에 저장합니다.

  4. 추출된 포트 정보를 봅니다.

    cat /home/labex/project/ports_info.txt

모든 형식으로 동시 저장

Nmap 은 -oA 옵션을 사용하여 출력을 여러 형식으로 한 번에 저장하는 편리한 옵션을 제공합니다. 다양한 목적으로 다양한 유형의 출력이 필요한 경우 시간을 절약할 수 있습니다.

  1. Nmap 스캔을 실행하고 출력을 모든 형식으로 저장합니다.

    nmap -p 8080 localhost -oA /home/labex/project/all_formats

    이 명령은 로컬 머신에서 포트 8080 을 스캔하고 결과를 일반, XML 및 grepable 형식으로 저장합니다.

  2. 생성된 파일을 확인합니다.

    ls -la /home/labex/project/all_formats.*

    ls -la 명령은 자세한 정보와 함께 디렉토리의 모든 파일을 나열합니다. 이 명령을 실행하면 세 개의 파일이 표시됩니다.

    • all_formats.nmap (일반 출력)
    • all_formats.xml (XML 출력)
    • all_formats.gnmap (grepable 출력)

이제 Nmap 이 제공하는 다양한 출력 형식과 이를 사용하는 방법을 이해했습니다. 각 형식에는 고유한 장점이 있습니다.

  • 일반 출력은 사람이 읽기 쉽습니다.
  • XML 출력은 기계 구문 분석 및 다른 도구와의 통합을 위해 구조화되었습니다.
  • Grepable 출력은 Unix 텍스트 처리 도구로 빠른 분석을 위해 설계되었습니다.

다음 단계에서는 이러한 출력을 자세히 분석하는 방법을 배우게 됩니다.

Nmap 출력 분석 및 유용한 정보 추출

이 단계에서는 Nmap 스캔 결과에서 특정 정보를 추출하고 분석하는 방법을 배우게 됩니다. 이는 네트워크 관리자 및 보안 전문가에게 중요한 기술입니다. 네트워크 스캔을 처리할 때 종종 많은 양의 데이터를 얻게 됩니다. 관련 부분을 효율적으로 추출할 수 있으면 네트워크의 보안 상태를 이해하고 잠재적인 문제를 식별하는 데 도움이 됩니다.

XML 출력 분석

XML 출력은 자세한 분석에 매우 유용하며 다른 도구와 쉽게 통합할 수 있습니다. XML 은 데이터를 계층적 방식으로 구성하는 구조화된 형식으로, 특정 정보를 쉽게 찾고 추출할 수 있습니다. XML 출력에서 특정 정보를 추출하는 방법을 살펴보겠습니다.

  1. 먼저 XML 출력의 구조를 살펴보고 어떤 정보를 사용할 수 있는지 이해해 보겠습니다. grep 명령을 사용하여 XML 파일에서 호스트 섹션의 시작 부분을 찾습니다. grep 명령은 파일에서 지정된 패턴을 검색합니다.

    grep "<host" -A2 /home/labex/project/scan_results.xml

    이 명령은 scan_results.xml 파일에서 <host> 태그를 검색하고 일치하는 항목 다음 두 줄을 표시합니다. 이를 통해 XML 파일에서 호스트 섹션의 시작 부분을 확인할 수 있습니다.

  2. 이제 포트 상태에 대한 정보를 추출해 보겠습니다. grep을 다시 사용하여 <state 태그를 포함하는 모든 줄을 찾고 결과를 새 파일에 저장합니다.

    grep "<state " /home/labex/project/scan_results.xml > /home/labex/project/port_state.txt
  3. 추출된 포트 상태를 봅니다. 파일의 내용을 표시하는 데 사용되는 cat 명령을 사용합니다.

    cat /home/labex/project/port_state.txt

    다음과 유사한 내용이 표시되어야 합니다.

    <state state="open" reason="syn-ack" reason_ttl="0"/>

    이는 포트가 열려 있음을 알려줍니다. Nmap 은 SYN 패킷에 대한 응답으로 SYN-ACK 패킷을 수신했기 때문에 이를 결정했습니다. 이는 TCP 3 방향 핸드셰이크의 일부이며, 이는 네트워크에서 두 장치 간에 TCP 연결이 설정되는 방식입니다.

보다 복잡한 추출을 위한 정규 표현식 사용

보다 복잡한 데이터 추출을 위해 grep, sed 또는 awk와 같은 도구와 함께 정규 표현식을 사용할 수 있습니다. 정규 표현식은 텍스트에서 패턴을 검색하고 일치시키는 강력한 방법입니다. 이를 통해 복잡한 검색 기준을 정의할 수 있습니다.

  1. 포트 번호와 해당 상태를 모두 추출해 보겠습니다. 정규 표현식을 사용하여 grep을 사용하여 XML 파일에서 관련 정보를 찾고 새 파일에 저장합니다.

    grep -o 'portid="[0-9]*".*state="[^"]*"' /home/labex/project/scan_results.xml > /home/labex/project/port_and_state.txt
  2. cat 명령을 사용하여 추출된 정보를 봅니다.

    cat /home/labex/project/port_and_state.txt

    다음과 같은 출력이 표시되어야 합니다.

    portid="8080" state="open"

Grepable 출력 분석

Grepable 출력 형식은 표준 Unix 도구로 쉽게 처리하도록 설계되었습니다. 이는 grep과 같은 명령을 사용하여 특정 정보를 검색하는 것을 간단하게 만드는 텍스트 기반 형식입니다.

  1. grepable 출력에서 열린 포트만 추출해 보겠습니다. grep을 사용하여 "open"이라는 단어를 포함하는 모든 줄을 찾고 결과를 새 파일에 저장합니다.

    grep "open" /home/labex/project/scan_results.grep > /home/labex/project/open_ports.txt
  2. cat 명령을 사용하여 추출된 정보를 봅니다.

    cat /home/labex/project/open_ports.txt

    그러면 모든 열린 포트가 포함된 줄이 표시됩니다.

  3. 이를 추가로 처리하여 포트 번호만 추출할 수 있습니다. grepcut 명령의 조합을 사용합니다. cut 명령은 구분 기호를 기반으로 줄의 특정 부분을 추출하는 데 사용됩니다.

    grep "open" /home/labex/project/scan_results.grep | grep -o "8080/open" | cut -d "/" -f1 > /home/labex/project/port_numbers.txt
  4. cat 명령을 사용하여 추출된 포트 번호를 봅니다.

    cat /home/labex/project/port_numbers.txt

    다음이 표시되어야 합니다.

    8080

간단한 요약 보고서 만들기

이제 스캔의 다른 부분에서 정보를 결합하는 간단한 요약 보고서를 만들어 보겠습니다. 요약 보고서는 스캔의 주요 결과를 빠르게 이해하는 데 도움이 됩니다.

  1. 요약 보고서를 만듭니다. echo 명령을 사용하여 텍스트를 파일에 씁니다. >> 연산자는 텍스트를 파일의 끝에 추가합니다.

    echo "Nmap Scan Summary" > /home/labex/project/scan_summary.txt
    echo "----------------" >> /home/labex/project/scan_summary.txt
    echo "Target: localhost (127.0.0.1)" >> /home/labex/project/scan_summary.txt
    echo "Open ports:" >> /home/labex/project/scan_summary.txt
    grep "open" /home/labex/project/scan_results.grep | grep -o "[0-9]*/open/tcp//[^/]*" >> /home/labex/project/scan_summary.txt
  2. cat 명령을 사용하여 요약 보고서를 봅니다.

    cat /home/labex/project/scan_summary.txt

    출력은 다음과 같아야 합니다.

    Nmap Scan Summary
    ----------------
    Target: localhost (127.0.0.1)
    Open ports:
    8080/open/tcp//http - proxy

Nmap 스캔 결과에서 특정 정보를 추출하고 분석하는 방법을 배우면 네트워크 정찰 데이터를 효율적으로 처리하고 해석할 수 있습니다. 이 기술은 수많은 호스트와 서비스가 있는 대규모 네트워크를 스캔할 때 특히 유용합니다.

다음 단계에서는 보다 고급 Nmap 스캔 기술에 대해 배우게 됩니다.

고급 Nmap 스캔 기술

이 단계에서는 보다 고급 Nmap 스캔 기술을 살펴보겠습니다. 이러한 기술은 네트워크 서비스에 대한 추가적이고 자세한 정보를 제공할 수 있으므로 매우 중요합니다. 특히 서비스 버전 감지 및 스크립트 스캔에 중점을 둘 것입니다. 이러한 기술을 이해하면 스캔하는 네트워크 서비스에 대한 더 깊은 통찰력을 얻을 수 있으며, 이는 보안 평가, 네트워크 인벤토리 및 문제 해결에 필수적입니다.

서비스 버전 감지

Nmap 은 포트에서 실행 중인 서비스의 특정 버전을 결정하려고 시도할 수 있는 강력한 기능을 가지고 있습니다. 이는 -sV 옵션을 사용하여 수행됩니다. 서비스 버전을 아는 것은 매우 유용할 수 있습니다. 서로 다른 버전은 서로 다른 보안 취약성 또는 기능을 가질 수 있기 때문입니다.

  1. 서비스 버전 감지를 사용하여 Nmap 스캔을 실행합니다.

    nmap -p 8080 -sV localhost -oN /home/labex/project/version_scan.txt

    이 명령에서 -sV 옵션은 Nmap 에 열린 포트를 조사하도록 지시합니다. 이렇게 하면 Nmap 은 해당 포트에서 실행 중인 서비스에 대한 정보 (버전 포함) 를 수집할 수 있습니다. -oN 옵션은 스캔의 출력을 일반 형식으로 지정된 파일 /home/labex/project/version_scan.txt에 저장하는 데 사용됩니다. 출력을 파일에 저장하면 나중에 결과를 검토할 수 있습니다.

  2. 스캔 결과를 봅니다.

    cat /home/labex/project/version_scan.txt

    cat 명령을 실행하면 다음과 유사한 출력이 표시됩니다.

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-08 13:20:00 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    
    PORT     STATE SERVICE VERSION
    8080/tcp open  http    Python/3.10 aiohttp/3.8.1 (Python httpd)
    
    Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
    Nmap done: 1 IP address (1 host up) scanned in 6.52 seconds

    이제 Nmap 은 서비스 이름뿐만 아니라 버전 정보도 표시합니다. 이 경우 HTTP 서버가 Python 3.10 으로 실행되고 있음을 감지했습니다. 이 자세한 정보는 잠재적인 보안 위험을 식별하거나 서비스의 기능을 이해하는 데 사용할 수 있습니다.

Nmap 스크립트 (NSE) 사용

Nmap 스크립트 엔진 (NSE) 은 다양한 작업을 수행하기 위해 스크립트를 실행할 수 있는 강력한 도구입니다. 이러한 작업은 서비스 감지에서 취약성 스캔까지 다양합니다. NSE 스크립트를 사용하면 Nmap 의 기능을 확장하고 대상 네트워크에 대한 더 많은 정보를 수집할 수 있습니다.

  1. 웹 서버에서 기본 HTTP 정보 스크립트를 실행합니다.

    nmap -p 8080 --script=http-title localhost -oN /home/labex/project/script_scan.txt

    http-title 스크립트는 HTTP 웹 페이지의 제목을 가져오도록 설계되었습니다. 이는 웹 페이지의 내용 또는 목적을 빠르게 식별하는 데 유용할 수 있습니다. -oN 옵션은 스크립트 스캔의 출력을 일반 형식으로 지정된 파일 /home/labex/project/script_scan.txt에 저장합니다.

  2. 스크립트 스캔 결과를 봅니다.

    cat /home/labex/project/script_scan.txt

    출력에는 다음과 유사한 내용이 포함되어야 합니다.

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-08 13:25:00 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    
    PORT     STATE SERVICE
    8080/tcp open  http-proxy
    |_http-title: Directory listing for /
    
    Nmap done: 1 IP address (1 host up) scanned in 0.42 seconds

    http-title 스크립트는 웹 페이지의 제목을 검색했으며, 이 경우 디렉토리 목록입니다. 이 정보는 웹 서버의 구조와 내용을 이해하는 데 도움이 될 수 있습니다.

  3. HTTP 서버에 대한 자세한 정보를 제공하는 다른 스크립트를 사용해 보겠습니다.

    nmap -p 8080 --script=http-server-header localhost -oN /home/labex/project/server_header_scan.txt

    http-server-header 스크립트는 HTTP 서버 헤더를 검색하는 데 사용됩니다. 서버 헤더에는 종종 버전 및 유형과 같은 서버 소프트웨어에 대한 정보가 포함됩니다. 이 정보는 보안 평가 및 네트워크 인벤토리에 유용할 수 있습니다. -oN 옵션은 스캔의 출력을 일반 형식으로 지정된 파일 /home/labex/project/server_header_scan.txt에 저장합니다.

  4. 서버 헤더 스캔 결과를 봅니다.

    cat /home/labex/project/server_header_scan.txt

    출력에는 서버 소프트웨어에 대한 정보가 포함되어야 합니다.

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-11-08 13:30:00 UTC
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.000097s latency).
    
    PORT     STATE SERVICE
    8080/tcp open  http-proxy
    |_http-server-header: SimpleHTTP/0.6 Python/3.10.12
    
    Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds

여러 기술 결합

단일 Nmap 명령에서 여러 스캔 기술을 결합하여 보다 포괄적인 스캔을 수행할 수 있습니다. 이를 통해 한 번에 대상 네트워크에 대한 광범위한 정보를 수집할 수 있습니다.

  1. 포트 스캔, 서비스 버전 감지 및 스크립트 스캔을 포함하는 포괄적인 스캔을 실행합니다.

    nmap -p 8080 -sV --script=http-title,http-server-header localhost -oA /home/labex/project/comprehensive_scan

    이 명령은 여러 가지 작업을 수행합니다.

    • 포트 8080 을 스캔합니다 (-p 8080). 즉, 이 포트가 대상 호스트에서 열려 있는지 확인합니다.
    • 서비스 버전을 감지합니다 (-sV). 포트에서 실행 중인 서비스의 특정 버전에 대한 정보를 제공합니다.
    • http-titlehttp-server-header 스크립트를 실행합니다 (--script=http-title,http-server-header). 즉, 웹 페이지 제목과 서버 헤더 정보를 각각 가져옵니다.
    • 모든 형식으로 결과를 저장합니다 (-oA). 모든 형식으로 저장하면 다양한 목적을 위해 스캔 결과의 서로 다른 표현을 갖게 됩니다.
  2. 포괄적인 스캔 결과를 봅니다.

    cat /home/labex/project/comprehensive_scan.nmap

    출력에는 이전 스캔의 모든 정보가 결합되어 포함됩니다. 이를 통해 포트 8080 에서 실행 중인 대상 네트워크 서비스에 대한 전체적인 보기를 얻을 수 있습니다.

  3. 모든 결과를 요약하는 최종 분석 보고서를 만듭니다.

    echo "Final Nmap Analysis Report" > /home/labex/project/final_report.txt
    echo "------------------------" >> /home/labex/project/final_report.txt
    echo "Target: localhost (127.0.0.1)" >> /home/labex/project/final_report.txt
    echo "Port: 8080/tcp (open)" >> /home/labex/project/final_report.txt
    echo "Service:" >> /home/labex/project/final_report.txt
    grep "SERVICE VERSION" -A1 /home/labex/project/version_scan.txt | tail -1 >> /home/labex/project/final_report.txt
    echo "HTTP Server Header:" >> /home/labex/project/final_report.txt
    grep "http-server-header:" /home/labex/project/server_header_scan.txt >> /home/labex/project/final_report.txt
    echo "HTTP Page Title:" >> /home/labex/project/final_report.txt
    grep "http-title:" /home/labex/project/script_scan.txt >> /home/labex/project/final_report.txt

    이 일련의 명령은 final_report.txt라는 텍스트 파일을 만들고 이전 스캔에서 수집된 모든 정보의 요약으로 채웁니다. 여기에는 대상, 포트, 서비스 버전, 서버 헤더 및 웹 페이지 제목에 대한 세부 정보가 포함됩니다.

  4. 최종 보고서를 봅니다.

    cat /home/labex/project/final_report.txt

    최종 보고서에는 포트 8080에서 실행 중인 웹 서버에 대해 수집한 모든 정보의 포괄적인 요약이 포함되어야 합니다. 이 보고서는 추가 분석, 보안 평가 또는 문서화 목적으로 사용할 수 있습니다.

이러한 고급 Nmap 스캔 기술을 배우면 보안 평가, 네트워크 인벤토리 및 문제 해결에 유용한 네트워크 서비스에 대한 자세한 정보를 수집할 수 있습니다.

요약

이 랩에서는 네트워크 검색 및 보안 감사를 위한 강력한 네트워크 스캔 도구인 Nmap 사용법을 배웠습니다. 로컬 웹 서버를 사용하여 테스트 환경을 설정하고, 기본 포트 스캔을 수행하고, 다양한 출력 형식을 탐색하고, 스캔 결과를 추출 및 분석하고, 서비스 버전 감지 및 스크립트 스캔과 같은 고급 기술을 사용하는 등 다양한 Nmap 작업에 대한 실질적인 경험을 얻었습니다.

이러한 기술은 네트워크 관리자, 보안 분석가 및 침투 테스터에게 필수적입니다. 이를 통해 네트워크 호스트 및 서비스를 검색하고, 네트워크 인프라를 문서화하고, 보안 문제를 식별하고, 스캔 및 보고를 자동화할 수 있습니다. Nmap 및 해당 출력 형식을 마스터하면 효과적인 네트워크 정찰, 다른 보안 도구와의 통합, 포괄적인 네트워크 인벤토리 구축이 가능합니다. 연습한 명령줄 기술은 다른 시스템 관리 및 보안 작업에도 적용할 수 있습니다.