본문 바로가기

IT

[IT] 네트워크 스캔 NMAP 사용법, 포트스캔 PENETRATION TESTING TOOLS#1 NMAP

반응형

nmap

NMAP 명령어 및 사용법

 

 

<nmap STATE 결과에 대한 설명>

 

스캔결과 명 
 open  말그대로 열린 포트. 대상 호스트는 연결 요청에 대해 수락을 하고있음.
 closed  포트에 접근은 가능하지만 LISTENING 하고있지 않음.
 filtered  보안장비에 의해 필터링된 포트. 실제로 열려있을 수 있음.
 unfiltered  포트에 접근은 가능하지만 열렸는지 닫혔는지 확인할 수 없음.
 open | filtered  nmap이 열렸는지 필터링됐는지 결정할 수 없을때 출력됨.
 특정 명령에 한정하여 나타나는 결과. UDP, IP 프로토콜, FIN, NULL, Xmas 스캔
 closed | filtered  Nmap이 포트가 닫혔는지 아니면 필터링되었는지를 결정할 수 없을 때 출려됨. idle scan 에만 사용됨.

 



<nmap 옵션 정리>

 

 

 Option Category  Options  Value  Descriptions
 TARGET SPECIFICATION -iL <inputfilename> 특정 파일에 있는 호스트 리스트를 불러와 스캔하는 기능 (IP 주소, 호스트 이름, CIDR, IPv6 또는 옥텟 범위). 각 항목은 하나 이상의 공백, 탭 또는 줄 바꿈으로 구분되어야함.
