應(yīng)用及傳輸層協(xié)議報文承載信息分析_第1頁
應(yīng)用及傳輸層協(xié)議報文承載信息分析_第2頁
應(yīng)用及傳輸層協(xié)議報文承載信息分析_第3頁
應(yīng)用及傳輸層協(xié)議報文承載信息分析_第4頁
應(yīng)用及傳輸層協(xié)議報文承載信息分析_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實驗三 應(yīng)用層、傳輸層協(xié)議報文承載信息分析【實驗?zāi)康摹渴煜f(xié)議分析工具軟件使用,分析應(yīng)用層及傳輸層報文承載的信息【實驗要求】1、協(xié)議分析工具軟件的使用,比如WireShark;2、對SNMP及HTTP數(shù)據(jù)包進行分析,并驗證兩個高層協(xié)議的編碼方法;3、對基于HTTP協(xié)議的登錄驗證報文進行截取分析,提取并識別用戶名密碼;在分析利用瀏覽器進行登錄驗證的基礎(chǔ)上,手動模擬基于HTTP協(xié)議的Web程序驗證登陸過程;4、截取基于UDP包,分析UDP協(xié)議信息(可如截獲即時通訊QQ的數(shù)據(jù)報);5、對依賴Telnet應(yīng)用程序建立的TCP連接中的TCP報文數(shù)據(jù)特點進行分析;(選作)6、對大量的數(shù)據(jù)上傳(比如基于HT

2、TP或FTP的較大文件的上傳),通過協(xié)議分析觀察是否有擁塞控制的表征。(選作)【實驗報告要求】1. 實驗報告須按實驗成果提交2. 實驗名稱按本指導(dǎo)書給出的實驗名稱填寫3. 實驗報告寫明實驗日期、班級、姓名、學(xué)號4對SNMP及HTTP數(shù)據(jù)包進行分析,陳述兩個高層協(xié)議的編碼方法的不同,并把截圖寫入報告。5對截獲即時通訊QQ的數(shù)據(jù)報依據(jù)UDP報頭進行分析,并把截圖寫入報告?!緦嶒炘怼縀thereal協(xié)議分析系統(tǒng)介紹   Ethereal是一個開放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持Linux和windows平臺。Ethereal起初由Ge

3、rald Combs開發(fā),隨后由一個松散的Etheral團隊組織進行維護開發(fā)。它目前所提供的強大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為Ethereal添加新的協(xié)議解析器,如今Ethereal已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中加入一個新的協(xié)議解析器很簡單,一個不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進行自己的協(xié)議開發(fā)。這都歸功于Ehereal良好的設(shè)計結(jié)構(gòu)。事實上由于網(wǎng)絡(luò)上各種協(xié)議種類繁多,各種新的協(xié)議層出不窮。一個好的協(xié)議分析器必需有很好的可擴展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)發(fā)展的

4、需要不斷加入新的協(xié)議解析器。1 Ethereal的捕包平臺網(wǎng)絡(luò)分析系統(tǒng)首先依賴于一套捕捉網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)庫。這套函數(shù)庫工作在在網(wǎng)絡(luò)分析系統(tǒng)模塊的最底層。作用是從網(wǎng)卡取得數(shù)據(jù)包或者根據(jù)過濾規(guī)則取出數(shù)據(jù)包的子集,再轉(zhuǎn)交給上層分析模塊。從協(xié)議上說,這套函數(shù)庫將一個數(shù)據(jù)包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。在Linux系統(tǒng)中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包過濾器的一種的實現(xiàn),BPF(BSD Packet Filter)。Libpcap是一個基于BPF的開放源碼的捕包函數(shù)庫?,F(xiàn)有的大部分Linux捕

