識别作業系統:
在确定目标主機線上後,應當識别他們使用的作業系統,這個階段的工作稱為識别作業系統(也稱為作業系統指紋識别),識别作業系統的的方式分為兩種:主動式和被動式。
主動式識别工具向目标機器發送資料包,并根據目标的響應确定其使用的作業系統,這種方式的優點在于探測速度快,缺點是目标主機可能會發現我們探測作業系統的行為。
被動式作業系統識别方法克服了主動式識别方法的缺點,缺點是比主動式識别速度慢。
(例如Linux的ping資料包是預設64位元組、windows主機的ping資料包預設32位元組,而windows的TTL預設128,Linux版本不同,TTL也有所不同)
p0f:
nmap:
nmap是一款非常受歡迎的功能強大的端口掃描程式,它還能夠識别作業系統,能夠進行主動式的作業系統指紋識别,詳細參數使用- h選項
#nmap -O 58.251.81.43

◆服務枚舉:這一階段根據前面各個階段的成果,進一步找出目标系統中所有開放的端口,一旦找到所有開放的端口,就可以通過這些端口來列出目标系統上運作的服務,有很多掃描端口的技術,如全開(full-open)掃描、半開(half-open)掃描、隐蔽式(stealth)掃描等。這些技術都可以用來檢測端口的開放情況,甚至可以掃描處于防火牆或者入侵檢測系統保護下的主機。主機上開放的端口都有相應的服務程式,對這些資訊進行深度分析之後,可以進一步發掘目标網絡基礎設施中可能存在的漏洞。是以,這個階段為以後的測試工作打下了基礎,有助于測試人員繼而發現各種網絡裝置上可能會造成嚴重危害的安全漏洞。
服務枚舉:
服務枚舉是一種資料采集工作,用于擷取目标主機開放端口、作業系統和網絡服務等有關資訊,滲透人員通常會首先識别出線上的目标主機,然後在進行服務枚舉,在實際滲透測試中,此階段的工作屬于探測過程的一部分。
▶ 端口掃描,及其端口掃描工具所支援的掃描類型
端口掃描:端口掃描是一種确定目标主機TCP端口和UDP端口狀态的方法。主機開放了某個端口,就意味着它在這個端口提供某種網絡服務,如果某個端口處于關閉狀态,則說明主機在這個端口上并沒有提供網絡服務。
在确定某端口處于開放狀态之後,攻擊人員就會檢查在該端口提供相應服務的程式版本,以判斷這個版本的程式是否存在漏洞。
▶ 端口掃描工具
服務枚舉是在特定主機、特定端口上識别服務端程式版本的的方法,有了伺服器端軟體版本的資訊,測試人員就可以查找該版本上存在的安全漏洞。
nmap :
具備如下功能 :
- 主機探測
#nmap 211.67.191.6 不加任何選項的的輸出結果如圖
-O(大寫選項 識别目标系統主機作業系統)
Nmap可識别出的6種端口狀态:
▪ 開放
▪ 關閉
▪ 過濾 :不确定該端口是否開放,包過濾裝置屏蔽了我們向目标
發送的探測包
▪ 為過濾
▪ 打開 | 過濾 :可能由于防火牆丢棄資料包造成
▪ 關閉 | 過濾
1. 制定掃描目标
Namp把指令中選項和參數以外的内容均當作目标主機來處理,建議使用時以主機IP位址而非主機名的形式制定目标主機,以IP位址的形式指定目标主機,Namp就不必在掃描前進行DNS解析,這樣可以提高端口掃描的速度。
▫ 單個主機
▫ CIDR網段
▫ 多個目标主機
▫ 十進制的IP區間 例:192.168.2-4,6.1 192.168.2.1、
192.168.3.1、192.168.4.1和192.168.6.1
#nmap -il
-il (inputfilename)選項,令nmap程式從指定的文本檔案中讀取目标主機的清單。當需要從其他程式的運作結果裡導出IP位址給Namp使用時,這個功能就十分有用。
2. TCP掃描選項
隻有作業系統的高權限使用者才能使用Namp多選項,程式需要相應的權限才能發送和接受原始資料包,預設情況下,Namp會采用TCP SYN掃描。在權限不足的情況下,Namp将進行TCP連接配接掃描,Namp程式支援的掃描方式分别如下:
▪ TCP連接配接掃描(-sT):指定這個選項後,程式将和目标主機的目标主機的每個端口都進行完整的三次握手。如果成功建立連接配接,則判斷該端口是開放端口,由于在檢測每個端口的時都需要進行三次握手,是以這種掃描方式比較慢,而且掃描行為很可能被目标主機記錄下來。如果啟動Namp的使用者權限不足,那麼預設情況下Namp程式以這種模式進行掃描。
▪ SYN掃描(-sS):該選項也稱為半開連接配接或者SYN stealth。采用該選項後,Nmap将使用 含有SYN标志位的資料包進行端口探測。如果目标主機回複了SYN/ACK包,則說明該端口處 于開放狀态:如果回複的是RST/ACK包,則說明這個端口處于關閉狀态;如果沒有任何響應 或者發送了ICMP unreachable資訊,則可認為這個端口被屏蔽了。SYN模式的掃描速度非常 好。而且由于這種模式不會進行三次握手,是以是一種十分隐蔽的掃描方式。如果啟動Nmap 的使用者有進階别權限,那麼在預設情況下Nmap程式将以這種模式進行掃描。
▪ TCP NULL( -sN )、FIN( -sF ) )及XMAS(-sX)掃描:NULL掃描不設定任何控制位; FIN掃描僅設定FIN标志位:XMAS掃描設定FIN、PSH和URG的辨別位。如果目标主機傳回 了含有 RST 辨別位的響應資料,則說明該端口處于關閉狀态;如果目标主機沒有任何回應, 則該端口處于打開|過濾狀态。
▪ TCP Maimon掃描(-sM):Uriel Maimon 首先發現了TCP Maimom掃描方式。這種模式的 探測資料包含有FIN/ACK辨別。對于BSD衍生出來的各種作業系統來說,如果被測端口處于 開放狀态,主機将會丢棄這種探測資料包;如果被測端口處于關閉狀态,那麼主機将會回複 RST。
▪ TCPACK 掃描(-sA):這種掃描模式可以檢測目标系統是否采用了資料包狀态監測技術 (stateful)防火牆,并能确定哪些端口被防火牆屏蔽。這種類型的資料包隻有一個ACK辨別 位。如果目标主機的回複中含有RST辨別,則說明目标主機沒有被過濾。
▪ TCP 視窗掃描(-sW):這種掃描方式檢測目标傳回的RST資料包的TCP視窗字段。如果目标端口處于開放狀态,這個字段的值将是正值;否則它的值應當是0。
▪ TCP Idle 掃描(-sI):采用這種技術後,您将通過指定的僵屍主機發送掃描資料包。本機并不與目标主機直接通信。如果對方網絡裡有IDS,IDS将認為發起掃描的主機是僵屍主機。
Nmap的scanflags選項可設定自定義的TCP掃描方式。這個選項的參數可以用數字表示(例 如,9代表PSH和FIN辨別)。這個選項也支援辨別位的符号縮寫。在使用符号縮寫時,僅需 要将URG、ACK、PSH、RST、SYN、FIN、ECE、CWR、ALL和NONE以任意順序進行組 合。例如:--scanflags URGACKPSH 将設定URG、ACK 和PSH 辨別位。
3. UDP掃描選項
Nmap有多種TCP掃描方式,而UDP掃描僅有一種掃描方式(-sU)。雖然UDP掃描結果沒有 TCP掃描結果的可靠度高,但滲透測試人員不能是以而輕視UDP掃描,畢竟UDP端口代表着 可能會有價值的服務端程式。
UDP掃描的最大問題是性能問題。由幹Linux核心限制1秒内最多發送一次ICMP Port Unreachable資訊。按照這個速度,對一台主機的65536個UDP端口進行完整掃描,總耗時必 定會超過18個小時。
改善掃描速度的方式主要有:
● 進行并發的UDP 掃描;
● 優先掃描常用端口;
● 在防火牆後面掃描;
● 啟用--host-timeout 選項以跳過響應過慢的主機。
4. 目标端口選項
預設情況下,Nmap将從每個協定的常用端口中随機選擇1000個端口進行掃描。其nmapservices檔案對端口的命中率進行了排名。如需更改端口配置,可使用Nmap的以下幾個選項。
● -p端口範圍:隻掃描指定的端口。掃描1〜1024号端口,可設定該選項為–p 1-1024。掃描1 〜65535端口時,可使用-p-選項。
● -F(快速掃描):将僅掃描100 個常用端口。
● -r(順序掃描):指定這個選項後,程式将從按照從小到大的順序掃描端口。
● --top-ports <1 or="" greater="">:掃描 nmap- services 裡排名前N 的端口。
以NULL方式掃描目标主機的22、25端口的指令如下所示。
nmap -sN -p 22,25 192.168.56.103
5. 輸出選項
Nmap可以把掃描結果儲存為外部檔案。在需要使用其他工具處理Nmap的掃描結果時,這一 功能十分有用。
即使您設定程式把掃描結果儲存為檔案,Nmap還是會在螢幕上顯示掃描結果。
Nmap支援以下幾種輸出形式。
● 互動(螢幕)輸出:Nmap把掃描結果發送到标準輸出裝置上(通常為終端/控制台),這是 預設的輸出方式。
● 正常輸出(-oN):與互動輸出類似,但是不顯示runtime 資訊和警告資訊。
● XML 檔案(-oX):生成的 XML 格式檔案可以轉換成 HTML 格式檔案,還可被Nmap 的圖 形使用者界面解析,也便于導入資料庫。本文建議您盡量将掃描結果輸出為XML檔案。
● 生成便于Grep使用的檔案(-oG):雖然這種檔案格式已經過時,但仍然很受歡迎。這種格 式的檔案,其内容由注釋(由#開始)和資訊行組成。資訊行包含6個字段,每個字段的字段 名稱和字段值以冒号分割,字段之間使用制表符隔開。這些字段的名稱分别為Host、Ports、 Protocols、Ignored State、OS、Seq Index、IP ID Seq 和 Status。這種格式的檔案便于 grep 或 awk 之類的 UNIX 指令整理掃描結果。
還可以通過-oA選項,讓Nmap程式把掃描結果同時以三種形式(正常輸出、XML檔案和便于 Grep使用的檔案)進行輸出。
如需把儲存掃描結果儲存為XML檔案(myscan.xml),可使用下述指令。
nmap 192.168.56.103 -oX myscan.xml
因為 HTML 格式的檔案比 XML 格式的檔案更易于閱讀,是以我們通常會把 XML格式檔案轉 換成HTML格式檔案。我們可使用xsltproc進行這種格式轉換。該程式的用法如下。
xsltproc myscan.xml -o myscan.html
6. 時間排程控制選項
Nmap可通過-T選項指定時間排程控制的模式。它有6種掃描模式。
● paranoid(0):每5分鐘發送一次資料包,且不會以并行方式同時發送多組資料。這種模式 的掃描不會被IDS檢測到。
● sneaky(1):每隔15秒發送一個資料包,且不會以并行方式同時發送多組資料。
● polite(2):每0.4 秒發送一個資料包,且不會以并行方式同時發送多組資料。
● normal(3):此模式同時向多個目标發送多個資料包,為 Nmap 預設的模式,該模式能自 動在掃描時間和網絡負載之間進行平衡。
● aggressive(4):在這種模式下,Nmap 對每個既定的主機隻掃描5 分鐘,然後掃描下一 台主機。它等待響應的時間不超過1.25秒。
● insane(5):在這種模式下,Nmap 對每個既定的主機僅掃描75 秒,然後掃描下一台主 機。它等待響應的時間不超過0.3秒。
經驗表明,預設的掃描模式通常都沒有問題。除非您想要進行更隐匿或更快速的掃 描,否則沒有必要調整這一選項。
7. 常用選項
作業系統檢測 -O
禁用主機檢測 -Pn
如果主機屏蔽了ping請求,Nmap可能會認為該主機沒有開機。這将使得Nmap無法進行進一 步檢測,比如端口掃描、服務版本識别和作業系統識别等探測工作。為了克服這一問題,就 需要禁用Nmap的主機檢測功能。在指定這個選項之後,Nmap會認為目标主機已經開機并會 進行全套的檢測工作。
如需啟用這一功能,就要指定Nmap的–Pn選項。
強力檢測選項 -A
啟用-A選項之後,Nmap将檢測目标主機的下述資訊:
● 服務版本識别(-sV);
● 作業系統識别(-O);
● 腳本掃描(-sC);
● Traceroute(--traceroute)。
-服務版本識别(-sV)
-作業系統檢測(-O)
-腳本掃描 (-sC)→預設腳本
8. 掃描IPv6主機
- 6 ipv6位址
9. 腳本引擎
Nmap 本身就是功能強大的網絡探測工具。而它的腳本引擎功能( Nmap Scripting Engine, NSE)更讓 Nmap 如虎添翼。NSE 可使使用者的各種網絡檢査工作更為自動化,有助于識别應 用程式中新發現的漏洞、檢測程式版本等Nmap原本不具有的功能。雖然Nmap軟體包具有各 種功能的腳本,但是為了滿足使用者的特定需求,它還支援使用者撰寫自定義腳本。
NSE自帶的腳本由Lua語言(http://www.lua.org)編寫。這些腳本可以分成12個類别。
● auth:此類腳本使用暴力破解等技術找出目标系統上的認證資訊。
● default:啟用--sC 或者-A 選項時運作此類腳本。這類腳本同時具有下述特點:
▪ 執行速度快;
▪ 輸出的資訊有指導下一步操作的價值;
▪ 輸出資訊内容豐富、形式簡潔;
▪ 必須可靠;
▪ 不會侵入目标系統;
▪ 能洩露資訊給第三方。
● discovery:該類腳本用于探索網絡。
● dos:該類腳本可能使目标系統拒絕服務,請謹慎使用。
● exploit:該類腳本利用目标系統的安全漏洞。在運作這類腳 本之前,滲透測試人員需要擷取 被測機關的行動許可。
● external:該類腳本可能洩露資訊給第三方。
● fuzzer:該類腳本用于對目标系統進行模糊測試。
● instrusive:該類腳本可能導緻目标系統崩潰,或耗盡目标系統的所有資源。
● malware:該類腳本檢査目标系統上是否存在惡意軟體或後門。
● safe:該類腳本不會導緻目标服務崩潰、拒絕服務且不利用漏洞。
● version:配合版本檢測選項(-sV),這類腳本對目标系統的服務程式進行深入的版本檢測。
● vuln:該類腳本可檢測檢査目标系統上的安全漏洞。
在Kali Linux系統中,Nmap腳本位于目錄/usr/share/nmap/scripts。
在使用NSE腳本時,可以下指令行裡使用下述選項。
● -sC 或--script=default:啟動預設類NSE 腳本。
● --script <filename>|<category>|<directories>:根據指定的檔案名、類别名、目錄名,執行 相應的腳本。
● --script-args <args>:這個選項用于給腳本指定參數。例如,在使用認證類腳本時,可通過 這個選項指定使用者名和密碼。
舉例來說,如果要使用預設類的腳本對主機 192.168.56.103 進行掃描,可使用下述指令。
nmap -sC 192.168.56.103
需要擷取目标主機的特定資訊時可以單獨使用腳本檔案。
如果要擷取HTTP服務 器的資訊,将會發現NSE的腳本裡有很多腳本都是分析HTTP服務的。這些腳本有httpenum、http-headers、http-methods和http-php-version。
我們可以使用下述指令。
#nmap --script http-enum,http-headers,http-methods,http-php-version -p 80 192.168.56.103
相比不使用腳本而言,在使用了相關腳本之後,将會得到相對應的更多資訊。
在介紹Nmap的時候,我們不得不提一個端口掃描腳本。
NSE腳本之中,有一個名為Nmap NSEVulscan的腳本。它可從http://www.computec. ch/mruef/software/nmap_nse_vulscan-1.0.tar.gz 下載下傳。這個腳本能夠根據目标主機的版本信 息,在多個網站上搜尋這些版本的相關漏洞。這些網站包括 CVE (http://cve.mitre.org)、 OSVDB(http://www.osvdb.org/)、scip VulDB (http://www.scip.ch/?vuldb)、 SecurityTracker(http://securitytracker.com/)和Security Focus(http://www.securityfocus.com/)。
10. 規避檢測的選項 (重要)
在滲透測試的工作中,目标主機通常處于防火牆或 IDS 系統的保護之中。在這種環境中使用 Nmap 的預設選項進行掃描,不僅會被發現,而且往往一無所獲。此時,我們就要使用Nmap 規避檢測的有關選項。
● -f(使用小資料包):這個選項可避免對方識别出我們探測的資料包。指定這個選項之後, Nmap将使用8位元組甚至更小資料體的資料包。
● --mtu:這個選項用來調整資料包的包大小。MTU(Maximum Transmission Unit,最大傳輸 單元)必須是8的整數倍,否則Nmap将報錯。
● -D(誘餌):這個選項應指定假 IP,即誘餌的 IP。啟用這個選項之後,Nmap 在發送偵測 資料包的時候會摻雜一些源位址是假IP(誘餌)的資料包。這種功能意在以藏木于林的方法 掩蓋本機的真實 IP。也就是說,對方的log還會記錄下本機的真實IP。您可使用RND生成随機 的假IP位址,或者用RND:number的參數生成<number>個假IP位址。您所指定的誘餌主機 應當線上,否則很容易擊潰目标主機。另外,使用了過多的誘餌可能造成網絡擁堵。尤其是 在掃描客戶的網絡的時候,您應當極力避免上述情況。
● --source-port <portnumber>或-g(模拟源端口):如果防火牆隻允許某些源端口的入站流 量,這個選項就非常有用。
● --data-length:這個選項用于改變Nmap 發送資料包的預設資料長度,以避免被識别出來是 Nmap的掃描資料。
● --max-parallelism:這個選項可限制Nmap 并發掃描的最大連接配接數。
● --scan-delay <time>:這個選項用于控制發送探測資料的時間間隔,以避免達到IDS/IPS端 口掃描規則的門檻值。
Nmap的官方手冊詳細介紹了規避探測的各種選項。如果需要詳細了解這些内容,可參照官方手冊http://nmap.org/book/man-bypass-firewalls-ids.html。
▶ 枚舉Windows 系統SMB服務的掃描工具
▶ 枚舉SNMP服務的掃描工具
▶ 枚舉虛拟專用網絡(VPN)的掃描工具
Unicornscan:
Unicornscan是資訊收集和關聯分析的引擊。它能對TCP/IP裝置發起主動掃描,并根據其響應 進行分析。Unicornscan具備下述特性:
● 可進行異步無狀态TCP 端口掃描;
● 可通過異步無狀态TCP 掃描擷取TCP banner;
● 可進行異步UDP 端口掃描;
● 可通過主動方式和被動方式識别遠端作業系統和應用程式。
UDP端口掃描的 耗時都很長,掃描整個網段的UDP端口的耗時更長。不過Unicornscan在這方面的性能卓越。
可以設定Unicornscan毎秒發送多少個包。每秒發送包(PPS)設定得越高,掃描的速度也 就越快,但會導緻網絡負載加重,注意謹慎使用此功能。PPS的預設值是300。
假設我們要掃描主機 192.168.121.132,檢測它的UDP 協定(-m U)的 1-65535端口,并查 看程式的詳盡輸出(-Iv),那麼我們需要使用下述指令。
unicornscan -m U -Iv 192.168.121.132:165535
Zenmap:
Zenmap是Nmap的圖形化工具。
Amap:識别應用程式
Amap程式可檢測在指定端口上運作的應用程式資訊。Amap向目标端口發送檢測資料,在收 到目标響應之後,将響應資訊與資料庫中結果進行比對,并顯示出比對的應用程式。
在Kali Linux 中,Amap 檢測資料包的配置檔案為/usr/etc/appdefs.trig,而響應資訊的檔案 是/usr/etc/appdefs.resp。
SMB(server message block)枚舉:
nbtscan
SNMP(simple network monitoring protocol)枚舉:
vpn枚舉:
VPN至少可以分為以下三種。
● 基于IPSec 技術的VPN:分支機構聯入總部區域網路的VPN 解決方案,多數是這類方案。采用這種方案後,分支機構需要在網關上安裝IPSec VPN用戶端,總部網關上也要安裝IPSec VPN伺服器。由于配置過程十分複雜,單個使用者聯入總部網絡的方案通常不是這種方案。采用這種方法連接配接入機關區域網路的使用者,通常被叫做公路戰士(road warrior)。
● OpenVPN:這是一種公路戰士十分偏愛的VPN 解決方案。采用 OpenVPN 方案的用戶端 電腦通過OpenVPN用戶端連接配接到VPN的伺服器。這種方案設定簡單,而且不要求使用者具有管 理員級别的權限。
● 基于SSL 技術的VPN:這種方案不要求使用者安裝專用的VPN 用戶端。隻要用戶端電腦裝有 支援SSL連接配接技術的Web浏覽器,VPN使用者就可以通過浏覽器連接配接到VPN伺服器。
ike-scan
ike-scan是探測、識别并測試IPSecVPN系統的安全工具。IPSec是特别常見的Lan-to-Lan連 接技術,同時也是多數VPN方案所采用的遠端通路技術。
IPSec采用了下述三種主要協定。
● Authentication Headers(AH):提供了資料的完整性。
● Encapsulating Security Payloads(ESP):保障資料的完整性和保密性。
● Internet Key Exchange(IKE):通信終端之間進行參數協商的通信協定。它用于安全關聯 (Security Association)的建立、維持和終止。
IKE建立安全關聯時分為下述幾個階段。
● IKE phase 1:在兩個IPSec 終端間協商參數,協商加密算法、完整性算法、認證類型、密 鑰分發機制、生命周期等,以建立安全的通信隧道。IKE phase 1 會采用main mode 或 aggressive mode建立雙向安全關聯。main mode 通過3 對消息協商安全關聯。相比之下, aggressive mode通過3 對消息的交換,卻能提供更快的安全關聯。
● IKE phase 2:用于資料保護。
● IKE phase 1.5 或extended authentication phase:這個階段是可選階段,通常出現在遠端 通路的VPN方案裡。
ike-scan程式向VPN伺服器發送IKE phase 1的資料包,然後分析目标主機的響應資料。
ike-scan程式具備下述幾個特點。
● 能夠向任意數量目标主機發送IKE 資料包。
● 能夠以靈活的方式組建IKE 的探測資料包。
● 能夠解碼并顯示所有的伺服器響應資料包。
● 能夠配合psk-crack 工具破解預共享密鑰。
總而言之,ike-scan程式具有下述作用。
● 探測:通過顯示響應IKE 請求的主機,搜尋運作IKE 的主機。
● 識别:識别IPSec VPN伺服器采用的IKE 實作手段。通常,響應資訊包含VPN 伺服器廠商 和型号。這在接下來漏洞分析過程中是十分有用的。
通常來說,隻有ike-scan 這類工具才能找到IPSec VPN伺服器。因為IPSec 服務端程式并不 監聽TCP 端口,是以端口掃描程式不能探測IPSec VPN伺服器。而且這種伺服器并不會回複 ICMP unreachable 的錯誤資訊,是以UDP 掃描程式也無法搜尋到IPSec VPN伺服器。另外, 無論是向UDP 500 端口發送随機資料,還是向50 号或51 号IP 協定發送随機資料,這類服務 器并不進行任何響應。也就是說,如果要搜尋 IPSec VPN 服務,就隻能使用發送合法IKE數 據包的檢測程式,分析伺服器的有關響應。
ike-scan -M -A –Pike-hashkey 192.168.0.10
其中,各選項的作用分别如下。
● -M:将payload 的解碼資訊分為多行顯示,以便于閱讀。
● -A:使用IKE 的aggressive mode。
● -P:将aggressive mode 的預共享密鑰的哈希值儲存為檔案。
在SA(安全關聯)payload中有意義的資訊如下。
● Encryption:3DES。
● Hash:SHA1。
● Auth:PSK。
● Diffie-Hellman group:2。
● SA life time:28800 seconds。
該指令将預共享密鑰的哈希值被儲存為ike-hashkey檔案。
之後,使用psk-crack程式破解VPN連接配接的哈希值。有關指令如下。
psk-crack –d rockyou.txt ike-hashkey
此處,-d選項用于指定字典檔案
下一步任務是識别VPN伺服器。這時要不斷嘗試各種轉換(transform)參數,直到找到可接 受的參數為止。
有關轉換參數的詳細介紹,請參見http://www.nta-monitor.com/wiki/index.php/Ikescan_User_Guide#Trying_Different_Transforms。
參考前面的安全關聯payload資訊,我們使用下述指令進行識别。
ike-scan -M --trans=5,2,1,2 --showbackoff 192.168.0.10