nmap 스캔 도구

oogu ㅣ 2022. 7. 2. 16:02

@ 04_nmap 스캔 도구

 - 시스템 운영 체제 정보, 활성화된 서비스 이름/버전 및 포트 번호를 스캔하는 정보 수집 도구이다.
 - 또한, 스크립트를 이용하여 취약점 점검 및 세부 스캔이 가능하다.
 - nmap 사이트 : nmap.org
 - 도움말 : nmap -h

root@kali:~# whereis nmap



root@kali:~# ls -l /usr/bin/nmap



root@kali:~# ls /usr/share/nmap


root@kali:~# ls /usr/share/nmap/scripts


~ 중간 생략 ~

root@kali:~# file /usr/share/nmap/scripts/smb-vuln-ms17-010.nse 



root@kali:~# cat /usr/share/nmap/scripts/smb-vuln-ms17-010.nse 

~ 중간 생략 ~


1. TCP Open 스캔

 - TCP Flag 중에 'SYN'가 설정된 TCP 세그먼트를 전송하여 스캔하는 방식이다.
 - 이 방식은 공격자와 타겟이 'TCP 3-Way' 핸드쉐이킹을 실시하여 TCP 연결이 성립되기 때문에 잘 사용하지 않는다.

 - TCP 연결이 성립되면 서버에서 로그가 남기때문이다.

 

포트 Open 상태                                                              포트 Close 상태
root@kali:~# nmap -sT -p 22 192.168.20.200                root@kali:~# nmap -sT -p 26 192.168.20.200

 

                            
공격자                      타겟                                                공격자                    타겟

Syn ->                                                                              Syn ->
                                   <- Syn+Ack                                                                 <- RST+Ack
Ack ->

RST+Ack ->



2. TCP Half-Open 스캔

 - TCP Flag 중에 'SYN'가 설정된 TCP 세그먼트를 전송하여 스캔하는 방식이다.
 - 공격자는 타겟과 TCP 연결이 성립되지 않기 때문에 잘사용하는 스캔 방법이다.

포트 Open 상태                                                       포트 Close 상태      
root@kali:~# nmap -sS -p 22 192.168.20.200         root@kali:~# nmap -sS -p 26 192.168.20.200

공격자                            타겟                                   공격자                       타겟

Syn ->                                                                      Syn ->
                                      <- Syn+Ack                                                         <- RST+Ack
RST ->



3. TCP Fin 스캔

 - TCP Flag 중에 'FIN'가 설정된 TCP 세그먼트를 전송하여 스캔하는 방식이다.

포트 Open 상태                                                          포트 Close 상태
root@kali:~# nmap -sF -p 22 192.168.20.200            root@kali:~# nmap -sF -p 26 192.168.20.200

공격자                           타겟                                       공격자                        타겟

Fin ->                                                                          Fin ->
                                      <- X 응답                                                                  <- RST+Ack



4. TCP Null 스캔

 - TCP Flag를 설정하지 않고 TCP 세그먼트를 전송하여 스캔하는 방식이다.

포트 Open 상태                                                           포트 Close 상태
root@kali:~# nmap -sN -p 22 192.168.20.200            root@kali:~# nmap -sN -p 26 192.168.20.200

공격자                          타겟                                        공격자                          타겟

Null ->                                                                          Null ->
                                     <- X 응답                                                                     <- RST+Ack



5. TCP X-Mas 스캔

 - TCP Flag 중에 'URG', 'PSH', 'FIN'가 설정된 TCP 세그먼트를 전송하여 스캔하는 방식이다.

포트 Open 상태                                                    포트 Close 상태
root@kali:~# nmap -sX -p 22 192.168.20.200      root@kali:~# nmap -sX -p 26 192.168.20.200

공격자                               타겟                             공격자                                타겟

URG, PSH, FIN ->                                                 URG, PSH, FIN ->
                                          <- X 응답                                                               <- RST+Ack



6. UDP 스캔

포트 Open 상태                                                     포트 Close 상태
root@kali:~# nmap -sU -p 53 192.168.20.200       root@kali:~# nmap -sU -p 54 192.168.20.200

공격자                          타겟                                  공격자                                타겟

UDP 패켓 ->                                                          UDP 패켓 ->
                                     <- 응답                                                                        <- ICMP Unreachable



7. ping(arp) 스캔

 - 공격자가 ARP 요청 메세지를 브로드케스트로 전송하여 ARP 응답 여부에 따라서 시스템 상태를 확인할 수 있다.
 - 단, ARP 요청 메세지 및 ARP 응답 메세지를 이용하는 방식이기 때문에 같은 네트워크 안에서만 가능하다.

시스템 연결 상태 O                                              시스템 연결 상태 X
root@kali:~# nmap -sP 192.168.20.200              root@kali:~# nmap -sP 192.168.20.206