5、包系統(tǒng)都是基于這套函數(shù)庫或者是在它基礎(chǔ)上做一些針對性的改進在window系統(tǒng)中,意大利人Fulvio Risso和Loris Degioanni提出并實現(xiàn)了Winpcap函數(shù)庫,作者稱之為NPF。由于NPF的主要思想就是來源于BPF,它的設(shè)計目標就是為windows系統(tǒng)提供一個功能強大的開發(fā)式數(shù)據(jù)包捕獲平臺,希望在Linux系統(tǒng)中的網(wǎng)絡(luò)分析工具經(jīng)過簡單編譯以后也可以移植到windows中,因此這兩種捕包架構(gòu)是非?,F(xiàn)實的。就實現(xiàn)來說提供的函數(shù)調(diào)用接口也是一致的。Ethereal網(wǎng)絡(luò)分析系統(tǒng)也需要一個底層的抓包平臺,在Linux中是采用Libpcap函數(shù)庫抓包,在windows系統(tǒng)中采用winpc

6、ap函數(shù)庫抓包2層次化的數(shù)據(jù)包協(xié)議分析方法取得捕包函數(shù)捕回的數(shù)據(jù)包后就需要進行協(xié)議分析和協(xié)議還原工作了。由于OSI的7層協(xié)議模型,協(xié)議數(shù)據(jù)是從上到下封裝后發(fā)送的。對于協(xié)議分析需要從下至上進行。首先對網(wǎng)絡(luò)層的協(xié)議識別后進行組包還原然后脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進行下去直到應(yīng)用層    Ip    |   Tcp udp  |   HTTP   TFTP由于網(wǎng)絡(luò)協(xié)議種類很多,就Ethereal所識別的500多種協(xié)議來說,為了使協(xié)議和協(xié)議間層次關(guān)系明顯。從而對數(shù)據(jù)流里的各個層次的協(xié)議能夠逐層處

7、理。Ethereal系統(tǒng)采用了協(xié)議樹的方式。上圖就是一個簡單的協(xié)議樹。如果協(xié)議A的所有數(shù)據(jù)都是封裝在協(xié)議B里的,那么這個協(xié)議A就是協(xié)議B是另外一個協(xié)議的兒子節(jié)點。我們將最低層的無結(jié)構(gòu)數(shù)據(jù)流作為根接點。那么具有相同父節(jié)點的協(xié)議成為兄弟節(jié)點。那么這些擁有同樣父協(xié)議兄弟節(jié)點協(xié)議如何互相區(qū)分了?Ethereal系統(tǒng)采用協(xié)議的特征字來識別。每個協(xié)議會注冊自己的特征字。這些特征字給自己的子節(jié)點協(xié)議提供可以互相區(qū)分開來的標識。比如tcp協(xié)議的port字段注冊后。 Tcp.port=21就可以認為是ftp協(xié)議, 特征字可以是協(xié)議規(guī)范定義的任何一個字段。比如ip協(xié)議就可以定義proto字段為一個特征字。在Eth

8、ereal中注冊一個協(xié)議解析器首先要指出它的父協(xié)議是什么。另外還要指出自己區(qū)別于父節(jié)點下的兄弟接點協(xié)議的特征。比如ftp協(xié)議。在Ethereal中他的父接點是tcp協(xié)議,它的特征就是tcp協(xié)議的port字段為21。這樣當一個端口為21的tcp數(shù)據(jù)流來到時。首先由tcp協(xié)議注冊的解析模塊處理,處理完之后通過查找協(xié)議樹找到自己協(xié)議下面的子協(xié)議,判斷應(yīng)該由那個子協(xié)議來執(zhí)行,找到正確的子協(xié)議后,就轉(zhuǎn)交給ftp注冊的解析模塊處理。這樣由根節(jié)點開始一層層解析下去。由于采用了協(xié)議樹加特征字的設(shè)計,這個系統(tǒng)在協(xié)議解析上由了很強的擴展性,增加一個協(xié)議解析器只需要將解析函數(shù)掛到協(xié)議樹的相應(yīng)節(jié)點上即可。 

