Web安全學習筆記之Nmap腳本使用指南


 

nmap是一個網絡連接端掃描軟件,用來掃描網上電腦開放的網絡連接端。確定哪些服務運行在哪些連接端,並且推斷計算機運行哪個操作系統。它是網絡管理員必用的軟件之一,以及用以評估網絡系統安全。

—— 來自百度百科

 

那么今天帶大家來揭露Nmap的另一個面紗 ,那就是腳本。 

在某些時候,我們大部分都使用Nmap進行掃描,然后再通過Metasploit進行漏洞利用,但是這個過程比較繁瑣,一個個漏洞去驗證的話還需要打開MSF去設置參數,最后run/exploit(不包括自動化,所以不要噴了)。

那么我們就要有必要認識一下Nmap的擴展腳本啦~

 

0x01 腳本參數

這個小例子中我會演示幾個基本的腳本使用方式,但是更多的還是需要大家掌握使用腳本的技巧,然后自行發掘了。筆者在此不概述太多。

SCRIPT SCAN:
  -sC: equivalent to --script=default
  --script=<Lua scripts>: <Lua scripts> is a comma separated list of
           directories, script-files or script-categories
  --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts
  --script-args-file=filename: provide NSE script args in a file
  --script-trace: Show all data sent and received
  --script-updatedb: Update the script database.
  --script-help=<Lua scripts>: Show help about scripts.
           <Lua scripts> is a comma-separated list of script-files or
           script-categories.

上面這部分是Nmap關於腳本的參數,下面一個一個來介紹:

-sC 是指的是采用默認配置掃描,與--script=default參數等價

--script=腳本名稱,腳本一般都在Nmap的安裝目錄下的scripts目錄中

那么Linux下可以查看腳本數量:

ls /usr/share/nmap/scripts/ | wc -l
516

那么我當前的Nmap是有516個很使用的漏洞利用、工具腳本。也可以使用下面一條命令導出 ~

ls /usr/share/nmap/scripts/ | sed 's/.nse//' > scripts.list

那么所有的腳本名稱都在scripts.list中了,這樣做的原因是因為我們傳遞腳本名稱的時候,不能寫腳本的文件擴展名(.nse)。

--script-args=key1=value1,key2=value2... 該參數是用來傳遞腳本里面的參數的,key1是參數名,該參數對應value1這個值,那么有更多的參數,使用逗號連接,后面例子中會給大家講解。

–script-args-file=filename,使用文件來為腳本提供參數。 

--script-trace 如果設置該參數,則所有的腳本收發請求過程。

--script-updatedb 在Nmap的scripts目錄里有一個script.db,該文件中保存了當前Nmap可用的腳本,類似於一個小型數據庫,如果我們開啟nmap並且調用了此參數,則nmap會自行掃描scripts目錄中的擴展腳本,進行數據庫更新。

--script-help=腳本名稱,調用該參數后,Nmap會輸出該腳本名稱對應的腳本使用參數,以及詳細介紹信息。

 

0x02 實戰

現在我們用一個很簡單的腳本,telnet爆破腳本,我們搜索一下:

root@ThundeRobot:/usr/share/nmap# ls /usr/share/nmap/scripts/ | grep telnet
telnet-brute.nse
telnet-encryption.nse

那么可以看到,返回了兩個nse腳本名稱,那么第一個就是telnet爆破的腳本了,如果不清楚的話,可以使用上面剛介紹過的--script-help參數。

root@ThundeRobot:/usr/share/nmap# nmap --script-help=telnet-brute

Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-28 03:11 CST

telnet-brute
Categories: brute intrusive
https://nmap.org/nsedoc/scripts/telnet-brute.html
  Performs brute-force password auditing against telnet servers.

可以看到 有一個Nmap的文檔地址,正是我們現在想要使用的腳本的詳細信息。

nmap -p 23 --script telnet-brute --script-args userdb=myusers.lst,passdb=mypwds.lst,telnet-brute.timeout=8s <target>

筆者就直接照搬官網文檔的例子了。經常做安全測試的朋友肯定看一眼就會用了。

最后那個 target指的是我們的目標地址。userdb是用戶名字典,passdb是密碼字典,timeout是每次連接之間的等待超時時間。

當然了,我們也可以直接查看腳本源文件

---
-- @usage
--   nmap -p 23 --script telnet-brute \
--      --script-args userdb=myusers.lst,passdb=mypwds.lst \
--      --script-args telnet-brute.timeout=8s \
--      <target>
--
-- @output
-- 23/tcp open  telnet
-- | telnet-brute:
-- |   Accounts
-- |     wkurtz:colonel
-- |   Statistics
-- |_    Performed 15 guesses in 19 seconds, average tps: 0
--
-- @args telnet-brute.timeout   Connection time-out timespec (default: "5s")
-- @args telnet-brute.autosize  Whether to automatically reduce the thread
--                              count based on the behavior of the target
--                              (default: "true")

