Nmap 상세 수준 탐구: 네트워크 스캔 효율 높이기

NmapBeginner
지금 연습하기

소개

이 랩에서는 강력한 네트워크 스캔 도구인 Nmap 을 다양한 상세 수준 (verbosity levels) 으로 활용하는 방법을 배우게 됩니다. Nmap 은 보안 전문가들이 컴퓨터 네트워크에서 호스트와 서비스를 탐지하기 위해 사용하는 필수적인 도구입니다. Nmap 의 상세 옵션을 마스터하면 스캔 중에 표시되는 정보를 조절할 수 있으며, 이는 효율적인 네트워크 분석 및 문제 해결에 필수적입니다.

이 랩을 통해 스캔 연습을 위한 로컬 서버를 설정할 것입니다. 또한 다양한 상세 수준이 스캔 결과 및 표시되는 정보에 어떤 영향을 미치는지 탐구할 것입니다.

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

네트워크 스캔 환경 설정

이 실험의 첫 번째 단계에서는, 여러분의 머신에 로컬 웹 서버를 설정할 것입니다. 이 서버는 Nmap 스캔의 대상 역할을 할 것입니다. Nmap 은 컴퓨터 네트워크에서 호스트와 서비스를 발견하기 위해 사이버 보안에서 사용되는 강력한 네트워크 스캔 도구입니다. 로컬 서버를 갖춤으로써 실제 네트워크에 영향을 주지 않고 Nmap 을 안전하게 연습할 수 있습니다.

HTTP 서버 이해

서버를 만들기 전에, HTTP 서버가 무엇인지 이해해 봅시다. HTTP 는 HyperText Transfer Protocol 의 약자입니다. 웹 브라우저가 웹사이트와 통신하는 데 사용하는 프로토콜입니다. HTTP 서버는 URL(웹 주소) 과 HTTP 프로토콜을 이해할 수 있는 소프트웨어 애플리케이션입니다. 브라우저에 웹 주소를 입력하면 브라우저는 해당 HTTP 서버로 HTTP 요청을 보내고, 서버는 요청된 웹 페이지를 다시 보냅니다. 이 랩에서는, 배우기 쉽고 인기 있는 프로그래밍 언어인 Python 을 사용하여 간단한 HTTP 서버를 만들 것입니다.

HTTP 서버 생성

먼저, 올바른 작업 디렉토리에 있는지 확인해야 합니다. 작업 디렉토리는 명령이 작동할 폴더와 같습니다. 이 경우, /home/labex/project 디렉토리에 있어야 합니다. 이 디렉토리로 이동하려면 다음 명령을 사용하십시오.

cd /home/labex/project

이제 올바른 위치에 있으므로, Python 의 내장 HTTP 서버 모듈을 사용하여 간단한 웹 서버를 만들 것입니다. 이 서버가 포트 8080 에서 수신하도록 설정할 것입니다. 포트는 컴퓨터의 문과 같아서 네트워크 트래픽이 들어오거나 나갈 수 있습니다. 서로 다른 서비스는 서로 다른 포트를 사용합니다. 다음 명령을 입력하십시오.

python -m http.server --bind localhost 8080 &

이 명령이 수행하는 작업을 자세히 살펴보겠습니다.

  • python -m http.server: 이 부분은 Python 의 내장 HTTP 서버 모듈을 시작합니다. Python 에게 HTTP 서버 기능을 실행하도록 지시합니다.
  • 8080: 이 옵션은 서버가 포트 8080 에서 수신해야 함을 지정합니다. 즉, 이 포트에서 들어오는 모든 HTTP 요청은 서버에서 처리됩니다.
  • &: 명령 끝에 앰퍼샌드를 넣으면 서버가 백그라운드에서 실행됩니다. 이는 서버가 실행되는 동안 다른 명령에 터미널을 계속 사용할 수 있으므로 유용합니다.

명령을 실행한 후 다음과 유사한 출력을 볼 수 있습니다.

Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

이 출력은 HTTP 서버가 현재 실행 중이며 포트 8080 에서 연결을 수락할 준비가 되었음을 나타냅니다. 이 서버가 실행되면, 다음 단계에서 Nmap 을 사용하여 스캔할 수 있는 대상이 생깁니다.

HTTP 서버가 실행 중인지 확인

서버가 실제로 올바르게 실행되고 있는지 확인하는 것이 중요합니다. 이를 위해 다음 명령을 사용할 수 있습니다.

