?????? Nmap輸出的是掃描目標的列表,以及每個目標的補充信息,至于是哪些信息則依賴于所使用的選項。“所感興趣的端口表格”是其中的關鍵。那張表列出端口號,協(xié)議,服務名稱和狀態(tài)。狀態(tài)可能是open(開放的),filtered(被過濾的),closed(關閉的),或者unfiltered(未被過濾的)。? ? Open(開放的)意味著目標機器上的應用程序正在該端口監(jiān)聽連接/報文。filtered(被過濾的) 意味著防火墻,過濾器或者其它網(wǎng)絡障礙阻止了該端口被訪問,Nmap無法得知它是open(開放的) 還是closed(關閉的)。closed(關閉的) 端口沒有應用程序在它上面監(jiān)聽,但是他們隨時可能開放。? ? 當端口對Nmap的探測做出響應,但是Nmap無法確定它們是關閉還是開放時,這些端口就被認為是unfiltered(未被過濾的)? ? 如果Nmap報告狀態(tài)組合open|filtered和closed|filtered時,那說明Nmap無法確定該端口處于兩個狀態(tài)中的哪一個狀態(tài)。? ? 當要求進行版本探測時,端口表也可以包含軟件的版本信息。當要求進行IP協(xié)議掃描時? ? (-sO),Nmap提供關于所支持的IP協(xié)議而不是正在監(jiān)聽的端口的信息。
以例子說明:
一、基礎知識:
1、掃描單一的一個主機:nmap 219.228.135.201
2、掃描整個子網(wǎng):
nmap 192.168.1.1/24
3、掃描多個目標、掃描一個范圍內(nèi)的目標:
nmap 192.168.1.2 192.168.1.5 ? ? ? ? ?
nmap 192.168.1.1-100
4、掃描保存在txt文件下的ip地址列表,且和nmap在同一目錄下:
nmap -iL target.txt
5、如果你想看到你掃描的所有主機的列表:
nmap -sL 192.168.1.1/24
6、掃描除過某一ip外的所有子網(wǎng)、掃描除過某一文件中ip外的子網(wǎng)主機:
nmap 192.168.1.1/24-exclude 192.168.1.1
namp 192.168.1.1/24-exclude filexxx.txt(xxx.txt中的文件將會從掃描的主機中排除)
7、掃描特定主機上的80、21、23端口:
nmap -p80,21,23 192.168.1.1
二、深入探討Nmap掃描技術:
1、 TCP SYN Scan(sS)是一個基本的掃面方式,稱為半開放掃描,因為該技術使得Nmap不需要通過完整的握手,就能獲得遠程主機的信息。Nmap發(fā)送SYN包到遠程主機,但是它不會產(chǎn)生任何會話,因此不會在目標主機上產(chǎn)生任何日志記錄,因為沒有形成會話。這個就是SYN掃描的優(yōu)勢。如果Nmap命令中沒有指出掃描類型,默認的就是Tcp SYN。但是它需要root或administrator權(quán)限。
nmap -sS 192.168.1.1
2、TCP connect() scan(sT),如果不選擇SYN掃描,TCP connect()掃描就是默認的掃描模式。不同于SYN掃描,TCP connect()掃描需要完成三次握手,并且要求掃描調(diào)用系統(tǒng)的connect()。TCP connect()掃描技術只適用于找出TCP和UDP端口。
nmap -sT 192.168.1.1
3、UDP Scan(sU)掃描技術用來尋找目標主機打開的UDP端口。它不需要發(fā)送任何的SYN包,因為這種技術是針對UDP端口的。UDP掃描發(fā)送UDP數(shù)據(jù)包到目標主機,并等待響應,如果返回ICMP不可達的錯誤消息,說明端口是關閉的;如果得到正確的適當?shù)幕貞f明端口是開放的。
nmap -sU 192.168.1.1
4、FINscan(sF),有時候TCP SYN掃描不是最佳的掃描方式。因為有防火墻的存在,目標主機有時候可能有IDS和IPS系統(tǒng)的存在,防火墻會阻止掉SYN數(shù)據(jù)包。發(fā)送一個設置了FIN標志的數(shù)據(jù)包并不需要完成TCP的握手。FIN掃描也不會在目標主機上創(chuàng)建日志(FIN掃描的優(yōu)勢之一)。每個類型的掃描都是具有差異性的,F(xiàn)IN掃描發(fā)送的包只包含F(xiàn)IN標識,NULL掃描不發(fā)送數(shù)據(jù)包上的任何字節(jié),XMAS掃描發(fā)送FIN、PSH和URG標識的數(shù)據(jù)包。
nmap -sF 192.168.1.8
5、PINGScan(sP),PING掃描不同于其他的掃描方式,因為它只用于找出主機是否是存在在網(wǎng)絡中的。它不是用來發(fā)現(xiàn)是否開放端口的。PING掃描需要root權(quán)限,如果用戶沒有root權(quán)限,PING掃描將會使用connect()調(diào)用。
nmap -sP 192.168.1.1
6、版本檢測(sV),是用來掃描目標主機和端口上運行的軟件的版本。它不同于其他的掃描技術,它不是用來掃描目標主機上開放的端口,不過它需要從開放的端口獲取信息來判斷軟件的版本。使用版本檢測掃描之前需要先用TCP SYN掃描開放了哪些端口。
nmap -sV 192.168.1.1
7、IDleScan,是一種先進的掃描技術,它不是用你真實的主機IP發(fā)送數(shù)據(jù)包,而是使用另外一個目標網(wǎng)絡的主機發(fā)送數(shù)據(jù)包。
nmap -sI 192.168.1.6 192.168.1.1
(1).理論基礎
a. 每個IP包都有幀ID,記作IP ID
b. TCP正常建立鏈接的時候,第一步是主機A從端口X發(fā)給主機B端口Y一個 SYN,第二步是B回應A一個SYN/ACK,第三步是A回B一個ACK,連接建立了。如果A沒有發(fā)給B一個SYN,而B發(fā)給A了一個SYN/ACK,那么A就會發(fā)給B一個RST
c. 大部分主機的TCP/IP協(xié)議實現(xiàn)中,RST中的IP ID是遞增的,增加的單位是1,即incremental
(2).TCP Idle scan原理和步驟
a. 這里需要三臺主機,一臺攻擊者,一臺沒有什么網(wǎng)絡流量的空閑主機,還有就是我們的目標主機.
b. 目標的某個端口的狀態(tài)可能是打開、關閉或則被過濾,在遇到我們的Idle scan的時候,不同狀態(tài)的端口的scan的結(jié)果是不一樣,由此來判斷端口是否是打開的
c. 具體步驟為:
? ? ? ?? (1)找到一臺空閑主機,并從攻擊主機發(fā)給空閑主機一個SYN/ACK,獲得并記錄空閑主機的RST的IP ID
? ? ? ? ? (2)在攻擊者的主機上虛構(gòu)一個從空閑主機到目標主機的一個SYN,于是根據(jù)目標主機的目標端口狀態(tài),如果目標主機的目標端口打開,將會發(fā)給空閑主機的一個SYN/ACK,所以空閑主機將會發(fā)給目標主機一個RST,否則不會發(fā)送RST
? ? ? ? ?? (3)再次從攻擊主機發(fā)給空閑主機SYN/ACK,檢查RST的IP ID,如果IP ID比第一步記錄下的增加了二,則說明第二步中空閑主機給目標主機發(fā)送了一個RST,目標主機的目標端口處于打開狀態(tài),否則為沒打開
根據(jù)目標主機的目標端口的不同狀態(tài),可得一下三附圖:
a.選擇空閑主機時,盡量選擇離攻擊主機和目標主機比較近的,這樣可以增加nmap的性能和可靠性,nmap的-iR選項可以用來隨機選擇尋找的主機,-O和-v可以查看主機的IP ID增長的方式是否為incremental;在一種方法就是使用nmap的--script選項,指定腳本:ipidseq,如:
nmap --script ipidseq -iR 5 -O -v
b. 一個實例:
來源:http://blog.csdn.net/dong976209075/article/details/7771159
8、OS檢測(O),Nmap最重要的特點之一是能夠遠程檢測操作系統(tǒng)和軟件,Nmap的OS檢測技術在滲透測試中用來了解遠程主機的操作系統(tǒng)和軟件是非常有用的,通過獲取的信息你可以知道已知的漏洞。Nmap有一個名為的nmap-OS-DB數(shù)據(jù)庫,該數(shù)據(jù)庫包含超過2600操作系統(tǒng)的信息。Nmap把TCP和UDP數(shù)據(jù)包發(fā)送到目標機器上,然后檢查結(jié)果和數(shù)據(jù)庫對照。
namp -O 192.168.1.2
9、Nmap的操作系統(tǒng)指紋識別技術:
設備類型(路由器,工作組等)運行(運行的操作系統(tǒng))操作系統(tǒng)的詳細信息(操作系統(tǒng)的名稱和版本)、網(wǎng)絡距離(目標和攻擊者之間的距離跳)。如果遠程主機有防火墻,IDS和IPS系統(tǒng),你可以使用-PN命令來確保不ping遠程主機,因為有時候防火墻會阻止掉ping請求。-PN命令告訴Nmap不用ping遠程主機。
nmap -O -PN 192.168.1.1/24
該命令告訴發(fā)信主機遠程主機是存活在網(wǎng)絡上的,所以沒有必要發(fā)送ping請求,使用-PN參數(shù)可以繞過PING命令,但是不影響主機的系統(tǒng)的發(fā)現(xiàn)。
Nmap的操作系統(tǒng)檢測的基礎是有開放和關閉的端口,如果OSscan無法檢測到至少一個開放或者關閉的端口,會返回以下錯誤:Warning:OSScan results may be unreliable because we could not find at least 1 open and 1 closed port。
想通過Nmap準確的檢測到遠程操作系統(tǒng)是比較困難的,需要使用到Nmap的猜測功能選項,–osscan-guess猜測認為最接近目標的匹配操作系統(tǒng)類型。
nmap -O --osscan-guess 192.168.1.1
三、掃描類型說明
-sT TCPconnect()掃描:這是最基本的TCP掃描方式。connect()是一種系統(tǒng)調(diào)用,由操作系統(tǒng)提供,用來打開一個連接。如果目標端口有程序監(jiān)聽,connect()就會成功返回,否則這個端口是不可達的。這項技術最大的優(yōu)點是,你勿需root權(quán)限。任何UNIX用戶都可以自由使用這個系統(tǒng)調(diào)用。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。
-sS TCP同步掃描(TCPSYN):因為不必全部打開一個TCP連接,所以這項技術通常稱為半開掃描(half-open)。你可以發(fā)出一個TCP同步包(SYN),然后等待回應。如果對方返回SYN|ACK(響應)包就表示目標端口正在監(jiān)聽;如果返回RST數(shù)據(jù)包,就表示目標端口沒有監(jiān)聽程序;如果收到一個SYN|ACK包,源主機就會馬上發(fā)出一個RST(復位)數(shù)據(jù)包斷開和目標主機的連接,這實際上有我們的操作系統(tǒng)內(nèi)核自動完成的。這項技術最大的好處是,很少有系統(tǒng)能夠把這記入系統(tǒng)日志。不過,你需要root權(quán)限來定制SYN數(shù)據(jù)包。
-sF-sX-sN秘密FIN數(shù)據(jù)包掃描、圣誕樹(XmasTree)、空(Null)掃描模式:即使SYN掃描都無法確定的情況下使用。一些防火墻和包過濾軟件能夠?qū)Πl(fā)送到被限制端口的SYN數(shù)據(jù)包進行監(jiān)視,而且有些程序比如synlogger和courtney能夠檢測那些掃描。這些高級的掃描方式可以逃過這些干擾。些掃描方式的理論依據(jù)是:關閉的端口需要對你的探測包回應RST包,而打開的端口必需忽略有問題的包(參考RFC793第64頁)。FIN掃描使用暴露的FIN數(shù)據(jù)包來探測,而圣誕樹掃描打開數(shù)據(jù)包的FIN、URG和PUSH標志。不幸的是,微軟決定完全忽略這個標準,另起爐灶。所以這種掃描方式對Windows95/NT無效。不過,從另外的角度講,可以使用這種方式來分別兩種不同的平臺。如果使用這種掃描方式可以發(fā)現(xiàn)打開的端口,你就可以確定目標注意運行的不是Windows系統(tǒng)。如果使用-sF、-sX或者-sN掃描顯示所有的端口都是關閉的,而使用SYN掃描顯示有打開的端口,你可以確定目標主機可能運行的是Windwos系統(tǒng)。現(xiàn)在這種方式?jīng)]有什么太大的用處,因為nmap有內(nèi)嵌的操作系統(tǒng)檢測功能。還有其它幾個系統(tǒng)使用和windows同樣的處理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在應該拋棄數(shù)據(jù)包時,以上這些系統(tǒng)都會從打開的端口發(fā)出復位數(shù)據(jù)包。
-sP ping掃描:有時你只是想知道此時網(wǎng)絡上哪些主機正在運行。通過向你指定的網(wǎng)絡內(nèi)的每個IP地址發(fā)送ICMPecho請求數(shù)據(jù)包,nmap就可以完成這項任務。如果主機正在運行就會作出響應。不幸的是,一些站點例如:microsoft.com阻塞ICMPecho請求數(shù)據(jù)包。然而,在默認的情況下nmap也能夠向80端口發(fā)送TCPack包,如果你收到一個RST包,就表示主機正在運行。nmap使用的第三種技術是:發(fā)送一個SYN包,然后等待一個RST或者SYN/ACK包。對于非root用戶,nmap使用connect()方法。在默認的情況下(root用戶),nmap并行使用ICMP和ACK技術。注意,nmap在任何情況下都會進行ping掃描,只有目標主機處于運行狀態(tài),才會進行后續(xù)的掃描。如果你只是想知道目標主機是否運行,而不想進行其它掃描,才會用到這個選項。
-sU UDP掃描:如果你想知道在某臺主機上提供哪些UDP(用戶數(shù)據(jù)報協(xié)議,RFC768)服務,可以使用這種掃描方法。nmap首先向目標主機的每個端口發(fā)出一個0字節(jié)的UDP包,如果我們收到端口不可達的ICMP消息,端口就是關閉的,否則我們就假設它是打開的。有些人可能會想UDP掃描是沒有什么意思的。但是,我經(jīng)常會想到最近出現(xiàn)的solaris rpcbind缺陷。rpcbind隱藏在一個未公開的UDP端口上,這個端口號大于32770。所以即使端口111(portmap的眾所周知端口號)被防火墻阻塞有關系。但是你能發(fā)現(xiàn)大于30000的哪個端口上有程序正在監(jiān)聽嗎?使用UDP掃描就能!cDcBackOrifice的后門程序就隱藏在Windows主機的一個可配置的UDP端口中。不考慮一些通常的安全缺陷,一些服務例如:snmp、tftp、NFS使用UDP協(xié)議。不幸的是,UDP掃描有時非常緩慢,因為大多數(shù)主機限制ICMP錯誤信息的比例(在RFC1812中的建議)。例如,在Linux內(nèi)核中(在net/ipv4/icmp.h文件中)限制每4秒鐘只能出現(xiàn)80條目標豢紗锏腎CMP消息,如果超過這個比例,就會給1/4秒鐘的處罰。solaris的限制更加嚴格,每秒鐘只允許出現(xiàn)大約2條ICMP不可達消息,這樣,使掃描更加緩慢。nmap會檢測這個限制的比例,減緩發(fā)送速度,而不是發(fā)送大量的將被目標主機丟棄的無用數(shù)據(jù)包。不過Micro$oft忽略了RFC1812的這個建議,不對這個比例做任何的限制。所以我們可以能夠快速掃描運行Win95/NT的主機上的所有65K個端口。
-sA ACK掃描:這項高級的掃描方法通常用來穿過防火墻的規(guī)則集。通常情況下,這有助于確定一個防火墻是功能比較完善的或者是一個簡單的包過濾程序,只是阻塞進入的SYN包。這種掃描是向特定的端口發(fā)送ACK包(使用隨機的應答/序列號)。如果返回一個RST包,這個端口就標記為unfiltered狀態(tài)。如果什么都沒有返回,或者返回一個不可達ICMP消息,這個端口就歸入filtered類。注意,nmap通常不輸出unfiltered的端口,所以在輸出中通常不顯示所有被探測的端口。顯然,這種掃描方式不能找出處于打開狀態(tài)的端口。
-sW對滑動窗口的掃描:這項高級掃描技術非常類似于ACK掃描,除了它有時可以檢測到處于打開狀態(tài)的端口,因為滑動窗口的大小是不規(guī)則的,有些操作系統(tǒng)可以報告其大小。這些系統(tǒng)至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64UNIX、DG/UX、OpenVMS、DigitalUNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS4.x、Ultrix、VAX、VXWORKS。從nmap-hackers郵件3列表的文檔中可以得到完整的列表。
-sR RPC掃描。這種方法和nmap的其它不同的端口掃描方法結(jié)合使用。選擇所有處于打開狀態(tài)的端口向它們發(fā)出SunRPC程序的NULL命令,以確定它們是否是RPC端口,如果是,就確定是哪種軟件及其版本號。因此你能夠獲得防火墻的一些信息。誘餌掃描現(xiàn)在 還不能和RPC掃描結(jié)合使用。
-bFTP反彈攻擊(bounceattack):FTP協(xié)議(RFC959)有一個很有意思的特征,它支持代理FTP連接。也就是說,我能夠從evil.com連接到FTP服務器target.com,并且可以要求這臺FTP服務器為自己發(fā)送Internet上任何地方的文件!1985年,RFC959完成時,這個特征就能很好地工作了。然而,在今天的Internet中,我們不能讓人們劫持FTP服務器,讓它向Internet上的任意節(jié)點發(fā)送數(shù)據(jù)。如同Hobbit在1995年寫的文章中所說的,這個協(xié)議"能夠用來做投遞虛擬的不可達郵件和新聞,進入各種站點的服務器,填滿硬盤,跳過防火墻,以及其它的騷擾活動,而且很難進行追蹤"。我們可以使用這個特征,在一臺代理FTP服務器掃描TCP端口。因此,你需要連接到防火墻后面的一臺FTP服務器,接著進行端口掃描。如果在這臺FTP服務器中有可讀寫的目錄,你還可以向目標端口任意發(fā)送數(shù)據(jù)(不過nmap不能為你做這些)。傳遞給-b功能選項的參數(shù)是你要作為代理的FTP服務器。語法格式為:-busername:password@server:port。除了server以外,其余都是可選的。如果你想知道什么服務器有這種缺陷,可以參考我在Phrack51發(fā)表的文章。還可以在nmap的站點得到這篇文章的最新版本。
通用選項這些內(nèi)容不是必需的,但是很有用。
-P0在掃描之前,不必ping主機。有些網(wǎng)絡的防火墻不允許ICMPecho請求穿過,使用這個選項可以對這些網(wǎng)絡進行掃描。microsoft.com就是一個例子,因此在掃描這個站點時,你應該一直使用-P0或者-PT80選項。
-PT掃描之前,使用TCPping確定哪些主機正在運行。nmap不是通過發(fā)送ICMPecho請求包然后等待響應來實現(xiàn)這種功能,而是向目標網(wǎng)絡(或者單一主機)發(fā)出TCPACK包然后等待回應。如果主機正在運行就會返回RST包。只有在目標網(wǎng)絡/主機阻塞了ping包,而仍舊允許你對其進行掃描時,這個選項才有效。對于非root用戶,我們使用connect()系統(tǒng)調(diào)用來實現(xiàn)這項功能。使用-PT來設定目標端口。默認的端口號是80,因為這個端口通常不會被過濾。
-PS對于root用戶,這個選項讓nmap使用SYN包而不是ACK包來對目標主機進行掃描。如果主機正在運行就返回一個RST包(或者一個SYN/ACK包)。
-PI設置這個選項,讓nmap使用真正的ping(ICMPecho請求)來掃描目標主機是否正在運行。使用這個選項讓nmap發(fā)現(xiàn)正在運行的主機的同時,nmap也會對你的直接子網(wǎng)廣播地址進行觀察。直接子網(wǎng)廣播地址一些外部可達的IP地址,把外部的包轉(zhuǎn)換為一個內(nèi)向的IP廣播包,向一個計算機子網(wǎng)發(fā)送。這些IP廣播包應該刪除,因為會造成拒絕服務攻擊(例如smurf)。
來源: http://jingyan.baidu.com/article/47a29f24312010c0142399f1.html