Nmap使用教程(進階篇)

什麼是防火牆?

防火牆是用來控制網絡訪問的軟件或硬件。分爲以下兩類:1、基於主機的防火牆;2、基於網絡的防火牆。 <font color=green>基於主機的防火牆</font>

這是在單臺主機上運行的軟件,用來控制入站流量(從網絡向主機)和出站流量(從主機向網絡)。這些軟件安裝於操作系統之上,常見例子就是Linux上面的iptables和Windows上的Zone Alarm。 <font color=green>基於網絡的防火牆</font>

這些可以是硬件設備或軟件,或者硬件設備和軟件相結合,用來保護來自於未受保護的入站通信。

防火牆被安裝在受保護和不受保護的網絡之間,它們會查看所有的通信,並通過設置規則來控制入站和出站的通信。

進階掃描技術

逃避或繞過防火牆

bypass或規避或逃避無非是進入系統的另一種方式。管理員使用防火牆或IDS / IPS阻止惡意攻擊或垃圾郵件。但是從攻擊者的角度來看,他會想辦法繞過防火牆規則;Nmap有很多辦法繞過防火牆。 ####1、碎片化

Nmap發送8個字節的數據包繞過防火牆/IDS/IPS。這種技術已經很古老了,但是在防火牆配置不當的時候依舊有用。

nmap -f host

MTU,最大傳輸單元,它是碎片化的別名,我們可以指定它的大小。

Nmap --mtu 16 host #使用16字節的數據包,我們可以指定自定義數據包大小爲8的倍數。

####2、誘餌

這種類型的掃描是非常隱蔽且無法察覺。目標由多個假冒或僞造IP地址進行掃描。這樣防火牆就會認爲攻擊或掃描是通過多個資源或IP地址進行,於是就繞過了防火牆。

誘餌在初始的ping掃描(使用ICMP,SYN,ACK等)使用,在實際的端口掃描階段使用。誘餌在遠程操作系統檢測(-O)期間也使用。誘餌不在版本檢測工作或TCP連接掃描中使用。

這實際上在目標看來是由多個系統同時掃描,這使得防火牆更難追查掃描的來源。

我們這虛擬的實驗環境中測試一下,把192.168.50.12作爲目標主機,192.168.50.10是發起掃描主機,192.168.50.16和192.168.50.15是誘餌主機。在目標主機(這裏使用的是Kali Linux)輸入以下命令:

nmap -D192.168.50.15,192.168.50.16,ME -p 21,22,80,443 -Pn 192.168.50.12

-D開關表示實施一次誘餌掃描,-D後面緊跟選擇好的誘餌主機的IP地址列表並且這些主機都在線。-Pn不發ping請求包,-p選擇掃描的端口範圍。“ME”可以用來代替輸入自己主機的IP。

以下是掃描結果:

在網絡上。我們來看一看流量(可以使用wireshark): 現在觀察源地址那一列,會發現我們使用的誘餌主機構成了網絡流量的主要記錄。只要使用足夠多的誘餌主機,就會在短時間內產生大量的記錄,從而在進行掃描時完成迷惑和延遲網絡管理員的注意。

####3、空閒掃描

攻擊者將首先利用一個空閒的系統並用它來掃描目標系統。

掃描的工作原理是利用某些系統中採用可預見的IP序列ID生成。爲了使空閒掃描成功,殭屍主機的系統必須是在掃描時間處於閒置狀態。對於任何疑問,請參考之前的文章。

在這種技術中會隱藏攻擊者的IP地址。

01、認識空閒主機

空閒主機是一臺可用作欺騙目標IP地址且具有可預設的IP ID序列號的機器。

02、尋找空閒主機

尋找空閒主機我們可以藉助Nmap提供的ipidseq腳本。具體有兩種尋找方式。第一種是全網段尋找,這種方式會在我們主機所在的網段進行探測尋找空閒主機。具體命令是nmap -p80 --open --script ipidseq /24。第二種是網上隨機式掃描,這種方式會在網上隨機尋找空閒主機。具體命令是:nmap -p80 --open --script ipidseq -iR 200。(-iR選項代表隨機選擇目標,200代表隨機選擇目標的數量,--open代表只選擇端口開放狀態的空閒主機)

注意:紅框輸出結果只用作參考,在空閒掃描中存在許多不確定性,不是說是空閒主機就可以成功利用

04、開啓空閒掃描

開啓空閒掃描只需要執行以下命令:

nmap –Pn -sI zombie target        #-sI選項調用空閒掃描,-Pn關閉主機發現操作

