1 nmap 介紹
Nmap (網絡映射器)是由 Gordon Lyon設計,用來探測計算機網絡上的主機和服務的一種 安全掃描器。爲了繪製網絡拓撲圖,Nmap的發送特製的數據包到目標主機,然後對返回數據包進行分析。Nmap是一款枚舉和測試網絡的強大工具。
Nmap 特色用途:
主機探測:探測網絡上的主機,例如列出響應TCP和ICMP請求、icmp請求、開放特別端口的主機 端口掃描:探測目標主機所開放的端口 版本檢測:探測目標主機的網絡服務,判斷其服務名稱及版本號 系統檢測:探測目標主機的操作系統及網絡設備的硬件特性 支持探測腳本的編寫:使用Nmap的腳本引擎(NSE)和Lua編程語言
2 nmap 安裝
nmap可以到http://nmap.org/download.html下載最新版本
Nmap 安裝:根據提示嚮導,下一步、下一步進行安裝,so easy!。
進入命令提示符(cmd),輸入nmap,可以看到nmap的幫助信息,說明安裝成功。
3 nmap 命令操作
3.1 Nmap 簡單掃描
Nmap 默認發送一個arp的ping數據包,來探測目標主機在1-10000範圍內所開放的端口。
命令語法:
nmap <target ip address>
解釋:Target ip address 爲你目標主機的ip地址
例子:
3.2 Nmap 詳細輸出掃描結果。
命令語法:
nmap -vv <target ip address>
解釋:-vv 參數設置對結果的詳細輸出。
例子:
3.3 nmap 指定端口掃描
nmap 默認掃描目標1-10000範圍內的端口號。我們則可以通過參數-p 來設置我們將要掃描的端口號。
命令語法:
nmap -p(range) <target IP>
nmap -p(range,port2,port3,...) <target ip>
解釋:(rangge)爲要掃描的端口(範圍),端口大小不能超過65535,Target ip 爲目標ip地址
例子:掃描目標主機8000-8080和443端口:
3.4 nmap ping 掃描
nmap 可以利用類似window/linux 系統下的ping方式進行掃描。
命令語法:
nmap -sP <target ip>
解釋:sP 設置掃描方式爲ping掃描
例子:感覺沒啥用
3.5 nmap 路由跟蹤
路由器追蹤功能,能夠幫網絡管理員瞭解網絡通行情況,同時也是網絡管理人員很好的輔助工具!通過路由器追蹤可以輕鬆的查處從我們電腦所在地到目標地之間所經常的網絡節點,並可以看到通過各個節點所花費的時間
命令語法:
nmap --traceroute <target ip>
例子:
3.6 nmap 還可以設置掃描一個網段下的ip
命令語法:
nmap -sP <network address></CIDR>
nmap -sP <network address>-END
解釋:CIDR 爲你設置的子網掩碼(/24 , /16 ,/8 等),或者192.168.0.1-255
例子:24代表24位爲子網掩碼,即前三段不變,尾號變,相當於0-255
3.7 nmap 操作系統類型的探測
nmap 通過目標開放的端口來探測主機所運行的操作系統類型。這是信息收集中很重要的一步,它可以幫助你找到特定操作系統上的含有漏洞的的服務。
命令語法:
nmap -O <target ip>
例子:拿IPhone手機試試效果
3.8 nmap 全功能掃描
包含了1-10000的端口ping掃描,操作系統掃描,腳本掃描,路由跟蹤,服務探測。
命令語法:
nmap -A <target ip>
例子:
3.9 nmap 命令混合式掃描
就是以上多種命令組合,沒啥好多的,要啥功能自己加,如:nmap -vv -p1-1000 -O <target ip>
3.10 nmap過濾結果技巧
- 掃描特定端口,把開放該端口的主機IP,寫入到指定文件裏
nmap -vv -n –sS -sU -p22 192.168.1.0/24 | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt
nmap -vv -n –sS -sU -p22 -iL iplist.txt | grep "Discovered open port" | awk {'print $6'} | awk -F/ {'print $1'} > ./22-output.txt
grep,awk都是linux指令,windows下咋辦呢?見:【工具-GnuWin】windows上使用linux指令
nmap -vv -n -sS -sU -p22 192.168.27.0/24 | C:\GnuWin\GnuWin32\bin\grep.exe "Discovered open port" | C:\GnuWin\gawk-3.1.6-1-bin\bin\awk.exe {"print $6"} | C:\GnuWin\gawk-3.1.6-1-bin\bin\awk.exe -F/ {"print $1"} > E:\桌面\hack\workspace\22-output.txt
還是該咋用咋用,效果一樣的好。
4 附錄
4.1 掃描結果說明
- NMap的6種端口狀態
open(開放的)
應用程序正在該端口接收TCP 連接或者UDP報文。發現這一點常常是端口掃描 的主要目標。安全意識強的人們知道每個開放的端口 都是攻擊的入口。攻擊者或者入侵測試者想要發現開放的端口。 而管理員則試圖關閉它們或者用防火牆保護它們以免妨礙了合法用戶。 非安全掃描可能對開放的端口也感興趣,因爲它們顯示了網絡上那些服務可供使用。
closed(關閉的)
關閉的端口對於Nmap也是可訪問的(它接受Nmap的探測報文並作出響應), 但沒有應用程序在其上監聽。 它們可以顯示該IP地址上(主機發現,或者ping掃描)的主機正在運行up 也對部分操作系統探測有所幫助。 因爲關閉的關口是可訪問的,也許過會兒值得再掃描一下,可能一些又開放了。 系統管理員可能會考慮用防火牆封鎖這樣的端口。 那樣他們就會被顯示爲被過濾的狀態,下面討論。
filtered(被過濾的)
由於包過濾阻止探測報文到達端口, Nmap無法確定該端口是否開放。過濾可能來自專業的防火牆設備,路由器規則 或者主機上的軟件防火牆。這樣的端口讓攻擊者感覺很挫折,因爲它們幾乎不提供 任何信息。有時候它們響應ICMP錯誤消息如類型3代碼13 (無法到達目標: 通信被管理員禁止),但更普遍的是過濾器只是丟棄探測幀, 不做任何響應。 這迫使Nmap重試若干次以訪萬一探測包是由於網絡阻塞丟棄的。 這使得掃描速度明顯變慢。
unfiltered(未被過濾的)
未被過濾狀態意味着端口可訪問,但Nmap不能確定它是開放還是關閉。 只有用於映射防火牆規則集的ACK掃描纔會把端口分類到這種狀態。 用其它類型的掃描如窗口掃描,SYN掃描,或者FIN掃描來掃描未被過濾的端口可以幫助確定 端口是否開放。
open|filtered(開放或者被過濾的)
當無法確定端口是開放還是被過濾的,Nmap就把該端口劃分成 這種狀態。開放的端口不響應就是一個例子。沒有響應也可能意味着報文過濾器丟棄 了探測報文或者它引發的任何響應。因此Nmap無法確定該端口是開放的還是被過濾的。 UDP,IP協議, FIN,Null,和Xmas掃描可能把端口歸入此類。
closed|filtered(關閉或者被過濾的)
該狀態用於Nmap不能確定端口是關閉的還是被過濾的。 它只可能出現在IPID Idle掃描中
4.2 nmap -h 完整翻譯
使用方法: nmap [掃描類型(s)] [選項] {目標說明}
目標說明:
通過主機名稱, IP 地址, 網段, 等等.
協議: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL <inputfilename>: 輸入 主機或者網段
-iR <主機數>:隨機選擇目標
–exclude <主機1[,主機2][,主機3],…>: 排除的IP或者網段
–excludefile <exclude_file>: 從文件中排除
主機發現:
-sL: List Scan – 簡單的列出目標進行掃描
-sn: Ping Scan – 禁用端口掃描
-Pn: Treat all hosts as online — 不使用主機發現
-PS/PA/PU/PY[portlist]: 通過TCP SYN/ACK, UDP or SCTP 等協議發現指定端口
-PE/PP/PM: 使用ICMP協議響應, 時間戳, 和子網掩碼 請求 發現 探測
-PO[protocol list]: 使用ip協議
-n/-R: Never do DNS resolution/Always resolve [默認選項]
–dns-servers <serv1[,serv2],…>: 自動以DNS
–system-dns: 使用系統DNS
–traceroute: 跟蹤每個主機的路徑
掃描技術:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 等協議掃描
-sU: UDP 掃描
-sN/sF/sX: 空的TCP, FIN, 和 Xmas 掃描
–scanflags <flags>:自定義tcp掃描
-sI <zombie host[:probeport]>: 空間掃描
-sY/sZ: SCTP初始化 或者 cookie-echo掃描
-sO: IP協議掃描
-b <FTP relay host>: FTP 反彈掃描
規範端口和掃描序列:
-p <port ranges>: 只掃描指定端口
使用規範: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
–exclude-ports <port ranges>: 排除指定端口掃描
-F: 快速掃描- 掃描常用端口
-r: 連續端口掃描 – 不隨機
–top-ports <number>: 掃描 <number> 常見的端口
–port-ratio <ratio>: Scan ports more common than <ratio>
服務和版本檢測:
-sV: 探索開放的端口 以確定服務和版本號
–version-intensity <level>:設置從0-9所有的探針
–version-light:最有可能的漏洞探針(intensity 2)
–version-all: 嘗試每一個漏洞探針 (intensity 9)
–version-trace: 顯示詳細的版本掃描活動 (調試)
掃描腳本的使用:
-sC: 默認腳本進行探測
–script=<Lua scripts>: <Lua scripts> 用 逗號分隔的列表, 腳本目錄or 腳本類別
–script-args=<n1=v1,[n2=v2,...]>: 爲腳本提供參數
–script-args-file=filename:在一個文件中提供NSE腳本(自定義腳本)
–script-trace: 顯示所有發送和接收的數據
–script-updatedb: 更新腳本數據庫
–script-help=<Lua scripts>: 顯示腳本幫助
<Lua scripts> 是一個逗號分隔的腳本文件列表或腳本類.
操作系統識別:
-O: 使用操作系統探測
–osscan-limit: Limit OS detection to promising targets
–osscan-guess: Guess OS more aggressively
定時和性能:
用於定時任務 <時間> 在多少秒, 或者追加’毫秒’ ,
‘秒’ , ‘分鐘’ , 或者 ‘小時’去設置 (e.g. 30m).
-T<0-5>: 設置定時模板 (更方便)
–min-hostgroup/max-hostgroup <size>: 並行掃描的最大值和最小值
–min-parallelism/max-parallelism <numprobes>: 並行掃描
–min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: 指定掃描結束時間
–max-retries <tries>: Caps number of port scan probe retransmissions.
–host-timeout <time>: Give up on target after this long
–scan-delay/–max-scan-delay <time>: 調整每次掃描的延遲
–min-rate <number>: 發送的數據包不低於《數值》
–max-rate <number>: 發送的數據包不超過《數值》
防火牆/ IDS逃避和欺騙:
-f; –mtu <val>: 碎片包 (可以選擇 w/given MTU)
-D <decoy1,decoy2[,ME],…>: Cloak a scan with decoys
-S <IP_Address>: 源地址欺騙
-e <iface>: 使用指定的接口
-g/–source-port <portnum>:使用給定的端口號
–proxies <url1,[url2],…>: Relay 通過使用 HTTP/SOCKS4 代理
–data <hex string>:附加一個自定義的有效載荷發送數據包
–data-string <string>: 添加一個自定義的ASCII字符串發送的數據包
–data-length <num>: 附加隨機數據發送數據包
–ip-options <options>: 用指定的IP選項發送數據包
–ttl <val>: 設置ip到達目標的時間
–spoof-mac <mac address/prefix/vendor name>:欺騙本地MAC地址
–badsum:發送用來效驗的僞造數據包 TCP/UDP/SCTP
輸出:
-oN/-oX/-oS/-oG <file>:輸出正常的掃描, XML格式, s|<rIpt kIddi3,和 Grepable 格式, respectively,或者指定的文件名
-oA <basename>: 一次輸出三種主要格式
-v: 增加詳細程度 (使用 -vv 顯示更詳細)
-d: 提高測試的詳細程度 (使用 -dd參數更詳細)
–reason: 顯示端口處於某個特定狀態的原因
–open: 只顯示開放的端口
–packet-trace: 顯示發送和接收的所有數據包
–iflist:打印主機接口和路由
–append-output: 附加到指定的輸出文件
–resume <filename>: 回覆終止的掃描
–stylesheet <path/URL>: XSL樣式錶轉換XML輸出HTML
–webxml: 從Nmap參考樣式。或者更便攜的XML
–no-stylesheet: Prevent associating of XSL stylesheet w/XML output
雜項:
-6: 啓用ipv6掃描
-A: 使操作系統版本檢測,檢測,腳本掃描和跟蹤
–datadir <dirname>: 指定自定義可以使用的數據文件位置
–send-eth/–send-ip:發送使用原始以太網幀或IP數據包
–privileged: 假設用戶是最高權限
–unprivileged: 假設用戶缺乏原始套接字特權
-V: 打印當前版本
-h: 顯示英文幫助文檔.
愛家人,愛生活,愛設計,愛編程,擁抱精彩人生!