본문 바로가기
IT Tools

스캐닝 툴 - Nmap 사용법

by 떠도리c 2024. 8. 26.
반응형

교육 / 테스트 용도로 사용하시기 바라며, 실제 서비스 운영중인 대상으로 사용은 자제 바랍니다.

 

스캐닝 툴 - Nmap 사용법

nmap는 네트워크 스캐너입니다.

대상이 되는 네트워크에 패킷을 보내, 패킷의 응답을 이용하여 송신처의 네트워크의 상태를 알 수 있습니다.

port Scanning 을 수행하며 호스트나 네트워크를 스캐닝 할 때 아주 유용하게 사용됩니다.

사용 용도에 따라서 보안툴이 될 수도 있고, 해킹툴로 사용될 수 있습니다.

  • 수집 정보
    • OS 종류 / 버전
    • 운영 서비스
    • 오픈 서비스 포트 등
 

대상 사양(TARGET SPECIFICATION)

옵션
설명
예시
-iL <입력파일명>
지정한 파일에서 스캔할 대상 리스트를 가져온다. 대상 리스트는 IP 주소, Hostname, CIDR, IPv6, 옥텟으로 작성 할 수 있으며, #으로 주석처리도 할 수 있다.
nmap -iL /hagsig/scanlist.txt
-iR <호스트 수>
지정한 숫자만큼 스캔 대상을 무작위로 선택할 수 있다. 사설, 멀티캐스트 또는 할당되지 않은 주소와 같이 바람직하지 않은 IP는 자동으로 건너뛴다.
nmap -iR 50
--exclude <호스트1[,호스트2],...>
지정한 특정 대상 또는 네트워크 범위를 스캔 범위에서 제외한다. 제외 대상은 IP 주소, Hostname, CIDR, IPv6, 옥텟으로 지정할 수 있다.
nmap --제외  192.168.1.10
--excludefile <제외_파일>
스캔 범위에서 제외할 리스트를 파일에서 가져온다. 대상 리스트는 IP 주소, Hostname, CIDR, IPv6, 옥텟으로 작성 할 수 있으며, #으로 주석처리도 할 수 있다.
nmap --excludefile ./exlist.txt
-N
스캔중 발견한 활성 IP 주소에서 reverse DNS resolution을 수행하지 않는다. 스캔 시간을 줄일 수 있다.
nmap -n  192.168.1.1
-아르 자형
대상 IP 주소에게 항상 reverse DNS resolution을 수행하도록 한다. 일반적으로 reverse DNS는 응답형(온라인) 대상에게만 수행된다.
nmap -R  192.168.1.1
--모든 것을 해결하다
hostname이 둘 이상의 주소로 확인되면 모든 주소를 스캔한다. 이 옵션을 사용하지 않을 경우, 첫 번째 주소만 스캔한다.
nmap --resolve-all  hagsig.tistory.com
--고유한
각 IP 주소를 한 번만 스캔함. 이 옵션을 사용하지 않을 경우, 각기 다른 hostname이 동일한 주소를 사용해도 중복 스캔 한다.
nmap --고유  192.168.1.1
--시스템-DNS
Nmap이 동작하는 시스템에서 지정한 DNS 서버를 이용하여 hostname의 주소를 알아온다.
nmap -sn  192.168.0.17  --system-dns
--dns-서버 <serv1[,serv2],...>
Nmap이 동작하는 시스템이 아닌 지정한 DNS 서버를 이용하여 hostname의 주소를 알아온다.
nmap  192.168.1.1  --dns-servers  8.8.8.8
 

 

HOST 발견 옵션(HOST DISCOVERY)

옵션
설명
예시
-sL
대상에게 패킷을 보내지 않고 지정한 네트워크의 각 호스트를 단순히 나열한다.
nmap -sL  192.168.1.1/24
-sn
호스트 검색 후 포트스캔을 수행하지 않고, 호스트 검색에 응답한 호스트만 나열한다. 하여 이 옵션은 Ping 스캔으로 알려져 있다. 
nmap -sn -T4  hagsig.tistory.com/24
-Pn
기본적으로 Nmap은 호스트 검색에 응답한 호스트에게만 포트스캔, 버전 감지, OS감지 등의 추가 검색을 수행한다. 하지만 이 옵션을 사용하면 호스트 검색을 비활성화하기 때문에 모든 대상에게 추가 검색을 수행한다. 스캔 속도가 느려질 수 있다.
nmap -v -iR 10000 -Pn -p 80
-PS[포트 목록]
SYN 플래그가 설정된 빈 TCP 패킷을 보낸다. 포트를 지정하지 않으면 기본 대상 포트인 80으로 지정된다.
nmap  192.168.1.1-5  -PS 22-25,80
-PA[포트 목록]
ACK 플래그가 설정된 빈 TCP 패킷을 보낸다. 포트를 지정하지 않으면 기본 대상 포트인 80으로 지정된다.
nmap  192.168.1.1-5  -PA 22-25,80
-PU[포트 목록]
UDP 패킷을 지정된 포트로 보내는 UDP ping으로, 포트를 지정하지 않으면 기본 대상 포트인 40125로 지정된다.
nmap  192.168.1.1-5  -PU 22-25,80
-PY[포트 목록]
최소 INIT 청크를 포함하는 SCTP 패킷을 보낸다. 포트를 지정하지 않으면 기본 대상 포트인 80으로 지정된다.
nmap  192.168.1.1  -PY 22-25,80
-에
ICMP echo 요청을 할 수 있다.
 -PP 옵션을 통해 타임스탬프,
 -PM 옵션을 통해 넷마스크를 보낼 수 있다.
