Nmap 스캔 수행 및 다양한 형식으로 결과 저장

NmapBeginner
지금 연습하기

소개

이 랩에서는 강력한 네트워크 스캔 도구인 Nmap 을 사용하여 기본적인 네트워크 정찰 방법을 배웁니다. Nmap 은 보안 전문가에게 필수적인 도구로, 네트워크에서 호스트, 서비스 및 잠재적인 취약점을 발견하는 데 도움을 줍니다.

Nmap 스캔 결과를 다양한 형식으로 저장하는 방법을 이해하는 것은 보안 평가 및 보고에 매우 중요합니다. 이 기술을 숙달하면 발견 사항을 문서화하고, 팀원과 결과를 공유하며, 다른 도구로 데이터를 가져오고, 포괄적인 보안 보고서를 생성할 수 있습니다. 이 초보자 친화적인 랩에서는 기본적인 Nmap 스캔과 다양한 형식으로 결과를 저장하는 방법을 안내하여 필수적인 네트워크 보안 평가 기술을 습득할 수 있도록 돕습니다.

첫 번째 Nmap 스캔 수행 및 출력 저장

이 단계에서는 기본적인 Nmap 스캔을 수행하고 결과를 텍스트 파일에 저장하는 방법을 배웁니다. 네트워크 정찰 활동을 문서화하는 것은 발견한 내용을 추적하는 데 도움이 되며, 향후 참조 또는 보고에 사용할 수 있으므로 매우 중요합니다. 따라서 이 기술을 숙달하는 것은 네트워크 보안에 관심 있는 모든 사람에게 필수적입니다.

Nmap 기본 사항 이해

Network Mapper 의 약자인 Nmap 은 강력하고 널리 사용되는 무료 오픈 소스 유틸리티입니다. 주요 목적은 네트워크 검색 및 보안 감사입니다. Nmap 은 대상 네트워크 또는 호스트에 원시 IP 패킷을 전송하여 작동합니다. Nmap 은 수신하는 응답을 기반으로 많은 정보를 파악할 수 있습니다. 네트워크에서 사용 가능한 호스트, 해당 호스트가 제공하는 서비스 (웹 서버, 이메일 서버 등), 실행 중인 운영 체제 및 기타 여러 중요한 특성을 알려줍니다. 이 정보는 네트워크의 보안 상태를 이해하려는 경우 매우 중요합니다.

스캔 결과 디렉토리 생성

먼저 터미널 창을 엽니다. 기본적으로 터미널은 이미 /home/labex/project 디렉토리에 있어야 합니다. 모든 Nmap 스캔 결과를 저장할 전용 공간이 필요합니다. 이렇게 하면 데이터를 더 쉽게 구성하고 관리할 수 있습니다. 따라서 다음 명령을 사용하여 이 목적을 위한 디렉토리를 만들어 보겠습니다.

mkdir -p /home/labex/project/scans

mkdir 명령의 -p 플래그는 매우 유용합니다. 상위 디렉토리가 존재하지 않더라도 디렉토리가 생성되도록 합니다. 이 경우 상위 디렉토리가 이미 존재하지만, 향후 더 복잡한 디렉토리 구조를 만들고 싶을 경우 이 플래그를 사용하는 것이 좋습니다. 명령이 성공적으로 실행되면 아무런 출력도 표시되지 않습니다. 이는 정상이며 디렉토리가 생성되었음을 의미합니다.

기본 Nmap 스캔 실행

설명을 위해 포트 9999 에서 자체 머신인 localhost 를 스캔합니다. 실제 상황에서는 실제 네트워크 호스트를 스캔할 수 있는 적절한 권한이 필요합니다. 허가 없이 스캔하는 것은 비윤리적이며 불법일 수도 있습니다.

이제 기본 Nmap 스캔을 실행하고 출력을 텍스트 파일에 저장해 보겠습니다. 다음 명령을 실행합니다.

nmap -p 9999 localhost -oN /home/labex/project/scans/initial_scan.txt

