Nmap 대상 지정 기술 학습

NmapBeginner
지금 연습하기

소개

이 랩에서는 보안 전문가들이 널리 사용하는 강력한 네트워크 스캔 도구인 Nmap 에 대해 배우게 됩니다. 특히, 이 랩은 스캔할 호스트와 네트워크를 정의하는 데 중요한 Nmap 의 대상 지정 기술에 중점을 둡니다.

이러한 기술을 이해하는 것은 효과적인 네트워크 정찰 및 보안 평가에 필수적입니다. 이 랩을 마치면 Nmap 에서 대상을 지정하는 다양한 방법을 사용하고 스캔 결과를 효과적으로 해석할 수 있게 됩니다.

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

Nmap 설치 및 탐색

이 단계에서는 Nmap 이 시스템에 올바르게 설치되었는지 확인하고 기본 기능을 탐색하기 시작합니다. Nmap 은 Network Mapper 의 약자로, 오픈 소스 도구입니다. 네트워크 검색 및 보안 감사에 널리 사용됩니다. Nmap 을 사용하면 네트워크에 연결된 장치와 해당 장치가 제공하는 서비스를 파악할 수 있습니다. 이는 네트워크 환경을 이해하고 잠재적인 보안 위험을 식별하는 데 도움이 되므로 사이버 보안에서 매우 중요합니다.

먼저, Nmap 이 이미 시스템에 설치되어 있는지 확인해야 합니다. 이를 위해 터미널을 사용합니다. 터미널은 컴퓨터와 상호 작용하기 위해 명령을 입력할 수 있는 텍스트 기반 인터페이스입니다. 터미널을 열고 다음 명령을 실행합니다.

nmap --version

이 명령은 시스템에 설치된 Nmap 의 버전을 표시하도록 요청합니다. Nmap 이 올바르게 설치된 경우, Nmap 버전 및 빌드 정보를 포함하는 다음과 유사한 출력을 볼 수 있습니다.