nmap -PE  192.168.1.1
-PP
nmap -PP  192.168.1.1
-오후
nmap -PM  192.168.1.1
-PO[프로토콜 목록]
IP 헤더에 지정된 프로토콜 번호가 설정된 패킷을 보내는 IP 프로토콜 핑이다. 프로토콜이 지정되지 않은 경우 ICMP(protocol 1), IGMP(protocol 2), IP-in-IP(protocol 4)에 여러 IP 패킷을 보낸다.
nmap-PO  192.168.1.1
--disable-arp-ping
Nmap은 일반적으로 -Pn 또는 -PE와 같은 다른 호스트 검색 옵션을 사용하더라도 로컬로 연결된 이더넷 호스트의 ARP 또는 IPv6 ND(Neighbor Discovery) 검색을 수행한다. 이 동작을 비활성화 하려면 --disable-arp-ping 옵션을 사용한다.
nmap --disable-arp-ping  192.168.1.1
--발견-무시-rst
방화벽에서 호스트 스캔을 허용하지 않을 경우, RST 응답을 보낸다. Nmap은 일반적으로 RST 응답을 대상이 작동 중이라고 생각하고 이들을 계속해서 검사하려고 한다. 이 경우 시간이 낭비될 수 있는데, --discovery-ignore-rst 옵션을 사용하면 이러한 상황을 피할 수 있다.
nmap --discovery-ignore-rst  192.168.1.1
--traceroute
대상에 도달하는 경로를 추적하여 보여준다. 일반적으로 스캔 후에 수행되며 -sT(TCP Connect 스캔), -sI(idle 스캔)을 제외한 모든 스캔 유형에서 사용할 수 있다. 
nmap --traceroute  hagsig.tistory.com
 
 

스캐닝 옵션(SCAN TECHNIQUES)

옵션
설명
예시
-봄 여름 시즌
TCP SYN 스캔 (half open)
nmap -sS  192.168.1.1
-SP
Stealth 스캔, 방화벽 or IDS 우회
nmap -sP 192.168.1.1
-성
TCP Connect 스캔
nmap -sT  192.168.1.1
-안에
TCP ACK 스캔
nmap -sA  192.168.1.1
-sw
TCP Window 스캔
nmap -sw  192.168.1.1
-sM
TCP Maimon 스캔
nmap -sM  192.168.1.1
-sU
UDP 스캔
nmap -sU  192.168.1.1
-sN
TCP Null 스캔
nmap -sN  192.168.1.1
-sF
TCP FIN 스캔
nmap -sF  192.168.1.1
-sX
TCP Xmas 스캔
nmap -sX  192.168.1.1
--scanflags<플래그>
Custom TCP 스캔
nmap --scanflags SYNFIN  192.168.1.1
-sI <좀비 호스트[:probeport]>
idle 스캔
-sY
SCTP INIT 스캔
nmap -sY  192.168.1.1
-에스
SCTP COOKIE-ECHO 스캔
nmap -sZ  192.168.1.1
-그래서
IP protocol 스캔
nmap -sO  192.168.1.1
-비
FTP Bounce 스캔
nmap -Pn -b  ftp.hagsig.com tis.com 
 

포트 사양 및 스캔 순서(PORT SPECIFICATION AND SCAN ORDER)

