3/27/2016

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

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


[HACKING] NMAP Part1 - nmap을 이용한 여러가지 네트워크 스캔 기법(network scan with nmap)
[HACKING] NMAP Part2 - NSE(Nmap Script Engine)을 이용한 취약점 스캐닝(Vulnerability scan with NSE Script)

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/


HAHWUL

Security engineer, Gopher and H4cker!

Share: | Coffee Me:

0 개의 댓글:

Post a Comment