공격자                        타겟                                   공격자                               타겟

ARP 요청 ->                                                         ARP 요청 ->
                                   <- ARP 응답                                                                <- X ARP 응답



6. 자주 사용하는 nmap 옵션 

 -sS           TCP Half-Open 스캔
 -sV           서비스 버전
 -O            운영체제 정보
 -F             기본 포트 보다 범위를 줄여서 스캔

root@kali:~# nmap -sS -sV -O -F 192.168.20.200


 - 만약, 포트 번호 범위를 지정할 경우에는 '-p' 옵션을 사용한다. 이때, '-F' 옵션을 사용하면 오류메세지가 출력된다.

root@kali:~# nmap -sS -sV -p 1-50 192.168.20.200




root@kali:~# nmap -sS -sV -p 80,443 192.168.20.200


 - '/usr/share/nmap/nmap-services' 파일에 정의된 가장 많이 쓰는 포트순으로 스캔할 수 있다.

root@kali:~# nmap --top-ports 1000 192.168.20.200




 - '-A' 옵션을 이용하면 각각의 서비스에 대한 상세 내용까지 스캔할 수 있다.

root@kali:~# nmap -sS -sV -O -A -p 1-50 192.168.20.200



[참고] 네트워크 대역 스캔

 - 다음은 '192.168.20.1 ~ 192.168.20.254' 시스템을 타켓으로 nmap 스캔을 실시한다.

root@kali:~# nmap -sS -sV 192.168.20.0/24



7. nmap 스캔 결과 파일 추출

 - nmap 스캔 결과를 파일로 추출하려면 '-oA' 옵션을 사용한다.

root@kali:~# mkdir nmapscan
root@kali:~# cd nmapscan
root@kali:~/nmapscan# nmap -sS -sV -O 192.168.20.200 -oA CentOS > /dev/null
root@kali:~/nmapscan# 
root@kali:~/nmapscan# ls -l



root@kali:~/nmapscan# cat CentOS.nmap




[참고] 출력 재지정을 이용하여 스캔 결과 추출

root@kali:~/nmapscan# nmap -sS -sV -O 192.168.20.200 > CentOS.scan
root@kali:~/nmapscan# ls -l CentOS.scan
-rw-r--r-- 1 root root 1165  5월 14 16:13 CentOS.scan

root@kali:~/nmapscan# cat CentOS.scan
~ 중간 생략 ~


Ex) nmap 스캔 파일 추출

 - '-oA' 옵션을 이용하여 Windows2008(192.168.20.201), Windows7(192.168.20.202)를 스캔하여 파일로 추출한다.
 - 이때, 파일명은 각각 Windows2008, Windows7으로 한다.

root@kali:~/nmapscan# nmap -sS -sV -O 192.168.20.201 -oA Windows2008 > /dev/null
root@kali:~/nmapscan# nmap -sS -sV -O 192.168.20.202 -oA Windows7 > /dev/null
root@kali:~/nmapscan# ls
CentOS.gnmap  CentOS.scan  Windows2008.gnmap  Windows2008.xml  Windows7.nmap
CentOS.nmap   CentOS.xml   Windows2008.nmap   Windows7.gnmap   Windows7.xml

root@kali:~/nmapscan# cat Windows2008.nmap
root@kali:~/nmapscan# cat Windows7.nmap



8. Zenmap

root@kali:~/nmapscan# zenmap &


Ex) Zenmap 스캔 파일 추출

 - Zenmap을 이용하여 Meta(192.168.20.204)를 스캔하여 파일로 추출한다.
 - 이때, 파일명 'Meta.xml'로 하며, '/root/nmapscan' 디렉토리에 저장한다.

Save Scan

저장
root@kali:~/nmapscan# ls -l Meta.xml 



root@kali:~/nmapscan# cd


9. 스크립트를 이용한 nmap

 - Windows2008, Windows7는 스크립트를 이용하여 스캔을 하면 'ms17-010' 취약점이 있는 것을 확인할 수 있다.

root@kali:~# nmap -p 445 192.168.20.201 --script=smb-vuln-ms17-010.nse 




root@kali:~# nmap -p 445 192.168.20.202 --script=smb-vuln-ms17-010.nse 




 - Windows10는 스크립트를 이용하여 스캔을 하면 'ms17-010' 취약점이 없는 것을 확인할 수 있다.

root@kali:~# nmap -p 445 192.168.20.1 --script=smb-vuln-ms17-010.nse 

'시스템 보안' 카테고리의 다른 글

레지스터 구조  (0) 2022.07.06
Metasploit  (0) 2022.07.04
Bash Shellshock 취약점  (0) 2022.07.03
Bind&Reverse TCP  (0) 2022.06.30