옵션
설명
예시
-p <포트 범위>
스캔할 포트를 지정하고 기본값을 무시한다. 하이픈으로 구분된 범위(예: 1-1023) 또는 개별 번호로 포트를 지정할 수 있다. IP 프로토콜 스캔(-sO)의 경우 이 옵션은 스캔하려는 프로토콜 번호를 0-255로 지정한다.
nmap  192.168.1.1  -p 80
--exclude-ports <포트 범위>
스캔에서 제외할 포트를 지정할 수 있다. <port ranges>란에 -p 옵션과 동일한 방법으로 스캔에서 제외할 포트를 지정하면 된다. IP 프로토콜 스캐닝(-sO)의 경우 이 옵션은 제외할 프로토콜 번호를 0-255로 지정한다.
nmap  192.168.1.1  --exclude-ports 80
-에프
기본값보다 적은 수의 포트를 스캔하도록 지정한다. 일반적으로 Nmap은 포트를 지정하지 않을 경우, nmap-services 파일의 잘 알려진 포트 목록을 참조하여 1-1024 포트를 검색한다. 하지만 이 옵션을 사용하면 nmap-services 파일에 이름이 지정된 포트만 검색되기 때문에 포트스캔 수가 100개로 줄어들게 된다.
nmap -F  192.168.1.1
-아르 자형
일반적으로 Nmap은 포트 스캔 순서를 무작위로 지정한다(잘 알려진 포트인 1-1024 포트 제외). 하지만 이 옵션을 사용하면 포트스캔 순서를 순차적으로(최저에서 최고 순으로) 지정할 수 있다.
nmap -r  192.168.1.1
--top-ports <번호>
--exclude-ports 옵션에 지정된 포트를 제외하고, nmap-services 파일에 지정된 포트 중 위에서부터 <n>개의 포트를 스캔한다. <n>은 1 이상이어야 한다.
nmap --top-ports 10  192.168.1.1
--포트 비율 <비율>
지정한 비율로 nmap-services 파일의 모든 포트를 스캔한다. <ratio>는 0.0에서 1.0 사이로 지정하여야 한다.
nmap --포트 비율 0.1  192.168.1.1
 

서비스/버전 탐색 옵션(SERVICE/VERSION DETECTION)

옵션
설명
예시
-sV
버전 감지를 활성화한다. 또는 -A 옵션을 사용하여 버전 감지를 활성화할 수 있다.
nmap -sV  192.168.1.1
--allports
기본적으로 Nmap은 TCP 9100 포트를 탐색하지 않지만, 이 옵션을 사용할 시 Exclude 지시문에 관계없이 모든 포트를 스캔할 수 있다.
nmap -sV --allports  hagsig.tistory.com
--버전 강도 <수준>
버전 스캔(-sV)을 수행할 때 1-9의 강도를 설정할 수 있다. 아무것도 지정하지 않을 시 강도는 기본값인 7로 지정된다. 숫자가 높을수록 서비스가 올바르게 식별될 가능성이 높아지며, 강도가 올라갈수록 스캔 시간이 올래 걸린다.
nmap -sV --버전 강도 5  192.168.1.1
--버전-라이트
이 옵션은 --version-intensity 강도 2의 별칭이다. 이 옵션을 사용하면 버전 검색이 훨씬 빨라지지만, 서비스를 올바르게 식별할 가능성은 낮아진다.
nmap -sV --version-light  192.168.1.1
--버전-모두
이 옵션은 --version-intensity 강도 9의 별칭이다. 이 옵션을 사용하면 버전 검색이 훨씬 느려지지만, 서비스를 올바르게 식별할 가능성이 높아진다.
nmap -sV --version-all  192.168.1.1
--버전 추적
Nmap이 어떤 서비스의 버전 정보를 스캐닝하는지에 대한 디버깅 정보를 출력한다.
nmap -sV --version-trace  192.168.1.1
 
 

스크립트 스캔 옵션(SCRIPT SCAN)

옵션
설명
예시
-sC
기본 스크립트로 대상 스캔
nmap -sC  192.168.1.1
--스크립트 기본값
-sC 와 동일
nmap --script 기본값  192.168.1.1
--script <루아 스크립트>
Lua 스크립트로 대상 스캔
nmap --script hagsiglua  192.168.1.1
--script-args <n1=v1,[n2=v2,...]>
스크립트에 인수 제공
nmap --script hagsigscript --script-args 계정=관리자  192.168.1.1
--script-args-file <파일 이름>
NSE 스크립트 인수를 파일에서 제공
nmap --script hagsigscript --script-args-file argsfile.txt  192.168.1.1
--스크립트 추적
스크립트를 통해 송수신된 데이터 출력
nmap --script hagsigscript --script-trace  192.168.1.1
--스크립트-업데이트db
스크립트 데이터베이스 업데이트
nmap --script-updatedb
--script-help <루아 스크립트>
스크립트에 대한 도움말 출력
nmap --script-help http-헤더  scanme.nmap.org
 

