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