在偵查期間,掃描一直是信息收集的初始階段。
偵查是盡可能多收集關(guān)于目標(biāo)網(wǎng)絡(luò)的信息。從黑客的角度來看,信息收集對于一次攻擊非常有用,所以為了封鎖惡意的企圖,滲透測試者通常盡力查找這些信息,發(fā)現(xiàn)后修復(fù)這個缺陷。這也被叫做踩點(diǎn)。通過信息收集,人們通常會發(fā)現(xiàn)如下類型的信息:
- E-mail 地址
- 端口號/協(xié)議
- 操作系統(tǒng)信息
- 運(yùn)行的服務(wù)
- Traceroute 信息/DNS 信息
- 防火墻標(biāo)識和繞過
- 其他
所以對于信息收集,掃面是第一個部分。在掃面階段,Nmap對于發(fā)現(xiàn)開放端口,協(xié)議號,操作系統(tǒng)信息,防火墻信息等是一個非常有用的工具。
Nmap (網(wǎng)絡(luò)映射器)是一個開源工具,它使網(wǎng)絡(luò)探測和安全審計得以專業(yè)化。最初由 Gordon “Fyodor” Lyon 發(fā)布。官網(wǎng)官方網(wǎng)站是http://nmap.org. Nmap是一個免費(fèi)的用來實(shí)現(xiàn)網(wǎng)絡(luò)探測和安全審計的開源程序。許多系統(tǒng)和網(wǎng)絡(luò)管理員發(fā)現(xiàn)它對于一些日常的工作也有幫助。例如查看整個網(wǎng)絡(luò)的信息,管理服務(wù)升級計劃以及監(jiān)控主機(jī)和服務(wù)的正常運(yùn)行。
Nmap采用一種新穎的方式利用原始IP包來決定網(wǎng)絡(luò)上是什么樣的主機(jī),這些主機(jī)提供什么樣的服務(wù)(應(yīng)用程序名和版本),它們運(yùn)行著什么樣的操作系統(tǒng)(操作系統(tǒng)版本)它們使用什么類型的過濾器/防火墻以及許多其他的特征。它雖然被設(shè)計用來快速掃描大型網(wǎng)絡(luò),但是在單個主機(jī)上也會工作的非常好。Nmap可以運(yùn)行在所有的主流計算機(jī)操作系統(tǒng)上,Linux,Windows,Mac OS X都可以找到官方的安裝包。
Nmap 對于不同的環(huán)境有著非常好的支持。
Windows: 從官方網(wǎng)站安裝 http://nmap.org。windows上的所有圖形用戶界面和命令行都可以從官網(wǎng)上找到。Nmap的圖形用戶界面采用的是Zenmap。
Linux (Ubuntu and Debian): 在Linux終端上運(yùn)行如下命令:apt-get install nmap
如下的圖片中,我已經(jīng)安裝好了Nmap。
基于Red Hat 和 Fedora 的系統(tǒng): yum install nmap
基于Gentoo Linux 的系統(tǒng): emerge nmap
接下來,我所有的操作將會用Linux終端來演示:
Nmap腳本引擎 (NSE) 是Nmap最有力靈活的的一個特性。它允許用戶撰寫和分享一些簡單的腳本來一些較大的網(wǎng)絡(luò)進(jìn)行掃描任務(wù)。基本上這些腳本是用Lua編程語言來完成的。通常Nmap的腳本引擎可以完成很多事情,下面是其中的一部分:
這是Nmap的基礎(chǔ)功能。例如查詢目標(biāo)域名的WhoIs數(shù)據(jù),查詢目標(biāo)IP的ARIN, RIPE, 或者 APNIC 來確定所有者,對開放端口執(zhí)行鑒別查詢,SNMP 查詢以及列出可用的NFS/SMB/RPC 分享和服務(wù)。
當(dāng)一個新的漏洞被發(fā)現(xiàn),你會想要在壞家伙行動之前快速掃描你的網(wǎng)絡(luò)來識別含有漏洞的系統(tǒng)。因?yàn)镹map不是一個專業(yè)的漏洞掃描器,而NSE用來處理這種需求的漏洞檢查是足夠的?,F(xiàn)在已經(jīng)有很多漏洞檢測腳本可用,并且他們計劃發(fā)布更多。
許多攻擊者和一些自動化的蠕蟲留下一些后門使得攻擊者之后能重入。他們中的等一些可用被Nmap的正則表達(dá)式版本檢測到。
作為一個通用的腳本語言,可以使用NSE來執(zhí)行漏洞利用而不僅僅局限于發(fā)現(xiàn)漏洞。這種添加自定義漏洞利用腳本的功能對于一些人(尤指滲透測試者)是很有價值的,盡管他們不打算將Nmap變成一個像Metasploit一樣的漏洞利用框架。
正如下面你將會看到的,我已經(jīng)使用了(-sc)選項(或者-script),它是一個掃描目標(biāo)網(wǎng)絡(luò)的默認(rèn)腳本。你可以看到我們得到了ssh,rpcbind,netbios-sn,但是端口是過濾的或者關(guān)閉的,所以我們可以說這里可能有一個防火墻來封堵我們的請求。稍后我們將會討論怎么識別防火墻并嘗試?yán)@過它們。
現(xiàn)在我已經(jīng)用探測模式運(yùn)行了一個ping掃描腳本,它將會嘗試所有可能掃描的方法,這樣我們將會得到更多的有用的信息。
正如你在圖片中看到的,它將會嘗試按照腳本規(guī)則的所有可能的辦法。在下一張途中可以看到更多信息。
你能看到有趣的協(xié)議和端口么?你可以看到dns-bruteforce發(fā)現(xiàn)了一個包含一些博客,內(nèi)容管理系統(tǒng),sql,記錄,郵件以及許多其他信息的主機(jī)。所以我們可以執(zhí)行sql注入,這個博客可能是WordPress,Joomal等等。我們可以利用一些已知的CMS漏洞執(zhí)行攻擊,很明顯這些方法將會是一個黑盒測試。
在下面的一節(jié)中,我將會闡述怎么撰寫你自己的Nmap腳本引擎,以及怎樣用Nmap來利用他們。
接下來我將會演示一些基本的掃描技術(shù)。但是在那之前,你應(yīng)該知道一些關(guān)于Nmap掃描后狀態(tài)的的基本知識。
端口狀態(tài):掃描之后,你可能會看到一些端口狀態(tài)如 open(開放的),filtered(被過濾的),closed(關(guān)閉的)等等。我來對此解釋下。
- Open(開放的): 應(yīng)用程序正在這個端口上監(jiān)聽連接。
- Closed(關(guān)閉的): 端口對探測做出了響應(yīng),但是現(xiàn)在沒有應(yīng)用程序在監(jiān)聽這個端口。
- Filtered(過濾的): 端口沒有對探測做出響應(yīng)。同時告訴我們探針可能被一些過濾器(防火墻)終止了。
- Unfiltered(未被過濾的):端口對探測做出了響應(yīng),但是Nmap無法確定它們是關(guān)閉還是開放。
- Open/Filtered: 端口被過濾或者是開放的,Nmap無法做出判斷。
- Closed/Filtered: 端口被過濾或者是關(guān)閉的,Nmap無法做出判斷。
在你的Nmap(Windows/Linux)上運(yùn)行如下命令: nmap 192.168.1.1(or) host name
。
你可以用Nmap掃描多個目標(biāo)來發(fā)現(xiàn)主機(jī)或者收集信息。
命令: nmap host1 host2 host3 etc….
它會掃面不同的IP地址和整個子網(wǎng)。
你也可以用相同的命令一次掃描多個網(wǎng)絡(luò)網(wǎng)站域名。如下圖所示。它將會把域名轉(zhuǎn)換成對應(yīng)的IP地址,并掃描它。
命令:nmap 192.168.2.1-192.168.2.100
Nmap 可以用來掃描用CIDR格式表示的整個子網(wǎng)。
例如:nmap 192.168.2.1/24
如果你有大量的系統(tǒng)需要掃描,你可以將這些IP地址(或主機(jī)名)輸入到一個文本文件中,用這個文本文件的內(nèi)容來作為Nmap命令行的輸入。
語法: nmap -iL [list.txt]
“-iR” 參數(shù)可以用來選擇隨機(jī)的互聯(lián)網(wǎng)主機(jī)來掃描。Nmap將會隨機(jī)的生成指定數(shù)量的目標(biāo)進(jìn)行掃描。
語法: nmap -iR [主機(jī)數(shù)量]
除非你有一些這種類型的任務(wù),否則隨機(jī)掃描不是一個好習(xí)慣。
語法: nmap [目標(biāo)] –exclude [主機(jī)]
例如:nmap 192.168.2.1/24 –exclude 192.168.2.10
激烈掃描模式會選擇Nmap中最常用的選項來嘗試代替輸入很長的字符串。它對于路由跟蹤也適用。
命令:nmap –A host
用Nmap來探測對于滲透測試者來說是非常有意思而且非常有用的。在探測中,可以發(fā)現(xiàn)服務(wù),端口號,防火墻,協(xié)議,操作系統(tǒng)等等。我們解析來一個一個的討論。
" -PN "選項告訴Nmap不使用默認(rèn)的探測檢查,而是對目標(biāo)進(jìn)行一個完整的端口掃描。當(dāng)我們掃描一個有防火墻保護(hù)而封鎖 ping 探針主機(jī)的時候是非常有用的。
語法:nmap –PN Target
通過指定這些選項,Nmap將會不用ping來發(fā)現(xiàn)那些不能ping通主機(jī)開放的端口。
“ -Sp ” 選項告訴Nmap僅僅進(jìn)行ping掃描。 當(dāng)你有一組IP地址來掃描時,而且你不知道哪一個是可達(dá)的,這時這個選項會很有用。通過指定一個特定的目標(biāo),你可以得到像MAC地址這樣更多的信息。
語法:nmap –Sp target
在我們開始之前,我們必須知道syn包。
基本上來說,一個syn包是用來在兩個通信的主機(jī)之間初始化連接。
TCP SYN ping 發(fā)送一個SYN包給目標(biāo)系統(tǒng),然后監(jiān)聽目標(biāo)系統(tǒng)的響應(yīng)。 這種探測方法對于那些配置好封鎖標(biāo)準(zhǔn)ICMP ping的系統(tǒng)來說很有用。
“ -PS ”選項來實(shí)施 TCP SYN ping。
語法:nmap –PS 目標(biāo)
默認(rèn)的端口是80端口,你也可以指定其他的端口,例如:–PS22, 23, 25, 443。
這種類型的掃描將只會掃描ACK包。
“ -PA ”在特定目標(biāo)上進(jìn)行一個 TCP ACK ping。
“ -PA ”選項會導(dǎo)致Nmap發(fā)送一個 TCP ACK 包給指定的主機(jī)。
語法:nmap –PA target
這種方法將會通過對一個TCP連接作出響應(yīng)來嘗試發(fā)現(xiàn)主機(jī),這個TCP連接是一個不存在的連接,它正試圖與目標(biāo)主機(jī)建立一個響應(yīng)。如同其他ping 選項一樣,對于封鎖標(biāo)準(zhǔn)ICMP ping的情況是非常有用的。
“ –PU ”掃描只會對目標(biāo)進(jìn)行 udp ping 掃描。這種類型的掃描會發(fā)送UDP包來獲得一個響應(yīng)。
語法:nmap –PU target
你可以指定一個掃描的端口號,例如 –PU 22, 80, 25, 等等。在上面的圖片中,目標(biāo)是我的局域網(wǎng)IP,在這個IP的主機(jī)中沒有任何UDP服務(wù)。
“ -PY ”參數(shù)告訴Nmap進(jìn)行一個 SCTP 初始 ping. 這個選項將會發(fā)送一個包含最小的初始快STCP包。這種探測方法會嘗試用SCTP來定位主機(jī)。SCTP通常被用在IP撥號服務(wù)的系統(tǒng)中。
語法:nmap –PY 目標(biāo)
在上圖中,盡管在這臺主機(jī)上沒有sctp服務(wù),但是我們必須用-pn選項來進(jìn)行探測。
“ -PE ”參數(shù)進(jìn)行一個ICMP(Internet控制報文協(xié)議) 在指定的系統(tǒng)上輸出ping。
語法:nmap –PE 目標(biāo)
這種類型的探測在ICMP數(shù)據(jù)包可以在有較少傳輸限制的系統(tǒng)上效果比較好。
“ -PP ”選項進(jìn)行一個ICMP時間戳ping掃描。
“ -PM ”選項進(jìn)行一個ICMP地址掩碼ping掃描。
語法:nmap –PM 目標(biāo)
這種非常規(guī)的ICMP查詢(和 -PP 選項類似)試圖用備選的ICMP登記ping指定的主機(jī)。這種類型的ping可以偷偷的通過配置好封鎖標(biāo)準(zhǔn)回聲請求的防火墻。
“ -PO ”選項進(jìn)行一個IP協(xié)議ping。
語法:nmap –PO 協(xié)議 目標(biāo)
IP協(xié)議ping用指定的協(xié)議發(fā)送一個包給目標(biāo)。如果沒有指定協(xié)議,默認(rèn)的協(xié)議是 1 (ICMP), 2 (IGMP)和4 (IP-in-IP)。
“ –PR ”選項被用來實(shí)施一個arp ping 掃描?!?-PR ”選項告訴Nmap對目標(biāo)主機(jī)進(jìn)行一個APR(地址解析協(xié)議) ping.
語法: nmap –PR 目標(biāo)
“ -PR ”選項當(dāng)掃描整個網(wǎng)絡(luò)的時候自動使用。這種類型的探測比其他的ping方法更快。
路由跟蹤
“ –traceroute ”參數(shù)可以用來追蹤到指定主機(jī)的網(wǎng)絡(luò)路徑。
語法: nmap –traceroute 目標(biāo)
“ -R ”參數(shù)告訴Nmap總是對目標(biāo)IP地址實(shí)施一個逆向DNS解析。
語法: nmap –R 目標(biāo)
“ -R “選項可以用在對一個IP地址塊實(shí)施探測的時候,Nmap將試圖對每個IP地址進(jìn)行反向向DNS信息解析。
“ -n ”參數(shù)用來說明不使用反向域名解析。
語法:nmap –n 目標(biāo)
反向域名解析會明顯的降低Nmap掃描的速度。使用“-n”選項會極大的減少掃描時,特別是當(dāng)掃描大量的主機(jī)時。如果你不關(guān)心目標(biāo)系統(tǒng)的DNS信息,更喜歡進(jìn)行一個能快速產(chǎn)生結(jié)果的掃描時,可以使用這個選項。
“ –system-dns ”選項告訴Nmap使用主機(jī)系統(tǒng)的域名解析來替代它自己的內(nèi)部方法。
語法:nmap –system-dns 目標(biāo)
“ –dns-servers ”選項可以用來在掃面的時候手動指定查詢的DNS服務(wù)器。
語法: nmap –dns-servers 服務(wù)器1 服務(wù)器2 目標(biāo)
” –dns-servers “選項允許你指定一個或者更多的替代服務(wù)器來宮Nmap查詢。這對于沒有DNS配置的系統(tǒng)是非常有用的,而且如果你想阻止你的掃描查詢出現(xiàn)在你配置在本地DNS服務(wù)器的記錄文件中,這個選項也是有用的。
” -sL “選項將會顯示一個列表,并對指定的IP地址執(zhí)行一個反向DNS查詢。
語法:nmap –sL 目標(biāo)
在下一個I部分中,我將會討論怎么用不同的方法發(fā)現(xiàn)服務(wù),主機(jī)和旗標(biāo)。同時,我們也將會討論怎么發(fā)現(xiàn)防火墻以及怎么通過使用Nmap的NSE來繞過它以及怎么編寫你自己的Nmap腳本引擎。Nmap中最重要的部分是知道怎么樣發(fā)現(xiàn)漏洞和利用他們,拭目以待。