在空閒掃描的時候使用網上隨機獲取的空閒主機可能會出現ip地址與目標ip路徑距離較遠,使得空閒主機之間的通信出現延遲最終有可能造成空閒掃描失敗的情況。建議最好去使用目標主機同網段下的空閒主機,這樣成功的概率會比較高。

在進行空閒掃描的時候有可能遇到以下錯誤:有可能出現以下錯誤: 1.防火牆攔截數據。2.目標主機拋棄數據包。3.代理不可用。(解決辦法是更換殭屍主機)

####4、選項–source-port

每個TCP數據包帶有源端口號。默認情況下Nmap會隨機選擇一個可用的傳出源端口來探測目標。該–source-port選項將強制Nmap使用指定的端口作爲源端口。這種技術是利用了盲目地接受基於特定端口號的傳入流量的防火牆的弱點。端口21(FTP),端口53(DNS)和67(DHCP)是這種掃描類型的常見端口。

nmap --source-port 53 target

####5、隨機數據長度

附加隨機數據長度,我們也可以繞過防火牆。許多防火牆通過檢查數據包的大小來識別潛伏中的端口掃描。這是因爲許多掃描器會發送具有特定大小的數據包。爲了躲避那種檢測,我們可以使用命令–data-length增加額外的數據,以便與默認大小不同。在下圖中,我們通過加入25多個字節改變數據包大小。

nmap --data-length 25 target

####6、隨機順序掃描目標

選項–randomize-host用於隨機 順序掃描指定目標。–randomize-host有助於防止因連續 掃描多個目標而防火牆和入侵檢測系統檢測到。

nmap --randomize-hosts targets

####7、MAC地址欺騙

每臺機器都有自己獨特的mac地址。因此這也是繞過防火牆的另一種方法,因爲某些防火牆是基於MAC地址啓用規則的。爲了獲得掃描結果,您需要先了解哪些MAC地址可以使用。這可以通過手動或先進的模糊測試完成。我更喜歡模糊測試,用Python實現非常容易。我們只需要手工導入正則表達式到Python中,然後自動化執行。

特別是–spoof-MAC選項使您能夠從一個特定的供應商選擇一個MAC地址,選擇一個隨機的MAC地址,或者設定您所選擇的特定MAC地址。 MAC地址欺騙的另一個優點是,你讓你的掃描隱蔽,因爲你的實際MAC地址就不會出現在防火牆的日誌文件。

nmap -sT -PN –spoof-mac aa:bb:cc:dd:ee:ff target

####8、發送錯誤校驗

在某些防火牆和IDS / IPS,只會檢查有正確校驗包的數據包。因此,攻擊者通過發送錯誤校驗欺騙IDS / IPS。

nmap --badsum target

Nmap腳本的使用

Nmap的腳本主要分爲以下幾類:

- Auth:負責處理鑑權證書(繞過鑑權)的腳本。
- Broadcast:在局域網內探查更多服務的開啓情況,如DHCP/DNS/SQLServer等。
- Brute:針對常見的應用提供暴力破解方式,如HTTP/SMTP等。
- Default:使用-sC或-A選項掃描時默認的腳本,提供基本的腳本掃描能力。
- Discovery:對網絡進行更多信息的蒐集,如SMB枚舉、SNMP查詢等。
- Dos:用於進行拒絕服務攻擊。
- Exploit:利用已知的漏洞入侵系統。
- External:利用第三方的數據庫或資源。例如,進行Whois解析。
- Fuzzer:模糊測試腳本,發送異常的數據包到目標機,探測潛在漏洞。
- Intrusive:入侵性腳本,此類腳本可能引發對方的IDS/IPS的記錄或屏蔽。
- Malware:探測目標是否感染了病毒、開啓後門等信息。
- Safe:此類與Intrusive相反,屬於安全性腳本。
- Version:負責增強服務與版本掃描功能的腳本。
- Vuln:負責檢查目標機器是否有常見漏洞,如MS08-067。

####1、nmap的HTTP方法

Web服務器根據它們的配置和軟件支持不同的HTTP方法,並且其中一些請求在一定條件下是危險的。HTTP的方法有GET, HEAD, POST, TRACE, DEBUG, OPTION, DELETE, TRACK, PUT等。

nmap -p80,443 --script http-methods scanme.nmap.org

如果需要詳細的檢查,那麼命令:

nmap -p80,443 --script http-methods –script-args http-methods.retest scanme.nmap.org

默認情況下,腳本http-methods使用根文件夾爲基礎路徑(/)。如果我們要設置一個不同的基本路徑,設置參數的HTTP methods.url路徑:

