Nmap 스캔 타이밍 및 성능 최적화

NmapBeginner
지금 연습하기

소개

이 랩에서는 Nmap 에서 스캔 타이밍과 성능을 최적화하는 것을 목표로 합니다. 빠른 네트워크 스캔을 위해 -T4를 사용하여 빠른 템플릿을 사용하는 것, 병렬 처리 증가, 지연 설정, 진행 상황 추적, 스텔스 테스트, Xfce 터미널에서 타이밍 비교 등 Nmap 스캔을 향상시키는 다양한 기술을 배우게 됩니다. 이러한 단계는 Nmap 스캔에서 속도와 정확성의 균형을 맞추는 방법을 이해하는 데 도움이 될 것입니다.

nmap -T4 192.168.1.0/24를 사용하여 빠른 템플릿 사용

이 단계에서는 Nmap 과 함께 빠른 템플릿 옵션을 사용하여 네트워크를 빠르게 스캔합니다. -T4 옵션은 속도와 정확성의 균형을 맞춘 타이밍 템플릿을 지정하는 데 사용됩니다. 기본 템플릿보다 빠르지만, 경우에 따라 정확도가 떨어질 수 있습니다.

시작하기 전에 타이밍 템플릿이 무엇인지 이해해 봅시다. Nmap 은 타이밍 템플릿을 사용하여 대상에 대한 스캔의 공격성을 제어합니다. 이러한 템플릿은 프로브 간의 지연, 재시도 횟수 및 타임아웃 값과 같은 매개변수에 영향을 미칩니다. -T 옵션을 사용하면 -T0 (paranoid) 에서 -T5 (insane) 까지 사전 정의된 템플릿을 선택할 수 있습니다. 숫자가 높을수록 더 공격적인 스캔을 나타냅니다.

-T4 템플릿은 대부분의 네트워크에 적합한 절충안입니다. 기본 템플릿 (-T3) 보다 빠르지만, 패킷 손실을 유발하거나 침입 탐지 시스템을 트리거할 수 있는 과도한 공격성을 피합니다.

이제 스캔을 수행해 보겠습니다. nmap -T4 192.168.1.0/24 명령을 사용하여 192.168.1.0/24 네트워크를 스캔합니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

다음 명령을 실행합니다.

sudo nmap -T4 192.168.1.0/24

이 명령은 Nmap 에게 -T4 타이밍 템플릿을 사용하여 192.168.1.0/24 범위의 모든 IP 주소를 스캔하도록 지시합니다. /24는 서브넷 마스크 255.255.255.0 을 지정합니다. 즉, Nmap 은 256 개의 IP 주소 (192.168.1.0 부터 192.168.1.255 까지) 를 스캔합니다.

출력에는 각 호스트에서 실행 중인 열린 포트 및 서비스가 포함된 스캔 결과가 표시됩니다. 192.168.1.0/24 네트워크는 로컬 네트워크일 가능성이 높으므로 결과는 연결된 장치에 따라 다릅니다.

예시 출력 (네트워크에 따라 다름):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00028s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

Nmap scan report for 192.168.1.100
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

Nmap done: 256 IP addresses (2 hosts up) scanned in 5.23 seconds

이 출력은 Nmap 이 256 개의 IP 주소를 스캔하여 두 개의 호스트 (192.168.1.1 및 192.168.1.100) 를 찾았음을 보여줍니다. 호스트 192.168.1.1 은 포트 80 (http) 을 열고, 호스트 192.168.1.100 은 포트 22 (ssh) 를 엽니다. 스캔은 약 5.23 초가 걸렸습니다.

nmap --min-parallelism 20 127.0.0.1 로 병렬 처리 증가

이 단계에서는 --min-parallelism 옵션을 사용하여 Nmap 스캔의 병렬 처리를 늘립니다. 이 옵션을 사용하면 Nmap 이 병렬로 전송하는 최소 프로브 수를 지정할 수 있습니다. 병렬 처리를 늘리면 특히 많은 호스트 또는 포트가 있는 네트워크에서 스캔 속도를 크게 높일 수 있습니다.

기본적으로 Nmap 은 네트워크 조건에 따라 병렬 처리 수준을 동적으로 조정합니다. 그러나 --min-parallelism을 사용하여 Nmap 이 항상 최소한 특정 수의 프로브를 동시에 전송하도록 할 수 있습니다.