각 부분이 무엇을 하는지 이해하기 위해 이 명령을 분석해 보겠습니다.

  • nmap: Nmap 도구를 시작하는 명령입니다. 네트워크 스캔에 Nmap 을 사용하려는 것을 시스템에 알립니다.
  • -p 9999: -p 옵션은 스캔하려는 포트를 지정하는 데 사용됩니다. 이 경우 포트 9999 를 스캔하고 있습니다.
  • localhost: 이것은 스캔 대상입니다. localhost를 사용하므로 자체 머신을 스캔하고 있습니다.
  • -oN /home/labex/project/scans/initial_scan.txt: -oN 옵션은 출력을 "normal" 형식으로 저장하는 데 사용됩니다. 경로 /home/labex/project/scans/initial_scan.txt는 출력 파일이 저장될 위치를 지정합니다.

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-30 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE  SERVICE
9999/tcp closed unknown

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

저장된 스캔 결과 보기

이제 스캔을 실행하고 결과를 파일에 저장했으므로 결과가 제대로 기록되었는지 확인해 보겠습니다. cat 명령을 사용하여 저장된 파일의 내용을 볼 수 있습니다.

cat /home/labex/project/scans/initial_scan.txt

표시되는 출력은 스캔을 실행했을 때 터미널에 표시된 내용과 유사해야 합니다. 이 파일은 이제 네트워크 정찰 활동의 기록 역할을 합니다. 정보를 검토해야 할 때마다 참조할 수 있습니다.

스캔 결과 이해

스캔 결과에는 몇 가지 중요한 정보가 포함되어 있습니다.

  • 스캔이 수행된 시기: 이는 네트워크 정찰의 타임라인을 추적하는 데 도움이 됩니다.
  • 스캔된 대상: 이 경우 localhost였습니다.
  • 호스트의 상태: 호스트가 up(도달 가능) 인지 down(도달 불가능) 인지 알려줍니다.
  • 지정된 포트의 상태: open, closed 또는 filtered 일 수 있습니다. open 포트는 해당 포트에서 서비스가 수신 대기 중임을 의미하고, closed 포트는 서비스가 수신 대기 중이지 않음을 의미하며, filtered 포트는 방화벽 또는 기타 보안 장치에 의해 포트가 차단되었음을 의미합니다.
  • 일반적으로 해당 포트와 관련된 서비스: 예를 들어, 포트 80 은 일반적으로 HTTP 서비스와 관련이 있습니다.
  • 스캔 기간에 대한 통계: 이는 스캔에 걸린 시간을 알려줍니다.

이제 첫 번째 Nmap 스캔을 성공적으로 수행하고 문서화 목적으로 결과를 파일에 저장했으므로 다음 단계에서는 Nmap 이 지원하는 다양한 출력 형식을 살펴보겠습니다.

Nmap 결과를 XML 형식으로 저장

이 단계에서는 Nmap 스캔 결과를 XML 형식으로 저장하는 방법을 배웁니다. XML(Extensible Markup Language) 은 구조화된 데이터 형식입니다. 각 정보 조각에 자체 레이블이 지정된 서랍이 있는 잘 정리된 보관함과 같습니다. 이러한 구조는 다른 보안 도구 및 스크립트가 데이터를 쉽게 처리할 수 있도록 합니다. 자동화가 핵심인 사이버 보안 세계에서 자동화된 워크플로에 쉽게 통합할 수 있는 형식으로 데이터를 갖는 것은 매우 중요합니다.

다양한 출력 형식 이해

강력한 네트워크 스캔 도구인 Nmap 은 여러 출력 형식을 지원합니다. 각 형식에는 고유한 특성과 사용 사례가 있습니다.

  1. 일반 출력 (-oN): 이는 사람이 읽을 수 있는 형식입니다. 이전 단계에서 이 형식을 사용하여 스캔 결과를 이해하기 쉬운 방식으로 보았습니다. 정보를 간단한 텍스트 기반 방식으로 제공합니다.
  2. XML 출력 (-oX): 앞서 언급했듯이 XML 은 구조화된 형식입니다. 태그와 요소를 사용하여 데이터를 계층적으로 정렬합니다. 따라서 다른 프로그램이 특정 정보를 구문 분석하고 추출하는 데 이상적입니다.
  3. Grepable 출력 (-oG): 이 형식은 grep과 같은 명령줄 도구로 쉽게 처리할 수 있도록 설계되었습니다. 스캔 결과에서 특정 패턴을 빠르게 검색하려는 경우 grepable 출력이 매우 유용합니다.
  4. Script Kiddie 출력 (-oS): 이 형식은 더 "script kiddie" 친화적입니다. 그러나 전문적인 보안 평가에서는 거의 사용되지 않습니다.