OS 탐색 옵션(OS DETECTION)

옵션
설명
예시
-영형
OS 감지 기능을 활성화 한다. -A 옵션을 사용하여 OS 감지 기능을 사용할 수도 있다.
nmap -O  192.168.1.1
--osscan-한계
Nmap의 기준을 충족하지 않는 호스트에 대해 OS 탐색을 하지 않는다. 많은 호스트를 탐색할 경우 이 옵션을 사용하면 많은 시간을 단축시킬 수 있다. -O 또는 -A를 사용하여 OS 감지가 요청된 경우에만 적용된다.
nmap -O --osscan-limit  192.168.1.1
--osscan 추측; --흐린
OS 를 정확히 탐지할 수 없을 때, 가장 가능성이 높은 정보를 제공한다. 이 경우 Nmap은 추측한 내용에 대한 정확도를 백분율로 표시하여 준다.
nmap -O --osscan-guess  192.168.1.1
--최대-os-시도
OS 탐지 시 정확한 정보를 찾지 못하면 OS 탐지 시도를 몇번 반복한다. 기본적으로 Nmap은 OS 탐지를 하기 좋은 환경이면 5번의 재시도를, 좋지 않은 환경이면 2번의 재시도를 반복한다. 값이 높을 수록 재시도 횟수가 증가하지만 그만큼 스캔 속도는 느려진다.
nmap -O --max-os-tries 3  192.168.1.1
 

타이밍과 성능 옵션(TIMING AND PERFORMANCE)

옵션
설명
예시
-T<0-5>
스캔 속도 설정(높을수록 빠름)
nmap -T5  192.168.1.1
--min-hostgroup/max-hostgroup <크기>
동시에 스캔할 스캔그룹을 지정
nmap --min-hostgroup 50  192.168.1.1
--min-parallelism/max-parallelism <numprobes>
정찰을 동시에 수행
nmap --최소 병렬성 10  192.168.1.1
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <시간>
정찰 왕복시간 지정
nmap --min-rtt-timeout 100ms  192.168.1.1
--max-재시도 <시도>
포트스캔 정찰 재전송 횟수 제한
nmap --max-재시도 10  192.168.1.1
--host-timeout <시간>
지정한 시간이 지나면 대상을 포기
nmap --host-timeout 30m  192.168.1.1
--scan-delay <시간>/--max-scan-delay <시간>
정찰 시간 간격 조정
nmap -스캔 지연 1s  192.168.1.1
--min-rate <숫자>
초당 지정한 숫자 보다 느리지 않은 패킷을 전송
nmap --min-rate 50  192.168.1.1
--최대 속도 <숫자>
초당 지정한 숫자 보다 빠르지 않은 패킷을 전송
nmap --최대 속도 100  192.168.1.1 
 

방화벽/IDS 회피 및 스푸핑 옵션(FIREWALL/IDS EVASION AND SPOOFING)

옵션
설명
예시
 -에프; --mtu <값>
지정한 값으로 패킷을 조각화 함
nmap -f --사람 32  192.168.1.1
-D <디코이1,디코이2[,ME],...>
지정한 decoy로 스캔
nmap -D RND:10  192.168.1.1
-S <IP_주소>
지정한 IP주소로 변조하여 보냄
-e <iface>
지정된 인터페이스 사용
nmap -e eth0  192.168.1.1
-g/--source-port <포트 번호>
지정한 포트번호를 출발지 포트로 지정
nmap --source-port 7777  192.168.1.1
--proxy <url1,[url2],...>
HTTP/SOCKS4 프록시 지정
nmap -sV -Pn -n --proxies 양말4:// 127.0.0.1:9050 scanme.nmap.org 
--data <16진수 문자열>
전송하는 패킷에 페이로드를 추가
nmap --data 0xA  192.168.1.1
--데이터 문자열 <문자열>
전송하는 패킷에 지정한 문자를 추가
nmap --data-string hagsig  192.168.1.1
--데이터 길이 <숫자>
전송하는 패킷에 지정한 길이의 랜덤 데이터를 추가
nmap --데이터 길이 20  192.168.1.1
--ip-옵션 <옵션>
지정한 옵션으로 패킷을 보냄
nmap --ip-options "\x01\x07\x27\x04\x00*36" -P0 -sS -p80  192.168.1.1
--ttl <값>
지정한 값으로 TTL 값을 지정
nmap --ttl 64  192.168.1.1
--spoof-mac <mac 주소/접두사/공급업체 이름>
지정한 MAC 주소로 변조하여 보냄
nmap --spoof-mac hagsig  192.168.1.1
--badsum
잘못된 체크섬으로 패킷을 보냄
nmap --badsum  192.168.1.1
 