nmap -p80,443 --script http-methods --script-args http-methods.urlpath=/mypath/ scanme.nmap.org

HTTP方法TRACE,CONNECT,PUT和DELETE可能會出現安全風險,如果一個Web服務器或應用程序的支持這些方法的話,需要進行徹底測試。 TRACE使應用程序容易受到跨站跟蹤(XST)攻擊,可能導致攻擊者訪問標記爲的HttpOnly的Cookie。 CONNECT方法可能會允許Web服務器作爲未經授權的Web代理。 PUT和DELETE方法具有改變文件夾的內容的能力,如果權限設置不正確可能被濫用。

你可以瞭解每個方法更多的風險到: https://www.owasp.org/index.php/Test_HTTP_Methods_%28OTG-CONFIG-006%29

####2、HTTP User Agent

有些防火牆會過濾Nmap的默認UserAgent,你可以設置不同的用戶代理。

nmap -p80 --script http-methods --script-args http.useragent=”Mozilla 5”  <target>

####3、HTTP管道

一些web服務器允許多個HTTP請求的封裝在一個包。這可以加快腳本執行的速度,如果web服務器支持的話建議啓用。默認情況下一個管道會有40個請求,並且會根據網絡情況自動調節大小。

nmap -p80 --script http-methods --script-args http.pipeline=25 <target>

另外,我們可以設置http.max-pipeline參數來控制http管道的最大值。如果設置了該參數,nmap會自動忽略http.pipeline。

nmap -p80 --script http-methods --script-args http.max-pipeline=10 <target>

####4、掃描HTTP代理

使用http代理是爲了隱藏自己的真實ip地址。下列命令顯示如何檢測開放代理:

nmap --script http-open-proxy -p8080 <target>

我們還可以指定用來驗證的url。

nmap --script http-open-proxy --script-args http-open-proxy.url=http://whatsmyip.org,http-open-proxy.pattern=”Your IP address” -p8080 <target>

####5、發現有趣的文件和目錄和管理員賬戶

這是在滲透測試中常見的任務,通常採用自動化工具完成。經常討論的Web應用程序的脆弱性有目錄列表,用戶賬戶枚舉,配置文件等。用Nmap的NSE可以更快的幫助我們完成這個任務。

nmap --script http-enum -p80 <target>

查找lua腳本

指紋存儲在nselib/data/http-fingerprints.lua,事實上是LUA表格。若要顯示所有的存在頁面

nmap script http-enum http-enum.displayall -p80 <target>

指定不同的User Agent來繞過某些防火牆

nmap -p80 --script http-enum --script-args http.useragent=”Mozilla 5″<target>

也可以指定HTTP管道數目來加快掃描

nmap -p80 --script http-enum --script-args http.pipeline=25 <target>

####6、暴力破解HTTP身份認證

很多家用路由器,IP網絡攝像頭,甚至是Web應用程序仍然依賴於HTTP認證,滲透測試人員需要嘗試弱密碼的單詞列表,以確保系統或用戶帳戶是安全的。現在多虧了NSE腳本http-brute,我們可以對HTTP認證保護的資源執行強大的字典攻擊。請參見下面的命令:

nmap -p80 --script http-brute --script-args http-brute.path=/admin/ <target>

http-brute腳本默認使用的是自帶的字典,如果要使用自定義的字典。

nmap -p80 --script http-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt <target>
http-brute支持不同的模式進行攻擊。

用戶模式:該模式下,對於userdb中的每個user,會嘗試passdb裏面的每個password

nmap --script http-brute --script-args brute.mode=user <target>

密碼模式:該模式下,對於passdb中的每個password,會嘗試userdb裏面的每個user。

nmap --script http-brute --script-args brute.mode=pass <target>

fcreds:此模式需要額外的參數brute.credfile。

nmap --script http-brute --script-args brute.mode=creds,brute.credfile=./creds.txt <target>

####7、mod_userdir滲透測試

Apache的模塊UserDir提供了通過使用URI語法/~username/來訪問用戶目錄的方法。我們可以使用Nmap進行字典攻擊,確定web服務器上有效的用戶名列表。

nmap -p80 –script http-userdir-enum <target>

跟上面的腳本一樣,可以設置User Agent、HTTP管道參數。

####8、測試默認賬號

通常情況下Web應用程序存在默認憑據,通過NSE很容易發現。

nmap -p80 --script http-default-accounts <target>

