實驗一
實驗1 網絡服務和端口的掃描一、實驗目的通過ping 等命令了解目標主機的可訪問性;通過使用網絡掃描軟件,了解目標主機端口和服務的開放情況,從而進一步獲取系統信息,找出系統安全漏洞;通過本次實驗,讀
實驗1 網絡服務和端口的掃描
一、實驗目的
通過ping 等命令了解目標主機的可訪問性;
通過使用網絡掃描軟件,了解目標主機端口和服務的開放情況,從而進一步獲取系統信息,找出系統安全漏洞;
通過本次實驗,讀者可以了解到端口與服務開放的風險,增強在網絡安全防護方面的意識。
二、實驗原理
常用掃描探測命令:ping 、tracert
掃描工具:Superscan 和Nmap
1. Ping以及tracert
·ping
ping 命令首先會構建一個固定格式的ICMP 請求數據包echo request,發(fā)給遠端計算機 ;
遠端計算機收到后,構造一個ICMP 應答包echo reply,發(fā)送回本機; 本機收到應答包后,即可判斷出目的主機是否開機,并根據發(fā)送包和應答包攜帶的時間信息計算出網絡延遲。
·tracert
源主機將構造并向目標主機發(fā)送不同TTL 值的ICMP 請求數據包,tracert 診斷程序根據ICMP 的回應數據包來確定到目標所采取的路由;
Tracert 程序首先發(fā)送 TTL 為1的請求數據包,該包經過第一個路由設備后TTL 減1為0,第一個路由設備就將給源主機發(fā)回“ICMP 已超時”的消息;
源主機的tracert 命令通過該消息中的IP 信息就獲得了第一個路由設備的IP ;
在隨后的每次發(fā)送過程將TTL 依次遞增1,直到目標響應或TTL 達到最大值,從而確定從源主機到目的主機中間的路由。
2 端口掃描的原理
掃描的過程就是向目標主機的端口發(fā)送請求數據包,希望建立“連接”,根據目標主機的回應判斷其端口是否開放;
通過掃描判斷目標主機端口是否打開的一個最簡單的方法,是利用TCP 協議的三次握手機制;
只要和目標主機的端口能建立TCP 的三次握手,說明目標主機的端口是開的,反之則沒有打開。
,·三次握手
第一次握手:
主機A 的某個端口向主機B 的某個端口發(fā)出TCP 連接請求數據包,其TCP 包頭的標志位設置為SYN=1,ACK=0,同時選擇一個序號x ,表明在后面?zhèn)魉蛿祿r的第一個數據字節(jié)的序號是x ,這個過程稱為第一次握手。
第二次握手:
主機B 的相應端口收到連接請求數據包后,如端口是開放的,則發(fā)回確認數據包。在確認數據包中,TCP 包頭的標志位設置為SYN=1,ACK=1,確認序號為x 1,同時B 主機也會生成一個自己的序號y ,這個過程稱為第二次握手。 第三次握手:
主機A 收到此數據包后,還要向B 給出確認數據包,其TCP 包頭的標志位設置為ACK=1,其確認序號為y 1,這個過程稱為第三次握手。
3 掃描分類
1)全TCP 連接
這種掃描方法使用三次握手,與目標計算機建立標準的TCP 連接;
攻擊者首先向目的端口發(fā)送一個SYN 數據包,如果收到來自該端口的SYN/ACK數據包,就可以判定該端口是開放的;然后攻擊者再發(fā)送一個ACK 數據包;
如果目標端口是關閉的,攻擊者就會收到一個直接返回的RST/ACK數據包;
2)半打開式掃描(SYN 掃描)
在這種掃描技術中,掃描主機同樣向目標計算機的指定端口發(fā)送SYN 數據包,表示希望建立連接。
a .當端口開放時,目標計算機回應SYN/ACK數據包,這和全TCP 連接掃描類似。但是掃描主機接著發(fā)送一個RST=1的數據包給目標主機,RST 數據包將對TCP 連接進行重置,目標計算機因為沒有接到相應ACK 數據包,從而不會建立三次握手。
b .如果端口是關閉的,則按照TCP