author = "nnposter"
license = "Same as Nmap--See https://nmap.org/book/man-legal.html"
categories = {'brute', 'intrusive'}

portrule = shortport.port_or_service(23, 'telnet')

上方這塊,可以看到有一個例子,還有常規的掃描結果。那么加粗的這行是筆者故意為之,因為在某些情況下,管理員可能會更改telnet服務的端口(這里不只是光指Telnet),那么我們就無法使用這個腳本了。聰明的你一定想到了更改上方的23端口吧!但是這還不夠靈活~ 我們可以將端口號自制成一個變量,通過我們的腳本參數傳遞進去。這里不再過多贅述,有違文章主體。

等等……還記得我們的-sC參數嗎?其實它等價與--script=default,那么default調用了那些腳本呢?

在這里: 

default NSE Category

點進去你一定會驚訝,為什么會調用那么多,而且會影響掃描速度(懶人方案)。所以最好的方案就是根據服務去手動調用合適的腳本。

下面我們來實戰一下,今日剛發現的運營商漏洞,就出在Telnet上。

我家上網是沒有分配公網IP的,就是路由那里是一個內網,於是我先用nmap探測了一下這個內網,發現有某些網絡設備。

Nmap scan report for bogon (10.14.16.106)
Host is up (0.021s latency).
Not shown: 95 filtered ports
PORT      STATE SERVICE
23/tcp    open  telnet
53/tcp    open  domain
1723/tcp  open  pptp
8081/tcp  open  blackice-icecap
49152/tcp open  unknown

作為一個搞Web安全的,首先去看的是8081……但是未果。於是准備從Telnet碰碰運氣,會不會運營商也用若口令?

我把字典放到了 /usr/share/nmap/nselib/data,因為這個目錄中是專門存放Nmap默認字典的。

掃描命令如下:

nmap -p 23 -Pn --script=telnet-brute --script-args=userdb=admin.lst,passdb=passwords.lst,telnet-brute.timeout=3s --script-trace 10.14.16.106

在這我用--script-trace開啟了數據的收發開關:

經過耐心等待,得到爆破結果:

 

看來都是真的,童話原來不是謊言。

我們登錄看看~

What ? 多協議路由?

 

為此我還復習了以前干網絡工程的知識。這個不談了。我們繼續再來個例子 ~

root@ThundeRobot:/usr/share/nmap/nselib/data# nmap --script=http-ls vault.centos.org

Starting Nmap 7.01 ( https://nmap.org ) at 2017-04-28 04:01 CST
Nmap scan report for vault.centos.org (109.72.83.61)
Host is up (0.38s latency).
Other addresses for vault.centos.org (not scanned): 2607:ff28:0:28:5054:ff:fe4b:3e8a
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
| http-ls: Volume /
|   maxfiles limit reached (10)
| SIZE  TIME               FILENAME
| -     19-Aug-2009 01:36  2.1/
| 1.2M  19-Aug-2009 01:36  2.1/centos2-scripts-v1.tar
| -     07-Sep-2004 13:04  2.1/extras/
| -     13-May-2004 03:26  2.1/final/
| -     15-Apr-2004 05:11  2.1/i386/
| -     08-Jan-2004 00:50  2.1/source/
| -     30-Dec-2003 06:18  2.1/updates/
| -     31-Jul-2005 16:05  3.1/
| -     20-Apr-2012 10:14  3.1/SRPMS/
| -     15-Sep-2004 14:17  3.1/addons/
|_
873/tcp open  rsync

Nmap done: 1 IP address (1 host up) scanned in 58.35 seconds
root@ThundeRobot:/usr/share/nmap/nselib/data# 

這邊是掃描了的列目錄的安全隱患。

HTTP認證爆破:

 nmap --script=http-brute dvwa.vuln.leafsec.com

 

0X03 延伸 

漏洞利用方面:vuln NSE Category

權限驗證方面:auth NSE Category

暴力破解方面:brute NSE Category

服務信息發現:discovery NSE Category

DOS攻擊方面:dos NSE Category

漏洞利用方面:

外部擴展方面:external NSE Category (集成了shodanAPI)

FUZZ測試方面:fuzzer NSE Category

一些針對的服務入侵模塊:intrusive NSE Category

惡意后門方面:malware NSE Category

版本識別:version NSE Category

auth
broadcast
brute
default
discovery
dos
exploit
external
fuzzer
intrusive
malware 
safe
version
vuln 

all

以上參數都可以作為--script的通配參數,例如:--script=vuln

--script=all 調用所有腳本掃描 

 

0x04 總結

這篇文章沒什么技術含量,只是彈性較高,算是一個小干貨了,Nmap可以做數據庫、系統、協議、網絡等方面的評估。就是因為插件很豐富,省時省力。也希望大家在使用工具的同時細心一點,多做總結,這些腳本都是可以繼續優化起來的。那么就先到此結束啦~ 另外關於字典,我們可以讓nmap的字典更加強大,全部放到nmap/nselib/data就可以了,方便后期的調用與整理。

 

參考

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM