計算機網絡設計與安全技術 課件8 網絡主機與端口掃描程序設計_第1頁
計算機網絡設計與安全技術 課件8 網絡主機與端口掃描程序設計_第2頁
計算機網絡設計與安全技術 課件8 網絡主機與端口掃描程序設計_第3頁
計算機網絡設計與安全技術 課件8 網絡主機與端口掃描程序設計_第4頁
計算機網絡設計與安全技術 課件8 網絡主機與端口掃描程序設計_第5頁
已閱讀5頁,還剩25頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《計算機網絡設計與安全技術》第8章

網絡主機與端口掃描程序設計1學習內容:(1)ICMP報文分析;(2)基于ICMP協議的主機掃描程序設計;(3)網絡端口掃描原理;(4)網絡端口掃描程序設計。學習目標:(1)學習原始套接字編程方法,能夠編寫主機掃描程序;(2)深入理解ICMP協議,能夠編程實現多線程端口掃描功能。28.1

ICMP報文分析ICMP首部中的類型域用于說明ICMP報文的作用及格式,ICMP代碼域用于詳細說明某種ICMP報文的類型。ICMP(Internetcontrolmessageprotocol)網際控制報文協議34表8.1

ICMP類型與代碼描述類型代碼描述查詢差錯報告00EchoReply—回顯應答(Ping應答)?

30NetworkUnreachable—網絡不可達

?31HostUnreachable—主機不可達

?32ProtocolUnreachable—協議不可達

?33PortUnreachable—端口不可達

?34Fragmentationneededbutnofrag.bitset—需要進行分片但設置不分片比特

?35Sourceroutingfailed—源站路由失敗

?36Destinationnetworkunknown—目的網絡未知

?37Destinationhostunknown—目的主機未知

?38Sourcehostisolated(obsolete)—源主機被隔離(作廢不用)

?39Destinationnetworkadministrativelyprohibited—目的網絡被強制禁止

?310Destinationhostadministrativelyprohibited—目的主機被強制禁止

?311NetworkunreachableforTOS—由于服務類型TOS,網絡不可達

?312HostunreachableforTOS—由于服務類型TOS,主機不可達

?313Communicationadministrativelyprohibitedbyfiltering—由于過濾,通信被強制禁止

?314Hostprecedenceviolation—主機越權

?315Precedencecutoffineffect—優先中止生效

?540Sourcequench—源端被關閉(基本流控制)

50Redirectfornetwork—對網絡重定向

51Redirectforhost—對主機重定向

52RedirectforTOSandnetwork—對服務類型和網絡重定向

53RedirectforTOSandhost—對服務類型和主機重定向

80Echorequest—回顯請求(Ping請求)?

90Routeradvertisement—路由器通告

100Routesolicitation—路由器請求

110TTLequals0duringtransit—傳輸期間生存時間為0

?111TTLequals0duringreassembly—在數據報組裝期間生存時間為0

?120IPheaderbad(catchallerror)—壞的IP首部(包括各種差錯)

?121Requiredoptionsmissing—缺少必需的選項

?130Timestamprequest(obsolete)—時間戳請求(作廢不用)?

140Timestampreply(obsolete)—時間戳應答(作廢不用)?

150Informationrequest(obsolete)—信息請求(作廢不用)?

160Informationreply(obsolete)—信息應答(作廢不用)?

170Addressmaskrequest—地址掩碼請求?

180Addressmaskreply—地址掩碼應答?6ping是響應請求(類型=8)和應答(類型=0)。一臺主機向一個節點發送一個類型=8的ICMP報文,如果途中沒有異常(例如,被路由器丟棄、目標不回應ICMP或傳輸失敗),則目標返回類型=0的ICMP報文,說明這臺主機存在。Ping百度網7通過計算ICMP報文通過的節點來確定主機與目標之間的網絡距離。8ICMP協議對網絡安全具有極其重要的意義。ICMP協議本身的特點決定了它非常容易被用于攻擊網絡上的路由器和主機。利用操作系統規定的ICMP數據包最大尺寸不超過64KB這一規定,向主機發起“PingofDeath”(死亡之Ping)攻擊。“PingofDeath”的攻擊原理是:如果ICMP數據包的尺寸超過64KB上限時,主機就會出現內存分配錯誤,導致TCP/IP堆棧崩潰,致使主機死機(現在的操作系統已經限制了發送ICMP數據包的大小)。向目標主機長時間、連續、大量地發送ICMP數據包,也會使系統癱瘓。大量的ICMP數據包會形成“ICMP風暴”,使得目標主機耗費大量的CPU資源處理。死亡之PING與ICMP風暴98.2

