Nmap簡介
Nmap:開源、免費的網絡探測、安全審計工具
nmap 安裝在電腦后,電腦可以通過nmap 將數據包傳遞到相關的網絡設備,服務器接收到數據包后會返回一些信息,Nmap可以對這些信息進行分析。(通過nmap探測服務器存活以及開放的服務,對目標進行安全審計)。
Nmap原理:首先判斷nmap輸入的命令行中是否包含域名,如果包含域名需要用DNS服務器進行域名解析。然后發送ICMP Echo Request 來探測主機的存活性。Nmap根據返回的數據包來探測機器信息。
Nmap scanme.namp.org
Nmap參數和意義
-sT:TCP connect掃描,類似於的Metasploit中的tcp掃描模塊
-sS:TCP SYN掃描,類似於Metasploit中的syn掃描模塊,這種掃描方式不等待打開一天完全的TCP鏈接,所以速度的會更快,而且這種方式不會被IDS(入侵檢測系統)等設備記錄。
-sF/-sX/-sN:這些掃描通過發送一些特殊的標志位以避開設備或軟件的檢測
-sP:通過發送ICMP echo請求探測主機是否存活,原理同ping
-sU:探測目標主機開發了哪些UDP端口
-sA:TCP ACK掃描,類似於metasploit中的acK掃描模塊
-Pn:在掃描之前,不發送ICMP echo請求測試目標是否活躍。如果是在Internet環境,應該使用-Pn選項,不要使用ICMP ping,因為ICMP數據包通常無法穿透Internet上的網絡邊界
-O:啟用對於TCP/IP的協議棧指紋特征掃描以獲取遠程主機的操作系統類型等信息 -F :快速掃描的模式 -p<端口范圍>:可以用這個參數指定希望掃描的端口
例如:nmap scanme.nmap.org
nmap進行探測之前要把域名通過DNS服務器解析為IP地址,我們也可以使用指定的DNS服務器來進行解析。使用--dns-servers參數來指定
nmap --dns-servers 8.8.8.8 baidu.com
注意點:對於主機存活或者防火牆開啟的機器,可以使用-Pn參數來停止探測之前的ICMP請求,以達到不觸發防火牆的安全機制。
對於默認的端口范圍,並不能滿足日常工作需要。可以使用-p,m-n來指定探測端口范圍為m-n之間的所有端口
nmap -p <端口> <IP地址/域名>
namp -p 1-1000 nuistshare.cn
可以看到不需要的端口可以不掃描,並且知道了掃描了的1-1000端口內開放的端口、狀態與服務。
Nmap有多種端口狀態
Open:表示端口處於開放狀態
Closed:表示端口處於關閉狀態
Filtered:表示端口處於過濾無法收到返回的probe狀態
unfiltered:表示端口收到返回的probe,但是無法確認
Open/Unfiltered:表示端口處於開放或者是未過濾狀態
Closed/filtered:表示端口處於關閉或者是過濾狀態
服務指紋
為了確保有一個成功的滲透測試或網絡設備監控,必須知道目標系統中服務的指紋信息。服務指紋包括服務端口,服務名和版本等。
通過分析往Nmap發送的數據包的某些協議標記、選項和數據,我們推斷發送這些數據的包的操作系統。
nmap通過向目標主機發送多個UDP與TCP數據包並分析其相應來進行操作系統識別
nmap -sV IP //地址來識別目標主機的服務信息
可以說明tcp三次握手已經完成,但是並沒有和目標主機建立連接。
這表明這些服務是可以提供的,但是我們並不在訪問主機的名單之中,而有大量的端口為tcpwrpped,說明服務器采用了負載均衡或者防火牆。
nmap侵略性探測
nmap -A -v -T4 IP地址
//-A :使用侵略性的策略探測
//-v :持續輸出,返回解析不用按回車
//-T(1-5):掃描速度
nmap -A -v -T5 182.92.58.95 //注意此處只能是IP地址而能是域名
使用此方法,我們可以得到之前沒有得到的信息
nmap -sC -SV -o
-sC表示使用Nmap腳本進行探測,sV表示探測目標機器上的服務信息,表示探測目標機器上的操作系統信息
-O表示啟用對於TCP/IP的協議棧指紋特征掃描以獲取遠程主機的操作系統類型等信息
一個局域網中肯定連接着多個IP,可以使用ping命令去測試一下
CIDR(無類別域間路由)
nmap -sP CIDR :對該網絡中所有主機經了ping掃描,以探測主機的存活行,掃描過程中使用了,TCP/SYN掃描掃描,ICMP echo Request
來探測主機存活
nmap -sn CIDR :對該網絡中所有主機進行了掃描,不進行端口掃描,直接掃描存活性
nmap -Pn CIDR :對所有端口進行掃描
Nmap結果輸出
nmap -p 80,445 -v baidu.com -oX test.xml
掃描結果將輸入到test.xml中去
Nmap端口掃描技巧
實際場景:
在實際環境中,當系統管理員對設備進行管理時,或者滲透測試人員對設備進行檢測的時候,並不是一定對所有的服務進行操作,極有可能是對某個活某個范圍內的服務進行檢測。
如果對所有服務進行探測,那么就會出現耗時長,費力不討好的情況。針對這樣的情況,我們很有必要了解使用Nmap來更加靈活的進行服務探測,避免全端口探測對服務器造成壓力。
//針對某一個端口進行檢測
namp -p 80 baidu.com
//針對某幾個端口進行檢測
nmap -p 80,445 baidu.com
//針對某個范圍端口進行檢測
nmap -p1--100 baidu.com
//針對所有端口進行檢測
nmap -p baidu.com
//通過協議名來掃描端口
nmap -p smtp baidu.com
Nmap NSE腳本的使用
NSE:nmap script engine,nmap腳本引擎,內置很多可以用來掃描的,用來針對特定任務的腳本,通過nse可以不斷擴展nmap的掃描策略,加強namp的功能。
Nmap中使用 --script 參數來指定調用的腳本,並且腳本存儲再nmap 安裝路徑下的script文件夾下,對於kali linux存儲在/usr/share/namp/script下
//使用Nmap 探測web服務的title信息
nmap --script http-title Ip
nmap --script http-headers IP
Nmap分類使用:
對於目標使用多個分類腳本進行檢測,可以更快的找到目標的信息和弱點。
使用nmap中的漏洞分類腳本來對目標進行檢測,使用命令如下:
nmap -sV --script vuln 目標
通過這個可以得到目標的漏洞
如果想要發現分版本信息分類進行探測,可以使用命令如下
nmap -sV --script="version,discovery"
使用nmap除了exploit(溢出)分類之外的其他分類進行探測,使用命令如下
namp -sV --script="not exploit" <目標>
使用http*(探測Http服務的腳本)
nmap -sV --script "(http*) and not (http-slowors and http-brute)"
NSE調試功能的使用
nmap -sV --script exploit -d 3 --script-trace 目標
-d(debug 范圍0-9)
NSE 參數的使用
nmap -sV --script http-title --script-args http.useragent="Mozilla 999" <target>
NSE 更新
nmap --script-updatedb
使用特定網卡進行掃描
首先查看網卡:
nmap -e etho0 192.168.206.131
Nmap 對某個網絡進去探測的時候,有可能之前有探測過的結果,現在探測過后,需要對比之前和現在的結果進行對比,來找到兩次不同點。
監視網絡變化,達到網絡監控的目的。
在Nmap整個工程中,除了主要的nmap工具之外,還包括很多其他工具,比如ndiff
ndiff -h //查看nidff 幫助信息 ndiff File1 File2 //對比兩次結果
Nmap 查看網卡列表
nmap -iflist nmap -e 192.168.206.131
------------恢復內容結束------------