-iR <num hosts> 임의의 대상을 스캔. 입력되는 값은 스캔할 대상의 IP 수. 0으로 설정시 무한대로 스캔. 
iR 0 비오는 오후 지루할때 사용하라고 하네요.
--exclude <host1>[,<host2> 지정한 리스트를 불러올때 제외할 대상 선택. 쉼표로 구분
 HOST DISCOVERY -sL   리스트 스캔이라 하며, 대상 호스트로 패킷을 보내지 않고 DNS쿼리 결과를 보여줌. 예로 'nmap -sL 192.168.10.0/24' 명령을 날리면 해당 C클래스에 속한 ip의 fqdn을 보여줌.
-sn   Ping 스캔. 단순히 대상에 대해서 ping 결과를 보여줌. sL 옵션과 더불어 대상 네트워크를 가볍게 파악할때 유용함.
-Pn   Ping 없음. ping을 날리는 과정을 생략하고 살아있다는 가정하에 포트스캔을 수행함. 즉, ICMP가 막혀있는 호스트를 스캔할 수 있음. 이 옵션 없이 ICMP가 막힌 호스트를 스캔할 경우 포트스캔이 되지 않음.
-PS/PA/PU/PY [portlist] 호스트의 반응을 확인하는 옵션. 각각 SYN, ACK 플래그만 설정하여 날리거나, UDP, SCTP 패킷을 보냄. 기본 80포트이며 지정 가능
-PE/PP/PM   모르겠음
-PO [protocol list] 모르겠음 
-n/-R   -n: 리버스도메인 안함(빠름), -R: 모든 대상에 대해 리버스도메인
--dns-servers   리버스도메인에 사용될 네임서버 지정
--system-dns   시스템 자체의 DNS를 사용함
 SCAN TECHNIQUES -sS   SYN스캔, 하프스캔이라고 한다. 대상으로부터 SYN+ACK 응답을 받을경우 열린포트로 인식하여 RST를 보내 연결을 끊는다. TCP 세션이 성립되지 않아 해당 시스템에 로그가 생기지 않는다.
-sT   기본 스캔 옵션이며 오픈스캔이라고 한다. SYN+ACK가 오면 열린거, RST+ACK가 오면 닫힌거. 대상 시스템에 로그가 남음.
 -sA    ACK 플래그만 설정한 스캔. open, closed 포트는 모두 RST를 반환하며 unfiltered를 출력함. 그외에 응답하지 않거나 특정 ICMP 오류 메시지를 다시 보내는 포트는 filtered. 대상 방화벽이 stateful한지, 단순히 SYN 패킷을 차단하는지 확인 가능
 -sW    ACK 스캔과 동일하지만 똑같은 RST패킷을 받을때 Window Size 필드를 확인함. 열려있는 포트의 경우 Window Size는 0이상이며 닫힌포트는 항상 0이라는 특징을 사용한 스캔
 -sM    Uriel Maimon이 발견하여 Maimon 스캔. FIN/ACK 플래그를 설정하여 패킷을 보내며 BSD 계열 OS를 대상으로 사용함. BSD는 열려있는 포트의 경우 패킷을 드랍하며 닫혀있으면 RST를 응답하는 특징이 있음.
 -sU    UDP 스캔. 열린 UDP 포트를 확인할때 사용
 -sN    NULL 스캔. 어떤 비트도 설정하지 않음 (TCP 플래그 헤더가 0).
 -sF    FIN 스캔. TCP FIN 비트 만 설정. RST응답은 포트가 막힘, 응답이 없으면 열려있거나 차단으로봄
 -sX    Xmas 스캔. FIN, PSH 및 URG 플래그를 설정. 
Null, FIN,Xmas 세가지는 방화벽 및 패킷필터링 라우터, IDS, IPS 를 우회할 수 있다고 하지만 옛날 얘기이며 정확도가 많이 떨어짐. Windows OS 대상으로는 적용안됨.
 --scanflags  <flags> 플래그를 수동으로 설정할 수 있음. URG, ACK, PSH, RST, SYN, FIN, ECE, CWR, ALL, NONE
 -sI  <zombie host[:probeport]>  idle스캔, 좀비스캔. nmap 최고의 스텔스 스캔 기능이라하며, 좀비서버를 이용하는 방식. 사용방법은 따로 올리겠음
 -sO    IP 프로토콜 스캔 (잘이해가 안감)
 -b  <FTP relay host>  FTP 바운스 스캔. 대상 네트워크의 방화벽 내부에 익명 접근이 가능한 FTP서버가 있다면 그걸 통해 내부를 스캔할 수 있는 기능. FTP서버가 데이터 채널을 생성할때 목적지를 검사하지 않는 설계의 취약점을 이용함. FTP Bounce Attack 이라고도 함
PORT SPECIFICATIONAND SCAN ORDER  -p  <port ranges>  포트 지정하여 스캔. '-p-' 는 0-65535 모두 스캔
 -F    100개의 알려진 포트만 스캔. 일반적으로 포트를 지정하지 않으면 1000개 검색
 -r    포트를 순차적으로 스캔(기본은 랜덤). ascending
SERVICE / VERSION DETECTION  -sV    프로토콜에 대한 서비스명, 버전 탐지
--version-intensity  <intensity>  버전 감지 강도 설정. 높을수록 정확하게 식별함. 기본값 7이며 1~9까지 설정할 수 있음.
--version-light    --version-intensity 2 와 같음. 스캔 속도가 빠름
--version-all    --version-intensity 9 와 같음
--version-trace    버전 감지 디버깅
 SCRIPT SCAN  -sC    NSE 스크립트셋을 이용하여 스캔. 각종 정보와 취약점등을 추가적으로 스캔할 수 있다. 경로: /usr/share/nmap/script
 OS DETECTION  -O    OS 식별
 --osscan-limit    좀 더 빠르게. 스캔할 필요가 없는 호스트는 건너뜀
 TIMING AND PERFORMANCE  -T  <0-5> 타이밍 옵션
-T 0 = paranoid: 5분 마다 순서대로 스캔 (IDS 탐지를 피할 수 있음)
-T 1 = sneaky: 15초 마다 스캔 (IDS 탐지를 피할 수 있음)
-T 2 = polite: 0.4초 마다 스캔
-T 3 = normal: 병렬 전송 (nmap 기본값)
-T 4 = aggressive: '--max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6' 와 동일
-T 5 = insane: '--max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --script-timeout 10m' 와 동일
--min-hostgroup
--max-hostgroup
<numhosts>  한번에 몇개의 호스트를 동시에 스캔할건지 설정.
 FIREWALL / IDS EVASION AND SPOOFING  -f   패킷을 조각내서 보냄. 패킷필터, IDS등의 탐지를 피하기위해 사용함. IP헤더 다음 패킷을 8바이트로 분할함. 추가적으로 --mtu 옵션을 줘서 오프셋 크기 조절 가능
 -D  <decoy1>[,<decoy2>][,ME][,...]  Cloak a scan with decoys (미끼를 이용한 은폐 스캔?) 여러개의 서버를 이용해 실제 스캔 출처를 못찾게 하는 기능인거 같은데 잘 이해가 안감.
 -S  <IP_Address>  IP Spoofing 기능. (어케 쓰는지 모르겠음)
 -e  <interface>  인터페이스 지정하여 패킷 보내는 옵션
 -g/--source-port  <portnumber>  스캔할때 Source Port 를 속이는 기능. -g와 --source-port는 같은 기능으로 보임
 --proxies    Proxy 기능. (개발중이라함)
 --spoof-mac    MAC 주소 Spoofing 기능
 --badsum    가짜 TCP / UDP 체크섬이있는 패킷 보내기
 OUTPUT  -oN  <filespec>  Normal 형식으로 출력
 -oX  <filespec>  XML 형식으로 출력
 -oS  <filespec>  s|<rIpt kIddi3 형식으로 출력.
 -oG    앞으로 없어질 예정
 -oA    모든 형식으로 출력. Normal, XML, script kiddie 세가지 형식의 파일로 모두 저장됨
 -v  <level>  verbose모드(상세). -v: 상세, -vv: 더 상세, -v3: 최고 상세
 -d  <level>  debugging 모드 -d, -dd, -d1~9
 --reason    포트 스캔 결과 상세. 호스트 응답 내용 확인 가능
 --open    열린 포트만 표시
 --packet-trace    스캔과정 패킷추적
--iflist     로컬 인터페이스와 경로 나열
 --append-output    결과를 파일로 저장할때 덮어씌우지 않음
 --resume    중단됐던 스캔 재개
 MISC  -6    IPv6 스캔
 -A    OS 검색 ( -O), 버전 검색 ( -sV), 스크립트 검색 ( -sC) 및 traceroute ( --traceroute)를 한번에 진행
 -V    nmap 버전 확인
 -h    도움말

 

 

반응형

'IT' 카테고리의 다른 글

[IT] Tor Proxychains를 이용한 NMAP 익명 포트 스캔  (0) 2018.10.29