協議中端口未開規(guī)則處理,由目標主機
,發(fā)送RST/ACK數據包給掃描主機,此時TCP 連接依然沒有建立。
掃描主機根據目標計算機的回應數據包是SYN/ACK數據包,還是RST/ACK數據包即可判斷端口是否打開。
3)秘密掃描
這種方法的優(yōu)點在于沒有涉及TCP 連接的部分,所以比前2種都要安全,所以也被稱做秘密掃描;缺點就是不夠準確,不能完全識別開放的端口。 FIN 標記掃描:
攻擊者發(fā)送一個FIN=1的TCP 報文到目標主機:
端口關閉時,該報文會被丟掉,并返回一個RST 報文。
端口開放時,該報文只是簡單的丟掉,不會返回任何回應。
三、實驗環(huán)境
兩臺運行win7的計算機,通過網絡連接。使用Superscan 和nmap 作為練習工具。
四、實驗內容
1、Ping 以及Tracert


2、使用Superscan 進行掃描
首先安裝Superscan3.0,安裝完畢后,雙擊程序,進入其主界面。
域名(主機名)和IP 相互轉換
這個功能的作用就是取得域名比如:163.com 的IP ;或者根據IP :
192.168.1.156取得域名。(如下圖)
在SuperScan 里面,有兩種方法來實現此功能:
1)通過Hostname Lookup來 實現
在Hostname Lookup的輸入框輸入需要轉換的域名或者IP ,按【LookUp 】就可以取得結果。如果需要取得自己計算機的IP ,可以點擊【Me 】按鈕來取得;
同時,也可以取得自己計算機的IP 設置情況,點擊【InterFaces 】取得本地IP 設置情況




2)通過Extract From File實現
這個功能通過一個域名列表來轉換為相應IP 地址。
選擇【Extract from file】,點擊【->】按鈕,選擇域名列表,進行轉換。
Ping 功能的使用
Ping主要目的在于檢測目標計算機是否在線和通過反應時間判斷網絡狀況。
如下圖,在【IP 】的【Start 】填入起始IP ,在【Stop 】填入結束IP ,然后,在【Scan Type】選擇【Ping only】,按【Start 】就可以檢測了。


在以上的設置中,我們可以使用以下按鈕達到快捷設置目的:選擇
【Ignore IP zreo】可以屏蔽所有以0結尾的IP ;選擇【Ignore IP 255】可以屏蔽所有以255結尾的IP ;點擊【PrevC 】可以直接轉到前一個C 網段;選擇【NextC 】可以直接轉到后一個C 網段;選擇【1..254】直接選擇整個網段。同樣,也可以在【Extract From File】通過域名列表取得IP 列表。
在Ping 的時候,可以根據網絡情況在【Timeout 】設置相應的反應時間。一般采用默認就可以了,而且,SuperScan 速度非常快,結果也很準確,一般沒有必要改變反應時間設置。
端口檢測
端口檢測可以取得目標計算機提供的服務,同時,也可以檢測目標計算機是否有木馬。現在,我們來看看端口檢測的具體使用。
(1)檢測目標計算機的所有端口
如果檢測的時候沒有特定的目的,只是為了了解目標計算機的一些情況,可以對目標計算機的所有端口進行檢測。一般不提倡這種檢測,因為:
1)它會對目標計算機的正常運行造成一定影響,同時,也會引起目標計算機的警覺;
2)掃描時間很長;
3)浪費帶寬資源,對網絡正常運行造成影響。
在【IP 】輸入起始IP 和結束IP ,在【Scan Type】選擇最后一項
【All Ports From 1 to 65535】,如果需要返回計算機的主機名,可以選擇【Resolve Hostnem】,按【Start 】開始檢測。

上圖是對一臺目標計算機所有端口進行掃描的結果,掃描完成以后,按
【Expand all】展開,可以看到掃描的結果。我們來解釋一下以上結果:第一行是目標計算機的IP 和主機名;從第二行開始的小圓點是掃描的計算機的活動端口號和對該端口的解釋?!続ctive hosts】顯示掃描到的活動主機數量,這里只掃描了一臺,為1;【Open ports】顯示目標計算機打開的端口數,這里是5。
(2)掃描目標計算機的特定端口(自定義端口)
其實,大多數時候我們不需要檢測所有端口,我們只要檢測有限的幾個端口就可以了,因為我們的目的只是為了得到目標計算機提供的服務和使用的軟件。所以,我們可以根據個人目的的不同來檢測不同的端口,大部分時候,我們只要檢測80(web 服務)、21(FTP 服務)、23(Telnet 服務)就可以了,即使是攻擊,也不會有太多的端口檢測。
點擊【Port list setup】,出現端口設置界面(如下圖):
以上的界面中,在【Select ports】雙擊選擇需要掃描的端口,端口前面會有一個"√"的標志;選擇的時候。
注意左邊的【Change/Add/Delete port info】和【Helper apps in right-click menu 】,這里有關于此端口的詳細說明和所使用的程序。我們選擇21、23、80、三個端口,然后,點擊【save 】按鈕保存選擇的端口為端口列表?!緊k 】回到主界面。在【Scan Type】選擇
【All selected port in list】,按【Start 】開始檢測。