Nmap 의 맥락에서 병렬 처리의 의미를 이해해 봅시다. Nmap 이 대상을 스캔할 때, 서로 다른 포트 또는 호스트로 프로브를 보냅니다. 병렬 처리를 사용하면 Nmap 은 다음 프로브를 보내기 전에 각 프로브의 응답을 기다리지 않고 여러 프로브를 동시에 보낼 수 있습니다. 이렇게 하면 전체 스캔 시간을 크게 줄일 수 있습니다.

이제 병렬 처리가 증가된 상태로 스캔을 수행해 보겠습니다. nmap --min-parallelism 20 127.0.0.1 명령을 사용하여 최소 병렬 처리 20 으로 로컬 호스트 (127.0.0.1) 를 스캔합니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

다음 명령을 실행합니다.

sudo nmap --min-parallelism 20 127.0.0.1

이 명령은 Nmap 에게 127.0.0.1 을 스캔하고 최소 20 개의 프로브를 병렬로 유지하도록 시도하라고 지시합니다. Nmap 은 네트워크 조건에 따라 병렬 처리를 동적으로 조정할 수 있지만, 지정된 최소값 이상을 유지하려고 시도합니다.

출력에는 로컬 호스트에서 실행 중인 열린 포트 및 서비스를 포함한 스캔 결과가 표시됩니다.

예시 출력 (시스템에 따라 다름):

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.000027s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

이 출력은 Nmap 이 로컬 호스트 (127.0.0.1) 를 스캔하여 22 (ssh), 631 (ipp) 및 9000 (cslistener) 의 세 개의 열린 포트를 찾았음을 보여줍니다. 스캔은 증가된 병렬 처리로 인해 비교적 빠르게 완료되었습니다. 실제로 절약된 시간은 네트워크 조건과 스캔 대상에 따라 달라집니다.

nmap --scan-delay 500ms 192.168.1.1 로 지연 설정

이 단계에서는 Nmap 에서 --scan-delay 옵션을 사용하여 프로브 간의 지연을 설정합니다. 이 옵션을 사용하면 Nmap 이 각 프로브를 전송하는 사이에 대기해야 하는 시간을 지정할 수 있습니다. 스캔 지연을 늘리면 침입 탐지 시스템 (IDS) 에 의한 탐지를 피하거나 네트워크 트래픽에 민감한 호스트를 스캔하는 데 유용할 수 있습니다.

기본적으로 Nmap 은 네트워크 조건에 따라 스캔 지연을 자동으로 조정합니다. 그러나 --scan-delay를 사용하여 특정 지연을 수동으로 설정할 수 있습니다. 지연은 밀리초 (ms) 또는 초 (s) 단위로 지정됩니다.

스캔 지연을 사용하려는 이유를 이해해 봅시다. 매우 빠른 스캔은 대상 호스트를 압도하거나 보안 경고를 트리거할 수 있습니다. 지연을 추가하면 스캔이 덜 공격적이고 감지될 가능성이 줄어듭니다. 이는 프로덕션 시스템 또는 스캔의 영향을 최소화하려는 네트워크를 스캔할 때 특히 중요합니다.

이제 지정된 지연으로 스캔을 수행해 보겠습니다. nmap --scan-delay 500ms 192.168.1.1 명령을 사용하여 각 프로브 사이에 500 밀리초의 지연을 두고 호스트 192.168.1.1 을 스캔합니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

다음 명령을 실행합니다.

sudo nmap --scan-delay 500ms 192.168.1.1

이 명령은 Nmap 에게 192.168.1.1 을 스캔하고 각 프로브를 전송하는 사이에 500 밀리초를 대기하도록 지시합니다. 이렇게 하면 지연이 없는 스캔에 비해 스캔 속도가 상당히 느려집니다.

출력에는 192.168.1.1 에서 실행 중인 열린 포트 및 서비스를 포함한 스캔 결과가 표시됩니다.