출력 옵션(OUTPUT)

옵션
설명
예시
-에
스캔 결과를 일반 형식으로 저장
nmap  192.168.1.1  -oN hagsig.nmap
-황소
스캔 결과를 XML 형식으로 저장
nmap  192.168.1.1  -oX  hagsig .xml
-너
스캔 결과를 스크립트 키디 형식으로 저장
nmap  192.168.1.1  -oS  hagsig .txt
-그리고
스캔 결과를 grepable 형식으로 저장
nmap  192.168.1.1  -oG  hagsig .gnmap
-oA
스캔 결과를 -oN, -oX, -oG 형식으로 모두 저장
nmap  192.168.1.1  -oA  hagsig
-안에
더 많은 정보를 출력(-vv 이상 사용 시 더 많은 정보 출력)
nmap -v  192.168.1.1
-디
디버깅 수준을 높임(-dd 이상 사용 시 더 높은 수준을 사용)
nmap -d  192.168.1.1
--이유
포트가 해당 상태인 이유를 출력
nmap --이유  192.168.1.1
--열려 있는
열려 있는 포트만 표시
nmap --open  192.168.1.1
--패킷 추적
전송 및 수신된 모든 패킷 표시
nmap --packet-trace  192.168.1.1
--iflist
호스트 인터페이스 및 경로 표시(디버깅 용)
nmap --iflist
--추가 출력
출력 결과를 파일에 덮어쓰지 않고 이어쓰고 싶을 시 사용
nmap  192.168.1.1  -oN hagsig.nmap --append-output
--resume <로그 파일 이름>
중단된 스캔을 다시 시작함
nmap --resume hagsig.file
--비대화형
백그라운드에서 Nmap 실행 시, 터미널을 제어하는 것을 방지함
nmap --비대화형  192.168.1.1
--stylesheet <경로 또는 URL>
스캔 결과를 XSL 스타일시트 형식으로 저장
nmap --stylesheet  192.168.1.1
--webxml
--stylesheet 옵션의 별칭
nmap --webxml  192.168.1.1
--스타일시트 없음
XSL 스타일 시트를 사용하지 않도록 지정
nmap --no-stylesheet  192.168.1.1
 

기타 옵션(MISC)

옵션
설명
예시
-6
IPv6 스캔 활성화
nmap -6  hagsig.com
-ㅏ
이 옵션을 사용할 시 OS 감지(-O), 버전 스캐닝(-sV), 스크립트 스캐닝(-sC), traceroute(--traceroute)를 포함한 스캔을 사용 할 수 있다. OS 감지 및 traceroute와 같은 권한(예: 루트 액세스)이 필요한 옵션은 해당 권한이 있는 경우에만 활성화된다.
nmap -A  192.168.1.1
--datadir <디렉터리 이름>
nmap-service-probes, nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes, nmap-os-db 파일대신 지정한 데이터 파일을 사용 할 수 있다.
nmap --datadir /hagsig  192.168.1.1
--servicedb <서비스 파일>
nmap-services 데이터 파일 대신 지정된 서비스 파일을 사용 할 수 있다. 이 옵션을 사용하면 빠른 스캔(-F)도 사용되게 된다.
nmap --datadir /hagsig  192.168.1.1
--versiondb <서비스 프로브 파일>
nmap-service-probes 데이터 파일 대신 지정된 서비스 파일을 사용 할 수 있다.
nmap --datadir /hagsig  192.168.1.1
--send-eth
IP(네트워크) 계층이 아닌 이더넷(데이터 링크) 계층에서 패킷을 보내도록 할 수 있다.
namp --send-eth  192.168.1.1
--send-ip
이더넷(데이터 링크) 계층이 아닌 IP(네트워크) 계층에서 패킷을 보내도록 할 수 있다.
nmap --send-ip  192.168.1.1
--특권
Unix 시스템에서 Nmap은 root 권한이 필요한 스캐닝을 수행 할 경우, guid가 0이 아니면 스캐닝을 실행하지않고 종료한다. 이 옵션을 사용할 경우 guid가 0이 아니더라도 root권한이 필요한 스캐닝을 수행할 수 있다. 
nmap --특권  192.168.1.1
--특권 없음
이 옵션은 --privileged 의 반대 기능을 가지고 있다. 
nmap --권한 없음  192.168.1.1
--릴리스 메모리
Nmap이 종료되기 전에 할된된 메모리를 해제하도록 한다.
nmap --release-memory  192.168.1.1
-안에
nmap 버전 정보 출력
nmap -V
-시간
nmap 도움말 출력
nmap -h

 

반응형