Back

[HACKING] NMAP Part2 - NSE(Nmap Script Engine)을 이용한 취약점 스캐닝(Vulnerability scan with NSE Script)

정말 오랜만에 글 작성하는 것 같네요. 매일 정신없이 하루를 보내고, 당분간은 쭉 그럴거 같습니다.. 지난번 nmap 정리에 대한 이야기의 연장선으로 NSE에 대해 잠깐 볼까합니다.


[[HACKING] NMAP Part1 - nmap을 이용한 여러가지 네트워크 스캔 기법(network scan with nmap)](http://www.hahwul.com/2016/03/hacking-nmap-part1-nmap-network-scan.html) 
[[HACKING] NMAP Part2 - NSE(Nmap Script Engine)을 이용한 취약점 스캐닝(Vulnerability scan with NSE Script)](http://www.hahwul.com/2016/03/hacking-nmap-part2-nsenmap-script.html) 

Nmap script 인 NSE는 nmap을 통해 네트워크 스캔을 진행하거나, 취약점 진단을 수행할 때 요긴하게 쓰일 수 있는 스크립트입니다. Lua로 작성되어 있으며 nmap을 통해 포트스캔, 네트워크 접근 이외에도 더 넓은 범위의 체킹이 가능하게 해주는 중요한 도구지요.

NSE(Nmap Script Engine)?

위에서도 대충 설명드렸지만 NSE는 nmap에서 사용되는 script 입니다. lua로 개발되었으며 아래와 같이 5개 카테고리의 script 를 가지고 있습니다.

  1. Network discovery
  2. More sophisticated and accurate OS version detection
  3. Vulnerability detection
  4. Backdoor detection
  5. Vulnerability exploitation

NSE Update & NSE List Check

nse script update는 nmap 사용 시 –script-update, –script-updatedb 옵션으로 업데이트를 진행할 수 있습니다.

#> nmap –script-update #> nmap –script-updatedb

Starting Nmap 6.47 ( http://nmap.org ) at 2016-03-14 12:19 KST NSE: Updating rule database. NSE: Script Database updated successfully. Nmap done: 0 IP addresses (0 hosts up) scanned in 0.51 seconds

위 명령을 수행하면 nmap.org에서 추가된 nse script 를 받아 nmap 디렉토리에 저장하게 되지요. 저장된 nse 파일은 find나 locate 명령으로 찾아볼 수 있습니다.

#> locate *.nse /usr/share/nmap/scripts/acarsd-info.nse /usr/share/nmap/scripts/address-info.nse /usr/share/nmap/scripts/afp-brute.nse /usr/share/nmap/scripts/afp-ls.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/afp-serverinfo.nse /usr/share/nmap/scripts/afp-showmount.nse ..snip..

이제 nse를 사용하기 위한 준비 작업은 끝났습니다.

NSE Use

NSE의 사용은 nmap에서 –script 옵션을 통해 사용이 가능하며 인자값으로 해당 모듈 이름이 들어가게 되면 해당 nse를 사용하여 스캔을 진행합니다.

#> nmap –script ajp-auth

위와 같이 명령 시 ajp 인증 프로토콜에 대해 스캔을 진행합니다. 한번에 여러가지 스크립트를 사용하기 위해 * 등을 통해 규칙을 지정해줍니다.

간단한 예시로 취약성에 대해 스캔하는 모듈을 찾는다고 하면 아래와 같이 locate 명령을 줄 수 있겠지요.

#> locate vul.nse /usr/share/nmap/scripts/afp-path-vuln.nse /usr/share/nmap/scripts/ftp-vuln-cve2010-4221.nse /usr/share/nmap/scripts/http-huawei-hg5xx-vuln.nse /usr/share/nmap/scripts/http-iis-webdav-vuln.nse /usr/share/nmap/scripts/http-vmware-path-vuln.nse /usr/share/nmap/scripts/http-vuln-cve2009-3960.nse ..snip..

또한 nmap에서 스크립트를 사용할때도 동일한 방법으로 가능합니다. #> nmap –script “http-” #> nmap –script “ssh

Category Scan(Default/Safe/etc..)

위에서는 각각 nse 스크립트를 사용하는 방법에 대해 보았다면 이번에는 좀 더 넓은 범위의 스캔 옵션을 볼까합니다. (귀찮아서 저도 많이 쓰는 옵션이라죠..)

nse에 지정된 category를 통해서 한번에 여러가지 script에 대해 동작을 진행할 수 있습니다. 대표적으로 default 그룹과 safe 그룹등이 있겠네요.

Default Scan Default Scan은 타겟 도메인의 전반적인 항목에 대해 스캔을 수행하는 옵션입니다. –script 옵션에 default를 인자값으로 주게되면 테스트를 진행하게 됩니다.

#> nmap –script=default 127.0.0.1

Starting Nmap 6.47 ( http://nmap.org ) at 2016-03-14 12:21 KST Nmap scan report for 127.0.0.1 Host is up (0.00096s latency). Not shown: 997 filtered ports PORT STATE SERVICE 80/tcp open http |_http-generator: XpressEngine |_http-methods: No Allow or Public header in OPTIONS response (status code 302) | http-title: MAIN

Safe Scan은 Safe 카테고리에 있는 항목들로 구성된 NSE 그룹입니다.

Safe Scan #> nmap –script=safe 127.0.0.1 ..snip..

Traceroute

#> nmap –script-trace

NSE Script List

  1. 설치된 NSE 스크립트. locate 명령으로 쉽게 찾을 수 있습니다. 물론 find 명령으로도 가능하지요 : ) #> locate *.nse

  2. nmap에서 제공하는 nse 스크립트 description & list https://nmap.org/nsedoc/

Reference

https://nmap.org/book/man-nse.html https://nmap.org/nsedoc/ https://hackertarget.com/7-nmap-nse-scripts-recon/

Licensed under CC BY-NC-SA 4.0
Last updated on Jul 10, 2021 01:05 +0900