9、 3 基于插件技術(shù)的協(xié)議分析器 所謂插件技術(shù),就是在程序的設(shè)計開發(fā)過程中,把整個應(yīng)用程序分成宿主程序和插件兩個部分,宿主程序與插件能夠相互通信,并且,在宿主程序不變的情況下,可以通過增減插件或修改插件來調(diào)整應(yīng)用程序的功能。運用插件技術(shù)可以開發(fā)出伸縮性良好、便于維護的應(yīng)用程序。它著名的應(yīng)用實例有:媒體播放器winamp、微軟的網(wǎng)絡(luò)瀏覽器ie等。由于現(xiàn)在網(wǎng)絡(luò)協(xié)議種類繁多,為了可以隨時增加新的協(xié)議分析器,一般的協(xié)議分析器都采用插件技術(shù),這樣如果需要對一個新的協(xié)議分析只需要開發(fā)編寫這個協(xié)議分析器并調(diào)用注冊函數(shù)在系統(tǒng)注冊就可以使用了。通過增加插件使程序有很強的可擴展性,各個功能模塊內(nèi)聚。在協(xié)議

10、分析器中新增加一個協(xié)議插件一般需要插件安裝或者注冊,插件初始化,插件處理3個步驟,下面以Ethereal為例進行分析如何利用插件技術(shù)新增加一個協(xié)議分析模塊。Ethereal由于采用插件技術(shù),一個新加入開發(fā)的程序員開發(fā)一種新的協(xié)議分析模塊的時候不需要了解所有的代碼,他只需要寫好這個協(xié)議模塊的函數(shù)后,寫一個格式為proto_reg_handoff_XXX的函數(shù),在函數(shù)內(nèi)調(diào)用注冊函數(shù)告訴系統(tǒng)在什么時候需要調(diào)用這個協(xié)議模塊。比如你事先寫好了一個名為dissect_myprot的協(xié)議解析模塊,它是用來解析tcp協(xié)議端口為250的數(shù)據(jù)。可以利用這些語句來將這個解析器注冊到系統(tǒng)中proto_reg_hand

11、off_myprot(void)    dissector_handle_t myprot_handle;    myprot_handle = create_dissector_handle(dissect_myprot,      proto_myprot);    dissector_add("tcp.port", 250, myprot_handle);這段代碼告訴系統(tǒng)當tcp協(xié)議數(shù)據(jù)流端口為250的時候要調(diào)用dissect_myprot這個函數(shù)模塊。在Ethereal中有一個

12、角本專門來發(fā)現(xiàn)開發(fā)者定義的類式proto_reg_handoff_xxx這樣的注冊函數(shù)名,然后自動生成調(diào)用這些注冊函數(shù)的代碼。這樣開發(fā)者不需要知道自己的注冊函數(shù)如何被調(diào)用的。這樣一個新的協(xié)議分析模塊就加入到系統(tǒng)中了。由于采用了插件方式,Ethereal良好的結(jié)構(gòu)設(shè)計讓開發(fā)者只需要關(guān)系自己開發(fā)的協(xié)議模塊,不需要關(guān)心整個系統(tǒng)結(jié)構(gòu),需要將模塊整合進系統(tǒng)只需要寫一個注冊函數(shù)即可,連初始化時調(diào)用這個注冊函數(shù)都由腳本自動完成了。正是因為有很好的體系結(jié)構(gòu),這個系統(tǒng)才能夠開發(fā)出如此多的協(xié)議解析器盡管Ethereal是目前最好的開放源碼的網(wǎng)絡(luò)分析系統(tǒng),但Ethereal仍然有一些可以改進的地方,一個優(yōu)秀的網(wǎng)絡(luò)分