ss -tulwn | grep 8080

ss 명령은 소켓 통계를 표시하는 데 사용됩니다. 옵션 -tulwnss에게 TCP, UDP, 수신 및 숫자 소켓 정보를 표시하도록 지시합니다. |는 파이프이며, ss 명령의 출력을 가져와 grep 명령에 전달합니다. 그런 다음 grep 명령은 출력에서 문자열 8080을 검색합니다. 서버가 실행 중이면 이 명령은 포트 8080 에서 무언가가 수신 중임을 나타내는 출력을 표시하여 HTTP 서버가 활성 상태이며 Nmap 스캔을 할 준비가 되었음을 확인합니다.

Nmap 기본 및 기본 상세 수준 이해

이제 대상 서버가 실행 중이므로, Nmap 과 상세 수준을 탐구할 시간입니다. Network Mapper 의 약자인 Nmap 은 강력한 보안 스캐너입니다. 주요 목적은 컴퓨터 네트워크에서 호스트와 서비스를 발견하는 데 도움을 주는 것입니다. 이는 네트워크의 레이아웃을 이해하고 잠재적인 보안 위험을 식별할 수 있게 해주므로 사이버 보안에서 매우 중요합니다.

Nmap 상세 수준이란 무엇인가?

Nmap 에서 상세 수준은 스캔 중에 얼마나 많은 정보가 표시되는지를 결정합니다. 스캔 결과가 얼마나 자세하길 원하는지에 따라, 서로 다른 상세 수준을 선택할 수 있습니다. 다음은 일반적인 상세 수준에 대한 설명입니다.

  • Level 0: 이것은 기본 수준입니다. 스캔에 대한 기본 정보를 제공하는 표준 출력을 제공합니다.
  • Level 1: -v 옵션을 사용하면 스캔 출력에서 더 많은 세부 정보를 얻을 수 있습니다.
  • Level 2: -vv 옵션을 사용하면 훨씬 더 자세한 정보를 얻을 수 있습니다.

기본 상세 수준 (Level 0) 스캔 수행

Nmap 의 기본 상세 수준을 사용하여 첫 번째 스캔을 수행해 보겠습니다. 이를 통해 추가 상세 수준을 추가하지 않고 얻을 수 있는 정보의 종류에 대한 기본 이해를 얻을 수 있습니다.

nmap -p 8080 localhost > /home/labex/project/verbosity-0.txt

이 명령을 자세히 살펴보겠습니다.

  • nmap: 이것은 Nmap 스캔 도구를 호출하는 명령입니다. 시스템에 네트워크 스캔에 Nmap 을 사용하도록 지시합니다.
  • -p 8080: 이 옵션은 Nmap 에게 포트 8080 에만 스캔을 집중하도록 지시합니다. 포트는 컴퓨터의 문과 같으며, 서로 다른 서비스는 서로 다른 포트를 사용합니다. 포트 8080 을 지정함으로써, 해당 특정 포트에서 실행되는 서비스에만 관심이 있습니다.
  • localhost: 이는 로컬 머신을 스캔하고 있음을 나타냅니다. 즉, Nmap 명령을 실행하는 동일한 컴퓨터에서 실행되는 서비스를 확인하고 있습니다.
  • > /home/labex/project/verbosity-0.txt: 이 명령 부분은 스캔의 출력을 /home/labex/project 디렉토리에 있는 verbosity-0.txt라는 파일로 리디렉션합니다. 출력을 파일에 저장하면 나중에 검토할 수 있습니다.

이제 스캔 결과를 살펴보겠습니다.

cat /home/labex/project/verbosity-0.txt

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

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:30 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 스캔이 정확히 언제 시작되었는지 알려줍니다. 이는 정보가 수집된 시점을 추적하는 데 유용합니다.
  • 스캔 대상: localhost를 스캔하고 있으며, IP 주소는 127.0.0.1임을 보여줍니다.
  • 호스트 상태: 호스트가 응답하고 있으며, 0.000097초의 매우 낮은 지연 시간을 가지고 있음을 나타냅니다.
  • 포트 상태: 포트 8080 이 open 상태임을 알려줍니다. 즉, 해당 포트에서 수신 대기 중인 서비스가 있음을 의미합니다.
  • 실행 중인 서비스: 포트 8080 에서 실행 중인 서비스가 http-proxy일 가능성이 높음을 시사합니다.
  • 스캔 완료 통계: 마지막 줄은 스캔에 걸린 시간에 대한 정보를 제공하며, 이 경우 0.05초였습니다.

