2009年4月18日 星期六

掃描之王Nmap的經典使用(圖)

摘自:http://www.anqn.com/article/a/2005-08-31/a0952749.shtml

許多人認為端口掃描器是黑客們才需要關心的工具,其實不然,知己知彼,才能百戰不殆,端口掃描器是幫助你了解 自己系統的絕佳助手。像Windows 2K/XP這樣復雜的操作系統支持應用軟件打開數百個端口與其他客戶程序或服務器通信,端口掃描是檢測服務器上運行了哪些服務和應用、向Internet或其他網絡開放了哪些聯系通道的一種辦法,不僅速度快,而且效果也很不錯。

  目前支持Win 2K/XP的端口掃描器已經有不少,部分還提供GUI(圖形用戶界面)。在諸多端口掃描器中,Nmap是其中的佼佼者——它提供了大量的命令行選項,能夠靈活地滿足各種掃描要求,而且輸出格式丰富。Nmap原先是為Unix平台開發的,是許多Unix管理員的至愛,后來才被移植到Windows平台。Nmap for Windows最新的穩定版本是3.27,可以從www.insecure.org/nmap/免費下載

一、安裝Nmap

  Nmap要用到一個稱為“Windows包捕獲庫”的驅動程序WinPcap——如果你經常從網上下載流媒體電影,可能已經熟悉這個驅動程序——某些流媒體電影的地址是加密的,偵測這些電影的真實地址就要用到WinPcap。WinPcap的作用是幫助調用程序(即這里的Nmap)捕獲通過網卡傳輸的原始數据。WinPcap的最新版本在http://netgroup-serv.polito.it/winpcap,支持XP/2K/Me/9x全系列操作系統,下載得到的是一個執行文件,雙擊安裝,一路确認使用默認設置就可以了,安裝好之后需要重新啟動。

  接下來從www.insecure.org/nmap/nmap_download.html下載Nmap(國內各大軟件網站也有,但一般版本更新略有滯后)。下載好之后解開壓縮,不需要安裝。除了執行文件nmap.exe之外,它還有下列參考文檔:

  ㈠ nmap-os-fingerprints:列出了500多種網絡設備和操作系統的堆棧標識信息。
  ㈡ nmap-protocols:Nmap執行協議掃描的協議清單。
  ㈢ nmap-rpc:遠程過程調用(RPC)服務清單,Nmap用它來确定在特定端口上監听的應用類型。
  ㈣ nmap-services:一個TCP/UDP服務的清單,Nmap用它來匹配服務名稱和端口號。除了命令行版本之外,www.insecure.org還提供了一個帶GUI的Nmap版本。和其他常見的Windows軟件一樣,GUI版本需要安裝,圖一就是GUI版Nmap的運行界面

二、常用掃描類型

  解開Nmap命令行版的壓縮包之后,進入Windows的命令控制台,再轉到安裝Nmap的目錄(如果經常要用Nmap,最好把它的路徑加入到PATH環境變量)。不帶任何命令行參數運行Nmap,Nmap顯示出命令語法,如圖二所示。



圖二

。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轉入下一個端口。

  圖三是一次測試結果,很明顯,TCP SYN掃描速度要超過TCP connect()掃描。采用默認計時選項,在LAN環境下掃描一個主机,Ping掃描耗時不到十秒,TCP SYN掃描需要大約十三秒,而TCP connect()掃描耗時最多,需要大約7分鐘。



圖三

  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到底可以節省多少掃描時間,最終還是由網絡上被過濾的端口數量決定。

  Nmap的手冊(man文檔)詳細說明了命令行參數的用法(雖然man文檔是針對UNIX版Nmap編寫的,但同樣提供了Win32版本的說明)。

三、注意事項

  也許你對其他端口掃描器比較熟悉,但Nmap絕對值得一試。建議先用Nmap掃描一個熟悉的系統,感覺一下Nmap的基本運行模式,熟悉之后,再將掃描范圍擴大到其他系統。首先掃描內部網絡看看Nmap報告的結果,然后從一個外部IP地址掃描,注意防火墻、入侵檢測系統(IDS)以及其他工具對掃描操作的反應。通常,TCP connect()會引起IDS系統的反應,但IDS不一定會記錄俗稱“半連接”的TCP SYN掃描。最好將Nmap掃描網絡的報告整理存檔,以便隨后參考。

  如果你打算熟悉和使用Nmap,下面几點經驗可能對你有幫助:

  ㈠ 避免誤解。不要隨意選擇測試Nmap的掃描目標。許多單位把端口掃描視為惡意行為,所以測試Nmap最好在內部網絡進行。如有必要,應該告訴同事你正在試驗端口掃描,因為掃描可能引發IDS警報以及其他網絡問題

  ㈡ 關閉不必要的服務。根据Nmap提供的報告(同時考慮網絡的安全要求),關閉不必要的服務,或者調整路由器的訪問控制規則(ACL),禁用網絡開放給外界的某些端口。

  ㈢ 建立安全基准。在Nmap的幫助下加固網絡、搞清楚哪些系統和服務可能受到攻擊之后,下一步是從這些已知的系統和服務出發建立一個安全基准,以后如果要啟用新的服務或者服務器,就可以方便地根据這個安全基准執行。

沒有留言:

張貼留言