1. 入侵檢測
使用入侵檢測系統(tǒng)(IDS)的公司也不斷增加。由于 nmap 常用于攻擊前期的掃描,因此所有主流的 IDS 都包含了檢測 nmap 掃描的規(guī)則。現(xiàn)在這些產(chǎn)品演變成入侵預(yù)防系統(tǒng)(IPS)早抠,可以主動地阻止可疑的惡意掃描行為。但是網(wǎng)絡(luò)管理員和 IDS 廠商通過分析報文來檢測惡意行為是一個艱苦的工作撬讽,有耐心和技術(shù)的攻擊者蕊连,在特定 nmap 選項的幫助下,常秤沃纾可以不被 IDS 檢測到甘苍。同時管理員必須應(yīng)付大量的誤報結(jié)果,正常的行為被誤判而被改變或被阻止烘豌。
2. 報文分段
-f
(報文分段) 該選項要求掃描時使用小的 IP 包分段载庭。將 TCP 頭分段在幾個包中使得包過濾器,IDS 以及其它工具的檢測更加困難廊佩。但這樣也是存在問題的有些系統(tǒng)在處理這些小包時存在問題囚聚,例如舊的網(wǎng)絡(luò)嗅探器 Sniffit 在接收到第一個分段時會立刻出現(xiàn)分段錯誤。
報文分段選項使用一次标锄,nmap 在 IP 頭后將包分成 8 個字節(jié)或更小顽铸。因此一個 20 字節(jié)的 TCP 頭會被分成 3 個 包,其中 2 個包分別有 TCP 頭的 8 個字節(jié)料皇,另 1 個包有 TCP 頭的剩下 4 個字 節(jié)谓松,注意每個包都會有一個 IP 頭這個和普通的 IP 報文分段一樣星压,分段后的包都會有一個首部。
--mtu
(使用指定的 MTU) 該選項可以自定義報文偏移的大小鬼譬,使用時不需要 使用-f
選項娜膘,偏移量必須 是 8 的倍數(shù)(這一點和我們知道的普通的 IP 報文也是一樣的,偏移量必須是 8 的倍數(shù))优质。
包過濾器和防火墻對所有的 IP 分段排隊竣贪,如 linux 核心中的
CONFIG_IP_ALWAYS_DEFRAG
配置項,分段包不會直接使用巩螃。一些網(wǎng)絡(luò)無法承受這樣所帶來的性能沖擊贾富,會將這個配置禁止。
3. 使用誘餌隱蔽掃描
-D <decoy1 [牺六,decoy2][颤枪,ME],...>
(使用誘餌隱蔽掃描) 為使誘餌掃描起作用淑际,需要使遠程主機認為是誘餌在掃描目標(biāo)網(wǎng)絡(luò)畏纲。 IDS 可能會報個某個 IP 的 5-10 個端口掃描,但并不知道哪個 IP 在掃描以及哪些不是誘餌春缕。但這種方式可以通過路由跟蹤盗胀,響應(yīng)丟棄以及其它主動 機制在解決。這是一種常用的隱藏自身 IP 地址的有效技術(shù)锄贼。
使用逗號分隔每個誘餌主機票灰,也可用自己的真實 IP 作為誘餌,這時可使用
ME
選項說明宅荤。如果在第 6 個位置或 更后的位置使用ME
選項屑迂,一些常用端口掃描檢測器(如 SolarDesigner's excellent scanlogd)就不會報告 這個真實 IP。如果不使用ME
選項冯键,nmap 將真實 IP 放在一個隨機的位置惹盼。
作為誘餌的主機須在工作狀態(tài),否則會導(dǎo)致目標(biāo)主機的 SYN 洪水攻擊惫确。 如果在網(wǎng)絡(luò)中只有一個主機在工作手报,那就很容易確定哪個主機在掃描。也可 使用 IP 地址代替主機名(被誘騙的網(wǎng)絡(luò)就不可能在名字服務(wù)器日志中發(fā)現(xiàn))改化。
誘餌可用在初始的 ping 掃描(ICMP掩蛤、SYN、ACK 等)階段或真正的端口掃描 階段陈肛。誘餌也可以用于遠程操作系統(tǒng)檢測 (
-O
選項)揍鸟。在進行版 本檢測或 TCP 連接掃描時,誘餌無效燥爷。
使用過多的誘餌沒有任何價值蜈亩,反而導(dǎo)致掃描變慢并且結(jié)果不準(zhǔn)確。 此外一些 ISP 會過濾哄騙的報文前翎,但很多對欺騙 IP 包沒有任何限制稚配。
4. 源地址哄騙
-S <IP address>
(源地址哄騙) 有時 nmap 可能無法確定你的源地址這時 nmap 會給出提示。此時使用該選項并說明所需發(fā)送包的接口 IP 地址港华。這個標(biāo)志的另一個用處是哄騙性的掃描道川,使得目標(biāo)認為是另 一個地址在進行掃描。-e
選項常在這種情況下使用或采用-P0
選項立宜。
5. 使用指定的接口
-e <interface>
(使用指定的接口) 該選項告訴 nmap 使用哪個接口發(fā)送和接收報文冒萄,nmap 可以進行自動檢測, 如果檢測不出會給出相應(yīng)提示橙数。
6. 源端口哄騙
--source-port <portnumber>
和-g <portnumber>
(源端口哄騙) nmap 提供了--source-port
和-g
選項尊流,這兩個選項是相同的。只需要提供一個端口號灯帮,nmap 就可以從這些端口發(fā)送數(shù)據(jù)崖技。為使特定的操作系統(tǒng)正常工作,nmap 必須使用不同的端口號钟哥。 還有一個問題就是 DNS 請求會忽略--source-port
選項迎献,這是因為 nmap 依靠系統(tǒng)庫來處理。但是沒關(guān)系大部分 TCP 掃描腻贰,SYN 掃描吁恍,UDP 掃描可以完全支持這些選項。
這個選項主要用來掃描僅依賴于源端口號就信任數(shù)據(jù)流的場景播演,比如這樣的場景:一個管理員部署了一個新的防火墻冀瓦,但是由于外部的 UDP DNS 服務(wù)器響應(yīng)無法進入網(wǎng)絡(luò),而導(dǎo)致 DNS 的崩潰写烤。FTP 是另一個常見的例子咕幻,在 FTP 傳輸時遠程服務(wù)器嘗試和內(nèi)部用建立連接以傳輸數(shù)據(jù)。對這些問題有安全解決方案顶霞,通常是應(yīng)用級代理或協(xié)議分析防火墻模塊肄程。但也存在一些不安全的方案,比如 DNS 響應(yīng)來自于 53 端口选浑,F(xiàn)TP 連接來自于 20 端口蓝厌,很多管理員會掉入一個陷阱,認為這些端口里不會有值得注意的攻擊和漏洞利用就允許來自于這些端口的數(shù)據(jù)進入網(wǎng)絡(luò)古徒。此外認為這是一個短期臨時的措施拓提,后面想到好的辦法再采取更安全的方案,但是后面卻忘記了這個問題而沒有升級隧膘。
7. 發(fā)送報文時附加隨機數(shù)據(jù)
--data-length <number>
(發(fā)送報文時 附加隨機數(shù)據(jù)) 我們知道正常情況下 nmap 發(fā)送最少的報文代态,只含一個包頭寺惫。對于 TCP 協(xié)議包來說包通常 是 40 字節(jié),對于 ICMP ECHO 請求來說只有 28 字節(jié)蹦疑。
該選項告訴 nmap 在發(fā)送的報文上 附加指定數(shù)量的隨機字節(jié)西雀。注意數(shù)據(jù)是 nmap 隨機附加的,并不需要人為指定歉摧,對于操作系統(tǒng)檢測(
-O
選項)包不受影響艇肴, 但大部分 ping 和端口掃描包會受影響,這會使處理變慢叁温,但對掃描的影響較小再悼。
8. 設(shè)置 IP time-to-live 域
--ttl <value>
(設(shè)置 IP time-to-live 域) 該選項用于設(shè)置 IPv4 報文的time-to-live
(該選項指的是報文活動周期)域為指定的值。這個域值表明這個數(shù)據(jù)包還能活動多久膝但。
9. 對目標(biāo)主機的順序隨機排列
--randomize-hosts
(對目標(biāo)主機的順序隨機排列) 該選項告訴 nmap 在掃描主機前對每個組中的主機隨機排列冲九,最多可以排列 8096 個主機。這會使得掃描針對不同的網(wǎng)絡(luò)監(jiān)控系統(tǒng)來說變得不是很 明顯跟束,特別是配合值較小的時間選項時更有效娘侍。如果需要對一個較大 的組進行隨機排列,需要增大 nmap.h 文件中PING_GROUP_SZ
的值泳炉,并重新編譯憾筏。另一種方法是使用列表掃描(-sL -n -oN filename
),產(chǎn)生目標(biāo) IP 的列表花鹅, 使用 Perl 腳本進行隨機化氧腰,然后使用-iL <文件名>
(從列表中輸入) 選項將文件提供給 nmap。
10. MAC 地址哄騙
要求 nmap 在發(fā)送原以太網(wǎng)幀時使用指定的
MAC
地址刨肃,該選項隱含了--send-eth
選項古拴,以保證 nmap 真正發(fā)送以太網(wǎng)數(shù)據(jù)包。
MAC
地址有幾 種格式真友。如果簡單地使用字符串“0”
黄痪,nmap 選擇一個完全隨機的MAC
地址。如果給定的字符品是一個 16 進制偶數(shù)(使用:
分隔)盔然,nmap 將使用這個MAC
地址桅打。如果是小于 12 的 16 進制數(shù)字,nmap 會隨機填充剩下的 6 個字節(jié)愈案。如果參數(shù)不是 0 或 16 進制字符串挺尾,nmap 將通過nmap-mac-prefixes
查找 廠商的名稱(名稱區(qū)分大小寫),如果找到匹配 nmap 將使用廠商的 OUI(3 字節(jié)前綴)站绪,然后 隨機填充剩余的 3 個節(jié)字遭铺。
通過以上分析,正確的
--spoof-mac
參數(shù)有,Apple魂挂, 0甫题,01:02:03:04:05:06,deadbeefcafe涂召,0020F2坠非, 和 Cisco
。