Ethereal (Ethereal:A Network Packet Sniffing Tool)是當(dāng)前較為流行的一種計(jì)算機(jī)網(wǎng)絡(luò)調(diào)試和數(shù)據(jù)包嗅探軟件。Ethereal 基本類(lèi)似于tcpdump,但Ethereal 還具有設(shè)計(jì)完美的 GUI 和眾多分類(lèi)信息及過(guò)濾選項(xiàng)。用戶(hù)通過(guò) Ethereal,同時(shí)將網(wǎng)卡插入混合模式,可以查看到網(wǎng)絡(luò)中發(fā)送的所有通信流量。 Ethereal 應(yīng)用于故障修復(fù)、分析、軟件和協(xié)議開(kāi)發(fā)以及教育領(lǐng)域。它具有用戶(hù)對(duì)協(xié)議分析器所期望的所有標(biāo)準(zhǔn)特征,并具有其它同類(lèi)產(chǎn)品所不具備的有關(guān)特征。
發(fā)展簡(jiǎn)史
1997年底,Gerald Combs需要一個(gè)能夠追蹤網(wǎng)絡(luò)流量的工具軟件作為其工作上的輔助。因此他開(kāi)始撰寫(xiě)Ethereal軟件。
Ethereal 在經(jīng)過(guò)幾次中斷開(kāi)發(fā)的事件過(guò)后,終于在1998年7月發(fā)布其第一個(gè)版本 v0.2.0。自此之后,Combs收到了來(lái)自全世界的補(bǔ)丁、錯(cuò)誤回報(bào)與鼓勵(lì)信件。Ethereal的發(fā)展就此開(kāi)始。不久之后,Gilbert Ramirez 看到了這套軟件的開(kāi)發(fā)潛力并開(kāi)始參予低級(jí)程序的開(kāi)發(fā)。1998年10月,來(lái)自 Network Appliance 公司的 Guy Harris 在查找一套比tcpview(另外一套網(wǎng)絡(luò)數(shù)據(jù)包截取程序)更好的軟件。于是他也開(kāi)始參與Ethereal的開(kāi)發(fā)工作。
1998年底,一位在教授 TCP/IP 課程的講師 Richard Sharpe,看到了這套軟件的發(fā)展?jié)摿Γ箝_(kāi)始參與開(kāi)發(fā)與加入新協(xié)定的功能。在當(dāng)時(shí),新的通信協(xié)定的制定并不復(fù)雜,因此他開(kāi)始在Ethereal上新增的數(shù)據(jù)包截取功能,幾乎包含了當(dāng)時(shí)所有通信協(xié)定。
自此之后,數(shù)以千計(jì)的人開(kāi)始參與Ethereal的開(kāi)發(fā),多半是因?yàn)橄M茏孍thereal截取特定的,尚未包含在Ethereal默認(rèn)的網(wǎng)絡(luò)協(xié)定的數(shù)據(jù)包而參予新的開(kāi)發(fā)。
2006年6月,因?yàn)樯棠繕?biāo)問(wèn)題,Ethereal更名為Wireshark。
軟件特征
Ethereal 主要具有以 下特征:
在實(shí)時(shí)時(shí)間內(nèi),從網(wǎng)絡(luò)連接處捕獲數(shù)據(jù),或者從被捕獲文件處讀取數(shù)據(jù);
Ethereal 可以讀取從 tcpdump(libpcap)、網(wǎng)絡(luò)通用嗅探器(被壓縮和未被壓縮)、SnifferTM 專(zhuān)業(yè)版、NetXrayTM、Sun snoop 和 atmsnoop、Shomiti/Finisar 測(cè)試員、AIX 的 iptrace、微軟 的網(wǎng)絡(luò)監(jiān)控器、Novell 的 LANalyzer、RADCOM 的 WAN/LAN 分析器、 ISDN4BSD 項(xiàng)目的 HP-UX nettl 和 i4btrace、思科 安全 IDS iplog 和 pppd 日志( pppdump 格式)、WildPacket 的 EtherPeek/TokenPeek/AiroPeek 或者可視網(wǎng)絡(luò)的可視 UpTime 處捕獲的文件。此外 Ethereal 也能從 Lucent/Ascend WAN 路由器和 東芝 ISDN 路由器中讀取跟蹤報(bào)告,還能從 VMS 的 TCPIP 讀取輸出文本和 DBS Etherwatch。
從以太網(wǎng)、FDDI、PPP、令牌環(huán)、IEEE 802.11、ATM 上的 IP 和回路接口(至少是某些系統(tǒng),不是所有系統(tǒng)都支持這些類(lèi)型)上讀取實(shí)時(shí)數(shù)據(jù)。
通過(guò) GUI 或 TTY 模式 tethereal 程序,可以訪問(wèn)被捕獲的網(wǎng)絡(luò)數(shù)據(jù)。
通過(guò) editcap 程序的命令行交換機(jī),有計(jì)劃地編輯或修改被捕獲文件。
當(dāng)前602協(xié)議可被分割。
輸出文件可以被保存或打印為純文本或 PostScript格式。
通過(guò)顯示過(guò)濾器精確顯示數(shù)據(jù)。
顯示過(guò)濾器也可以選擇性地用于高亮區(qū)和顏色包摘要信息。
所有或部分被捕獲的網(wǎng)絡(luò)跟蹤報(bào)告都會(huì)保存到磁盤(pán)中。
系統(tǒng)介紹
Ethereal是一個(gè)開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),也是是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)協(xié)議分析器,支持Linux和windows平臺(tái)。Ethereal起初由Gerald Combs開(kāi)發(fā),隨后由一個(gè)松散的Etheral團(tuán)隊(duì)組織進(jìn)行維護(hù)開(kāi)發(fā)。它目前所提供的強(qiáng)大的協(xié)議分析功能完全可以媲美商業(yè)的網(wǎng)絡(luò)分析系統(tǒng),自從1998年發(fā)布最早的0.2版本至今,大量的志愿者為Ethereal添加新的協(xié)議解析器,如今Ethereal已經(jīng)支持五百多種協(xié)議解析。很難想象如此多的人開(kāi)發(fā)的代碼可以很好的融入系統(tǒng)中;并且在系統(tǒng)中加入一個(gè)新的協(xié)議解析器很簡(jiǎn)單,一個(gè)不了解系統(tǒng)的結(jié)構(gòu)的新手也可以根據(jù)留出的接口進(jìn)行自己的協(xié)議開(kāi)發(fā)。這都?xì)w功于Ehereal良好的設(shè)計(jì)結(jié)構(gòu)。事實(shí)上由于網(wǎng)絡(luò)上各種協(xié)議種類(lèi)繁多,各種新的協(xié)議層出不窮。一個(gè)好的協(xié)議分析器必需有很好的可擴(kuò)展性和結(jié)構(gòu)。這樣才能適應(yīng)網(wǎng)絡(luò)發(fā)展的需要不斷加入新的協(xié)議解析器。
1 Ethereal的捕包平臺(tái)
網(wǎng)絡(luò)分析系統(tǒng)首先依賴(lài)于一套捕捉網(wǎng)絡(luò)數(shù)據(jù)包的函數(shù)庫(kù)。這套函數(shù)庫(kù)工作在在網(wǎng)絡(luò)分析系統(tǒng)模塊的最底層。作用是從網(wǎng)卡取得數(shù)據(jù)包或者根據(jù)過(guò)濾規(guī)則取出數(shù)據(jù)包的子集,再轉(zhuǎn)交給上層分析模塊。從協(xié)議上說(shuō),這套函數(shù)庫(kù)將一個(gè)數(shù)據(jù)包從鏈路層接收,至少將其還原至傳輸層以上,以供上層分析。
在Linux系統(tǒng)中, 1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包過(guò)濾器的一種的實(shí)現(xiàn),BPF(BSD Packet Filter)。Libpcap是一個(gè)基于BPF的開(kāi)放源碼的捕包函數(shù)庫(kù)。現(xiàn)有的大部分Linux捕包系統(tǒng)都是基于這套函數(shù)庫(kù)或者是在它基礎(chǔ)上做一些針對(duì)性的改進(jìn)。
在window系統(tǒng)中,意大利人Fulvio Risso和Loris Degioanni提出并實(shí)現(xiàn)了winpcap函數(shù)庫(kù),作者稱(chēng)之為NPF。由于NPF的主要思想就是來(lái)源于BPF,它的設(shè)計(jì)目標(biāo)就是為windows系統(tǒng)提供一個(gè)功能強(qiáng)大的開(kāi)發(fā)式數(shù)據(jù)包捕獲平臺(tái),希望在Linux系統(tǒng)中的網(wǎng)絡(luò)分析工具經(jīng)過(guò)簡(jiǎn)單編譯以后也可以移植到windows中,因此這兩種捕包架構(gòu)是非常相似的。就實(shí)現(xiàn)來(lái)說(shuō)提供的函數(shù)調(diào)用接口也是一致的。
Ethereal網(wǎng)絡(luò)分析系統(tǒng)也需要一個(gè)底層的抓包平臺(tái),在Linux中是采用Libpcap函數(shù)庫(kù)抓包,在windows系統(tǒng)中采用winpcap函數(shù)庫(kù)抓包。
2 層次化的數(shù)據(jù)包協(xié)議分析方法
取得捕包函數(shù)捕回的數(shù)據(jù)包后就需要進(jìn)行協(xié)議分析和協(xié)議還原工作了。由于OSI的7層協(xié)議模型,協(xié)議數(shù)據(jù)是從上到下封裝后發(fā)送的。對(duì)于協(xié)議分析需要從下至上進(jìn)行。首先對(duì)網(wǎng)絡(luò)層的協(xié)議識(shí)別后進(jìn)行組包還原然后脫去網(wǎng)絡(luò)層協(xié)議頭。將里面的數(shù)據(jù)交給傳輸層分析,這樣一直進(jìn)行下去直到應(yīng)用層。
Ip
| \
Tcp udp
| \
HTTP TFTP
由于網(wǎng)絡(luò)協(xié)議種類(lèi)很多,就Ethereal所識(shí)別的500多種協(xié)議來(lái)說(shuō),為了使協(xié)議和協(xié)議間層次關(guān)系明顯。從而對(duì)數(shù)據(jù)流里的各個(gè)層次的協(xié)議能夠逐層處理。Ethereal系統(tǒng)采用了協(xié)議樹(shù)的方式。上圖就是一個(gè)簡(jiǎn)單的協(xié)議樹(shù)。如果協(xié)議A的所有數(shù)據(jù)都是封裝在協(xié)議B里的,那么這個(gè)協(xié)議A就是協(xié)議B是另外一個(gè)協(xié)議的兒子節(jié)點(diǎn)。我們將最低層的無(wú)結(jié)構(gòu)數(shù)據(jù)流作為根接點(diǎn)。那么具有相同父節(jié)點(diǎn)的協(xié)議成為兄弟節(jié)點(diǎn)。那么這些擁有同樣父協(xié)議兄弟節(jié)點(diǎn)協(xié)議如何互相區(qū)分了?Ethereal系統(tǒng)采用協(xié)議的特征字來(lái)識(shí)別。每個(gè)協(xié)議會(huì)注冊(cè)自己的特征字。這些特征字給自己的子節(jié)點(diǎn)協(xié)議提供可以互相區(qū)分開(kāi)來(lái)的標(biāo)識(shí)。比如tcp協(xié)議的port字段注冊(cè)后。 Tcp.port=21就可以認(rèn)為是斷點(diǎn)續(xù)傳協(xié)議,特征字可以是協(xié)議規(guī)范定義的任何一個(gè)字段。比如ip協(xié)議就可以定義proto字段為一個(gè)特征字。
在Ethereal中注冊(cè)一個(gè)協(xié)議解析器首先要指出它的父協(xié)議是什么。另外還要指出自己區(qū)別于父節(jié)點(diǎn)下的兄弟接點(diǎn)協(xié)議的特征。比如ftp協(xié)議。在Ethereal中他的父接點(diǎn)是tcp協(xié)議,它的特征就是tcp協(xié)議的port字段為21。
這樣當(dāng)一個(gè)端口為21的tcp數(shù)據(jù)流來(lái)到時(shí)。首先由tcp協(xié)議注冊(cè)的解析模塊處理,處理完之后通過(guò)查找協(xié)議樹(shù)找到自己協(xié)議下面的子協(xié)議,判斷應(yīng)該由那個(gè)子協(xié)議來(lái)執(zhí)行,找到正確的子協(xié)議后,就轉(zhuǎn)交給斷點(diǎn)續(xù)傳注冊(cè)的解析模塊處理。這樣由根節(jié)點(diǎn)開(kāi)始一層層解析下去。
由于采用了協(xié)議樹(shù)加特征字的設(shè)計(jì),這個(gè)系統(tǒng)在協(xié)議解析上由了很強(qiáng)的擴(kuò)展性,增加一個(gè)協(xié)議解析器只需要將解析函數(shù)掛到協(xié)議樹(shù)的相應(yīng)節(jié)點(diǎn)上即可。
3 基于插件技術(shù)的協(xié)議分析器
所謂插件技術(shù),就是在程序的設(shè)計(jì)開(kāi)發(fā)過(guò)程中,把整個(gè)應(yīng)用程序分成宿主程序和插件兩個(gè)部分,宿主程序與插件能夠相互通信,并且,在宿主程序不變的情況下,可以通過(guò)增減插件或修改插件來(lái)調(diào)整應(yīng)用程序的功能。運(yùn)用插件技術(shù)可以開(kāi)發(fā)出伸縮性良好、便于維護(hù)的應(yīng)用程序。它著名的應(yīng)用實(shí)例有:媒體播放器winamp、微軟的網(wǎng)絡(luò)瀏覽器ie等。
由于現(xiàn)在網(wǎng)絡(luò)協(xié)議種類(lèi)繁多,為了可以隨時(shí)增加新的協(xié)議分析器,一般的協(xié)議分析器都采用插件技術(shù),這樣如果需要對(duì)一個(gè)新的協(xié)議分析只需要開(kāi)發(fā)編寫(xiě)這個(gè)協(xié)議分析器并調(diào)用注冊(cè)函數(shù)在系統(tǒng)注冊(cè)就可以使用了。通過(guò)增加插件使程序有很強(qiáng)的可擴(kuò)展性,各個(gè)功能模塊內(nèi)聚。
在協(xié)議分析器中新增加一個(gè)協(xié)議插件一般需要插件安裝或者注冊(cè),插件初始化,插件處理3個(gè)步驟,下面以Ethereal為例進(jìn)行分析如何利用插件技術(shù)新增加一個(gè)協(xié)議分析模塊。
Ethereal由于采用插件技術(shù),一個(gè)新加入開(kāi)發(fā)的程序員開(kāi)發(fā)一種新的協(xié)議分析模塊的時(shí)候不需要了解所有的代碼,他只需要寫(xiě)好這個(gè)協(xié)議模塊的函數(shù)后,寫(xiě)一個(gè)格式為proto_reg_handoff_XXX的函數(shù),在函數(shù)內(nèi)調(diào)用注冊(cè)函數(shù)告訴系統(tǒng)在什么時(shí)候需要調(diào)用這個(gè)協(xié)議模塊。比如
你事先寫(xiě)好了一個(gè)名為dissect_myprot的協(xié)議解析模塊,它是用來(lái)解析tcp協(xié)議端口為250的數(shù)據(jù)。可以利用這些語(yǔ)句來(lái)將這個(gè)解析器注冊(cè)到系統(tǒng)中
proto_reg_handoff_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)當(dāng)tcp協(xié)議數(shù)據(jù)流端口為250的時(shí)候要調(diào)用dissect_myprot這個(gè)函數(shù)模塊。
在Ethereal中有一個(gè)腳本專(zhuān)門(mén)來(lái)發(fā)現(xiàn)開(kāi)發(fā)者定義的類(lèi)式proto_reg_handoff_xxx這樣的注冊(cè)函數(shù)名,然后自動(dòng)生成調(diào)用這些注冊(cè)函數(shù)的代碼。這樣開(kāi)發(fā)者不需要知道自己的注冊(cè)函數(shù)如何被調(diào)用的。這樣一個(gè)新的協(xié)議分析模塊就加入到系統(tǒng)中了。
由于采用了插件方式,Ethereal良好的結(jié)構(gòu)設(shè)計(jì)讓開(kāi)發(fā)者只需要關(guān)系自己開(kāi)發(fā)的協(xié)議模塊,不需要關(guān)心整個(gè)系統(tǒng)結(jié)構(gòu),需要將模塊整合進(jìn)系統(tǒng)只需要寫(xiě)一個(gè)注冊(cè)函數(shù)即可,連初始化時(shí)調(diào)用這個(gè)注冊(cè)函數(shù)都由腳本自動(dòng)完成了。正是因?yàn)橛泻芎玫捏w系結(jié)構(gòu),這個(gè)系統(tǒng)才能夠開(kāi)發(fā)出如此多的協(xié)議解析器。
盡管Ethereal是目前最好的開(kāi)放源碼的網(wǎng)絡(luò)分析系統(tǒng),但Ethereal仍然有一些可以改進(jìn)的地方,一個(gè)優(yōu)秀的網(wǎng)絡(luò)分析器,盡可能的正確分析出數(shù)據(jù)協(xié)議和高效的處理數(shù)據(jù)是兩個(gè)重要的指標(biāo)。在協(xié)議識(shí)別方面Ethereal大多采用端口識(shí)別,有少量協(xié)議采用內(nèi)容識(shí)別。這就讓一些非標(biāo)準(zhǔn)端口的協(xié)議數(shù)據(jù)沒(méi)有正確解析出來(lái)。比如斷點(diǎn)續(xù)傳協(xié)議如果不是21端口的話(huà),Ethereal就無(wú)法識(shí)別出來(lái),只能作為tcp數(shù)據(jù)處理。另外對(duì)于內(nèi)容識(shí)別式。Ethereal是將所以?xún)?nèi)容識(shí)別的函數(shù)組成一張入口表。每次協(xié)議數(shù)據(jù)需要內(nèi)容識(shí)別時(shí),按字母順序逐個(gè)調(diào)用表里的每個(gè)識(shí)別函數(shù)。比如對(duì)于識(shí)別雅虎 massanger協(xié)議。主要是看數(shù)據(jù)前幾個(gè)字節(jié)是不是’ymsg’.由于協(xié)議名為y開(kāi)頭。所以當(dāng)識(shí)別出協(xié)議時(shí)已經(jīng)把所有內(nèi)容識(shí)別函數(shù)調(diào)用了一遍。這些都是由于Ethereal沒(méi)有實(shí)現(xiàn)tcp協(xié)議棧,無(wú)法做到流級(jí)別的識(shí)別。導(dǎo)致在協(xié)議識(shí)別方面有點(diǎn)缺陷。
應(yīng)用范圍
Ethereal 是一種開(kāi)放源代碼的許可軟件,允許用戶(hù)向其中添加改進(jìn)方案。Ethereal 適用于當(dāng)前所有較為流行的計(jì)算機(jī)系統(tǒng),包括 unix、Linux 和 Windows 。
使用入門(mén)
Ethereal 可以用來(lái)從網(wǎng)絡(luò)上抓包,并能對(duì)包進(jìn)行分析。下面介紹windows 下Ethereal 的使用方法:
安裝
1)安裝winpcap
2)安裝Ethereal
使用
windows 程序,使用很簡(jiǎn)單。
啟動(dòng)ethereal 以后,選擇菜單Capture->Start ,就OK 了。當(dāng)你不想抓的時(shí)候,按一下stop,抓的包就會(huì)顯示在面板中,并且已經(jīng)分析好了。
Ethereal使用-capture選項(xiàng)
interface: 指定在哪個(gè)接口(網(wǎng)卡)上抓包。一般情況下都是單網(wǎng)卡,所以使用缺省的就可以了
Limit each packet: 限制每個(gè)包的大小,缺省情況不限制
Capture packets in promiscuous mode: 是否打開(kāi)混雜模式。如果打開(kāi),抓取所有的數(shù)據(jù)包。一般情況下只需要監(jiān)聽(tīng)本機(jī)收到或者發(fā)出的包,因此應(yīng)該關(guān)閉這個(gè)選項(xiàng)。
Filter:過(guò)濾器。只抓取滿(mǎn)足過(guò)濾規(guī)則的包(可暫時(shí)略過(guò))
File:如果需要將抓到的包寫(xiě)到文件中,在這里輸入文件名稱(chēng)。
use ring buffer:是否使用循環(huán)緩沖。缺省情況下不使用,即一直抓包。注意,循環(huán)緩沖只有在寫(xiě)文件的時(shí)候才有效。如果使用了循環(huán)緩沖,還需要設(shè)置文件的數(shù)目,文件多大時(shí)回卷
其他的項(xiàng)選擇缺省的就可以了
Ethereal的抓包過(guò)濾器
抓包過(guò)濾器用來(lái)抓取感興趣的包,用在抓包過(guò)程中。抓包過(guò)濾器使用的是li中亞銀行p 過(guò)濾器語(yǔ)言,在tcpdump 的手冊(cè)中有詳細(xì)的解釋?zhuān)窘Y(jié)構(gòu)是: [not] primitive [and|or [not] primitive ...]
個(gè)人觀點(diǎn),如果你想抓取某些特定的數(shù)據(jù)包時(shí),可以有以下兩種方法,你可以任選一種,個(gè)人比較偏好第二種方式:
1、在抓包的時(shí)候,就先定義好抓包過(guò)濾器,這樣結(jié)果就是只抓到你設(shè)定好的那些類(lèi)型的數(shù) 據(jù)包;
2、先不管三七二十一,把本機(jī)收到或者發(fā)出的包一股腦的抓下來(lái),然后使用下節(jié)介紹的顯 示過(guò)濾器,只讓Ethereal 顯示那些你想要的那些類(lèi)型的數(shù)據(jù)包;
etheral的顯示過(guò)濾器(重點(diǎn)內(nèi)容)
在抓包完成以后,顯示過(guò)濾器可以用來(lái)找到你感興趣的包,可以根據(jù)1)協(xié)議2)是否存在某個(gè)域3)域值4)域值之間的比較來(lái)查找你感興趣的包。
舉個(gè)例子,如果你只想查看使用tcp 協(xié)議的包,在ethereal 窗口的左下角的Filter 中輸入tcp,然后回車(chē),Ethereal 就會(huì)只顯示tcp 協(xié)議的包。
值比較表達(dá)式可以使用下面的操作符來(lái)構(gòu)造顯示過(guò)濾器自然語(yǔ)言類(lèi)c 表示舉例eq == ip.addr==10.1.10.20 ne != ip.addr!=10.1.10.20 gt > frame.pkt_len>10 lt < frame.pkt_len<10 ge >= frame.pkt_len>=10 le <= frame.pkt_len<=10
表達(dá)式組合可以使用下面的邏輯操作符將表達(dá)式組合起來(lái)自然語(yǔ)言類(lèi)c 表示舉例and && 邏輯與,比如ip.addr=10.1.10.20&&tcp.flag.fin or || 邏輯或,比如ip.addr=10.1.10.20||ip.addr=10.1.10.21 xor ^^ 異或,如tr.dst[0:3] == 0.6.29 xor tr.src[0:3] == not ! 邏輯非,如 !llc
在Ethereal 使用協(xié)議插件
Ethereal 能夠支持許多協(xié)議,但有些協(xié)議需要安裝插件以后才能解,比如H.323,以H.323 協(xié)議為例,首先下載Ethereal 的H.323 插件,
1)啟動(dòng)Ethereal
2)菜單Edit->Preference
3)單擊Protocols 前面的"+"號(hào),展開(kāi)Protocols 4)找到Q931 ,并單擊
5)確保"Desegment.... TCP segments" 是選中的(即方框被按下去)
6)單擊TCP
7)確保"Allow....TCP streams" 是選中的
8)確保沒(méi)有選中"Check....TCP checksum" 和"Use....sequence numbers"
9)單擊TPKT
10)確保"Desegment....TCP segments" 是選中的
11)點(diǎn)擊Save,然后點(diǎn)擊Apply ,然后點(diǎn)擊OK 你也完全可以不斷地重新安裝新版本winpcap 和Ethreal,這樣就可以不需在舊的ethreal 的版本中安裝新的插件來(lái)支持新的協(xié)議插件。這也是懶人的一種做法。
數(shù)據(jù)包
Ethereal是一個(gè)圖形用戶(hù)接口(GUI)的網(wǎng)絡(luò)嗅探器,能夠完成與TCPDUMP相同的功能,但操作界面要友好很多。Ehtereal和Tcpdump都依賴(lài)于pcap庫(kù)(libpcap),因此兩者在許多方面非常相似(如都使用相同的過(guò)濾規(guī)則和關(guān)鍵字)。Ethereal和其它圖形化的網(wǎng)絡(luò)嗅探器都使用相同的界面模式,如果能熟練地使用Ethereal,那么其它圖形用戶(hù)界面的嗅探器基本都可以操作。
Ethereal的安裝
在網(wǎng)站上可以下載到最新的Ethereal源碼包。
下面以Ethereal 0.9.9為例,講述如何安裝Ethereal,此處使用的操作系統(tǒng)是Red Hat 8.0。
首先下載最新的源碼包,并將其解壓縮:
# cd /usr/local/src/
# tar xvf ethereal-0.9.9.tar
同TCPDUMP一樣,在編譯Ethereal之前應(yīng)先確定已經(jīng)安裝pcap庫(kù)(libpcap),這是編譯Ethereal時(shí)所必需的。如果該庫(kù)已經(jīng)安裝,就可以執(zhí)行下面的命令來(lái)編譯并安裝Ethereal:
# cd ethereal-0.9.9
# ./configure
# make
# make install
設(shè)置Ethereal的過(guò)濾規(guī)則 當(dāng)編譯并安裝好Ethereal后,就可以執(zhí)行“ethereal”命令來(lái)啟動(dòng)Ethereal。在用Ethereal截獲數(shù)據(jù)包之前,應(yīng)該為其設(shè)置相應(yīng)的過(guò)濾規(guī)則,可以只捕獲感興趣的數(shù)據(jù)包。Ethereal使用與TCPDUMP相似的過(guò)濾規(guī)則,并且可以很方便地存儲(chǔ)已經(jīng)設(shè)置好的過(guò)濾規(guī)則。要為Ethereal配置過(guò)濾規(guī)則,首先單擊“Edit”選單,然后選擇“Capture Filters...”菜單項(xiàng),打開(kāi)“Edit Capture Filter List”對(duì)話(huà)框(如圖1所示)。
因?yàn)榇藭r(shí)還沒(méi)有添加任何過(guò)濾規(guī)則,因而該對(duì)話(huà)框右側(cè)的列表框是空的。
在Ethereal中添加過(guò)濾器時(shí),需要為該過(guò)濾器指定名字及規(guī)則。例如,要在主機(jī)10.1.197.162間創(chuàng)建過(guò)濾器,可以在“Filter name”編輯框內(nèi)輸入過(guò)濾器名字“搜狐”,在“Filter string”編輯框內(nèi)輸入過(guò)濾規(guī)則“host 10.1.197.162 ”,然后單擊“New”按鈕即可,如圖2所示。
在Ethereal中使用的過(guò)濾規(guī)則和TCPDUMP幾乎完全一致,這是因?yàn)閮烧叨蓟趐cap庫(kù)的緣故。Ethereal能夠同時(shí)維護(hù)很多個(gè)過(guò)濾器。網(wǎng)絡(luò)管理員可以根據(jù)實(shí)際需要選用不同的過(guò)濾器,這在很多情況下是非常有用的。例如,一個(gè)過(guò)濾器可能用于截獲兩個(gè)主機(jī)間的數(shù)據(jù)包,而另一個(gè)則可能用于截獲ICMP包來(lái)診斷網(wǎng)絡(luò)故障。
當(dāng)所有需要的過(guò)濾器都創(chuàng)建好后,單擊“Save”按鈕保存創(chuàng)建的過(guò)濾器,然后單擊“Close”按鈕來(lái)關(guān)閉“Edit Capture Filter List”對(duì)話(huà)框。要將過(guò)濾器應(yīng)用于嗅探過(guò)程,需要在截獲數(shù)據(jù)包之前或之后指定過(guò)濾器。要為嗅探過(guò)程指定過(guò)濾器,并開(kāi)始截獲數(shù)據(jù)包,可以單擊“Capture”選單,選擇“Start...”選單項(xiàng),打開(kāi)“Capture Options”對(duì)話(huà)框,單擊該對(duì)話(huà)框中的“Filter:”按鈕,然后選擇要使用的過(guò)濾器,如圖3所示。
注意在“Capture Options”對(duì)話(huà)框中,“Update list of packets in real 時(shí)間”復(fù)選框被選中了。這樣可以使每個(gè)數(shù)據(jù)包在被截獲時(shí)就實(shí)時(shí)顯示出來(lái),而不是在嗅探過(guò)程結(jié)束之后才顯示所有截獲的數(shù)據(jù)包。
在選擇了所需要的過(guò)濾器后,單擊“OK”按鈕,整個(gè)嗅探過(guò)程就開(kāi)始了。Ethereal可以實(shí)時(shí)顯示截獲的數(shù)據(jù)包,因此能夠幫助網(wǎng)絡(luò)管理員及時(shí)了解網(wǎng)絡(luò)的運(yùn)行狀況,從而使其對(duì)網(wǎng)絡(luò)性能和流量能有一個(gè)比較準(zhǔn)確的把握。
用Ethereal分析數(shù)據(jù)包
Ethereal和其它的圖形化嗅探器使用基本類(lèi)似的界面,整個(gè)窗口被分成三個(gè)部分:最上面為數(shù)據(jù)包列表,用來(lái)顯示截獲的每個(gè)數(shù)據(jù)包的總結(jié)性信息;中間為協(xié)議樹(shù),用來(lái)顯示選定的數(shù)據(jù)包所屬的協(xié)議信息;最下邊是以十六進(jìn)制形式表示的數(shù)據(jù)包內(nèi)容,用來(lái)顯示數(shù)據(jù)包在物理層上傳輸時(shí)的最終形式。
使用Ethereal可以很方便地對(duì)截獲的數(shù)據(jù)包進(jìn)行分析,包括該數(shù)據(jù)包的源地址、目的地址、所屬協(xié)議等。
圖4是在Ethereal中對(duì)一個(gè)HTTP數(shù)據(jù)包進(jìn)行分析時(shí)的情形。
在圖4最上邊的數(shù)據(jù)包列表中,顯示了被截獲的數(shù)據(jù)包的基本信息。從圖中可以看出,當(dāng)前選中數(shù)據(jù)包的源地址是10.1.197.162,目的地址為61.135.150.65,該數(shù)據(jù)包所屬的協(xié)議是超文本傳輸協(xié)議(HTTP)。更詳細(xì)的信息表明該數(shù)據(jù)包中含有一個(gè)HTTP的GET命令,要求下載starrtlog.js文件到客戶(hù)端的Web瀏覽器。
圖4中間是協(xié)議樹(shù),通過(guò)協(xié)議樹(shù)可以得到被截獲的數(shù)據(jù)包的更多信息,如主機(jī)的MAC地址(Ethernet II)、IP地址(Internet Protocol)、TCP端口號(hào)(Transmission Control Protocol),以及HTTP協(xié)議的具體內(nèi)容(Hypertext Trnasfer Protocol)。通過(guò)擴(kuò)展協(xié)議樹(shù)中的相應(yīng)節(jié)點(diǎn),可以得到該數(shù)據(jù)包中攜帶的更詳盡的信息。
圖4最下邊是以十六制顯示的數(shù)據(jù)包的具體內(nèi)容,這是被截獲的數(shù)據(jù)包在物理媒體上傳輸時(shí)的最終形式,當(dāng)在協(xié)議樹(shù)中選中某行時(shí),與其對(duì)應(yīng)的十六進(jìn)制代碼同樣會(huì)被選中,這樣就可以很方便地對(duì)各種協(xié)議的數(shù)據(jù)包進(jìn)行分析。
Ethereal提供的圖形化用戶(hù)界面非常友好,管理員可以很方便地查看到每個(gè)數(shù)據(jù)包的詳細(xì)信息,協(xié)議樹(shù)及其對(duì)應(yīng)的十六進(jìn)制表示對(duì)分析每個(gè)數(shù)據(jù)包的目的很有幫助,綜合使用Ethereal和Tcpdump能夠基本滿(mǎn)足網(wǎng)絡(luò)管理員在Linux系統(tǒng)上的所有嗅探要示。
用EtherApe查看網(wǎng)絡(luò)流量
EtherApe也是一個(gè)圖形化的網(wǎng)絡(luò)嗅探器。與Ehtereal不同,EtherApe通過(guò)驗(yàn)證主機(jī)與主機(jī)之間的鏈接,圖形化地顯示網(wǎng)絡(luò)目前所處的狀態(tài)。EtherApe使用不同顏色的連線(xiàn)來(lái)表示位于不同主機(jī)之間的連接,而連線(xiàn)的粗細(xì)則表明主機(jī)間數(shù)據(jù)流量的大小。這些信息都是實(shí)時(shí)變化的,因而能夠協(xié)助管理員隨時(shí)了解到網(wǎng)絡(luò)中各部分流量的變化情況。
EtherApe的安裝
EhterApe支持Ethernet、FDDI和Token Ring等多種網(wǎng)絡(luò),能夠?qū)崟r(shí)地從網(wǎng)絡(luò)或文件中讀取網(wǎng)絡(luò)流量的變化情況。此外它還可以將網(wǎng)絡(luò)流量信息保存下來(lái),以便在之后需要時(shí)再顯示出來(lái)。
在網(wǎng)站上可以下載到最新的EtherApe源碼包。
下面以Ethereal 0.8.2為例,講述如何安裝EtherApe(使用的操作系統(tǒng)是Red Hat 8.0)。
首先下載最新的源碼包并將其解壓縮,代碼如下:
# cp etherape-0.8.2.tar.gz /usr/local/src/
# cd /usr/local/src/
# tar xzvf etherape-0.8.2.tar.gz
EtherApe使用的是GNOME這一圖形用戶(hù)接口庫(kù)。與Ethereal和Tcpdump一樣,它也使用pcap庫(kù)(libpcap)對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行截獲和過(guò)濾。在編譯EtherApe之前,應(yīng)先確定所需的這些庫(kù)已經(jīng)安裝好,因?yàn)檫@是編譯EtherApe時(shí)所必需的。如果這些庫(kù)已經(jīng)安裝,就可以執(zhí)行下面的命令來(lái)編譯并安裝EtherApe:
# cd etherape-0.8.2
# ./configure
# make
# make install
用EtherApe分析網(wǎng)絡(luò)流量
當(dāng)編譯并安裝好EtherApe后,就可以執(zhí)行“etherape”命令來(lái)啟動(dòng)EtherApe。當(dāng)用EtherApe截獲在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包時(shí),也需要先為其指定過(guò)濾規(guī)則,否則EthreApe將捕獲網(wǎng)絡(luò)中的所有數(shù)據(jù)包。單擊工具欄上的“Pref.”按鈕,打開(kāi)“Preferences”對(duì)話(huà)框,在該對(duì)話(huà)框中的“Capture”屬性頁(yè)中,可以找到用于設(shè)置過(guò)濾規(guī)則的“Capture filter”下拉框。由于采用的都是pcap庫(kù),因此EtherApe過(guò)濾規(guī)則的設(shè)置與Tcpdump和Ethereal是相同的。
設(shè)置好過(guò)濾規(guī)則后,單擊工具欄上的“Start”按鈕,就可以開(kāi)始對(duì)網(wǎng)絡(luò)中感興趣的數(shù)據(jù)包進(jìn)行嗅探。EhterApe圖形化地顯
示網(wǎng)絡(luò)流量,圖5是當(dāng)EtherApe處于Ethernet模式下時(shí)的網(wǎng)絡(luò)流量圖。
EtherApe提供了Token Ring、FDDI、Ethernet、IP和TCP五種監(jiān)聽(tīng)模式。當(dāng)處于Ethernet模式下時(shí),EtherApe會(huì)截獲所有符合過(guò)濾規(guī)則的以太網(wǎng)數(shù)據(jù)包,但有時(shí)網(wǎng)絡(luò)管理員可能只對(duì)IP數(shù)據(jù)包感興趣,這時(shí)可以將EtherApe切換到IP模式。
單擊“Capture”菜單,選擇“Mode”菜單項(xiàng),然后再選擇相應(yīng)的模式,就可以完成模式之間的切換。
圖6是當(dāng)EhterApe處于IP模式下時(shí)的網(wǎng)絡(luò)流量圖。
EtherApe能夠以圖形的方式顯示網(wǎng)絡(luò)流量。用戶(hù)看到的是一個(gè)很直觀的用于表示網(wǎng)絡(luò)上各主機(jī)間流量大小的圖,而不是單個(gè)的數(shù)據(jù)包,因而更容易從整體上把握整個(gè)網(wǎng)絡(luò)的運(yùn)行狀況,在定位網(wǎng)絡(luò)故障時(shí)相對(duì)來(lái)說(shuō)也變得更加容易。
端口號(hào)
TCP協(xié)議支持
協(xié)議名稱(chēng) TCP端口號(hào) 協(xié)議名稱(chēng)解釋
ACAP 674
AIM 5190
BEEP 10288
CAST 4224
CMP 829
COPS 3288
PKTCABLE_COPS 2126
PKTCABLE_MM_COPS 3918
DAAP 3689
DHCPFO 519
DIAMETER 3868
DISTCC 3632
DLSW 2065
NP 20000
NS 53
DNS 5353
斷點(diǎn)續(xù)傳DATA 20
FTP 21
GIFT 1213
CS 1720
HTTP 80
PROXY_HTTP 3128
PROXY_ADMIN_HTTP 3132
HKP 11371
DAAP 3689
SSDP 1900
IB 3050
ICAP 1344
IMAP 143
IRC 6667
ISAKMP 500
JABBER 5222
KERBEROS 88
LAPLINK 1547
LDAP 389
GLOBALCAT_LDAP 3268
LDP 646
PRINTER 515
MBTCP 502
MSNMS 1863
MSRP 0
MySQL 3306
NBSS 139
CIFS 445
NDMP 10000
PA 0x0d44
BROKER 0x0bc6
SRS 0x0bca
ENS 0x0bc8
RMS 0x0bcb
Notify_LISTENER 0x0bc9
NETSYNC 5253
NNTP 119
NTP 123
POP 110
PPTP 1723
PVFS2 3334
RMI 1099
RSH 514
rsync 873
RTSP 554
SIP 5060
SKINNY 2000
SLSK_1 2234
SLSK_2 5534
SLSK_3 2240
SMRSE 4321
SMTP 25
SNMP 161
SNMP_TRAP 162
SMUX 199
SOCKS 1080
SRVLOC 427
SSH 22
SSL 443
SSL_LDAP 636
SSL_IMAP 993
SSL_POP 995
STUN 3478
TACACS 49
TELNET 23
TNS 1521
TPKT 102
X11 6000
X11_2 6001
X11_3 6002
XOT 1998
YHOO 5050
YMSG 23
YMSG_2 25
YMSG_3 5050
ZEBRA 2600
NINEPORT 564
ajp13 8009
ax4000 3357
BGP 179
COPS 3288
DCM 104
DHCPFO 519 desegmentation of DHCP failover over TCP
distcc 3632
ECHO 7
edonkey 4661/4662/4663
ENIP_ENCAP_PORT 44818 EtherNet/IP located on port 44818
etheric 1806/10002
giop 0
GNUTELLA 6346
http_alternate_tcp_port 未知
Ipdc 6668
ISNS 3205
MSMMS 1755
msdp 639
MSNMS 1863
msrp 0
Pgsq
Rlogin 513
Rpc 111
rtsp 未知
Sigcomp 5555/6666
synergy 24800
tds 1433/2433
uma 0
vnc 5901
一共129=94+35種
UDP協(xié)議支持
協(xié)議名稱(chēng) UDP端口號(hào) 協(xié)議名稱(chēng)解釋
3GA11 699 3com Network Jack
5264:Packets to Managementstation
5265:Packets to Switch
ACTRACE 2428 Port used for Mobile IP based Tunneling Protocol (A11)
T_AODV 654
ARMAGETRONAD 4534
MASTER 4533
ADP 8200
PIM_RP_DISC 496
BFD_CONTROL 3784
BOOTPS 67
BOOTPC 68
PHA 8116
CUPS 631
DDTP 1052
DHCPV6_DOWNSTREAM 546
DHCPV6_UPSTREAM 547
DLSW 2067
DNP 20000
DNS 53
MDNS 5353
RAS1 1718
RAS2 1719
HSRP 1985
SSDP 1900
IAPP 2313
ICP 3130
ICQ 4000
IPX 213
ISAKMP 500
KERBEROS 88
KRB4 750
KPASSWD 464
L2TP 1701
LAPLINK 1547
CLDAP 389
LDP 646
LLC1 12000
LLC2 12001
LLC3 12002
LLC4 12003
LLC5 12004
LMP_DEFAULT 701
MIP 434
MPLS_ECHO 3503
MSPROXY 1745
NBNS 137
NBDGM 138
NETFLOW 2055
TPCP 3121
NTP 123
OLSR 698
RADIUS 1645
RADIUS_NEW 1812
RADACCT 1646
RADACCT_NEW 1813
RIP 520
RIPNG 521
RMCP 623
RMCP_SECURE 664
RX_LOW 7000
RX_HIGH 7009
RX_AFS_BACKUPS 7021
思愛(ài)普 9875
SEBEK 1101
SFLOW 6343
SIP 5060
SLIMP3_V1 1069
SLIMP3_V2 3483
SNMP 161
SNMP_TRAP 162
SRVLOC 427
STUN 3478
SYSLOG 514
TACACS 49
TEREDO 3544
TFTP 69
時(shí)間 37
TIMED 525
TZSP 0x9090
VINES 573
WSP 9200
WTP_WSP 9201
WTLS_WSP 9202
WTLS_WTP_WSP 9203
WSP_PUSH 2948
WTLS_WSP_PUSH 2949
WCCP 2048
WHO 513
XDMCP 177
XYPLEX 173
NJACK1 5264
NJACK2 5265
ASAP 3863
AX4000 3357
bvlc 0xBAC0
CPFI 5000
cpfi_ttot 5001
dis 3000
ECHO 7
edonkey 4665
edonkey 4672
ENIP_ENCAP 44818
ENIP_IO 2222
IAX2 4569
udpencap 4500
IPVS_SYNCD 8848
ISNS 3205
KINK 57203
lwapp 12220/12222/12223
manolito 41170
MSMMS 1755
udp_encap_ucast_port 3055 Udp port for UDP encapsulation
udp_encap_mcast_port 3056
PKTC_PORT 1293
PKTC_MTAFQDN_PORT 2246
EVENT_PORT_PTP 319
GENERAL_PORT_PTP 320
radius 1645/1646/1812/1813
Rpc 111
SigCompUDPPort1 5555
SigCompUDPPort2 6666
Rdt 6970
rmt-alc 未知 從配置文件中讀取
SSCOP 未知 從配置文件中讀取
T38 6004
quakeworldServerPort 27500
quakeServerPort 26000
quake2ServerPort 27910
quake3_server_port 27960-27963
quake3_master_port 27965-27968
一共137=90+47種
IP協(xié)議支持
協(xié)議名稱(chēng) IP端口號(hào) 協(xié)議名稱(chēng)解釋
AX4000 173 AX/4000 Testblock - non 互聯(lián)網(wǎng)號(hào)碼分配局
TP 29 ISO Transport Protocol Class 4
DCCP 33 Sequential Exchange Protocol(和標(biāo)準(zhǔn)的不一樣)
EIGRP 88
EtherIP 97 Ethernet-within-IP Encapsulation
GRE 47 General Routing Encapsulation
ICMPV6 58 ICMP for IPv6
IGMP 2
IGRP 9 any private interior gateway(used by 思科 for their IGRP)
IPIP 4 IP in IP (encapsulation)
ICMP 1
AH 51 Authentication Header
ESP 50 Encap Security Payload
IPCOMP 108 IP Payload Compression Protocol
IPV6 41
L2TP 115 Layer Two Tunneling Protocol
MIPV6_OLD 62 CFTP 這個(gè)和標(biāo)準(zhǔn)不一致――Mobile IPv6
MIPV6 135 Mobility Header ―― Mobile IPv6
NCS_HEARTBEAT 224 Novell NCS Heartbeat -
http://support.novell.com/cgi-bin/search/searchtid.cgi?/10071158.HTML
NARP 54 NBMA Address resolution protocol - RFC1735
OSPF 89
PGM 113 PGM Reliable Transport Protocol
PIM 103 Protocol Independent Multicast
RSVP 46
SCTP 132 Stream Control Transmission Protocol
TCP 6
UDP 17
UDPLITE 136 UDPLite
VINES 83 Vines over raw IP
VRRP 112 Virtual Router Redundancy Protocol
一共30種
參考資料 >