nmap 使用介紹
nmap是目前為止最廣為使用的國外端口掃描工具之一。我們可以從http://www.insecure.org/進 行下載,可以很容易的安裝到Windows和unix操作系統中,包括mac os x(通過configure、make 、make install等命令)也可以直接從http://www.insecure.org/下載windows二進制(包括所需要的winpcap)也可以從 http://www.nmapwin.org/獲得nmap的圖形windows。
掃描主機
$ nmap -sT 192.168.1.18
Starting nmap 3.48(http://www.insecure.org/nmap/)at 2007-10-10 18:13
EDT Interesting ports on gamebase(192.168.1.18)
port state serverice
22/tcp open ssh
111/tcp open sunrpc
..........
$ nmap -sR 192.168.1.18
Startingnmap 3.48(http://www.insecure.org/nmap/)at 2007-10-10 18:13
EDT Interesting ports on gamebase(192.168.1.18)
port state serverice
22/tcp open ssh
111/tcp open sunrpc
..........我們可以使用ping掃描的方法(-sP),與fping的工作方式比較相似,它發送icmp回送請求到指定范圍的ip地址并等待響應。現在很多主 機在掃描的時候都做了處理,阻塞icmp請求,這種情況下。nmap將嘗試與主機的端口80進行連接,如果可以接收到響應(可以是syn/ack,也可以 是rst),那么證明主機正在運行,反之,則無法判斷主機是否開機或者是否在網絡上互連。
掃描tcp端口
這里-sR是怎樣在打開的端口上利用RPC命令來判斷它們是否運行了RPC服務。
nmap可以在進行端口掃描的tcp報文來做一些秘密的事情。首先,要有一個SYN掃描(-sS),它只做建立TCP連接的前面一些工作,只發送一 個設置SYN標志的TCP報文,一個RESET報文,那么nmap假設這個端口是關閉的,那么就不做任何事情了。如果接收到一個響應,它并不象正常的連接 一樣對這個報文進行確認,而是發送一個RET報文,TCP的三次握手還沒有完成,許多服務將不會記錄這次連接。
有的時候,nmap會告訴我們端口被過濾,這意味著有防火墻或端口過濾器干擾了nmap,使其不能準確的判斷端口是打開還是關閉的,有的防火墻只能過濾掉進入的連接。
掃描協議
如果試圖訪問另一端無程序使用的UDP端口,主機將發回一個icmp“端口不可達”的提示消息,IP協議也是一樣。每個傳輸層的IP協議都有一個相 關聯的編號,使用最多的是ICMP(1)、TCP(6)和UDP(17)。所有的IP報文都有一個“協議”域用于指出其中的傳輸層報文頭所使用的協議。如 果我們發送一個沒有傳輸層報文頭的原始IP報文并把其協議域編號為130[該編號是指類似IPSEC協議的被稱為安全報文外殼或SPS協議],就可以判斷 這個協議是否在主機上實現了。如果我們得到的是ICMP協議不可達的消息,意味著該協議沒有被實現,否則就是已經實現了,用法為-sO.
隱蔽掃描行為
nmap給出了幾個不同的掃描選項,其中一些可以配套著隱藏掃描行為,使得不被系統日志、防火墻和IDS檢測到。提供了一些隨機的和欺騙的特性。具體例子如下:
FTP反彈,在設計上,FTP自身存在一個很大的漏洞,當使用FTP客戶機連接到FTP服務器時,你的客戶機在TCP端口21上與FTP服務器對 話,這個TCP連接稱為控制連接。FTP服務器現在需要另一條與客戶機連接,該連接稱為數據連接,在這條連接上將傳送實際的文件數據,客戶機將開始監聽另 一個TCP端口上從服務器發揮的數據連接,接下來執行一個PORT命令到服務器,告訴它建立一條數據連接到客戶機的IP地址和一個新打開的端口,這種操作 方法稱為主動傳輸。許多客戶機使用網絡地址轉換或通過防火墻與外界連接,所以主動傳輸FTP就不能正常工作,因為由服務器建立的客戶機的連接通常不允許通 過。
被動傳輸是大多數FTP客戶機和服務器所使用的方法,因為客戶機既建立控制連接又建立數據連接,這樣可以通過防火墻或NAT了。
FTP的PORT命令,用來告訴FTP連接的服務器,使得與剛剛打開的用于數據連接的端口之間建立一個連接。由于我們不僅指定端口而且指定連接所用 的IP地址,所以客戶端也可以通過PORT命令讓服務器連接到任何地方。所以我們一樣可以讓nmap用這個方法進行防火墻穿透。nmap做的所有工作是與 一臺服務器建立一個主動模式的FTP連接,并發送一個包含它試圖掃描的主機IP地址和端口號的PORT命令。
nmap -b aaa@ftp.target.com -p 6000 192.168.1.226
nmap 與ftp服務器的對話的例子:
server:220 target ftp server version 4 ready
client:user anonymous
server: 331 Guest login ok ,send e-mail as password
client:pass
server :230 login successful
client:PORT 192,168,1.226,23,112
server:200 PORT command successful
client:LIST
server:150 Opening ASCII connection for '/bin/ls'
server:226 Transfer completePORT命令起作用,可以制造是別人進行端口掃描,掃描任何FTP服務器所能訪問的主機,繞過防火墻和端口過濾器,但還是存在一些危險的,如果對方登陸到了你的這個匿名FTP服務器上,從日志查找到相應的匿名FTP連接,從而知道你的IP地址,這樣就直接暴露了。
nmap -sI 空閑掃描,主要是欺騙端口掃描的源地址。
nmap -f 可以把TCP頭分片的IP報文進行一些隱蔽的掃描。不完整的TCP報文不被防火墻阻塞也不被IDS檢測到。
nmap-D
選擇幾臺肉雞,并使用-D標志在命令行中指定它們。namp通過誘騙的IP地址來進行欺騙式端口掃描,而系統管理員可以同時看到不同的端口掃描,而只有一個是真實的,很好的保護了自己。os指紋識別
這個是nmap最有用的功能之一,就是可以鑒別遠程主機。通過簡單的執行網絡掃 描,nmap通常可以告訴你遠程主機所運行的OS,甚至詳細到版本號。當你指定-Q標志時,nmap將用幾種不同的技術從主機返回IP報文中尋找這些鑒別 信息。通過發送特別設計的TCP和UDP頭,nmap可以得到遠程主機對TCP/IP協議棧的處理方法。它將分析結果與保存在文件中的已知特征信息進行比 較。OS鑒別選項也可以讓nmap對TCP報文進行分析以決定另外一些信息,如系統的啟動時間,TCP序列號,預測的序列號使我們更容易截獲報文并猜測序列號從而偽造TCP連接。
nmap命令使用詳細解釋
-P0 -PT -PS -PU -PE -PP -PM -PB 當nmap進行某種類型的端口或協議掃描時,通常都會嘗試先ping 主機,這種嘗試可使nmap不會浪費時間在那些未開機的主機上,但是許多主機與防火墻會阻塞ICMP報文,我們希望能通過控制使用。
-P0 告訴nmap不ping 主機,只進行掃描
-PT 告訴nmap使用TCP的ping
-PS 發送SYN報文。
-PU 發送一個udp ping
-PE 強制執行直接的ICMP ping
-PB 這是默認類型,可以使用ICMP ping 也可以使用TCP ping .
-6 該標志允許IPv6支持
-v -d 使用-v選項可得到更詳細的輸出,而-d選項則增加調試輸出。
-oN 按照人們閱讀的格式記錄屏幕上的輸出,如果是在掃描多臺機器,則該選項很有用。
-oX 以xml格式向指定的文件記錄信息
-oG 以一種易于檢索的格式記錄信息,即每臺主機都以單獨的行來記錄所有的端口和0s信息。
-oA 使用為基本文件名,以普通格式(-oN)、XML格式(-oX)和易于檢索的格式(-oG)jilu xinxi
-oM 把輸出格式化為機器可閱讀的文件
-oS 把輸出進行傻瓜型排版
--resume如果你取消了掃描,但生成了供人或者供機器閱讀的文件,那么可以把該文件提供給nmap繼續讓它掃描。
-iR-iL可以不在命令行中指定目標主機,而是使用-iR選項隨即產生待掃描的主機,或者使用-iL選項從一個包含主機名或IP地址列表的文件中讀取目標主機,這些主機名或IP地址使用空格、制表符或換行隔開。
-F nmap只掃描在nmap內建的服務文件中已知的端口,如果不指定該選項,nmap將掃描端口 1-1024及包含在nmap-services文件中的所有其他端口。如果用-sO選項掃描協議,nmap將用它內建的協議文件(nmap- protocols文件)而不是默認地掃描所有256個協議。
-A nmap使用所有的高級掃描選項
-p 參數可以是一個單獨的端口、一個用逗號隔開的端口列表、一個使用“-”表示的端口范圍或者上述格式的任意組合。如果沒有指定該選項,nmap將對包含前1024個端口的所有端口進行一次快速掃描。
-e在多穴主機中,可以指定你用來進行網絡通信的網絡接口。
-g可以選擇一個源端口,從該端口執行所有的掃描。
--ttlnmap其發送的任何報文在到中間路由器的跳后會失效。
--packet-trace 可以顯示掃描期間nmap發送和接收的各個報文的詳細列表,這對調試非常有用。要與-o選項之一聯合使用,需要根權限,以將所有的數據記錄到文件。
--scanflags可以使用這個選項手工的指定欲在掃描報文中設置的TCP標志。也可以指定TCP標志的OOred值的整數形式,或者標志的字符串表示形式。
以上介紹的就是nmap在windows下和unix中的命令介紹。