nmap教程之nmap命令使用示例(nmap使用方法)

來源:酷知科普網 7.34K

操作方法

(01)Nmap是一款網路掃描和主機檢測的非常有用的工具。Nmap是不侷限於僅僅收集資訊和列舉,同時可以用來作為一個漏洞探測器或安全掃描器。它可以適用於winodws,linux,mac等作業系統Nmap是一款非常強大的實用工具,可用於:檢測活在網路上的主機(主機發現)檢測主機上開放的埠(埠發現或列舉)檢測到相應的埠(服務發現)的軟體和版本檢測作業系統,硬體地址,以及軟體版本檢測脆弱性的漏洞(Nmap的指令碼)Nmap是一個非常普遍的工具,它有命令列介面和圖形使用者介面。本人包括以下方面的內容:介紹Nmap掃描中的重要引數作業系統檢測Nmap使用教程Nmap使用不同的技術來執行掃描,包括:TCP的connect()掃描,TCP反向的ident掃描,FTP反彈掃描等。所有這些掃描的型別有自己的優點和缺點,我們接下來將討論這些問題。 Nmap的使用取決於目標主機,因為有一個簡單的(基本)掃描和預先掃描之間的差異。我們需要使用一些先進的技術來繞過防火牆和入侵檢測/防禦系統,以獲得正確的結果。下面是一些基本的命令和它們的用法的例子:掃描單一的一個主機,命令如下:程式碼如下:#nmap 掃描整個子網,命令如下:程式碼如下:#nmap 掃描多個目標,命令如下:程式碼如下:#nmap 掃描一個範圍內的目標,如下:程式碼如下:#nmap -100 (掃描IP地址為內的所有主機)如果你有一個ip地址列表,將這個儲存為一個txt檔案,和namp在同一目錄下,掃描這個txt內的所有主機,命令如下:程式碼如下:#nmap -iL 如果你想看到你掃描的所有主機的列表,用以下命令:程式碼如下:#nmap -sL 掃描除過某一個ip外的所有子網主機,命令:程式碼如下:#掃描除過某一個檔案中的ip外的子網主機命令程式碼如下:#(中的檔案將會從掃描的主機中排除)掃描特定主機上的80,21,23埠,命令如下程式碼如下:#nmap-p80,21,從上面我們已經瞭解了Nmap的基礎知識,下面我們深入的探討一下Nmap的掃描技術Tcp SYN Scan (sS) 這是一個基本的掃描方式,它被稱為半開放掃描,因為這種技術使得Nmap不需要通過完整的握手,就能獲得遠端主機的資訊。Nmap傳送SYN包到遠端主機,但是它不會產生任何會話.因此不會在目標主機上產生任何日誌記錄,因為沒有形成會話。這個就是SYN掃描的優勢.如果Nmap命令中沒有指出掃描型別,預設的就是Tcp SYN.但是它需要root/administrator許可權.程式碼如下:#nmap -sS Tcp connect() scan(sT)如果不選擇SYN掃描,TCP connect()掃描就是預設的掃描模式.不同於Tcp SYN掃描,Tcp connect()掃描需要完成三次握手,並且要求呼叫系統的connect() connect()掃描技術只適用於找出TCP和UDP埠.程式碼如下:#nmap -sT Udp scan(sU)顧名思義,這種掃描技術用來尋找目標主機開啟的UDP埠.它不需要傳送任何的SYN包,因為這種技術是針對UDP埠的。UDP掃描傳送UDP資料包到目標主機,並等待響應,如果返回ICMP不可達的錯誤訊息,說明埠是關閉的,如果得到正確的適當的迴應,說明埠是開放的.程式碼如下:#nmap -sU FINscan(sF)有時候TcpSYN掃描不是最佳的掃描模式,因為有防火牆的存在.目標主機有時候可能有IDS和IPS系統的存在,防火牆會阻止掉SYN資料包。傳送一個設定了FIN標誌的資料包並不需要完成TCP的握手.程式碼如下:<a href="mailto:root@bt:~#">root@bt:~#</a></p> <p>StartingNmap5.51at2012-07-0819:21PKTNmapscanreporHostisup(0.000026slatency)hown:999closedportsPORTSTATESERVICE111/tcpopen|filteredrpcbindFIN掃描也不會在目標主機上建立日誌(FIN掃描的優勢之一).個型別的掃描都是具有差異性的,FIN掃描傳送的包只包含FIN標識,NULL掃描不傳送資料包上的任何位元組,XMAS掃描傳送FIN、PSH和URG標識的資料包Scan(sP)PING掃描不同於其它的掃描方式,因為它只用於找出主機是否是存在在網路中的.它不是用來發現是否開放埠的掃描需要ROOT許可權,如果使用者沒有ROOT許可權,PING掃描將會使用connect()呼叫.程式碼如下:#版本檢測(sV)版本檢測是用來掃描目標主機和埠上執行的軟體的版本.它不同於其它的掃描技術,它不是用來掃描目標主機上開放的埠,不過它需要從開放的埠獲取資訊來判斷軟體的版本.使用版本檢測掃描之前需要先用TCPSYN掃描開放了哪些埠.程式碼如下:#Idlescan(sL)Idlescan是一種先進的掃描技術,它不是用你真實的主機Ip傳送資料包,而是使用另外一個目標網路的主機發送資料包.程式碼如下:#Idlescan是一種理想的匿名掃描技術,通過目標網路中的向主機發送資料,來獲取開放的埠有需要其它的掃描技術,如FTPbounce(FTP反彈),fragmentationscan(碎片掃描),IPprotocolscan(IP協議掃描),以上討論的是幾種最主要的掃描方式的OS檢測(O)Nmap最重要的特點之一是能夠遠端檢測作業系統和軟體,Nmap的OS檢測技術在滲透測試中用來了解遠端主機的作業系統和軟體是非常有用的,通過獲取的資訊你可以知道已知的漏洞。Nmap有一個名為的nmap-OS-DB資料庫,該資料庫包含超過2600作業系統的資訊。Nmap把TCP和UDP資料包傳送到目標機器上,然後檢查結果和資料庫對照。程式碼如下:InitiatingSYNStealthScanat10:21Scanninglocalhost()[1000ports]Discoveredopenport111/CompletedSYNStealthScanat10:21,0.08selapsed(1000totalports)InitiatingOSdetection(try#1)againstlocalhost()RetryingOSdetection(try#2)againstlocalhost()上面的例子清楚地表明,Nmap的首次發現開放的埠,然後傳送資料包發現遠端作業系統。作業系統檢測引數是O(大寫O)Nmap的作業系統指紋識別技術:裝置型別(路由器,工作組等)執行(執行的作業系統)作業系統的詳細資訊(作業系統的名稱和版本)網路距離(目標和攻擊者之間的距離跳)如果遠端主機有防火牆,IDS和IPS系統,你可以使用-PN命令來確保不ping遠端主機,因為有時候防火牆會組織掉ping請求.-PN命令告訴Nmap不用ping遠端主機。程式碼如下:#以上命令告訴發信主機遠端主機是存活在網路上的,所以沒有必要傳送ping請求,使用-PN引數可以繞過PING命令,但是不影響主機的系統的發現的作業系統檢測的基礎是有開放和關閉的埠,如果OSscan無法檢測到至少一個開放或者關閉的埠,會返回以下錯誤:程式碼如下:Warning:OSScanresultsmaybeunreliablebecausewecouldnotfindatleast1openand1closedportOSScan的結果是不可靠的,因為沒有發現至少一個開放或者關閉的埠這種情況是非常不理想的,應該是遠端主機做了針對作業系統檢測的防範。如果Nmap不能檢測到遠端作業系統型別,那麼就沒有必要使用-osscan_limit檢測。想好通過Nmap準確的檢測到遠端作業系統是比較困難的,需要使用到Nmap的猜測功能選項,–osscan-guess猜測認為最接近目標的匹配作業系統型別。程式碼如下:#下面是掃描型別說明-sTTCPconnect()掃描:這是最基本的TCP掃描方式。connect()是一種系統呼叫,由作業系統提供,用來開啟一個連線。如果目標埠有程式監聽,connect()就會成功返回,否則這個埠是不可達的。這項技術最大的優點是,你勿需root許可權。任何UNIX使用者都可以自由使用這個系統呼叫。這種掃描很容易被檢測到,在目標主機的日誌中會記錄大批的連線請求以及錯誤資訊。-sSTCP同步掃描(TCPSYN):因為不必全部開啟一個TCP連線,所以這項技術通常稱為半開掃描(half-open)。你可以發出一個TCP同步包(SYN),然後等待迴應。如果對方返回SYN|ACK(響應)包就表示目標埠正在監聽;如果返回RST資料包,就表示目標埠沒有監聽程式;如果收到一個SYN|ACK包,源主機就會馬上發出一個RST(復位)資料包斷開和目標主機的連線,這實際上有我們的作業系統核心自動完成的。這項技術最大的好處是,很少有系統能夠把這記入系統日誌。不過,你需要root許可權來定製SYN資料包。-sF-sX-sN祕密FIN資料包掃描、聖誕樹(XmasTree)、空(Null)掃描模式:即使SYN掃描都無法確定的情況下使用。一些防火牆和包過濾軟體能夠對傳送到被限制埠的SYN資料包進行監視,而且有些程式比如synlogger和courtney能夠檢測那些掃描。這些高階的掃描方式可以逃過這些干擾。些掃描方式的理論依據是:關閉的埠需要對你的探測包迴應RST包,而開啟的埠必需忽略有問題的包(參考RFC793第64頁)。FIN掃描使用暴露的FIN資料包來探測,而聖誕樹掃描開啟資料包的FIN、URG和PUSH標誌。不幸的是,微軟決定完全忽略這個標準,另起爐灶。所以這種掃描方式對Windows95/NT無效。不過,從另外的角度講,可以使用這種方式來分別兩種不同的平臺。如果使用這種掃描方式可以發現開啟的埠,你就可以確定目標註意執行的不是Windows系統。如果使用-sF、-sX或者-sN掃描顯示所有的埠都是關閉的,而使用SYN掃描顯示有開啟的埠,你可以確定目標主機可能執行的是Windwos系統。現在這種方式沒有什麼太大的用處,因為nmap有內嵌的作業系統檢測功能。還有其它幾個系統使用和windows同樣的處理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在應該拋棄資料包時,以上這些系統都會從開啟的埠發出復位資料包。-sPping掃描:有時你只是想知道此時網路上哪些主機正在執行。通過向你指定的網路內的每個IP地址傳送ICMPecho請求資料包,nmap就可以完成這項任務。如果主機正在執行就會作出響應。不幸的是,一些站點例如:阻塞ICMPecho請求資料包。然而,在預設的情況下nmap也能夠向80埠傳送TCPack包,如果你收到一個RST包,就表示主機正在執行。nmap使用的第三種技術是:傳送一個SYN包,然後等待一個RST或者SYN/ACK包。對於非root使用者,nmap使用connect()方法。在預設的情況下(root使用者),nmap並行使用ICMP和ACK技術。注意,nmap在任何情況下都會進行ping掃描,只有目標主機處於執行狀態,才會進行後續的掃描。如果你只是想知道目標主機是否執行,而不想進行其它掃描,才會用到這個選項。-sUUDP掃描:如果你想知道在某臺主機上提供哪些UDP(使用者資料報協議,RFC768)服務,可以使用這種掃描方法。nmap首先向目標主機的每個埠發出一個0位元組的UDP包,如果我們收到埠不可達的ICMP訊息,埠就是關閉的,否則我們就假設它是開啟的。有些人可能會想UDP掃描是沒有什麼意思的。但是,我經常會想到最近出現的solarisrpcbind缺陷。rpcbind隱藏在一個未公開的UDP埠上,這個埠號大於32770。所以即使埠111(portmap的眾所周知埠號)被防火牆阻塞有關係。但是你能發現大於30000的哪個埠上有程式正在監聽嗎?使用UDP掃描就能!cDcBackOrifice的後門程式就隱藏在Windows主機的一個可配置的UDP埠中。不考慮一些通常的安全缺陷,一些服務例如:snmp、tftp、NFS使用UDP協議。不幸的是,UDP掃描有時非常緩慢,因為大多數主機限制ICMP錯誤資訊的比例(在RFC1812中的建議)。例如,在Linux核心中(在net/ipv4/icmp.h檔案中)限制每4秒鐘只能出現80條目標豢紗鐗腎CMP訊息,如果超過這個比例,就會給1/4秒鐘的處罰。solaris的限制更加嚴格,每秒鐘只允許出現大約2條ICMP不可達訊息,這樣,使掃描更加緩慢。nmap會檢測這個限制的比例,減緩傳送速度,而不是傳送大量的將被目標主機丟棄的無用資料包。不過Micro$oft忽略了RFC1812的這個建議,不對這個比例做任何的限制。所以我們可以能夠快速掃描執行Win95/NT的主機上的所有65K個埠。-sAACK掃描:這項高階的掃描方法通常用來穿過防火牆的規則集。通常情況下,這有助於確定一個防火牆是功能比較完善的或者是一個簡單的包過濾程式,只是阻塞進入的SYN包。這種掃描是向特定的埠傳送ACK包(使用隨機的應答/序列號)。如果返回一個RST包,這個埠就標記為unfiltered狀態。如果什麼都沒有返回,或者返回一個不可達ICMP訊息,這個埠就歸入filtered類。注意,nmap通常不輸出unfiltered的埠,所以在輸出中通常不顯示所有被探測的埠。顯然,這種掃描方式不能找出處於開啟狀態的埠。-sW對滑動視窗的掃描:這項高階掃描技術非常類似於ACK掃描,除了它有時可以檢測到處於開啟狀態的埠,因為滑動視窗的大小是不規則的,有些作業系統可以報告其大小。這些系統至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64UNIX、DG/UX、OpenVMS、DigitalUNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS4.x、Ultrix、VAX、VXWORKS。從nmap-hackers郵件3列表的文件中可以得到完整的列表。-sRRPC掃描。這種方法和nmap的其它不同的埠掃描方法結合使用。選擇所有處於開啟狀態的埠向它們發出SunRPC程式的NULL命令,以確定它們是否是RPC埠,如果是,就確定是哪種軟體及其版本號。因此你能夠獲得防火牆的一些資訊。誘餌掃描現在還不能和RPC掃描結合使用。-bFTP反彈攻擊(bounceattack):FTP協議(RFC959)有一個很有意思的特徵,它支援代理FTP連線。也就是說,我能夠從連線到FTP伺服器,並且可以要求這臺FTP伺服器為自己傳送Internet上任何地方的檔案!1985年,RFC959完成時,這個特徵就能很好地工作了。然而,在今天的Internet中,我們不能讓人們劫持FTP伺服器,讓它向Internet上的任意節點發送資料。如同Hobbit在1995年寫的文章中所說的,這個協議"能夠用來做投遞虛擬的不可達郵件和新聞,進入各種站點的伺服器,填滿硬碟,跳過防火牆,以及其它的騷擾活動,而且很難進行追蹤"。我們可以使用這個特徵,在一臺代理FTP伺服器掃描TCP埠。因此,你需要連線到防火牆後面的一臺FTP伺服器,接著進行埠掃描。如果在這臺FTP伺服器中有可讀寫的目錄,你還可以向目標埠任意傳送資料(不過nmap不能為你做這些)。傳遞給-b功能選項的引數是你要作為代理的FTP伺服器。語法格式為:-busername:password@server:port。除了server以外,其餘都是可選的。如果你想知道什麼伺服器有這種缺陷,可以參考我在Phrack51發表的文章。還可以在nmap的站點得到這篇文章的最新版本。通用選項這些內容不是必需的,但是很有用。-P0在掃描之前,不必ping主機。有些網路的防火牆不允許ICMPecho請求穿過,使用這個選項可以對這些網路進行掃描。就是一個例子,因此在掃描這個站點時,你應該一直使用-P0或者-PT80選項。-PT掃描之前,使用TCPping確定哪些主機正在執行。nmap不是通過傳送ICMPecho請求包然後等待響應來實現這種功能,而是向目標網路(或者單一主機)發出TCPACK包然後等待迴應。如果主機正在執行就會返回RST包。只有在目標網路/主機阻塞了ping包,而仍舊允許你對其進行掃描時,這個選項才有效。對於非root使用者,我們使用connect()系統呼叫來實現這項功能。使用-PT來設定目標埠。預設的埠號是80,因為這個埠通常不會被過濾。-PS對於root使用者,這個選項讓nmap使用SYN包而不是ACK包來對目標主機進行掃描。如果主機正在執行就返回一個RST包(或者一個SYN/ACK包)。-PI設定這個選項,讓nmap使用真正的ping(ICMPecho請求)來掃描目標主機是否正在執行。使用這個選項讓nmap發現正在執行的主機的同時,nmap也會對你的直接子網廣播地址進行觀察。直接子網廣播地址一些外部可達的IP地址,把外部的包轉換為一個內向的IP廣播包,向一個計算機子網傳送。這些IP廣播包應該刪除,因為會造成拒絕服務攻擊(例如smurf)。

nmap教程之nmap命令使用示例(nmap使用方法)
nmap教程之nmap命令使用示例(nmap使用方法) 第2張
nmap教程之nmap命令使用示例(nmap使用方法) 第3張
nmap教程之nmap命令使用示例(nmap使用方法) 第4張
熱門標籤