主要拿來掃網路
主要語法
nmap <掃描方式> <選項> <目標>掃描方式
預設為TCP-SYN-sS,會傳送帶有SYN的封包,因此永遠不會完成三次握手
在root狀態下預設掃前1000個port
結果判斷
如果收到SYN-ACK代表port以開啟
如果收到的封包帶有RST代表port沒開
如果沒收到封包就是被過濾掉了
掃描選項
| 選項 | 含義 | 參數 |
|---|---|---|
-p | 定義掃描範圍 | 1,2,3,4 或1-4 |
-p- | 掃所有端口 | |
--top-ports | 掃nmap資料庫中最常用的n個端口 | =數量 |
-F | 掃大約100個最常見端口,快速掃描 | |
-sS | TCP-SYN,更隱蔽 | |
-sT | 完整TCP掃描,經歷完三次握手 | |
-sU | UDP掃描 | |
-sn | 不掃port | |
-n | 不解析DNS | |
-iL | 從文件讀取ip | <文件名>.lst |
-oA | 輸出的文件名稱 | <文件名> |
-PE | 發ICMP請求(Ping) | |
-Pn | 不發ICMP請求(Ping) | |
-sV | 掃描服務 | |
--packet-trace | 顯示所有收發的封包 | |
--reason | 顯示該結果的原因 | |
--disable-arp-ping | 取消arp ping | |
--stats-every | 隔一段時間就顯示狀態 | =<數字>s/m |
-v/-vv | 增加詳細程度 | |
-A | 執行服務偵測、作業系統偵測、traceroute,並使用預設腳本 |
| 效能 | |||||
|---|---|---|---|---|---|
| -T5 | -T4 | -T3 | -T2 | -T1 | -T0 |
主機掃描
判斷機器是否在線最有效的方法就是發ICMP
指令範例
sudo nmap 10.129.2.0/24 -sn -oA tnet | grep for | cut -d" " -f5其中10.129.2.0/24是目標網段
-sn代表不掃port
只有防火牆允許時這樣掃才有用
掃文件提供的IP
如果有一個.lst提供IP列表,nmap可以讀文件內容
sudo nmap -sn -oA tnet -iL hosts.lst | grep for | cut -d" " -f5-iL host.lst代表從該文件讀出目標IP
掃多個IP
可以用0-128的方式掃IP範圍
sudo nmap -sn -oA tnet 10.129.2.18-20| grep for | cut -d" " -f5掃單IP
在禁用端口掃描-sn下,nmap會自動發ICMP-PE請求,但是在發ICMP之前會先發ARP ping,而產生ARP reply
作業系統判斷
當TTL為128的時後系統是Windows
為64的時候是Unix/Linux
回傳結果
沒有列出的IP不代表沒開,有可能是==濾掉ICMP而已==。
端口掃描
確認端口狀態時會獲得幾種狀態
| 狀態 | 解釋 |
|---|---|
open | 已建立連接 |
closed | 因爲收到RST所以代表關閉 |
filtered | 沒收到封包所以不確定 |
unfiltered | 發TCP-ACK時可訪問但不確定狀態 |
open∣filtered | 特定端口沒回應,可能被防火牆檔下 |
closed∣filtered | 在IP空間掃描時無法確定端口被檔 |
服務掃描
有些時後 nmap 能給的資訊不夠多
就需要靠Tcpdump跟Nc攔截
Nmap Script Engine
NSE
透過 Lua 腳本與服務互動
類別
| 類別 | 說明 |
|---|---|
| auth | |
| broadcast | |
| brute | |
| default | -sC |
| discovery | |
| dos | |
| exploit | |
| external | |
| fuzzer | |
| instrusive | |
| malware | |
| version | |
| vuln |
預設腳本
sudo nmap <target> -sC特定腳本
sudo nmap <target> --script <category>已定義腳本
sudo nmap <target> --script <script-name>,<script-name>指定腳本
sudo nmap 10.129.2.28 -p 25 --script banner,smtp-commandsbanner
辨識目標 Linux 的 distro
smtp-commands
顯示可以與目標 SMTP 伺服器使用的指令
弱點評估
sudo nmap 10.129.2.28 -p 80 -sV --script vuln 用 vuln 的 script 找出所有已知漏洞