基本介紹
Nmap官方版是一款針對大型網絡的端口掃描工具,盡管它也适用于單機掃描。在不同情況下,你可能需要隐藏掃描、越過防火牆掃描或者使用不同的協議進行掃描,比如:UDP、TCP、ICMP等。它支持:Vanilla TCP connect掃描、TCP SYN(半開式)掃描、TCP FIN、Xmas、或NULL(隐藏)掃描、TCP ftp代理(跳闆)掃描、SYN/FIN IP 碎片掃描(穿越部分數據包過濾器)、TCP ACK和窗口掃描、UDP監聽ICMP端口無法送達掃描、ICMP掃描(狂ping)、TCP Ping掃描、直接RPC掃描(無端口映射)、TCP/IP指紋識别遠程操作系統,以及相反身份認證掃描等。Namp同時支持性能和可靠性統計,例如:動态延時計算,數據包超時和轉發,并行端口掃描,通過并行ping偵測下層主機。
正如大多數工具被用于網絡安全的工具,nmap也是不少黑客及駭客(又稱腳本小孩)愛用的工具。系統管理員可以利用nmap來探測工作環境中未經批準使用的服務器,但是黑客會利用nmap來搜集目标電腦的網絡設定,從而計劃攻擊的方法。
Nmap常被跟評估系統漏洞軟件Nessus混為一談。Nmap以隐秘的手法,避開闖入檢測系統的監視,并盡可能不影響目标系統的日常操作。
Nmap在黑客帝國(The Matrix)中,連同SSH1的32位元循環冗餘校驗漏洞,被崔妮蒂用以入侵發電站的能源管理系統。
基本功能
其基本功能有三個,一是探測一組主機是否在線;其次是掃描主機端口,嗅探所提供的網絡服務;還可以推斷主機所用的操作系統。Nmap可用于掃描僅有兩個節點的LAN,直至500個節點以上的網絡。Nmap還允許用戶定制掃描技巧。通常,一個簡單的使用ICMP協議的ping操作可以滿足一般需求;也可以深入探測UDP或者TCP端口,直至主機所使用的操作系統;還可以将所有探測結果記錄到各種格式的日志中,供進一步分析操作。
進行ping掃描,打印出對掃描做出響應的主機,不做進一步測試(如端口掃描或者操作系統探測):
nmap -sP 192.168.1.0/24
僅列出指定網絡上的每台主機,不發送任何報文到目标主機:
nmap -sL 192.168.1.0/24
探測目标主機開放的端口,可以指定一個以逗号分隔的端口列表(如-PS22,23,25,80):
nmap -PS 192.168.1.234
使用UDP ping探測主機:
nmap -PU 192.168.1.0/24
使用頻率最高的掃描選項:SYN掃描,又稱為半開放掃描,它不打開一個完全的TCP連接,執行得很快:
nmap -sS 192.168.1.0/24
當SYN掃描不能用時,TCP Connect()掃描就是默認的TCP掃描:
nmap -sT 192.168.1.0/24
UDP掃描用-sU選項,UDP掃描發送空的(沒有數據)UDP報頭到每個目标端口:
nmap -sU 192.168.1.0/24
确定目标機支持哪些IP協議(TCP,ICMP,IGMP等):
nmap -sO 192.168.1.19
探測目标主機的操作系統:
nmap -O 192.168.1.19
nmap -A 192.168.1.19
另外,nmap官方文檔中的例子:
nmap -v scanme.
這個選項掃描主機scanme中所有的保留TCP端口。選項-v啟用細節模式。
nmap -sS -O scanme./24
進行秘密SYN掃描,對象為主機Saznme所在的“C類”網段的255台主機。同時嘗試确定每台工作主機的操作系統類型。因為進行SYN掃描和操作系統檢測,這個掃描需要有根權限。
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
進行主機列舉和TCP掃描,對象為B類188.116網段中255個8位子網。這個測試用于确定系統是否運行了sshd、DNS、imapd或4564端口。如果這些端口打開,将使用版本檢測來确定哪種應用在運行。
nmap -v -iR 100000 -P0 -p 80
随機選擇100000台主機掃描是否運行Web服務器(80端口)。由起始階段發送探測報文來确定主機是否工作非常浪費時間,而且隻需探測主機的一個端口,因此使用-P0禁止對主機列表。
nmap -P0 -p80 -oX logs/pb-port80scan.xml -oG logs/pb-port80scan.gnmap 216.163.128.20/20
掃描4096個IP地址,查找Web服務器(不ping),将結果以Grep和XML格式保存。
host -l | cut -d -f 4 | nmap -v -iL -
進行DNS區域傳輸,以發現中的主機,然後将IP地址提供給Nmap。上述命令用于GNU/Linux--其它系統進行區域傳輸時有不同的命令。
其他選項:
-p(隻掃描指定的端口)
單個端口和用連字符表示的端口範圍(如1-1023)都可以。當既掃描TCP端口又掃描UDP端口時,可以通過在端口号前加上T:或者U:指定協議。協議限定符一直有效直到指定另一個。例如,參數-p U:53,111,137,T:21-25,80,139,8080将掃描UDP端口53,111,和137,同時掃描列出的TCP端口。
-F(快速有限的端口掃描)
使用
一、安裝Nmap
Nmap要用到一個稱為“Windows包捕獲庫”的驅動程序WinPcap——如果你經常從網上下載流媒體電影,可能已經熟悉這個驅動程序——某些流媒體電影的地址是加密的,偵測這些電影的真實地址就要用到WinPcap。WinPcap的作用是幫助調用程序(即這裡的Nmap)捕獲通過網卡傳輸的原始數據。WinPcap支持XP/2K/Me/9x全系列操作系統,下載得到的是一個執行文件,雙擊安裝,一路确認使用默認設置就可以了,安裝好之後需要重新啟動。
接下來下載Nmap(國内各大軟件網站也有,但一般版本更新略有滞後)。下載好之後解開壓縮,不需要安裝。除了執行文件nmap.exe之外,它還有下列參考文檔:
1、nmap-os-fingerprints:列出了500多種網絡設備和操作系統的堆棧标識信息。
2、nmap-protocols:Nmap執行協議掃描的協議清單。
3、nmap-rpc:遠程過程調用(RPC)服務清單,Nmap用它來确定在特定端口上監聽的應用類型。
4、nmap-services:一個TCP/UDP服務的清單,Nmap用它來匹配服務名稱和端口号。除了命令行版本之外,還提供了一個帶GUI的Nmap版本。和其他常見的Windows軟件一樣,GUI版本需要安裝
二、常用掃描類型
解開Nmap命令行版的壓縮包之後,進入Windows的命令控制台,再轉到安裝Nmap的目錄(如果經常要用Nmap,最好把它的路徑加入到PATH環境變量)。不帶任何命令行參數。GUI版的功能基本上和命令行版本一樣,鑒于許多人更喜歡用命令行版本,本文後面的說明就以命令行版本為主。下面是Nmap支持的四種最基本的掃描方式:
⑴TCP connect()端口掃描(-sT參數)。
⑵TCP同步(SYN)端口掃描(-sS參數)。
⑶UDP端口掃描(-sU參數)。
⑷Ping掃描(-sP參數)。
如果要勾畫一個網絡的整體情況,Ping掃描和TCP SYN掃描最為實用。Ping掃描通過發送ICMP(Internet Control Message Protocol,Internet控制消息協議)回應請求數據包和TCP應答(Acknowledge,簡寫ACK)數據包,确定主機的狀态,非常适合于檢測指定網段内正在運行的主機數量。
TCP SYN掃描一下子不太好理解,但如果将它與TCP connect()掃描比較,就很容易看出這種掃描方式的特點。在TCP connect()掃描中,掃描器利用操作系統本身的系統調用打開一個完整的TCP連接——也就是說,掃描器打開了兩個主機之間的完整握手過程(SYN,SYN-ACK,和ACK)。一次完整執行的握手過程表明遠程主機端口是打開的。
TCP SYN掃描創建的是半打開的連接,它與TCP connect()掃描的不同之處在于,TCP SYN掃描發送的是複位(RST)标記而不是結束ACK标記(即,SYN,SYN-ACK,或RST):如果遠程主機正在監聽且端口是打開的,遠程主機用SYN-ACK應答,Nmap發送一個RST;如果遠程主機的端口是關閉的,它的應答将是RST,此時Nmap轉入下一個端口。
Nmap支持豐富、靈活的命令行參數。例如,如果要掃描192.168.7網絡,可以用192.168.7.x/24或192.168.7.0-255的形式指定IP地址範圍。指定端口範圍使用-p參數,如果不指定要掃描的端口,Nmap默認掃描從1到1024再加上nmap-services列出的端口。
如果要查看Nmap運行的詳細過程,隻要啟用verbose模式,即加上-v參數,或者加上-vv參數獲得更加詳細的信息。例如,nmap -sS 192.168.7.1-255 -p 20,21,53-110,30000- -v命令,表示執行一次TCP SYN掃描,啟用verbose模式,要掃描的網絡是192.168.7,檢測20、21、53到110以及30000以上的端口(指定端口清單時中間不要插入空格)。再舉一個例子,nmap -sS 192.168.7.1/24 -p 80掃描192.168.0子網,查找在80端口監聽的服務器(通常是Web服務器)。
有些網絡設備,例如路由器和網絡打印機,可能禁用或過濾某些端口,禁止對該設備或跨越該設備的掃描。初步偵測網絡情況時,-host_timeout參數很有用,它表示超時時間,例如nmap sS host_timeout 10000 192.168.0.1命令規定超時時間是10000毫秒。
網絡設備上被過濾掉的端口一般會大大延長偵測時間,設置超時參數有時可以顯着降低掃描網絡所需時間。Nmap會顯示出哪些網絡設備響應超時,這時你就可以對這些設備個别處理,保證大範圍網絡掃描的整體速度。當然,host_timeout到底可以節省多少掃描時間,最終還是由網絡上被過濾的端口數量決定。
版本發布
2009年07月17日,開源網絡安全掃描工具Nmap正式發布了5.00版,這是自1997年以來最重要的發布,代表着Nmap從簡單的網絡連接端掃描軟件變身為全方面的安全和網絡工具組件。
Nmap于1997年9月推出,支持Linux、Windows、Solaris、BSD、Mac OS X、AmigaOS系統,采用GPL許可證,最初用于掃描開放的網絡連接端,确定哪服務運行在那些連接端,它是評估網絡系統安全的重要軟件,也是黑客常用的工具之一。新的Nmap5.00版大幅改進了性能,增加了大量的腳本。例如Nmap現在能登錄進入Windows,執行本地檢查(PDF),能檢測出臭名昭着的Conficker蠕蟲。其它的主要特性包括:用于數據傳輸,重定向和調試的新Ncat工具,Ndiff快速掃描比較工具,高級GUI和結果浏覽器Zenmap等。
2010年01月25日,Nmap 5.20 發布。
2012年12月04日,Nmap 6.25 發布,網絡安全審計工具。



