기본 수준은 필수적인 정보를 제공하지만, 자세한 통찰력이 부족합니다. 다음 단계에서는 더 높은 상세 수준이 스캔에 대한 더 심층적인 정보를 어떻게 제공할 수 있는지 탐구할 것입니다.

-v 옵션을 사용한 상세 수준 증가

네트워크 스캔 세계에서, 자세한 정보를 얻는 것은 매우 중요합니다. 이 단계에서는 상세 수준을 높여 Nmap 에서 더 심층적인 세부 정보를 얻는 방법을 배웁니다. Nmap 의 상세 수준은 스캔 중에 표시되는 정보의 양을 나타냅니다. 상세 수준을 1 로 설정하는 -v 옵션은 네트워크 분석에 매우 유용할 수 있는 추가 정보를 제공합니다.

상세 수준을 높여 스캔 실행

상세 수준을 높여 스캔을 실행해 보겠습니다. 다음 명령을 사용합니다.

nmap -p 8080 localhost -v > /home/labex/project/verbosity-1.txt

이 명령을 자세히 살펴보겠습니다.

  • nmap은 Nmap 스캔 도구를 호출하는 명령입니다. Nmap 은 강력하고 널리 사용되는 네트워크 탐색 및 보안 감사 도구입니다.
  • -p 8080은 Nmap 에게 포트 8080 만 스캔하도록 지시합니다. 포트는 네트워크의 문과 같으며, 포트를 지정함으로써 해당 포트에서 실행될 수 있는 특정 서비스에 스캔을 집중합니다.
  • localhost는 로컬 머신을 타겟팅하고 있음을 나타냅니다. 이는 자체 시스템에서 Nmap 이 어떻게 작동하는지 테스트하고 이해하는 데 유용합니다.
  • -v는 상세 수준을 1 로 높입니다. 즉, Nmap 은 스캔 프로세스에 대한 더 많은 정보를 표시합니다.
  • > /home/labex/project/verbosity-1.txt는 스캔의 출력을 /home/labex/project 디렉토리에 있는 verbosity-1.txt라는 파일로 리디렉션합니다. 출력을 파일에 저장하면 나중에 검토할 수 있습니다.

이제 스캔 결과를 살펴보겠습니다.

cat /home/labex/project/verbosity-1.txt

이 명령을 실행하면 다음과 유사한 더 자세한 출력을 볼 수 있습니다.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-08-10 15:35 UTC
Initiating Ping Scan at 15:35
Scanning localhost (127.0.0.1) [2 ports]
Completed Ping Scan at 15:35, 0.00s elapsed (1 total hosts)
Initiating Connect Scan at 15:35
Scanning localhost (127.0.0.1) [1 port]
Discovered open port 8080/tcp on 127.0.0.1
Completed Connect Scan at 15:35, 0.00s elapsed (1 total ports)
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).

PORT     STATE SERVICE
8080/tcp open  http-proxy

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds

추가 정보 이해

상세 수준 1 에서는, 출력에 풍부한 추가 세부 정보가 제공됩니다. 다음은 볼 수 있는 내용입니다.

  1. 스캔 프로세스가 단계별로 나뉩니다. 예를 들어, Ping Scan 과 Connect Scan 이 있습니다. Ping Scan 은 호스트에 연결할 수 있는지 확인하는 데 사용되고, Connect Scan 은 특정 포트에 연결을 시도합니다.
  2. 각 단계의 타이밍 정보가 제공됩니다. 이를 통해 스캔의 각 부분이 얼마나 걸렸는지 이해할 수 있습니다.
  3. 열린 포트가 발견된 정확한 순간을 볼 수 있습니다. 이는 스캔의 명확한 타임라인을 제공하므로 중요합니다.
  4. 스캔 중에 Nmap 이 사용한 데이터 파일도 표시됩니다. 이러한 파일에는 Nmap 이 스캔을 수행하는 데 사용하는 서비스, 포트 및 기타 네트워크 관련 데이터에 대한 정보가 포함되어 있습니다.

이 추가 정보는 다음과 같은 이유로 매우 유용합니다.

  • Nmap 이 스캔을 수행하는 방식을 이해합니다. 서로 다른 단계와 해당 단계가 발생하는 순서를 보면 스캔 프로세스를 더 잘 이해할 수 있습니다.
  • 스캔 중 이벤트의 정확한 타임라인을 알 수 있습니다. 이는 문제 해결 또는 네트워크 동작 이해에 유용할 수 있습니다.
  • 특정 포트 및 서비스가 언제 발견되었는지 확인할 수 있습니다. 이는 보안 평가 및 네트워크 관리에 매우 중요합니다.