腳本通過查找已知路徑和已知的用戶密碼來登陸,依賴/nselib/data/http-default-accounts.nse存放的指紋文件。

####9、WordPress審計

發現使用弱密碼賬戶安裝的wordpress,輸入如下命令:

nmap -p80 --script http-wordpress-brute <target>

設置線程的數量,使用腳本參數http-wordpress-brute.threads:

nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.threads=5 <target>

如果服務器是虛擬主機,利用參數http-wordpressbrute設置主機字段:

nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.hostname=”ahostname.wordpress.com” <target>

設置一個不同的登陸URI,登錄使用參數http-wordpress-brute.uri:

nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.uri=”/hidden-wp-login.php” <target>

要改變存儲的用戶名和密碼的POST變量的名稱,設置參數http-wordpress-brute.uservar和http-wordpress-brute.passvar:

nmap -p80 --script http-wordpress-brute --script-args http-wordpressbrute.uservar=usuario,http-wordpress-brute.passvar=pasguord <target>

####10、Joomla審計

Joomla是在許多國家非常流行的cms,使用http-joomla-brute腳本來檢測弱密碼賬戶。

nmap -p80 --script http-joomla-brute <target>

注:Wordpress的方法也適用於Joomla。

####11、掃描目標網站備份

http-backup-finder.nse

nmap -p80 --script=http-backup-finder 192.168.3.0/24

####12、iis6.0遠程代碼執行

調用http-vuln-cve2015-1635.nse測試腳本:

nmap -sV --script http-vuln-cve --script-args uri='anotheruri'  192.168.3.0/24

nmap官方腳本文檔中有部分cve漏洞的測試腳本,大家可以根據需要調用

####13、檢測Web應用防火牆

要檢測web應用防火牆,使用如下命令:

nmap -p80 --script http-waf-detect <target>

可以通過檢測響應內容的變化來檢測防火牆,推薦使用內容較少的頁面。

nmap -p80 --script http-waf-detect --script-args=”http-waf-detect.detectBodyChanges” <target>

使用更多的攻擊載荷:

nmap -p80 --script http-waf-detect --script-args=”http-waf-detect.aggro” <target>

####14、檢測跨站跟蹤漏洞

當Web服務器存在跨站腳本漏洞,又啓用了TRACE方法,這樣就可以獲取啓用了HttpOnly的Cookie。如下命令檢測是否啓用TRACE。

nmap -p80 --script http-methods,http-trace --script-args http-methods.retest <target>

####15、檢測XSS漏洞

跨站腳本漏洞允許攻擊者執行任意js代碼。檢測命令如下:

nmap -p80 --script http-unsafe-output-escaping <target>

該腳本會檢測基於用戶輸入的輸出可能出現的問題,發送以下內容到它發現的所有參數:ghz%3Ehzx%22zxc%27xcv

更多詳情,查閱:

http://nmap.org/nsedoc/scripts/http-phpself-xss.html

http://nmap.org/nsedoc/scripts/http-unsafe-output-escaping.html

####16檢測SQL注入

使用如下命令:

nmap -p80 --script http-sql-injection <target>

可以設置腳本參數httpspider.maxpagecount,來加快掃描的速度。

nmap -p80 --script http-sql-injection --script-args httpspider.maxpagecount=200 <target>

一個有趣的參數是httpspider.withinhost,它限制nmap只能爬取給定的主機。默認情況下是啓用的,如果爲了爬行相關的站點可以禁用。

nmap -p80 --script http-sql-injection --script-args httpspider.withinhost=false <target>

詳情查閱官方文檔:https://nmap.org/nsedoc/lib/httpspider.html

同樣可以設置User Agent和HTTP管道的數目:

nmap -p80 --script http-sql-injection --script-args http.useragent=”Mozilla 42″ <target>

聲明: 由於Nmap測試腳本衆多,本文尚未對所有腳本進行測試講解,只是對滲透測試中常用的某些腳本進行簡單介紹,大家可以根據上面介紹的腳本調用的方法舉一反三,在平時的滲透測試中活學活用。當然,我也會在後續的工作學習中,繼續補充可能用到的nse腳本。文章中如有錯誤,還請各位大佬們斧正,謝謝!

附:Nmap使用腦圖

參考鏈接: https://nmap.org/book/idlescan.html
http://www.nmap.com.cn/doc/manual.shtm https://nmap.org/nsedoc/ https://nmap.org/nsedoc/categories https://seclists.org/nmap-dev/ https://svn.nmap.org/nmap/

原文出處:https://www.cnblogs.com/H4ck3R-XiX/p/12234762.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章