書名諸神之眼NMAP 學習筆記
nmap 僞裝技術
-
數據包分段
發送的數據包將原理的數據包分成幾個部分,防火牆在對數據包進行檢查時候會更加困難
注意:一些老的主機會老的系統可能會死機藍屏nmap -f [目標]
-
指定使用的MTU
最大傳輸單位(MTU),最大的數據包大小
一般來說,以太網的MTU的默認是1500bytes ,如果大於這個數就被分片
用參數--mtu
指定大小nmap --mtu [指定的大小] [目標]
列
nmap --mtu 16 192.168.1.1
-
誘餌主機隱藏掃描
就是我僞造多個主機,然後裏面就我真實的我,目標就不好判斷那個是真實的攻擊端了
在初始ping掃描(ICMP,SYN,ACK)和-O都可以用這個方法-
指端僞造的ip
nmap -D [僞造的ip],[僞造的ip],[僞造的ip]。。。 [目標]
-
用nmap隨機生成僞造源地址
nmap -D RND [僞造源地址數量] [目標]
-
-
源端口欺騙
如果本地端口有限制,就可以利用這個端口進行掃描
-g
和--source-port
這個兩個參數其實是一樣的格式
nmap -g [僞造的端口] [目標]
例如
nmap -g 53 192.168.1.1
-
發送報文時加隨機數據
nmap發送的數據包只有包頭,內容是空的,
可以使用這個參數--data-length
進行修改隨機內容
格式nmap --data-length [要添加的隨機數據] [目標]
例如
nmap --data-length 50 192.168.1.1
-
TTL設置
ttl值Windows 是128(65——128)
Linux 和 Unix = 64 (1-64) Unix = 255
格式nmap --ttl [tti的值] [目標]
例如
nmap --ttl 50 192.168.1.1
-
MAC地址欺騙
格式nmap --spoof-mac [欺騙的MAC地址] [目標]
如果欺騙的MAC地址是0 nmap會選擇一個全部隨機的MAC地址
如果欺騙的MAC地址是小於12的十六進制的數字,nmap會隨機填充後面的6個字節
nmap會通過查詢nmap-mac-prefixes查詢廠商的名稱(區分大小寫)
例如nmap --spoof-mac 0 192.168.43.1
TCP完連接(Connect)掃描的檢查
Nmap向一個開放的端口發起了連接請求,並且完成了三次握手,之後結束了這次連接。這種掃描很容易被檢測到,如果沒有開放目標會返回一個RST,這樣斷開會產生大量的錯誤消息,而這些記錄會被記錄下來
例如
nmap -sT [目標]
出現上面的情況可能就說明是有人在掃描你
如果有入侵檢測設備就會報警
查看最多發的請求
nmap掃描結果保存
-
txt文件保存參數
-oN
格式nmap -oN [*.txt] [目標]
-
XML格式保存參數
-oX
格式nmap [*,xml] [目標]
-
grep格式保存參數`-oG
格式nmap -oG [*.gerp] [目標]
NSE的基礎部分
-
NES的腳本的運行,
現在使用NSE腳本進行測試一臺服務器添加選項-sC
例如nmap -sV -sC -O scanme.Nmap.org
-
NMSE中的腳本的分類
-
NSE腳本的選擇
腳本的位置在/usr/share/nmap/scripts
文件夾裏面
用使用腳本--script [腳本的文件名或者是路徑文件名]
運行腳本他也支持表達式
列
1.使用nmap來枚舉出目標web服務器的支持的HTTP方法nmap -p 80 --script http-methods 192.168.30.34
可以看見目標支持的服務有GET HEAD POST OPTIONS2.或者也可以使用種類的名字來調用一個分類中的全部腳本
-
使用一個safe類型的全部腳本進行掃描
nmap --script safe 192.168.30.34
-
使用多個腳本進行掃描safe類型和discovery類型的全部腳本進行掃描
例如nmap --script safe,discovery 192.168.30.34
3.-sC參數
-sC參數它是–scriptDefault的縮寫。也就是使用default分類下的腳本對目標進行掃描。
4.有可以指定一個位置進行掃描
例如nmap -p 80 --script /usr/share/nmap/scripts/http-methods.nse 192.168.30.34
和上面的nmap -p 80 --script http-methods 192.168.30.34
掃描是一樣的
4.也可以使用表達式
使用表達式or,and和not-
not例
例如想使用除了exploit分類以外的所有腳本對目標進行檢測,命令如下nmap -sV --script "not exploit" 192.168.30.34
-
or例
如果想使用除了intrusive、dos、exploit分類以外的所有腳本對目標進行檢測,命令如下nmap -sV --script "not (intrusive or dos or exploit)" 192.168.30.34
-
and例
如果只使用broadcast和discovery分類的腳本對目標進行檢測,命令如下nmap -sV --script "broadcast and discovery" 192.168.30.34
-
也可以使用*和表達式進行結合
*是代表所有的意思
例如希望對一個FTP服務器進行審計,但是不希望使用intrusive分類中的腳本,就可以使用如下命令nmap --script "ftp-* and not(intrusive)" 192.168.30.34
-
瞭解腳本的原理
-
如果不僅僅想利用Nmap腳本的強大實力,還想進一步瞭解腳本的原理,可以使用
--script-trace
參數**
例如nmap -p 80 --script http-methods 192.168.30.34 --script-trace
1.2也可以使用-d[1到9]輸出更詳細詳細,數字大,輸出就越詳細
例如nmap -p 80 --script http-methods 192.168.30.34 --script-trace -d3
-
使用–packet-trace選項可以查看所有發送和收到的數據包**
例如nmap -p 80 --script http-methods 192.168.30.34 --packet-trace
NSE常見腳本的應用
nmap只能進行簡單系統檢查和服務檢查,而NSE實現了大量的高級功能,
-
信息收集類腳本
基於http-methods腳本的審計目的,web服務器支持的http的方法
1. GET:請求指定的頁面信息,並返回實體主體
2. HEAD:類似於GET請求,只不過返回的響應中沒有具體的內容,用於獲取報頭。
3. POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。
4. PUT:從客戶端向服務器傳送的數據取代指定文檔的內容。
5. DELETE:請求服務器刪除指定的頁面。
6. OPTIONS:允許客戶端查看服務器的性能。TRACE:回顯服務器收到的請求,主要用於測試或診斷。
例如nmap -p 80 --script http-methods 192.168.30.34
-
高級主機發現類腳本
-
腳本broadcast-ping.NSE
這個broadcast-ping
這個腳本是發現本地的活躍的主機,其實nmap也能實現,nmap是向每個ip發單播探針數據包來實現的
broadcast-ping.nse腳本不同的是他是向本地網絡中所有的IP地址發送廣播包。 -
腳本targets-sniffer
targets-sniffer
腳本發現本地網絡中的所有主機
腳本targets-sniffer的審計方法十分特殊,它會對你所在的網絡進行嗅探,發現網絡中的所有主機。這個腳本需要特權模式,也可以使用-e來執行網絡監聽的網卡設備,這個不需要指定目標他會檢查本地的ip,例如你所在的網絡IP地址爲192.168.0.0/24
例如nmap --script targets-sniffer -e eth0
-
-
密碼審計類腳本
-
腳本mysql-brute.NSE
在Nmap中有兩個數據文件,一個文件中包含一些常見的用戶名,另一個文件中包含有一些常見的密碼
例如nmap -p 3306 --script mysql-brute 192.168.30.39
也可以加
--packet-trace
發送和收到的數據包 -
腳本smtp-brute.NSE
這個腳本可以支持對SMTP密碼的暴力窮解,它支持LOGIN、PLAIN、CRAM-MD5、DIGEST-MD5和NTLM四種登錄方式。
默認情況下,smtp-brute.NSE使用/usr/share/nmap/nselib/data/usernames.lst
文件中的各項作爲用戶名,/usr/share/nmap/nselib/data/passwords.lst
文件中的各項作爲密碼。
例如nmap -p 25 --script smtp-brute 192.168.30.39
如果想指定字典文件可以用下面的命令
--script-args
是用來指定參數的Nmap -p 25 --script smtp-brute --script-args userdb=用戶字典, passdb=密碼字典 192.168.30.39
2.1用戶模式
這種模式先取一個用戶名,然後使用所有的密碼與其配對,所有組合都結束後,再開始下一個用戶名
例如
--script-args
是用來指定參數的nmap --script smtp-brute --script-args brute.mode=指定的用戶名 192.168.30.39
2.2密碼模式
這種模式先取一個密碼,然後使用所有的用戶名與其配對,當所有組合都結束後,再開始下一個密碼
例如nmap --script smtp-brute --script-args brute.mode=指定的密碼 192.168.30.39
2.3文件格式取用戶密碼
這種模式與前兩種不同,creds中所有的用戶名和密碼都寫在同一個文件中,格式類似於admin/123456這種形式,Nmap會讀取其中的每一行,然後訪問服務器進行匹配
例如Nmap --script smtp-brute --script-args brute.mode=creds,brute.credfile=文件名 192.168.30.39
-
-
漏洞掃描類腳本
-
腳本http-slowloris.NSE
http-slowloris.NSE腳本查看目標是否存在預防slowloris的 DoS攻擊
Slowloris是在2009年Web安全專家RSnake提出的一種攻擊方法,其原理是以極低的速度向服務器發送HTTP請求。由於Web Server對於併發的連接數都有一定的上限,導致拒絕服務
例如
--max-parallelism
這些選項控制用於主機組的探測報文數量nmap -p 80 --script http-slowloris --max-parallelism 300 192.168.30.39
這個方法是直接去打目標系統
1.1http-slowloris.NSE腳本擴展http-slowloris.send_interval參數
http-slowloris.send_interval
參數可以指定發送http header datas的間隔,默認值爲100
--script-args
是用來指定參數的
--max-parallelism
這些選項控制用於主機組的探測報文數量
例如Nmap -p 80 --script http-slowloris --script-args http-slowloris.send_interval=200 --max-parallelism 300 192.168.30.39
1.2http-slowloris.NSE腳本擴展http-slowloris.timelimit參數
攻擊時間,默認是30分鐘
--script-args
是用來指定參數的15m就是15分鐘
nmap -p 80 --script http-slowloris --script-args http-slowloris.timelimit=15m 192.168.30.39
1.3http-slowloris.NSE腳本擴展http-slowloris.runforever參數
這個參數是對目標系統進行一直DoS攻擊
--script-args
是用來指定參數的Nmap -p 80 --script http-slowloris --script-args http-slowloris.runforever 192.168.30.39
還有一個名爲http-slowloris-check.NSE的腳本也是用來發送slowloris的,都是他只會發送2個請求
例如nmap -p 80 --script http-slowloris-check 192.168.30.39
-
POODLE漏洞掃描ssl-poodle腳本
POODLE漏洞(亦即CVE-2014-3566)最早是由谷歌團隊發現的,可以攻擊者可以盜取,已經使用了的SSL3.0數據進行解密
需要攻擊者完全控制網絡的流量,比如ARP欺騙,釣魚wifi等等
名爲ssl-poodle的腳本來檢查POODLE漏洞
--version-all
相當於--version-intensity 9
掃描強度nmap -sV --version-all --script ssl-poodle -p 443 192.168.30.39
-