13、析器,盡可能的正確分析出數(shù)據(jù)協(xié)議和高效的處理數(shù)據(jù)是兩個重要的指標。在協(xié)議識別方面Ethereal大多采用端口識別,有少量協(xié)議采用內(nèi)容識別。這就讓一些非標準端口的協(xié)議數(shù)據(jù)沒有正確解析出來。比如ftp協(xié)議如果不是21端口的話,Ethereal就無法識別出來,只能作為tcp數(shù)據(jù)處理。另外對于內(nèi)容識別式。Ethereal是將所以內(nèi)容識別的函數(shù)組成一張入口表。每次協(xié)議數(shù)據(jù)需要內(nèi)容識別時,按字母順序逐個調(diào)用表里的每個識別函數(shù)。比如對于識別yahoo massanger協(xié)議。主要是看數(shù)據(jù)前幾個字節(jié)是不是ymsg.由于協(xié)議名為y開頭。所以當識別出協(xié)議時已經(jīng)把所有內(nèi)容識別函數(shù)調(diào)用了一遍。這些都是由于Ethere

14、al沒有實現(xiàn)tcp協(xié)議棧,無法做到流級別的識別。導(dǎo)致在協(xié)議識別方面有點缺陷。Ethereal使用入門ethereal 可以用來從網(wǎng)絡(luò)上抓包,并能對包進行分析。下面介紹windows 下面ethereal 的使用方法安裝1)安裝winpcap,下載地址http:/netgroup-serv.polito.it/winpcap/install/Default.htm 2)安裝ethereal ,下載地址 使用windows 程序,使用很簡單。啟動ethereal 以后,選擇菜單Capature->Start ,就OK 了。當你不想抓的時候,按一下stop, 抓的包就會顯示在面板中,并且已經(jīng)分

15、析好了。下面是一個截圖:ethereal使用capture選項nterface: 指定在哪個接口(網(wǎng)卡)上抓包。一般情況下都是單網(wǎng)卡,所以使用缺省的就可以了Limit each packet: 限制每個包的大小,缺省情況不限制Capture packets in promiscuous mode: 是否打開混雜模式。如果打開,抓取所有的數(shù)據(jù)包。一般情況下只需要監(jiān)聽本機收到或者發(fā)出的包,因此應(yīng)該關(guān)閉這個選項。Filter:過濾器。只抓取滿足過濾規(guī)則的包(可暫時略過) File:如果需要將抓到的包寫到文件中,在這里輸入文件名稱。use ring buffer: 是否使用循環(huán)緩沖。缺省情況下不使用,

16、即一直抓包。注意,循環(huán)緩沖只有在寫文件的時候才有效。如果使用了循環(huán)緩沖,還需要設(shè)置文件的數(shù)目,文件多大時回卷其他的項選擇缺省的就可以了 ethereal的抓包過濾器 抓包過濾器用來抓取感興趣的包,用在抓包過程中。 抓包過濾器使用的是libcap 過濾器語言,在tcpdump 的手冊中有詳細的解釋,基本結(jié)構(gòu)是: not primitive and|or not primitive .個人觀點,如果你想抓取某些特定的數(shù)據(jù)包時,可以有以下兩種方法,你可以任選一種, 個人比較偏好第二種方式: 1、在抓包的時候,就先定義好抓包過濾器,這樣結(jié)果就是只抓到你設(shè)定好的那些類型的數(shù) 據(jù)包; 2、先不管三七二十一

17、,把本機收到或者發(fā)出的包一股腦的抓下來,然后使用下節(jié)介紹的顯 示過濾器,只讓Ethereal 顯示那些你想要的那些類型的數(shù)據(jù)包; etheral的顯示過濾器(重點內(nèi)容) 在抓包完成以后,顯示過濾器可以用來找到你感興趣的包,可以根據(jù)1)協(xié)議2)是否存在某個域3)域值4)域值之間的比較來查找你感興趣的包。舉個例子,如果你只想查看使用tcp 協(xié)議的包,在ethereal 窗口的左下角的Filter 中輸入tcp, 然后回車,ethereal 就會只顯示tcp 協(xié)議的包。如下圖所示:值比較表達式可以使用下面的操作符來構(gòu)造顯示過濾器自然語言類c 表示舉例eq = ip.addr=0 n