전문적인 보안 평가에서는 XML 형식이 자주 사용됩니다. 그 이유는 추가 분석을 위해 다른 보안 도구로 가져올 수 있기 때문입니다. 예를 들어, Nmap 스캔에서 XML 출력을 가져와 취약성 관리 시스템에서 사용하여 네트워크의 보안 상태에 대한 보다 심층적인 보기를 얻을 수 있습니다.

XML 출력을 사용하여 Nmap 스캔 실행

이제 localhost 포트 9999 에서 다른 스캔을 실행해 보겠습니다. 하지만 이번에는 출력을 XML 형식으로 저장합니다. 다음은 명령입니다.

nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml

각 부분이 무엇을 하는지 이해하기 위해 이 명령을 분석해 보겠습니다.

  • nmap: Nmap 도구를 실행하는 명령입니다. 모든 네트워크 스캔 작업의 시작점입니다.
  • -p 9999: -p 옵션은 스캔하려는 포트를 지정하는 데 사용됩니다. 이 경우 포트 9999 를 스캔하고 있습니다.
  • localhost: 이것은 스캔 대상입니다. localhost는 로컬 머신을 나타냅니다. 따라서 자체 머신의 포트 9999 를 스캔하고 있습니다.
  • -oX /home/labex/project/scans/advanced_scan.xml: -oX 옵션은 Nmap 에 출력을 XML 형식으로 저장하도록 지시합니다. 경로 /home/labex/project/scans/advanced_scan.xml은 XML 파일이 저장될 위치를 지정합니다.

이 명령을 실행하면 1 단계에서 본 것과 유사한 출력이 표시됩니다. 그러나 이제 결과는 지정된 파일에 XML 형식으로도 저장됩니다.

XML 출력 보기

방금 생성한 XML 파일의 내용을 살펴보겠습니다. cat 명령을 사용하여 파일의 내용을 표시할 수 있습니다.

cat /home/labex/project/scans/advanced_scan.xml

출력은 XML 형식입니다. 일반 출력과는 매우 다르게 보입니다. XML 은 태그와 요소를 사용하여 데이터를 구조화합니다. 이러한 구조는 컴퓨터가 정보를 구문 분석하기 쉽게 만듭니다. 다음은 표시될 수 있는 내용의 단순화된 예입니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE nmaprun>
<nmaprun scanner="nmap" args="nmap -p 9999 localhost -oX /home/labex/project/scans/advanced_scan.xml" start="1635598800" startstr="Sat Oct 30 12:00:00 2023" version="7.80" xmloutputversion="1.04">
<scaninfo type="syn" protocol="tcp" numservices="1" services="9999"/>
<verbose level="0"/>
<debugging level="0"/>
<host starttime="1635598800" endtime="1635598800">
<status state="up" reason="localhost-response" 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="9999">
<state state="closed" reason="conn-refused" reason_ttl="0"/>
<service name="unknown" method="table" conf="3"/>
</port>
</ports>
<times srtt="97" rttvar="5000" to="100000"/>
</host>
<runstats>
<finished time="1635598800" timestr="Sat Oct 30 12:00:00 2023" elapsed="0.07" summary="Nmap done at Sat Oct 30 12:00:00 2023; 1 IP address (1 host up) scanned in 0.07 seconds" exit="success"/>
<hosts up="1" down="0" total="1"/>
</runstats>
</nmaprun>

XML 출력의 장점

