본문 바로가기

연구문서/Nmap NSE 분석

Nmap NSE 분석 - http-screenshot.nse

반응형

※ 주의사항

아래 공격 코드는 연구 목적으로 작성된 것이며, 허가 받지 않은 공간에서는 테스트를 절대 금지합니다.

악의 적인 목적으로 이용할 시 발생할 수 있는 법적 책임은 자신한테 있습니다. 이는 해당 글을 열람할 때 동의하였다는 것을 의미합니다.

해당 문서의 저작권은 해당 저자에게 모두 있습니다. 상업적으로 이용할시 법적 조치가 가해질 수 있습니다.

 


개요

웹 서비스에 응답한 결과에 대한 것을 PDF 파일 형식이나 이미지 형식으로 변환해주는 wkhtmltopdf  과 Nmap nse를 결합하여 모의침투에서도 활용할 수 있는 도구를 소개합니다.


 

상세 분석

명령어는 아래와 같이 진행을 하면 됩니다. wkhtmltoimage는 바이너리 파일만 제공을 하기 때문에 /usr/bin 디렉터리에 이동을 시키고, nse 스크립트는 Namp script 폴더에 이동을 시킵니다.

 

root@bt:~# wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2
--2012-06-15 21:28:51--  http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2
Resolving wkhtmltopdf.googlecode.com... 74.125.31.82, 2404:6800:4008:c01::52
Connecting to wkhtmltopdf.googlecode.com|74.125.31.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11393207 (11M) [application/octet-stream]
Saving to: `wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2'

100%[===================================================================================>] 11,393,207   331K/s   in 34s    

2012-06-15 21:29:25 (332 KB/s) - `wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2' saved [11393207/11393207]

root@bt:~# tar -jxvf wkhtmltoimage-0.11.0_rc1-static-i386.tar.bz2
tar: Record size = 8 blocks
wkhtmltoimage-i386
root@bt:~# cp wkhtmltoimage-i386 /usr/local/bin/
root@bt:~# git clone git://github.com/SpiderLabs/Nmap-Tools.git
Initialized empty Git repository in /root/Nmap-Tools/.git/
remote: Counting objects: 15, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 15 (delta 3), reused 15 (delta 3)
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (3/3), done.
root@bt:~# cd Nmap-Tools/NSE/
root@bt:~/Nmap-Tools/NSE# cp http-screenshot.nse /usr/local/share/nmap/scripts/
root@bt:~/Nmap-Tools/NSE# nmap --script-updatedb

모두 이동을 시킨 뒤에 nmap 명령어를 통해서 default 스크립트와 다운로드 받은 http-screenshot.nse 스크립트를 실행시킵니다.

 

root@bt:/usr/local/share/nmap/scripts# nmap -A --script=default,http-screenshot 192.168.58.130 -oA nmap-local

Starting Nmap 6.00 ( http://nmap.org ) at 2012-06-15 21:37 EDT
Nmap scan report for 192.168.58.130
Host is up (0.00024s latency).
Not shown: 992 closed ports
PORT     STATE SERVICE      VERSION
25/tcp   open  smtp         Microsoft ESMTP 6.0.2600.5512
80/tcp   open  http         Apache httpd
| http-screenshot: 
|_  Saved to screenshot-nmap-192.168.58.130:80.png
135/tcp  open  msrpc        Microsoft Windows RPC
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds Microsoft Windows XP microsoft-ds
1027/tcp open  msrpc        Microsoft Windows RPC
1947/tcp open  http         Aladdin HASP license manager 12.31
| http-screenshot: 
|_  failed (verify wkhtmltoimage-i386 is in your path)
3306/tcp open  mysql        MySQL
MAC Address: 00:0C:29:63:6A:68 (VMware)
Device type: general purpose
Running: Microsoft Windows XP
OS CPE: cpe:/o:microsoft:windows_xp::sp2 cpe:/o:microsoft:windows_xp::sp3
OS details: Microsoft Windows XP SP2 or SP3
Network Distance: 1 hop
Service Info: Host: ngnicky-e6cf203; OS: Windows; CPE: cpe:/o:microsoft:windows

TRACEROUTE
HOP RTT     ADDRESS
1   0.24 ms 192.168.58.130

OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.40 seconds 



정보를 획득하게 되면 응답으로 받은 값을 사진 파일로 변환을 하게 됩니다. html 파일 형식을 png 파일로 변환을 하는 것이죠. screenshot-nmap-192.168.58.130:80.png 을 클릭하면 아래와 같은 화면이 나옵니다.

불필요한 php 파일을 찾아낸것이죠? 수동으로 하나하나 접근을 하지 않더라도 결과까지 이미지로 만들어주니 진단할 때 매우 편리할 거라고 판단이 됩니다.



 


NSE 스크립트 파일은 [여기]에서 다운로드 가능합니다.

 

아래 소스를 보면 매우 간단한 구조 입니다. NSE는 단지 wkhtmltoimage-i386 실행을 포트별로 연결해주는 역할밖에 없습니다. 아이디어뿐이죠!!!!

 

 

action = function(host, port)

         -- Check to see if ssl is enabled, if it is, this will be set to "ssl"

         local ssl = port.version.service_tunnel

 

         -- The default URLs will start with http://

         local prefix = "http"

 

         -- Screenshots will be called screenshot-namp-<IP>:<port>.png

        local filename = "screenshot-nmap-" .. host.ip .. ":" .. port.number .. ".png"

 

         -- If SSL is set on the port, switch the prefix to https

         if ssl == "ssl" then

                 prefix = "https"

         end

 

         -- Execute the shell command wkhtmltoimage-i386 <url> <filename>

         local cmd = "wkhtmltoimage-i386 -n " .. prefix .. "://" .. host.ip .. ":" .. port.number .. " " .. filename .. " 2> /dev/null   >/dev/null"

 

         ret = os.execute(cmd)

 

         -- If the command was successful, print the saved message, otherwise print the fail message

         local result = "failed (verify wkhtmltoimage-i386 is in your path)"

 

         if ret == 0 then

                 result = "Saved to " .. filename

         end

 

         -- Return the output message

         return stdnse.format_output(true,  result)

 

end

 

 

실제 이 도구를 활용하였을 때 업무 효율성은 느껴지는 속도는 10배정도 빨라집니다. 그리고, 그만큼 취약점을 찾아내는 속도 및 갯수는 더욱더 많아지는것을 확인하였습니다.


참고 URL 및 도서

http://blog.spiderlabs.com/2012/06/using-nmap-to-screenshot-web-services.html 


반응형