상세 수준 비교

일반 스캔과 상세 수준이 증가된 스캔의 차이점을 더 명확하게 확인하기 위해, 두 출력 파일을 비교합니다. 다음 명령을 사용하십시오.

diff /home/labex/project/verbosity-0.txt /home/labex/project/verbosity-1.txt

diff 명령은 두 파일의 내용을 비교하고 그 차이점을 보여줍니다. 이 명령의 출력은 상세 수준을 높이면 스캔 프로세스에 대한 더 많은 통찰력을 제공하는 방법을 보여줍니다. 이 추가 정보는 네트워크 문제를 해결하거나 자세한 보안 평가를 수행할 때 특히 유용할 수 있습니다.

추가 상세 수준

Nmap 은 상세 수준 1 에서 멈추지 않습니다. 더 높은 상세 수준도 지원합니다.

  • -vv는 상세 수준을 2 로 설정합니다.
  • -vvv는 상세 수준을 3 으로 설정합니다.

상세 수준을 높일수록 Nmap 은 스캔 프로세스에 대한 점점 더 자세한 정보를 제공합니다. 이는 네트워크를 더 깊이 파고들어 스캔의 모든 측면을 이해해야 할 때 매우 유용할 수 있습니다.

더 높은 상세 수준 탐색 및 실용적인 활용

이 단계에서는 Nmap 의 기능을 더 깊이 파고들 것입니다. 먼저, 훨씬 더 높은 상세 수준을 사용하여 스캔 프로세스 중에 더 자세한 정보를 얻을 것입니다. 그런 다음, 다양한 상세 수준 설정의 실제 적용 사례에 대해 배우므로, 실제 시나리오에서 각 수준을 언제 사용해야 하는지 알 수 있습니다.

최대 상세 수준으로 스캔 실행

상세 수준 2 로 스캔을 실행해 보겠습니다. Nmap 에서 -vv 옵션을 사용하여 상세 수준을 설정할 수 있습니다. 상세 수준 2 는 스캔에 대한 상당한 양의 자세한 정보를 제공합니다. 스캔을 실행하는 명령은 다음과 같습니다.

nmap -p 8080 localhost -vv > /home/labex/project/verbosity-2.txt

이 명령에서 -p 8080은 Nmap 에게 포트 8080 을 스캔하도록 지시합니다. localhost는 스캔하는 대상이며, 로컬 머신을 나타냅니다. -vv 옵션은 상세 수준을 2 로 높입니다. > 기호는 스캔의 출력을 /home/labex/project/verbosity-2.txt 파일로 리디렉션합니다.

이제 스캔 결과를 살펴보겠습니다. cat 명령을 사용하여 파일의 내용을 표시할 수 있습니다.

cat /home/labex/project/verbosity-2.txt

출력을 보면 스캔 프로세스에 대한 훨씬 더 많은 기술적 세부 정보가 포함되어 있음을 알 수 있습니다. 이러한 세부 정보에는 다음이 포함됩니다.

  • 더 심층적인 타이밍 정보: 이를 통해 스캔의 서로 다른 부분이 얼마나 걸렸는지 이해할 수 있습니다.
  • 추가 디버깅 정보: 스캔 중에 문제가 발생하면 유용할 수 있습니다.
  • 더 자세한 프로토콜 정보: 이를 통해 스캔에 관련된 네트워크 프로토콜을 더 잘 이해할 수 있습니다.

다양한 상세 수준의 실제 적용 사례