18、e != ip.addr!=0 gt > frame.pkt_len>10 lt < frame.pkt_len<10 ge >= frame.pkt_len>=10 le <= frame.pkt_len<=10 表達式組合可以使用下面的邏輯操作符將表達式組合起來自然語言類c 表示舉例and && 邏輯與,比如ip.addr=0&&tcp.flag.fin or | 邏輯或,比如ip.addr=0|ip.addr=1 xor 異或,如tr.d

19、st0:3 = 0.6.29 xor tr.src0:3 = not ! 邏輯非,如 !llc 例如:我想抓取IP 地址是0 的主機,它所接收收或發(fā)送的所有的HTTP 報文,那么合適的顯示Filter (過濾器)就是:在ethereal 使用協(xié)議插件 ethereal 能夠支持許多協(xié)議,但有些協(xié)議需要安裝插件以后才能解,比如H.323,以H.323 協(xié)議為例,首先下載ethereal 的H.323 插件,下載地址/ 下載完了以后將文件(h323.dll) 解壓到ethereal 安裝目錄的plugin0.9.x 目錄下面,

20、比如我的是0.9.11 ,然后,需要進行一下設(shè)置1)啟動ethereal 2)菜單Edit->Preference 3)單擊Protocols 前面的"+"號,展開Protocols 4)找到Q931 ,并單擊5)確保"Desegment. TCP segments" 是選中的(即方框被按下去)6)單擊TCP 7)確保"Allow.TCP streams" 是選中的8)確保沒有選中"Check.TCP checksum" 和"Use.sequence numbers" 9)單擊TPKT 1

21、0)確保"Desegment.TCP segments" 是選中的11)點擊Save,然后點擊Apply ,然后點擊OK 你也完全可以不斷地重新安裝新版本winpcap 和ethreal, 這樣就可以不需在舊的ethreal 的版本中安裝新的插件來支持新的協(xié)議插件。這也是懶人的一種做法Ethereal 抓包、封包內(nèi)容分析、查看明碼我們開始來抓封包了,點選Capture->Options在Interface選項裡,選擇你要抓封包的網(wǎng)卡,我這張圖裡有5張網(wǎng)卡,但我上網(wǎng)的是RTL8139,我就選擇RTL8139選好再按START這是在抓封包的過程,可以觀察得到各協(xié)定所抓到的

22、封包數(shù)量(同時也可以看看協(xié)定比例對不對),你覺得抓得到你想要的封包時,就可以按STOP了,不過我先不按,因為這一次的教學(xué)我要找出FTP的連線密碼,當然要先作ftp連線結(jié)束才再來按stop我打開我的ftp 用戶端,要連線的主機,帳號,密碼都打上了,按下我的connect連線YA!連線成功認證成功,伺服器回應(yīng)的訊息這就是一般的ftp連線登入認證時所有過程,那到底ftp軟體做了些什麼事情呢?。课覀円粊砜纯捶獍膬?nèi)容吧我們回到這個畫面,按下stop來停止封包抓取的動作按stop后的畫面,這畫面有分三大部份1.最上面的是似照封包的接收順序來排序的,就是左邊的.5.6.7.每一行就是一個封包2.中間是每單一個封包的內(nèi)容,大致上有四行,這四行是TCP/IP協(xié)定內(nèi)所定意的四層,最上面是第一層-實體層和網(wǎng)路介面層(frame)第二層-網(wǎng)路層(包括來源ip和目的地ip,有時候也有mac address)第三層-協(xié)定的種類(如http,ftp,telnet,pop,smtp.)第四層-應(yīng)用層(包括所傳送的內(nèi)容,帳號,密碼,或msn的通話內(nèi)容.這一層也是單一封包內(nèi)容最多的)參考圖片:3.最下面的畫面是封包真正的內(nèi)容,也就是01010101010.的,不過是以16進位法表示的(看得懂的才有鬼呢.)因為我們所抓的封包,是只要有經(jīng)過我們網(wǎng)卡上的封包都會被抓下來,包括是

溫馨提示

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

評論

0/150

提交評論