Nmap version 7.80 ( https://nmap.org )
Platform: x86_64-pc-linux-gnu
Compiled with: liblua-5.3.3 openssl-1.1.1d nmap-libssh2-1.8.2 libz-1.2.11 libpcre-8.39 libpcap-1.9.1 nmap-libdnet-1.12 ipv6
Compiled without:
Available nsock engines: epoll poll select

다음으로, Nmap 스캔의 대상을 지정하는 방법을 이해하려고 합니다. 대상 지정은 Nmap 에게 스캔하려는 장치 또는 네트워크를 알려주기 때문에 중요합니다. 이에 대해 배우기 위해 몇 가지 기본 Nmap 문서를 살펴보겠습니다. 터미널에서 다음 명령을 실행합니다.

nmap -h | grep -A 10 "TARGET SPECIFICATION"

이 명령은 먼저 nmap -h를 사용하여 Nmap 의 도움말 텍스트를 가져옵니다. 그런 다음 출력을 grep -A 10 "TARGET SPECIFICATION"으로 파이프하여 도움말 텍스트에서 "TARGET SPECIFICATION" 섹션을 검색하고 다음 10 줄을 표시합니다. Nmap 스캔의 대상을 지정하는 다양한 방법에 대한 설명을 볼 수 있습니다.

이제 Nmap 스캔 결과를 저장할 장소가 필요합니다. 이를 위해 디렉토리를 생성합니다. 디렉토리는 컴퓨터에서 파일을 구성할 수 있는 폴더와 같습니다. 터미널에서 다음 명령을 실행합니다.

mkdir -p /home/labex/project/nmap_scans
cd /home/labex/project/nmap_scans

mkdir -p 명령은 /home/labex/project 경로에 nmap_scans라는 디렉토리를 생성합니다. -p 옵션은 중간 디렉토리가 존재하지 않는 경우에도 생성되도록 합니다. 그런 다음 cd 명령은 현재 작업 디렉토리를 새로 생성된 nmap_scans 디렉토리로 변경합니다.

로컬 머신에서 간단한 스캔을 실행하여 Nmap 을 실제로 사용해 보겠습니다. 로컬 머신은 현재 사용하고 있는 컴퓨터입니다. 다음 명령을 실행합니다.

nmap localhost > local_scan.txt

이 명령은 Nmap 을 사용하여 로컬 머신을 스캔합니다. > 기호는 스캔의 출력을 local_scan.txt라는 파일로 리디렉션합니다. 이렇게 하면 나중에 분석할 수 있도록 스캔 결과를 저장할 수 있습니다.

마지막으로, 스캔 결과를 살펴보겠습니다. 다음 명령을 실행합니다.

cat local_scan.txt

cat 명령은 local_scan.txt 파일의 내용을 표시합니다. Nmap 이 로컬 머신에서 스캔한 포트 목록을 볼 수 있습니다. 포트 번호와 함께 어떤 포트가 열려 있는지, 그리고 해당 열린 포트에서 어떤 서비스가 실행될 수 있는지에 대한 정보를 찾을 수 있습니다. 이 정보는 로컬 머신의 보안 상태를 이해하는 데 도움이 될 수 있습니다.

서비스 설정 및 특정 포트 스캔

이 단계에서는 로컬 웹 서버를 시작한 다음 Nmap 이라는 강력한 도구를 사용하여 특정 포트를 스캔하여 해당 웹 서버를 찾는 방법을 배우겠습니다. 이 프로세스를 이해하는 것은 Nmap 을 사용하여 현재 네트워크 또는 머신에서 실행 중인 서비스를 식별하는 방법을 보여주기 때문에 매우 중요합니다.

먼저, 프로젝트 디렉토리로 이동해야 합니다. 여기에서 간단한 웹 서버를 설정합니다. 올바른 위치에 있으면 포트 8000 에서 수신 대기하는 Python HTTP 서버를 시작합니다. 포트 8000 은 웹 서버 테스트에 사용되는 일반적인 포트입니다. 다음은 이를 수행하는 명령입니다.

cd /home/labex/project/nmap_scans
python3 -m http.server 8000 &

명령 끝에 있는 &는 중요합니다. 백그라운드에서 서버를 실행합니다. 즉, 서버가 실행되는 동안 다른 작업을 위해 터미널을 계속 사용할 수 있습니다. 명령을 실행한 후 서버가 성공적으로 시작되었음을 나타내는 출력이 표시됩니다.

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

이제 서버가 실행 중이므로 실제로 포트 8000 에서 수신 대기하는지 확인하려고 합니다. "list open files"를 의미하는 lsof 명령을 사용할 수 있습니다. 이 명령은 특정 포트를 현재 사용하고 있는 프로세스를 확인하는 데 도움이 됩니다. 사용 방법은 다음과 같습니다.

lsof -i :8000

서버가 올바르게 실행 중이면 다음과 유사한 출력이 표시됩니다.

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
python3 12345 labex   4u  IPv4 123456      0t0  TCP *:8000 (LISTEN)

이 출력은 Python 이 포트 8000 에서 수신 대기하고 있음을 알려주며, 이는 서버가 예상대로 작동하고 있음을 의미합니다.

다음으로, Nmap 을 사용하여 로컬 머신의 포트 8000 을 스캔합니다. 목표는 HTTP 서버를 감지하는 것입니다. 다음은 명령입니다.

nmap -p 8000 localhost > http_server_scan.txt

이 명령에서 -p 플래그는 스캔하려는 포트를 지정하는 데 사용됩니다. 이 경우, 자체 머신인 localhost 의 포트 8000 을 스캔하고 있습니다. > 기호는 Nmap 스캔의 출력을 http_server_scan.txt라는 파일로 리디렉션합니다. 이렇게 하면 나중에 결과를 쉽게 검토할 수 있습니다.

스캔 결과를 확인해 보겠습니다.

cat http_server_scan.txt

스캔이 성공하면 다음과 유사한 출력이 표시됩니다.

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

PORT     STATE SERVICE
8000/tcp open  http-alt

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

이 출력은 포트 8000 이 열려 있고 HTTP 서비스를 실행하고 있음을 보여주며, 이는 Nmap 이 서버를 감지할 수 있었음을 의미합니다.

마지막으로, 로컬 머신에서 실행 중인 다른 서비스가 있는지 확인하기 위해 포트 범위를 스캔해 보겠습니다. 다음은 명령입니다.

nmap -p 1-1000 localhost > port_range_scan.txt

이 명령은 Nmap 에게 localhost 에서 1 에서 1000 까지의 모든 포트를 스캔하도록 지시합니다. 다시, 출력을 port_range_scan.txt라는 파일로 리디렉션하고 있습니다.

결과를 살펴보겠습니다.

cat port_range_scan.txt

출력은 로컬 머신에서 1 - 1000 범위의 어떤 포트가 열려 있는지 보여줍니다. 이는 실행 중임을 알지 못했을 수 있는 서비스를 발견하는 데 유용한 방법입니다.

고급 대상 지정

이 단계에서는 더 발전된 Nmap 대상 지정 기술을 자세히 살펴보겠습니다. Nmap 은 네트워크 정찰에 강력한 도구이며, 단일 명령으로 여러 대상을 지정하는 다양한 방법을 제공합니다. 이는 여러 호스트 또는 네트워크를 한 번에 스캔해야 할 때 매우 유용하며 시간과 노력을 절약해 줍니다.

여러 IP 주소를 포함하는 텍스트 파일을 생성하여 시작해 보겠습니다. 스캔하려는 IP 주소를 포함합니다. localhost (127.0.0.1) 와 몇 개의 다른 로컬 IP 주소를 포함합니다. localhost 는 현재 장치 자체를 나타내는 특수 IP 주소입니다. 이를 포함하면 자체 머신에서 스캔 프로세스를 테스트할 수 있습니다.

cd /home/labex/project/nmap_scans
echo "127.0.0.1" > targets.txt
echo "127.0.0.2" >> targets.txt
echo "127.0.0.3" >> targets.txt

위 코드에서 cd 명령은 현재 작업 디렉토리를 /home/labex/project/nmap_scans로 변경합니다. echo 명령은 텍스트를 출력하는 데 사용됩니다. > 연산자는 새 파일을 생성하고 텍스트를 작성하는 반면, >> 연산자는 기존 파일에 텍스트를 추가합니다. 따라서 먼저 targets.txt라는 파일을 생성하고 127.0.0.1을 작성합니다. 그런 다음 127.0.0.2127.0.0.3을 동일한 파일에 추가합니다.

이제 방금 생성한 파일을 살펴보고 IP 주소가 올바르게 추가되었는지 확인해 보겠습니다.

cat targets.txt

cat 명령은 파일의 내용을 표시하는 데 사용됩니다. 이 명령을 실행하면 다음 출력이 표시됩니다.

127.0.0.1
127.0.0.2
127.0.0.3

다음으로, Nmap 에서 -iL 플래그를 사용하여 targets.txt 파일에 나열된 모든 IP 주소를 한 번에 스캔합니다. -iL 플래그는 Nmap 에게 파일에서 대상을 읽도록 지시합니다.

nmap -iL targets.txt > multiple_targets_scan.txt

여기서 nmap 명령은 네트워크 스캔을 수행하는 데 사용됩니다. -iL 플래그는 대상을 포함하는 파일을 지정합니다. > 연산자는 스캔의 출력을 multiple_targets_scan.txt라는 파일로 리디렉션합니다.

스캔 결과를 확인해 보겠습니다.

cat multiple_targets_scan.txt

이 명령을 실행하면 세 개의 모든 IP 주소에 대한 스캔 결과가 표시됩니다. 127.0.0.1 은 일반적으로 localhost 이고 일부 서비스가 실행 중일 수 있으므로 열린 포트를 표시합니다. 그러나 127.0.0.2 와 127.0.0.3 은 대부분의 시스템에서 일반적으로 구성되지 않으므로 응답하지 않을 수 있습니다.

여러 대상을 지정하는 또 다른 방법은 Nmap 명령에서 공백 표기법 또는 CIDR 표기법을 직접 사용하는 것입니다.

nmap 127.0.0.1 127.0.0.2 > space_notation_scan.txt

이 명령에서는 공백을 사용하여 IP 주소를 구분합니다. 이렇게 하면 Nmap 이 127.0.0.1 과 127.0.0.2 를 모두 스캔하도록 지시합니다. 스캔의 출력은 space_notation_scan.txt라는 파일로 리디렉션됩니다.

결과를 확인해 보겠습니다.

cat space_notation_scan.txt

CIDR 표기법을 사용하여 IP 주소 범위를 스캔할 수도 있습니다. CIDR (Classless Inter-Domain Routing) 표기법은 IP 주소 범위를 간결한 형태로 나타내는 방법입니다.

nmap 127.0.0.0/30 > cidr_notation_scan.txt

CIDR 표기법의 127.0.0.0/30은 127.0.0.0 에서 127.0.0.3 까지의 IP 주소 범위를 나타내며, 총 4 개의 주소입니다. 이 스캔의 출력은 cidr_notation_scan.txt라는 파일로 리디렉션됩니다.

결과를 확인해 보겠습니다.

cat cidr_notation_scan.txt

마지막으로, 스캔에서 특정 대상을 제외하는 방법을 살펴보겠습니다. 이는 네트워크를 스캔하되 특정 호스트를 포함하지 않으려는 경우에 유용합니다.

nmap 127.0.0.0/30 --exclude 127.0.0.3 > exclude_scan.txt

이 명령에서 --exclude 플래그를 사용하여 Nmap 에게 범위 127.0.0.0/30을 스캔할 때 IP 주소 127.0.0.3을 건너뛰도록 지시합니다. 스캔의 출력은 exclude_scan.txt라는 파일로 리디렉션됩니다.

결과를 확인해 보겠습니다.

cat exclude_scan.txt

127.0.0.0, 127.0.0.1 및 127.0.0.2 에 대한 스캔 결과가 표시되지만 127.0.0.3 에 대한 결과는 표시되지 않습니다.

이러한 고급 대상 지정 기술을 사용하면 Nmap 이 스캔하는 호스트를 정확하게 제어하여 네트워크 정찰을 보다 효율적이고 타겟팅할 수 있습니다.

요약

이 랩에서는 대상 지정 기술에 중점을 두고 네트워크 정찰을 위해 Nmap 을 사용하는 방법을 배웠습니다. 먼저 Nmap 을 설치하고 로컬 머신에서 간단한 스캔을 수행하여 기본 기능을 탐색했습니다. 그런 다음 로컬 HTTP 서버를 설정하고 Nmap 을 사용하여 특정 포트를 스캔하여 이를 찾았습니다.

이러한 기술은 네트워크 관리자 및 보안 전문가가 네트워크 장치를 발견하고 평가하는 데 필수적입니다. Nmap 대상 지정을 마스터하면 모든 규모와 복잡성의 네트워크를 효율적으로 스캔하고 작업과 관련된 특정 호스트 및 서비스를 타겟팅할 수 있습니다. 법적 및 윤리적 문제를 피하기 위해 항상 Nmap 을 책임감 있게 사용하고 승인된 네트워크에서만 사용하십시오.