다양한 상세 수준은 서로 다른 시나리오에서 유용합니다. 각 수준과 실제 적용 사례를 살펴보겠습니다.

  1. 기본 수준 (0):

    • 기본 상세 수준은 빠른 스캔에 가장 적합합니다. 특정 포트가 열려 있는지 또는 닫혀 있는지와 같이 대상에 대한 기본 정보만 필요한 경우 이 수준으로 충분합니다.
    • 또한 일상적인 검사 및 간단한 네트워크 매핑에도 유용합니다. 예를 들어, 서버의 포트 상태를 빠르게 확인하려면 기본 수준을 사용할 수 있습니다.
    • 사용 사례의 예는 서버에서 특정 포트가 열려 있는지 확인하는 것입니다. 너무 많은 세부 사항에 얽매이지 않고 빠르게 개요를 얻을 수 있습니다.
  2. 상세 수준 1 (-v):

    • 이 수준은 더 자세한 분석에 유용합니다. 기본 수준보다 더 많은 정보를 제공하여 스캔 타임라인을 더 잘 이해하는 데 도움이 됩니다.
    • 연결 문제를 해결하는 경우 이 수준의 추가 정보가 매우 유용할 수 있습니다. 스캔의 어떤 부분이 더 오래 걸리는지 또는 오류가 있는지 확인할 수 있습니다.
    • 사용 사례의 예는 연결 문제를 해결하는 것입니다. 추가 세부 정보를 사용하여 문제의 원인을 파악할 수 있습니다.
  3. 더 높은 상세 수준 (-vv, -vvv):

    • 이러한 수준은 심층 분석 및 디버깅에 이상적입니다. 최대 양의 정보를 제공하므로 보안 감사에 매우 유용합니다.
    • 자세한 보안 평가를 수행하거나 스캔이 대상과 정확히 어떻게 상호 작용하는지 이해해야 하는 경우 더 높은 상세 수준을 사용하는 것이 좋습니다.
    • 사용 사례의 예는 자세한 보안 평가 또는 스캔이 대상과 정확히 어떻게 상호 작용하는지 이해해야 하는 경우입니다. 스캔 프로세스에 대한 포괄적인 보기를 얻을 수 있습니다.

다른 Nmap 옵션과 상세 수준 결합

상세 수준 옵션은 다른 Nmap 옵션과 결합하여 더 강력한 스캔을 수행할 수 있습니다. 다음 명령을 사용하여 더 고급 스캔을 시도해 보겠습니다.

nmap -p 8080 -sV localhost -v > /home/labex/project/advanced-scan.txt

이 명령을 자세히 살펴보겠습니다.

  • -p 8080은 포트 8080 을 스캔하려는 것을 지정합니다.
  • -sV는 버전 감지를 활성화합니다. 이 옵션은 스캔된 포트에서 실행되는 서비스의 버전을 확인하려고 시도합니다.
  • -v는 상세 수준을 1 로 높이므로 스캔 프로세스에 대한 더 자세한 정보를 얻을 수 있습니다.
  • > 기호는 스캔의 출력을 /home/labex/project/advanced-scan.txt 파일로 리디렉션합니다.

이제 스캔 결과를 살펴보겠습니다.

cat /home/labex/project/advanced-scan.txt

-sV를 추가하면 포트 8080 에서 실행되는 서비스 버전에 대한 정보가 제공됩니다. 동시에 -v 옵션은 스캔 프로세스에 대한 자세한 정보를 얻을 수 있도록 하여 결과를 더 쉽게 분석할 수 있습니다.

정리

이 실험을 마치기 전에, 이전에 생성한 HTTP 서버를 제대로 종료해야 합니다. 다음 명령을 사용하여 이 작업을 수행할 수 있습니다.

pkill -f "python -m http.server"

이 명령은 포트 8080 에서 실행되는 Python HTTP 서버 프로세스를 종료합니다. 향후 충돌 또는 리소스 사용 문제를 방지하려면 적절하게 정리하는 것이 중요합니다.

요약

이 랩에서는 네트워크 스캔 중에 표시되는 정보를 제어하기 위해 Nmap 의 상세 수준을 효과적으로 사용하는 방법을 배웠습니다. 기본적인 로컬 HTTP 서버 설정을 시작으로, 다양한 상세 수준이 Nmap 스캔 출력에 미치는 영향을 살펴보았습니다.

기본 상세 수준 (0) 은 열린 포트 및 서비스에 대한 필수 세부 정보를 제공한다는 것을 알았습니다. -v 옵션을 사용하면 상세 수준이 증가하여 스캔 프로세스에 대한 더 많은 통찰력을 제공합니다. -vv-vvv와 같은 더 높은 수준은 심층 분석을 위한 자세한 기술 정보를 제공합니다. 상세 수준 옵션은 더 강력한 네트워크 분석을 위해 다른 Nmap 기술과 결합할 수도 있습니다. 이러한 기술은 네트워크 관리자 및 보안 전문가에게 매우 중요하며, 네트워크 데이터를 효율적으로 수집하고 특정 작업에 맞게 스캔을 조정할 수 있도록 합니다.