使用自定義端口的方式有以下有點:
1) 選擇端口時可以詳細了解端口信息;
2) 選擇的端口可以自己取名保存,有利于再次使用;
3) 可以工具要求有的放矢的檢測目標端口,節(jié)省時間和資源;
4) 根據一些特定端口,我們可以檢測目標計算機是否被攻擊者利用,種植木馬或者打開不應該打開的服務;
3、網絡掃描軟件Nmap 的使用
(1)簡介
Nmap 是一個網絡連接端掃描軟件,用來掃描網上電腦開放的網絡連接端。確定哪服務運行在那些連接端,并且推斷哪個操作系統計算機運行(這是亦稱 fingerprinting )。它是網絡管理員必用的軟件之一,以及用以評估網絡系統保安。
正如大多數工具被用于網絡安全的工具,nmap 也是不少黑客及駭客(又稱腳本小孩)愛用的工具。系統管理員可以利用nmap 來探測工作環(huán)境中未經批準使用的服務器,但是黑客會利用nmap 來搜集目標電腦的網絡設定,從而計劃攻擊的方法。
Nmap 常被跟評估系統漏洞軟件Nessus 混為一談。Nmap 以隱秘的手法,避開闖入檢測系統的監(jiān)視,并盡可能不影響目標系統的日常操作。
(2)描述
nmap 運行通常會得到被掃描主機端口的列表。nmap 總會給出well known端口的服務名(如果可能) 、端口號、狀態(tài)和協議等信息。每個端口的狀態(tài)有:open 、filtered 、unfiltered 。open 狀態(tài)意味著目標主機能夠在這個端口使用accept()系統調用接受連接。filtered 狀態(tài)表示:防火墻、包過濾和其它的網絡安全軟件掩蓋了這個端口,禁止nmap 探測其是否打開。unfiltered 表示:這個端口關閉,并且沒有防火墻/包過濾軟件來隔離nmap 的探測企圖。通常情況下,端口的狀態(tài)基本都是unfiltered 狀態(tài),只有在大多數被掃描的端口處于filtered 狀態(tài)下,才會顯示處于unfiltered 狀態(tài)的端口。
根據使用的功能選項,nmap 也可以報告遠程主機的下列特征:使用的操作系統、TCP 序列、運行綁定到每個端口上的應用程序的用戶名、DNS 名、主機地址是否是欺騙地址、以及其它一些東西。
(3)Nmap所識別的6個端口狀態(tài)。
·open (開放的)
應用程序正在該端口接收TCP 連接或者UDP 報文。發(fā)現這一點常常是端口掃描
,的主要目標。安全意識強的人們知道每個開放的端口都是攻擊的入口。攻擊者或者入侵測試者想要發(fā)現開放的端口。而管理員則試圖關閉它們或者用防火墻保護它們以免妨礙了合法用戶。非安全掃描可能對開放的端口也感興趣,因為它們顯示了網絡上那些服務可供使用。
·closed (關閉的)
關閉的端口對于Nmap 也是可訪問的(它接受Nmap 的探測報文并作出響應) ,但沒有應用程序在其上監(jiān)聽。它們可以顯示該IP 地址上(主機發(fā)現,或者ping 掃描) 的主機正在運行up 也對部分操作系統探測有所幫助。
·filtered (被過濾的)
由于包過濾阻止探測報文到達端口,Nmap 無法確定該端口是否開放。過濾可能來自專業(yè)的防火墻設備,路由器規(guī)則或者主機上的軟件防火墻。
·unfiltered (未被過濾的)
未被過濾狀態(tài)意味著端口可訪問,但Nmap 不能確定它是開放還是關閉。只有用于映射防火墻規(guī)則集的ACK 掃描才會把端口分類到這種狀態(tài)。用其它類型的掃描如窗口掃描,SYN 掃描,或者FIN 掃描來掃描未被過濾的端口可以幫助確定端口是否開放。
·open|filtered(開放或者被過濾的)
當無法確定端口是開放還是被過濾的,Namp 就把該端口劃分成這種狀態(tài)。開放的端口不響應就是一個例子。沒有響應也可能意味著報文過濾器丟棄了探測報文或者它引發(fā)的任何響應。因此Nmap 無法確定該端口是開放的還是被過濾的。UDP ,IP 協議,FIN ,Null 和Xmas 掃描可能把端口歸入此類。
·closed|filtered(關閉或者被過濾的)
該狀態(tài)用于Nmap 不能確定端口是關閉的還是被過濾的。它只可能出現在IPID Idle 掃描中。
(4)語法
Nmap 的語法相當簡單.Nmap 的不同選項和-s 標志組成了不同的掃描類型, 比如:一個Ping-scan 命令就是"-sP". 在確定了目標主機和網絡之后, 即可進行掃描. 如果以root 來運行Nmap,Nmap 的功能會大大的增強, 因為超級用戶可以創(chuàng)建便于Nmap 利用的定制數據包。
一般語法格式:nmap [Scan Type(s)] [Options]
(5)基本掃描類型
可以使用nmap -h快速列出功能選項的列表。
-sT
TCP connect()掃描:這是最基本的TCP 掃描方式。connect()是一種系統調用,
,由操作系統提供,用來打開一個連接。如果目標端口有程序監(jiān)聽, connect()就會成功返回,否則這個端口是不可達的。這項技術最大的優(yōu)點是,你勿需root 權限。任何UNIX 用戶都可以自由使用這個系統調用。這種掃描很容易被檢測到,在目標主機的日志中會記錄大批的連接請求以及錯誤信息。
-sS
TCP 同步掃描(TCP SYN):因為不必全部打開一個TCP 連接,所以這項技術通常稱為半開掃描(half-open)。你可以發(fā)出一個TCP 同步包(SYN),然后等待回應。如果對方返回SYN|ACK(響應) 包就表示目標端口正在監(jiān)聽;如果返回RST 數據包,就表示目標端口沒有監(jiān)聽程序;如果收到一個SYN|ACK包,源主機就會馬上發(fā)出一個RST(復位) 數據包斷開和目標主機的連接。這項技術最大的好處是,很少有系統能夠把這記入系統日志。
-sP
ping 掃描:若只是想知道此時網絡上哪些主機正在運行。通過向你指定的網絡內的每個IP 地址發(fā)送ICMP echo 請求數據包,nmap 就可以完成這項任務,如果主機正在運行就會作出響應。在默認的情況下nmap 也能夠向80端口發(fā)送TCP ack 包,如果你收到一個RST 包,就表示主機正在運行。nmap 使用的第三種技術是:發(fā)送一個SYN 包,然后等待一個RST 或者SYN/ACK包。對于非root 用戶,nmap 使用connect()方法。在默認的情況下(root用戶) ,nmap 并行使用ICMP 和ACK 技術。實際上,nmap 在任何情況下都會進行ping 掃描,只有目標主機處于運行狀態(tài),才會進行后續(xù)的掃描。如果只是想知道目標主機是否運行,而不想進行其它掃描,才會用到這個選項。
-sU
UDP 掃描:如果想知道在某臺主機上提供哪些UDP(用戶數據報協議,RFC768) 服務,可以使用這種掃描方法。nmap 首先向目標主機的每個端口發(fā)出一個0字節(jié)的UDP 包,如果收到端口不可達的ICMP 消息,端口就是關閉的,否則我們就假設它是打開的。
(6)通用選項
這些內容不是必需的,但是很有用。
-Pn
在掃描之前,不必ping 主機。有些網絡的防火墻不允許ICMP echo請求穿過,使用這個選項可以對這些網絡進行掃描。
-O
這個選項激活對TCP/IP指紋特征(fingerprinting)的掃描,獲得遠程主機的標志。換句話說,nmap 使用一些技術檢測目標主機操作系統網絡協議棧的特征。