揭秘Nmap:網絡掃描神器,一鍵掌握主機在線狀態與服務版本
想要了解網絡安全卻不知如何開始?不妨關注一下nmap,這是一款非常實用的網絡安全工具。它不僅功能全面,而且免費且開源,對于網絡安全初學者來說是個好幫手,對經驗豐富的用戶來說也是不可或缺的。
Nmap的強大功能
Nmap功能豐富。它能檢查目標主機是否在線,這對于網絡維護人員至關重要,有助于了解網絡設備的運行狀態。比如,在企業局域網里,若某設備意外離線,Nmap能快速定位。此外,它還能檢測主機端口是否開啟,比如識別那些在安全檢測中需特別注意的高風險端口。
Nmap能夠識別主機上運行的服務及其版本。在網絡安全領域,了解目標主機所用的服務與版本,對黑客或安全人員來說,能讓他們有針對性地查找漏洞或構建防御措施。此外,它還能探測操作系統和設備類型,這對我們全面認識網絡狀況十分有益。
安裝準備
首先需要弄清楚nmap的官方下載網址。接下來,根據所使用的操作系統,下載并安裝相應的軟件。如果是使用Windows系統,需訪問官網,并選擇Windows版本的下載。同時,要留意網絡狀況,以保證下載過程順暢。
下載完畢后,請點擊安裝。隨后,點擊“同意”按鈕繼續操作。在此過程中,許多人可能忽視了某些細節,例如安裝過程中可能出現的插件。若未留意安裝,這可能會對nmap的完整功能造成影響。
安裝步驟
安裝過程有幾個重要環節。首先,需要調整安裝位置,根據電腦的存儲容量挑選合適的硬盤。雖然這一步看似容易,但選擇一個恰當的安裝位置可以使nmap運行更加順暢。接著,點擊“Install”按鈕,繼續進行下一步操作。
在操作過程中,可能會有插件需要安裝,此時還需留意確保電腦的殺毒軟件設置允許安裝。若殺毒軟件錯誤地阻止了插件的安裝,nmap的功能可能就無法正常發揮。
端口掃描
1、目標說明
掃描整個網段 192.168.1.0/24
掃描域名所在網段 www.baidu.com/24
掃描特定限制地址段 0-255.0-255.77.88
以上方式可以混合使用,之間用空格分隔
-iL 從列表輸入目標:nmap -sP -iL i:ip.txt #當需要掃描的地址過多,可以直接通過文件名導入。
-iR 隨機選擇目標:nmap -sP -iR 10 #后接參數表示隨機的個數,0為不限制個數,不合規的IP會自動忽略。
--exclude 排除不需要掃描的主機或段:nmap -sP 192.168.1.0/24 --exclude 192.168.1.1-100,192.168.1.200-254
--exclude #排除的IP地址或段通過文件導入。
2、參數說明
nmap –iflist : 查看本地主機的接口信息和路由信息
-A :選項用于使用進攻性方式掃描
-T4:指定掃描過程使用的時序,總有6個級別(0-5),級別越高,掃描速度越快,但也容易被防火墻或IDS檢測并屏蔽掉,在網絡通訊狀況較好的情況下推薦使用T4
-oX test.xml:將掃描結果生成 test.xml 文件,如果中斷,則結果打不開
-oA test.xml: 將掃描結果生成 test.xml 文件,中斷后,結果也可保存
-oG test.txt: 將掃描結果生成 test.txt 文件
-sn : 只進行主機發現,不進行端口掃描
-O : 指定Nmap進行系統版本掃描
-sV: 指定讓Nmap進行服務版本掃描
-p : 掃描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式來對目標主機進行掃描
-sU: 指定使用UDP掃描方式確定目標主機的UDP端口狀況
-script : 指定掃描腳本
-Pn :不進行ping掃描
-sP : 用ping掃描判斷主機是否存活,只有主機存活,nmap才會繼續掃描,一般最好不加,因為有的主機會禁止ping
-PI : 設置這個選項,讓nmap使用真正的ping(ICMP echo請求)來掃描目標主機是否正在運行。
-iL 1.txt : 批量掃描1.txt中的目標地址
-sL: List Scan 列表掃描,僅將指定的目標的IP列舉出來,不進行主機發現
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO來掃描SCTP協議端口的開放的情況
-sO: 使用IP protocol 掃描確定目標機支持的協議類型
-PO : 使用IP協議包探測對方主機是否開啟
-PE/PP/PM : 使用ICMP echo、 ICMP timestamp、ICMP netmask 請求包發現主機
-PS/PA/PU/PY : 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式進行發現
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密掃描方式來協助探測對方的TCP端口狀態
-e eth0:指定使用eth0網卡進行探測
-f : --mtu : 指定使用分片、指定數據包的 MTU.
-b : 使用FTP bounce scan掃描方式
-g:指定發送的端口號
-r: 不進行端口隨機打亂的操作(如無該參數,nmap會將要掃描的端口以隨機順序方式掃描,以讓nmap的掃描不易被對方防火墻檢測到)
-v 表示顯示冗余信息,在掃描過程中顯示掃描的細節,從而讓用戶了解當前的掃描狀態
-n : 表示不進行DNS解析;
-D : 用一組 IP 地址掩蓋真實地址,其中 ME 填入自己的 IP 地址
-R :表示總是進行DNS解析。
-F : 快速模式,僅掃描TOP 100的端口
-S : 偽裝成其他 IP 地址
--ttl : 設置 time-to-live 時間
--badsum: 使用錯誤的 checksum 來發送數據包(正常情況下,該類數據包被拋棄,如果收到回復,說明回復來自防火墻或 IDS/IPS)
--dns-servers : 指定DNS服務器
--system-dns : 指定使用系統的DNS服務器
--traceroute : 追蹤每個路由節點
--scanflags : 定制TCP包的flags
--top-ports :掃描開放概率最高的number個端口
--port-ratio : 掃描指定頻率以上的端口。與上述--top-ports類似,這里以概率作為參數
--version-trace: 顯示出詳細的版本偵測過程信息
--osscan-limit: 限制Nmap只對確定的主機的進行OS探測(至少需確知該主機分別有一個open和closed的端口)
--osscan-guess: 大膽猜測對方的主機的系統類型。由此準確性會下降不少,但會盡可能多為用戶提供潛在的操作系統
--data-length : 填充隨機數據讓數據包長度達到 Num
--ip-options : 使用指定的 IP 選項來發送數據包
--spoof-mac : 偽裝 MAC 地址
--version-intensity : 指定版本偵測強度(0-9),默認為7。數值越高,探測出的服務越準確,但是運行時間會比較長。
--version-light: 指定使用輕量偵測方式 (intensity 2)
--version-all: 嘗試使用所有的probes進行偵測 (intensity 9)
--version-trace: 顯示出詳細的版本偵測過程信息
nmap 192.168.1.0/24 -exclude 192.168.1.10 #掃描除192.168.1.0外的該網段的其他地址
nmap 192.168.1.0/24 -excludefile f:/1.txt #掃描除給定文件中的地址以外的其他地址
nmap -sF -T4 192.168.1.0 #探測防火墻狀態
3、主機發現
-sL: List Scan 列表掃描,僅將指定的目標的IP列舉出來,不進行主機發現。
-sP: ping掃描,也叫地毯式ping,發送一個ICMP請求和一個TCP請求到80端口,檢測活動主機。同時如果掃描同一局域網的話還會發ARP包進行探測。
-sn: Ping Scan 只進行主機發現,不進行端口掃描。
-Pn: 將所有指定的主機視作開啟的,跳過主機發現的過程。
-PS/PA/PU/PY[portlist]: 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式進行發現。
-PE/PP/PM: 使用ICMP echo、 ICMP timestamp、ICMP netmask 請求包發現主機。
-PO[protocol list]: 使用IP協議包探測對方主機是否開啟。
-PR: ARP ping,因為不需要arp 解析,所以會更快更可靠,即使指定了iP的請求方式,也會默認發送ARP探測,局域網內推薦。
-n/-R: -n表示不進行DNS解析;-R表示總是進行DNS解析。
--dns-servers : 指定DNS服務器。
--system-dns: 指定使用系統的DNS服務器
--traceroute: 追蹤每個路由節點
4、端口掃描基礎
默認掃描主句超過1660個TCP端口
6種端口狀態:
open:端口是開放的。
closed:端口是關閉的。
filtered:端口被防火墻IDS/IPS屏蔽,無法確定其狀態。
unfiltered:端口沒有被屏蔽,但是否開放需要進一步確定。
open|filtered:端口是開放的或被屏蔽,Nmap不能識別。
closed|filtered :端口是關閉的或被屏蔽,Nmap不能識別
5、端口掃描技術
Nmap的端口掃描參數都是"s"開頭,第二個字母為技術所選字母大寫。
-sS (TCY SYN 掃描)
半開放掃描, SYN/ACK表示端口在監聽(開放),而RST (復位)表示沒有監聽者。如果數次重發后仍沒響應, 該端口就被標記為被過濾。如果收到ICMP不可到達錯誤(類型3,代碼1, 2, 3, 9, 10,或者13),該端口也被標記為被過濾。
-sT (TCP connect 掃描)
TCP connect方式使用系統網絡API connect向目標主機的端口發起連接,如果無法連接,說明該端口關閉。該方式掃描速度比較慢,而且由于建立完整的TCP連接會在目標主機上留下記錄信息,不夠隱蔽。所以,TCP connect是TCP SYN無法使用才考慮使用的方式
-sU (UDP 掃描)
UDP掃描用于判斷UDP端口的情況,向目標主機的UDP端口發送探測包,如果收到回復ICMP port unreachable就說明該端口是關閉的;如果沒有收到回復,那說明該UDP端口可能是開放的或者屏蔽的。因此,通過反向排除法的方式來判斷哪些UDP端口是可能處于開放狀態的。
-sN (Null 掃描)
如果掃描系統遵循該RFC, 當端口關閉時,任何不包含SYN, RST,或者ACK位的報文會導致一個RST返回,而當端口開放時,應該沒有任何響應,只要不包|含SYN, RST,或者ACK,任何其它三種(FIN, PSH, and URG)的組合都行。不設置任何標志位(tcp標志頭是0)
-sF (FIN 掃描)
只設置TCP FIN標志位
-sX (Xmas 掃描)
只設置FIN,PSH,和URG標志位
-sA (TCP ACK 掃描)
向目標主機的端口發送ACK包,如果收到RST包,說明該端口沒有被防火墻屏蔽;沒有收到RST包,說明被屏蔽。該方式只能用于確定防火墻是否屏蔽某個端口,可以輔助TCP SYN的方式來判斷目標主機防火墻的狀況
-sW (TCP 窗口掃描)
通過檢查返回的RST報文的TCP窗口城確定窗口是否關閉,開放端口為正,關團端口為0,但是,這種情況很多系統并不適用,可以作為參考
-sM (TCP Maimon 掃描)
發送的TCP探測報文是FIN/ACK,無論端口開放或者關閉,都應該相應RST
-sO (IP協議掃描)
掃描目標主機開放了哪些協議,而不是端口,掃描會遍歷所有IP協議號,并且可以通過-p參數指定要掃描的協議號
-sI (Idlesan)
高級掃描,拖藏自身IP地址,可以指定你以為可能被信任的主機IP進行掃描,參考https://nmap.org/book/idlescan.html
-b (FTP彈跳掃描)
FTP允許用戶連接到一臺FTP服務器,然后要求文件送到一臺第三方服務器,這個特性大多被封禁,但是現在仍可以利用,用來繞過防火墻,因為一般FTP服|務器會有比web服務器更高的內網連通權限
--scanflags(定制的TCP掃描)
可以任意定制TCP標志位,包括: URG, ACK,PSH, RST, SYN,FIN等任意組合,組合順序不重要,除了設置標志位,還可以指定TCP掃描類型,不指定到默認SYN描
6、端口說明和掃描順序
默認情況下,Nmap用指定的協議對端口1到1024以及nmap-services文件中列出的更高的端口進行掃描。
-p (只掃描指定的端口)
可以單個端口,也可以1-99的范圍端口,開始和結束省略代表1和65535,兩端都省略表示掃描所有端口號,在-sO的協議號掃描中-p參數可以指定掃描的協號:當同時掃描TCP和UDP時, nmap-sU -sS -p U:53,137,T:23,3389,80 10.10.172.87,不加端口限制,默認最大
-F(快速掃描)
Fast mode – 快速模式,僅掃描TOP 100的端口
-r (不要按隨機順序掃描端口)
Nmap默認是隨機掃描,常用端口會前移,用-r 選項可以強制按順序掃描端口。
--top-ports
掃描開放概率最高的number個端口(nmap的作者曾經做過大規模地互聯網掃描,以此統計出網絡上各種端口可能開放的概率。以此排列出最有可能開放端口的列表,具體可以參見文件:nmap-services。默認情況下,nmap會掃描最有可能的1000個TCP端口)
--port-ratio
掃描指定頻率以上的端口。與上述--top-ports類似,這里以概率作為參數,讓概率大于--port-ratio的端口才被掃描。顯然參數必須在在0到1之間,具體范圍概率情況可以查看nmap-services文件
7、服務與版本探測
-sV (版本探測)
打開版本探測
-A (操作系統探測)
打開操作系統探測
-sR (RPC 掃描)
和端口掃描結合使用,對發現開放的端口執行命令,確定是否是RPC端口,如里是,打印詳細信息。這作為-sV的一部分自動打開。由于版本探測包含它并且全面的多,所以-sR很少被需要。
--allports (不為版本探測排除任何端口)
默認情況下,nmap會跳過9100TCP端口,以為打印機會打印一堆這種掃描請求。用--allports 可以不排除任何端口。
--version-intensity (設置版本掃描強度)
共有0-9個級別的探測強度,默認為7,強度值越高,掃描的越準確,也越慢,當探測報文通過nmap-service-probes port指示符注冊到目標端口時,不論什么強度都會默認掃描
--version-light (打開輕量級模式)
掃描強度為2 的別名
--version-all (嘗試每個探測)
掃描強度為9的別名
--version-trace (跟蹤版本掃描活動)
會同步打印正在掃描的調試信息,是--packet-trace 的所得信息的子集。
8、操作系統探測
nmap 發送大量的查詢信息,根據反饋對比自己對于系統描述的數據庫,最后確定操作系統類型。
-O (啟用操作系統檢測)
也可以使用-A來同時啟用操作系統檢測和版本檢測。
--osscan-limit (針對指定的目標進行操作系統檢測)
這個選項是只對發現一個打開或者關閉的TCP端口的主機進行操作系統檢測,以提高效率,并且只在-O 或者-A 時起作用。
--osscan-guess; --fuzzy (推測操作系統檢測結果)
默認開啟,是指如果nmap不能確定操作系統,那么會提供一個相近的匹配。
9、時間和性能
nmap 開發的最高優先級是性能,本地網絡一個主機的默認掃描是1/5秒。
-T (設置時間模板)
模板化選項,編號0-5, 0-1躲避IDS; 2 降低掃描速度, 節約帶寬和目標主機資源;3默認選項;4 假設用戶網絡健康加速掃描;5極快模式,消耗更多的網絡資源,追求速度降低準確性; 2比3要慢10倍;-T4禁止掃描延遲超過10ms的主機, -T5延遲不能超過5ms;0、1、2都不是并行掃描,不適用于大數據量1的掃描
T4選項與--max-rtt-timeout 1250 --initial-rtt-timeout 500等價,最大TCP掃描延遲為10ms。
T5等價于--max-rtt-timeout 300--min-rtt-timeout 50 --initial-rtt-timeout 250--host-timeout 900000,最大TCP掃描廷遲為5ms
--scan-delay
--max-scan-delay (調整探測報文的時間間隔)
對于對掃描有速率或閾值限制的時候,這個選項可以調整掃描的發包間隔,避免被IPS
--host-timeout (放棄低速目標主機)
默認對于掃描超過1800000ms(半個小時)的主機進行忽略,并且在這半個小時中nmap是在同時掃描別的主機,并沒有停止,忽略了就不會有結果輸出。
--min-hostgroup
--max-hostgroup (調整并行掃描組的大小)
nmap并發掃描是先分組再掃描,所分的組大小大于設定的最小組,小于最天1組,必須是掃描完整個組才會出掃描報告,一般最小組為5,最大為1024,nmap一般采用先小組出結果,然后增加組的大小增快掃描速度。
--min-parallelism
--max-parallelism (調整探測報文的并行度)
指定一個范圍,nmap 會根據網絡狀況和主機性能,自動調整并行報文探測的數量,并行度數量一般是1到幾百。
--min-rtt-timeout
--max-rtt-timeout
--initial-rtt-timeout (調整探測報文超時)
nmap會根據上一個探測報文自動計算時值,本地網絡max 100ms比較合適,有路由的話可以先ping測試看延遲,然后init是往返時間的2倍, max是3-4倍,通常, max不能小于100ms,不能超過1000ms, min很少使用。
在進行端口掃描的過程中,Nmap會參照nmap-services中的數據包返回結果,識別出特定端口所運行的服務及其版本信息。比如,當檢測到端口為TCP時,Nmap會嘗試連接該端口以啟動服務。眾多常見服務,諸如FTP和SSH等,通常會在其歡迎信息中明確標示自身。
常見的Nmap命令:
-A :選項用于使用進攻性方式掃描
-T4:指定掃描過程使用的時序,總有6個級別(0-5),級別越高,掃描速度越快,但也容易被防火墻或IDS檢測并屏蔽掉,在網絡通訊狀況較好的情況下推薦使用T4
-sn : 只進行主機發現,不進行端口掃描
-O : 指定Nmap進行系統版本掃描
-sV: 指定讓Nmap進行服務版本掃描?
-p : 掃描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式來對目標主機進行掃描
-sU: 指定使用UDP掃描方式確定目標主機的UDP端口狀況
-script : 指定掃描腳本
-Pn :不進行ping掃描
-v 表示顯示冗余信息,在掃描過程中顯示掃描的細節,從而讓用戶了解當前的掃描狀態
面試問題
Nmap收到數據后,會將其與存儲在Nmap服務探測文件中的約3000個NULL探測標記進行對照。此外,對于已軟匹配的服務,Nmap會繼續發送探測數據,以識別其版本。
腳本交互
Nmap能夠與腳本實現交互,借助Nmap腳本引擎(NSE)以及Lua編程語言。這樣,我們就能拓展nmap的功能。我們可以根據自身需求編寫腳本,對各類網絡環境和目標進行個性化檢測與分析。
編寫這里的腳本需要具備一定的編程技能,這對初學者來說或許有些挑戰。不過,一旦掌握了技巧,就能顯著增強nmap工具的運用靈活性。
網絡安全學習助力
這里有份特別的禮物等大家,就是282G的《網絡安全與黑客技術基礎學習套裝》。套裝內容相當豐富,從網絡安全初學者的資料到相關技術的視頻教學,一應俱全。
新手若想踏入網絡安全領域,已有科學完備的學習路徑。考慮到眾多人偏好易懂內容,特設了21個章節的視頻教學,并附上了SRC技術文獻及黑客技術相關資料。這樣的學習資源,你感覺是否對你的網絡安全學習大有裨益?不妨點贊并分享這篇文章,你的意見也歡迎在評論區留言。
作者:小藍
鏈接:http://m.huanchou.cn/content/5476.html
本站部分內容和圖片來源網絡,不代表本站觀點,如有侵權,可聯系我方刪除。