XML 형식은 다음과 같은 몇 가지 장점을 제공합니다.

  1. 구조화된 데이터: XML 의 정보는 계층적 구조로 구성됩니다. 각 요소는 다른 요소와 명확한 관계를 가지므로 데이터의 구성을 쉽게 이해할 수 있습니다.
  2. 기계 판독 가능: 다른 프로그램과 스크립트는 XML 데이터를 쉽게 구문 분석할 수 있습니다. 이를 통해 보안 워크플로에서 다양한 도구와 원활하게 통합할 수 있습니다.
  3. 통합: XML 출력은 Metasploit, OpenVAS 또는 사용자 지정 보안 대시보드와 같은 다른 보안 도구로 가져올 수 있습니다. 이를 통해 Nmap 스캔 결과를 다른 보안 분석 도구와 결합할 수 있습니다.
  4. 데이터 변환: XML 데이터를 HTML 또는 PDF 와 같은 다른 형식으로 변환할 수 있습니다. 이는 공유하고 제시하기 쉬운 보고서를 만드는 데 유용합니다.
  5. 데이터 추출: XML 구문 분석 도구를 사용하여 XML 파일에서 특정 정보를 추출할 수 있습니다. 예를 들어, 모든 열린 포트 또는 특정 호스트의 세부 정보를 추출할 수 있습니다.

실제 응용 프로그램

실제 보안 평가에서 스캔 결과를 XML 형식으로 저장하는 것은 매우 유용할 수 있습니다. 다음은 몇 가지 실제 응용 프로그램입니다.

  • 취약성 관리 시스템으로 가져오기: XML 출력을 취약성 관리 시스템으로 가져와 네트워크의 보안 취약성에 대한 포괄적인 보기를 얻을 수 있습니다.
  • XSLT 변환을 사용하여 사용자 지정 보고서 만들기: XSLT(Extensible Stylesheet Language Transformations) 를 사용하여 XML 데이터를 사용자 지정 보고서로 변환할 수 있습니다. 이를 통해 필요에 가장 적합한 방식으로 정보를 제시할 수 있습니다.
  • 자동화된 스크립트로 처리하여 특정 정보 추출: 자동화된 스크립트를 작성하여 XML 파일을 구문 분석하고 특정 정보 (예: 특정 서비스에서 열린 포트가 있는 모든 호스트) 를 추출할 수 있습니다.
  • 팀 구성원 또는 클라이언트와 구조화된 데이터 공유: XML 데이터는 다른 사람과 쉽게 공유할 수 있습니다. 팀 구성원 또는 클라이언트는 자체 분석을 위해 구조화된 데이터를 사용할 수 있습니다.
  • 네트워크 정찰 데이터베이스 유지 관리: XML 파일을 데이터베이스에 저장하여 시간이 지남에 따라 네트워크 정찰 활동을 기록할 수 있습니다.

Nmap 출력을 다양한 형식으로 저장하는 방법을 배우면 네트워크 보안 기술을 구축하는 데 중요한 단계를 거친 것입니다. 이러한 형식을 사용하면 결과를 효과적으로 문서화하고 워크플로에서 다른 보안 도구와 통합할 수 있습니다.

요약

이 Lab 에서는 Nmap 을 사용하여 네트워크 정찰 문서를 작성하는 데 필요한 필수 기술을 배웠습니다. localhost 의 특정 포트에서 기본적인 Nmap 스캔을 성공적으로 수행했으며, 스캔 결과를 일반 텍스트 및 XML 형식으로 저장했습니다. 텍스트 형식은 사람이 읽기 쉽고, XML 형식은 다른 보안 도구 및 자동화된 처리와의 통합을 용이하게 합니다.

이러한 기술은 보안 전문가가 결과를 문서화하고, 보고서를 작성하고, 결과를 공유하는 데 매우 중요합니다. 스캔 결과를 다양한 형식으로 저장하면 네트워크 정찰 데이터를 효율적으로 관리하고 보안 워크플로에 원활하게 통합할 수 있습니다. 사이버 보안 분야에서 발전함에 따라 보안 테스트를 적절하게 문서화하는 것은 테스트 자체만큼 중요할 것입니다. Nmap 출력을 다양한 형식으로 저장하는 유연성을 통해 다양한 시나리오에 가장 적합한 형식을 선택할 수 있습니다.