掃描器是一種能夠自動檢測主機安全性弱點的程序。掃描器通過發送特定的網絡數據包,記錄目標主機的應答消息,從而收集關於目標主機的各種信息。目前網絡上有很多掃描軟件,比較著名的掃描器有SSS,X-Scan,Superscan等,功能最強大的當然是Nmap。
Nmap(Network Mapper)是一款開放源代碼的網絡探測和安全審核工具。
它用於快速掃描一個網絡和一台主機開放的端口,還能使用TCP/IP協議棧特征探測遠程主機的操作系統類型。nmap支持很多掃描技術,例如:UDP、TCP connect()、TCP SYN(半開掃描)、ftp代理(bounce攻擊)、反向標志、ICMP、FIN、ACK掃描、聖誕樹(Xmas Tree)、SYN掃描和null掃描。Nmap最初是用於unix系統的命令行應用程序。在2000年的時候,這個應用程序有了windows版本,可以直接安裝使用。
Nmap命令的格式為:
Nmap [ 掃描類型 … ] [ 通用選項 ] { 掃描目標說明 }
下面對Nmap命令的參數按分類進行說明:
1. 掃描類型
-sT TCP connect()掃描,這是最基本的TCP掃描方式。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。 -sS TCP同步掃描(TCP SYN),因為不必全部打開一個TCP連接,所以這項技術通常稱為半開掃描(half-open)。這項技術最大的好處是,很少有系統能夠把這記入系統日志。不過,你需要root權限來定制SYN數據包。 -sF,-sX,-sN 秘密FIN數據包掃描、聖誕樹(Xmas Tree)、空(Null)掃描模式。這些掃描方式的理論依據是:關閉的端口需要對你的探測包回應RST包,而打開的端口必需忽略有問題的包(參考RFC 793第64頁)。 -sP ping掃描,用ping方式檢查網絡上哪些主機正在運行。當主機阻塞ICMP echo請求包是ping掃描是無效的。nmap在任何情況下都會進行ping掃描,只有目標主機處於運行狀態,才會進行後續的掃描。 -sU 如果你想知道在某台主機上提供哪些UDP(用戶數據報協議,RFC768)服務,可以使用此選項。 -sA ACK掃描,這項高級的掃描方法通常可以用來穿過防火牆。 -sW 滑動窗口掃描,非常類似於ACK的掃描。 -sR RPC掃描,和其它不同的端口掃描方法結合使用。 -b FTP反彈攻擊(bounce attack),連接到防火牆後面的一台FTP服務器做代理,接著進行端口掃描。2. 通用選項
-P0 在掃描之前,不ping主機。 -PT 掃描之前,使用TCP ping確定哪些主機正在運行。 -PS 對於root用戶,這個選項讓nmap使用SYN包而不是ACK包來對目標主機進行掃描。 -PI 設置這個選項,讓nmap使用真正的ping(ICMP echo請求)來掃描目標主機是否正在運行。 -PB 這是默認的ping掃描選項。它使用ACK(-PT)和ICMP(-PI)兩種掃描類型並行掃描。如果防火牆能夠過濾其中一種包,使用這種方法,你就能夠穿過防火牆。 -O 這個選項激活對TCP/IP指紋特征(fingerprinting)的掃描,獲得遠程主機的標志,也就是操作系統類型。 -I 打開nmap的反向標志掃描功能。 -f 使用碎片IP數據包發送SYN、FIN、XMAS、NULL。包增加包過濾、入侵檢測系統的難度,使其無法知道你的企圖。 -v 冗余模式。強烈推薦使用這個選項,它會給出掃描過程中的詳細信息。 -S <IP> 在一些情況下,nmap可能無法確定你的源地址(nmap會告訴你)。在這種情況使用這個選項給出你的IP地址。 -g port 設置掃描的源端口。一些天真的防火牆和包過濾器的規則集允許源端口為DNS(53)或者FTP-DATA(20)的包通過和實現連接。顯然,如果攻擊者把源端口修改為20或者53,就可以摧毀防火牆的防護。 -oN 把掃描結果重定向到一個可讀的文件logfilename中。 -oS 掃描結果輸出到標准輸出。 –host_timeout 設置掃描一台主機的時間,以毫秒為單位。默認的情況下,沒有超時限制。 –max_rtt_timeout 設置對每次探測的等待時間,以毫秒為單位。如果超過這個時間限制就重傳或者超時。默認值是大約9000毫秒。 –min_rtt_timeout 設置nmap對每次探測至少等待你指定的時間,以毫秒為單位。 -M count 置進行TCP connect()掃描時,最多使用多少個套接字進行並行的掃描。3. 掃描目標
目標地址 可以為IP地址,CIRD地址等。如192.168.1.2,222.247.54.5/24 -iL filename 從filename文件中讀取掃描的目標。 -iR 讓nmap自己隨機挑選主機進行掃描。 -p 端口 這個選項讓你選擇要進行掃描的端口號的范圍。如:-p 20-30,139,60000。 -exclude 排除指定主機。 -excludefile 排除指定文件中的主機。舉例:
代碼如下:
nmap -v www.hao123.com nmap -sS -O 192.168.1.23/24
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
nmap -v –randomize_hosts -p 80 *.*.2.3-5
host -l company.com | cut -d -f 4 | ./nmap -v -iL –