예시 출력 (네트워크에 따라 다름):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:10 UTC
Nmap scan report for 192.168.1.1
Host is up (0.00031s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

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

이 출력은 Nmap 이 192.168.1.1 을 스캔하여 포트 80 (http) 이 열려 있음을 발견했음을 보여줍니다. --scan-delay 옵션이 없었을 때보다 스캔 시간이 더 오래 걸렸습니다 (5.50 초). 정확한 시간은 대상 및 네트워크 조건에 따라 다릅니다.

nmap -v --stats-every 5s 192.168.1.0/24로 진행 상황 추적

이 단계에서는 -v (verbose) 및 --stats-every 옵션을 사용하여 Nmap 스캔의 진행 상황을 추적하는 방법을 배웁니다. 이러한 옵션은 스캔의 진행 상황에 대한 실시간 피드백을 제공하며, 특히 장시간 실행되는 스캔에 유용합니다.

-v 옵션은 Nmap 출력의 상세 수준을 높입니다. -v를 사용하면 Nmap 은 전송되는 프로브, 수신된 응답 및 각 호스트의 상태를 포함하여 스캔에 대한 더 많은 정보를 표시합니다. 더 자세한 출력을 위해 -vv를 사용할 수 있습니다.

--stats-every 옵션을 사용하면 Nmap 이 스캔 진행 상황에 대한 통계를 얼마나 자주 인쇄할지 지정할 수 있습니다. 값은 초 (s), 분 (m) 또는 시간 (h) 단위로 지정됩니다. 예를 들어, --stats-every 5s는 5 초마다 통계를 인쇄합니다.

진행 상황 추적이 중요한 이유를 이해해 봅시다. 대규모 네트워크를 스캔할 때 Nmap 스캔은 상당한 시간이 걸릴 수 있습니다. 진행 상황 정보가 없으면 스캔이 얼마나 진행되었는지, 진행 중인지 여부를 알기 어려울 수 있습니다. -v--stats-every 옵션은 스캔 상태에 대한 귀중한 통찰력을 제공합니다.

이제 진행 상황 추적과 함께 스캔을 수행해 보겠습니다. nmap -v --stats-every 5s 192.168.1.0/24 명령을 사용하여 192.168.1.0/24 네트워크를 스캔하고 5 초마다 통계를 인쇄합니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

다음 명령을 실행합니다.

sudo nmap -v --stats-every 5s 192.168.1.0/24

이 명령은 Nmap 에게 192.168.1.0/24 범위의 모든 IP 주소를 스캔하고, 자세한 출력을 표시하고, 5 초마다 통계를 인쇄하도록 지시합니다.

출력에는 스캔이 완료된 호스트 수, 활성 호스트 수 및 예상 남은 시간을 포함하여 스캔의 진행 상황이 표시됩니다.

예시 출력 (네트워크에 따라 다름):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:20 UTC
Initiating Ping Scan at 10:20
Scanning 256 hosts [2 ports/host]
Completed Ping Scan at 10:20, 0.23s elapsed (256 total hosts)
Initiating Parallel DNS resolution of 256 hosts. at 10:20
Completed Parallel DNS resolution of 256 hosts. at 10:20, 1.42s elapsed
Initiating SYN Stealth Scan at 10:20
Scanning 256 hosts [1000 ports/host]
5s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
10s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
15s elapsed; 0 hosts completed (0.00/s). 0 hosts up.
20s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.1
Host is up (0.00029s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
80/tcp  open  http

25s elapsed; 1 hosts completed (0.04/s). 1 hosts up.
Nmap scan report for 192.168.1.100
Host is up (0.00032s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
22/tcp  open  ssh

30s elapsed; 2 hosts completed (0.07/s). 2 hosts up.
Nmap done: 256 IP addresses (2 hosts up) scanned in 32.50 seconds

이 출력은 5 초마다 스캔의 진행 상황을 보여줍니다. 완료된 호스트 수, 스캔 속도 (호스트/s) 및 활성 호스트 수를 확인할 수 있습니다. 스캔은 또한 열린 포트를 발견되는 대로 보고합니다.

nmap -T1 127.0.0.1 로 스텔스 (Stealth) 스캔 테스트

이 단계에서는 -T1 타이밍 템플릿을 사용하여 Nmap 으로 스텔스 스캔을 수행하는 방법을 살펴봅니다. 스텔스 스캔은 침입 탐지 시스템 (IDS) 또는 방화벽에 의해 탐지될 가능성을 최소화하는 것을 목표로 합니다.

-T1 옵션은 "sneaky" 타이밍 템플릿으로 알려져 있습니다. 기본 템플릿보다 느리고 덜 눈에 띄도록 설계되었습니다. 이는 프로브 간의 지연을 늘려 대상 시스템의 부하를 줄이고 스캔이 악성으로 플래그 지정될 가능성을 줄임으로써 이를 달성합니다.

어떤 스캔도 진정으로 보이지 않는다는 것을 이해하는 것이 중요합니다. 스텔스 기술을 사용하더라도 탐지 위험은 항상 존재합니다. 그러나 -T1 옵션을 사용하면 해당 위험을 크게 줄일 수 있습니다.

이제 -T1 타이밍 템플릿을 사용하여 localhost(127.0.0.1) 에 대한 스텔스 스캔을 수행해 보겠습니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

다음 명령을 실행합니다.

sudo nmap -T1 127.0.0.1

이 명령은 Nmap 에게 -T1 타이밍 템플릿을 사용하여 localhost(127.0.0.1) 를 스캔하도록 지시합니다. localhost 를 스캔하고 있으므로, 더 느린 타이밍 템플릿을 사용하더라도 스캔이 비교적 빠르게 완료되어야 합니다.

출력에는 localhost 에서 실행 중인 열린 포트 및 서비스를 포함하여 스캔 결과가 표시됩니다.

예시 출력 (시스템 구성에 따라 다를 수 있음):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:40 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

이 출력은 Nmap 이 localhost 를 스캔하여 22(ssh), 631(ipp) 및 9000(cslistener) 의 세 개의 열린 포트를 찾았음을 보여줍니다. 스캔은 약 10.50 초가 걸렸습니다. -T4와 같은 더 빠른 타이밍 템플릿을 사용하는 것보다 스캔 시간이 더 길 수 있습니다.

Xfce 터미널에서 시간 비교

이 단계에서는 서로 다른 타이밍 템플릿을 사용하여 Nmap 스캔의 실행 시간을 비교합니다. Xfce 터미널을 사용하여 스캔을 실행하고 각 스캔이 완료되는 데 걸리는 시간을 관찰합니다. 이를 통해 타이밍 템플릿이 스캔 속도에 미치는 영향을 이해할 수 있습니다.

-T1 (sneaky) 및 -T4 (fast) 타이밍 템플릿을 비교합니다. 이 비교를 위해 localhost(127.0.0.1) 를 스캔합니다.

LabEx VM 에서 터미널을 엽니다. ~/project 디렉토리에 있는지 확인합니다.

먼저, -T1 타이밍 템플릿을 사용하여 스캔을 실행해 보겠습니다. 실행 시간을 측정하기 위해 time 명령을 사용합니다.

다음 명령을 실행합니다.

time sudo nmap -T1 127.0.0.1

time 명령은 Nmap 스캔을 실행한 다음 완료하는 데 걸린 시간을 표시합니다. time 명령에서 보고하는 "real" 시간에 주의하십시오. 이는 총 경과 시간을 나타냅니다.

예시 출력 (시간은 다를 수 있음):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

real    0m10.552s
user    0m0.103s
sys     0m0.032s

이 예에서 "real" 시간은 0 분 10.552 초입니다.

이제 -T4 타이밍 템플릿을 사용하여 동일한 스캔을 실행해 보겠습니다.

다음 명령을 실행합니다.

time sudo nmap -T4 127.0.0.1

다시, time 명령에서 보고하는 "real" 시간에 주의하십시오.

예시 출력 (시간은 다를 수 있음):

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 11:01 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000007s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
631/tcp  open  ipp
9000/tcp open  cslistener

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

real    0m1.285s
user    0m0.098s
sys     0m0.029s

이 예에서 "real" 시간은 0 분 1.285 초입니다.

두 스캔의 "real" 시간을 비교합니다. -T4 타이밍 템플릿을 사용한 스캔이 -T1 타이밍 템플릿을 사용한 스캔보다 훨씬 빠르게 완료되는 것을 관찰해야 합니다. 이는 속도와 스텔스 간의 균형을 보여줍니다. -T1은 느리지만 더 스텔스하고, -T4는 더 빠르지만 잠재적으로 더 눈에 띕니다.

요약

이 Lab 에서 참가자들은 Nmap 스캔 타이밍과 성능을 최적화하는 방법을 배웠습니다. 그들은 192.168.1.0/24 네트워크를 빠르면서도 균형 있게 스캔하기 위해 -T4 옵션을 사용했으며, 더 높은 -T 값은 더 공격적인 스캔을 의미한다는 것을 이해했습니다. 또한 --min-parallelism 20으로 병렬성을 높이고, --scan-delay 500ms로 스캔 지연을 설정하고, -v --stats-every 5s로 진행 상황을 추적하고, -T1으로 스텔스 스캔을 테스트하고, Xfce 터미널에서 타이밍을 비교했습니다.