基于ICMP協議的主機掃描程序設計為了實現直接對IP和ICMP包進行操作,必須使用RAW模式的Socket編程。8.2.1主機掃描流程設計直接對IP和ICMP包進行操作,實驗中使用RAW模式的SOCKET編程。①定義ICMP報文。IcmpPacket類②客戶機發送封裝ICMP回顯請求報文的IP數據包。創建Socket實例,再調用其SendTo()方法。③客戶機接收封裝ICMP應答報文的IP數據包:調用Socket實例中的ReceiveFrom()方法。10118.2.2主機掃描程序設計圖中探測的IP地址是,結果表明該主機是運行的。閱讀主機掃描程序128.3

網絡端口掃描原理網絡端口掃描是網絡攻擊的前奏。13網絡進程通信需要收發雙方構成全相關。8.3.1網絡進程通信原理14表8.2

常見的熟知端口及其應用協議傳輸層協議端口號服務進程協議描述UDP42NAME服務器主機名字服務器UDP53域名域名服務器UDP67BOOTP客戶機客戶端引導協議服務UDP68BOOTP服務器服務器端引導協議服務UDP69TFTP簡單文件傳輸協議UDP111RPC遠程過程調用UDP161SNMP簡單網絡管理協議TCP20FTP數據文件傳輸服務器(數據連接)TCP21FTP控制文件傳輸服務器(控制連接)TCP23Telnet遠程終端服務器TCP25SMTP簡單郵件傳輸協議TCP80HTTP超文本傳輸協議TCP110POP郵局協議158.3.2端口掃描技術分析16(1)TCPconnect()掃描(a)連接建立成功

(b)未建立連接17(2)TCPSYN掃描:半開放掃描(a)TCPSYN掃描成功

(b)TCPSYN掃描不成功18(3)TCPFIN掃描(a)TCPFIN掃描目標端口打開 (b)TCPFIN掃描目標端口關閉19(4)TCPACK掃描(a)TCPACK掃描目標端口打開 (b)TCPACK掃描目標端口關閉20(5)NULL掃描(a)NULL掃描目標端口打開 (b)NULL掃描目標端口關閉21(6)XMAS掃描(a)XMAS掃描目標端口打開 (b)XMAS掃描目標端口關閉22(7)SYN/ACK掃描(a)SYN/ACK掃描目標端口打開 (b)SYN/ACK掃描目標端口關閉238.4

網絡端口掃描程序設計8.4.1端口掃描流程設計8.4.2指定端口掃描入門Python程序,通過指定主機及其端口,在控制臺下實現,說明端口掃描入門。importsocketsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)result=sock.connect_ex(('',80))if0==result:

print("端口開放")

print("主機名:"+socket.gethostname())else:

print("端口未開放,返回結果:%s"%result)248.4.3具有人機界面的端口掃描程序采用TCP全連接掃描方法,C#程序。privatevoidStart(){

connState=0;

portSum=0;

scanHost=txtHostname.Text;

try

{

IPAddressipaddr=(IPAddress)Dns.Resolve(scanHost).AddressList.

GetValue(0);

txtHostname.Text=ipaddr.ToString();

}

catch

{

txtHostname.Focus();

MessageBox.Show("請輸入正確的主機地址,該地址DNS無法解析","系統提示");

return;

}

for(Int32threadNum=startPort;threadNum<=endPort;threadNum++)

{

NormalScan(threadNum);

}}25privatevoidNormalScan(Objectstate){

Int32port=(Int32)state;

stringtMsg="";

TcpClienttcp=newTcpClient();

try

{

tcp.Connect(scanHost,port);

portSum++;

tMsg=port.ToString()+"端口開放。";

portList.Items.Add(tMsg);

tcp.Close();

}

catch

{

tcp.Close();

}}需要注意的是,當執行語句tcp.Connect(scanHost,port)后,如果該端口是關閉的,則會引發一個異常,所以一定需要異常處理語句try{}...catch{}。268.4.4多線程端口掃描程序設計示例以上掃描程序是串行結構,掃描效率低。采用多線程技術能夠顯著地提高掃描效率。展示了采用多線程時的全連接掃描情形,線程數設置為5。單擊“掃描”按鈕,可以發現程序的運行效率明顯加快。掃描結果中包含了端口號為25時的協議細節,表示本機上安裝有ESMTP及其版本信息等。27//設置最大線程數ThreadPool.SetMaxThreads(setThreadNum,setThreadNum);

for(Int32threadNum=startPort;threadNum<=endPort;threadNum++) { ThreadPool.QueueUserWorkItem(newWaitCallback(StartScan),threadNum); }28publicvoidStartScan(Objectstate){ Int32port=(Int32)state; stringtMsg=""; stringgetData=""; connState++;//判斷線程數目

try { TcpClienttcp=newTcpClient(); tcp.Connect(scanHost,port); portSum++; tMsg=port.ToString()+"端口開放。"; portListArray[portSum-1]=tMsg; Streamsm=tcp.GetStream(); sm.Write(Encoding.Default.GetBytes(tMsg.ToCharArra

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論