http://cphk.org/redirect.php?tid=563&goto=lastpost
前言: 網路故障了?沒有用網路時網路燈號卻一直閃爍不停?新的網路通訊協定夠不夠完善?種種大大小小的問題充斥在網路世界中,為了解決各種問題,我們常常需要先對網路中的資料進行擷取和分析,以瞭解問題的癥結點並擬對策。Wireshark就是一種網路分析工具,它能夠擷取網路封包,並盡可能顯示出最為詳細的網路封包資料。本文將對Wireshark做一些基本的使用介紹。 Wireshark簡介: Wireshark的前身叫做Ethereal(2006.06因為商標問題改名),是一開放原始碼軟體,使用者可以免費從官方網站(http://www.wireshark.org/)下載使用。Wireshark支援了多種作業系統,在Windows、UNIX、MAC…etc下都有相對應的版本。藉由此軟體我們可以抓取資料封包,進一步分析封包內的摘要及詳細資訊。一般常用在網路故障排除、監聽異常封包、軟體封包問題檢測等地方。Wireshark的方便強大之處,在於其支援的Protocol多且完整,更因為開放原始碼的關係,更新Protocol相當迅速,不同封包擷取軟體所產生的檔案亦可在這套軟體中讀取檢視。此外,在介面使用上,Wireshark圖形化的介面相當容易上手,豐富的過濾語言,可以輕鬆判別出封包的種類,是一套整合度完整的軟體。 安裝Wireshark: 首先我們必須到官方網頁來下載安裝程式,位置是http://www.wireshark.org/,官方網頁中有不同的作業系統可供選擇,也提供了Portable的版本,在這邊我們將以Windows Installer (.exe) Package來做示範。 安裝的過程相當簡單,跟一般軟體的流程一樣,接受授權、客製化、安裝。現階段我們使用預設的設定即可。 ![]() 比較需要注意的是在安裝的過程中會要我們安裝WinPcap(Windows Packet Capture),如圖所示。WinPcap 是 Windows 版本的 lippcap 函式庫,Wireshark使用了這個函式庫去抓取網路上的封包,它含有支援抓取網路上封包的驅動程式,所以我們必須要安裝它,若電腦本身已經有安裝WinPcap,建議還是更新到最新的版本。 ![]() 按下Install開始安裝,若想要瞭解更多關於WinPcap的資訊,點選『What is WinPcap?』的按鈕即可。 ![]() ![]() ![]() 目的:透過基本的封包擷取,瞭解Wireshark的使用流程。從實驗中我們必須要知道sniffer的運作原理,習得呈現內容過濾的技巧,並利用stream彙整的功能找到需要的資訊。 流程: 當安裝完畢,點擊開啟Wireshark,看到的程式介面如下。 ![]() ![]() ![]() 我們拿BBS來做這次的實驗,首先連接到一個BBS站台,以輔大資工謠言報為例,在命令提示字元內鍵入telnet bbs.rumor.tw。 注意:此時Wireshark的還是在Capture狀態。 ![]() ![]() 停止之後介面上的封包將不再增加,不過所擷取到的資料仍舊太多太雜,這時候可以利用Display Filter功能過濾呈現的內容,如下圖點擊Expression挑選過濾語法。 ![]() ![]() 通訊協定這部分在前面有提到,Wireshark幾乎支援目前所有的協定,所以不太會有解析不出來的情況發生。 可以用的運算元就是上圖Relation那個區塊,亦可以用縮寫來替代。如下表: English C-like Description and example eq == Equal ex: ip.src==192.168.2.89 ne != Not equal ex: ip.src!= 192.168.2.89 gt > Greater than ex: frame.len > 10 lt <>= Greater than or equal to ex: frame.len ge 0x100 le <= Less than or equal to ex: frame.len <= 0x20 舉幾個例子: 只顯示 IP Address 為 192.168.2.89 語法為ip.addr eq 192.168.2.89 只顯示 IP Address 為 192.168.2.88 且 port 為 23 語法為(ip.addr eq 192.168.2.88) and (tcp.port eq 23) 只顯示通訊協定為 ARP 或 UDP 語法為arp or tcp 詳細的描述可以參考官方wiki:http://wiki.wireshark.org/DisplayFilters 語法確定後點選Apply就過濾出所有包含TELNET協定的封包。介面的中央區塊代表的是封包裡面的內容,關於這個區塊代表的意義我們實驗2會再談到,現階段我們要點開最下面的+號如圖紅色部分,觀看屬於應用層的內容。 ![]() ![]() ![]() ![]() ![]() [註:為了避免被有心人監測到重要資料,有SSH、SSL、HTTPS等加密協定可用就盡量使用,至少別人監聽到的內容是加密過的。] ![]() 目的:藉由HTTP Protocol的觀察,練習篩選所要的資訊,並能夠清楚的知道TCP/IP實際的運作模式 流程:這次要看的是自己的HTTP封包。在上一個實驗中我們用到Display Filter,這個實驗也可以透過同樣的方式組合過濾,不過我們來嘗試另一種過濾方式Capture Filter。 同樣的進入選擇網路卡的地方。Capture → Interfaces點選Options。 ![]() 進入了選項視窗後,有各種參數可以設定,比較主要的功能是在Capture這個區塊,其中: Interface代表你要使用的網路卡。 IP address代表該網路卡的網路位置。 Buffer size代表抓取網路封包時所用的緩衝區大小。 Capture packets in promiscuous mode代表抓取封包的模式,如果勾選會抓取整個LAN的封包;如果不勾選,則只會抓取從你的電腦進或出的封包。 Limit each packet to n bytes用來指定對於每個封包要抓取的資料大小。 Capture Filter用來指定抓取時的篩選規則。 跟我們相關的功能如下圖紅色的部分,『Capture packets in promiscuous mode』、『Capture Filter』這兩部分,因為我們只要觀察自己的封包,所以『Capture packets in promiscuous mode』不要打勾,另外我們想要的是http相關資訊,所以在剛開始就設定篩選讀取,請點選『Capture Filter』的按鈕開始進行篩選設定。 ![]() 這裡舉幾個簡單的例子: 只抓取某一個 host(例如 IP 是 10.0.0.5) 的 telnet 封包 語法為:tcp port 23 and host 10.0.0.5 抓取 telnet 的封包但不要抓到從某一 host 的(例如 IP 是 10.0.0.5) 語法為:tcp port 23 and not host 10.0.0.5 更詳細的描述可以參考官方wiki:http://wiki.wireshark.org/CaptureFilters 在這裡我們沒有要用到這麼複雜,直接用Wireshark已經建立好的常用功能HTTP TCP port(80)即可,OK之後點選Start擷取封包 ![]() ![]() 見下圖,右上角紅色的框框,這就是TCP在做三向交握建立連線,有興趣的可以自行察看封包並比對網路相關書籍,這裡就不多著墨了。 接下來看到下面的紅色框框,這是編號四號的封包內容,也就是當三向交握結束,client對server做出request,封包的內容層層分明,讓我們先來複習一下TCP/IP的四層架構:
以下圖為例,第一條內容是屬於連結層(frame); 第二條內容為MAC address,隸屬於網路層; 第三條內容也是網路層(IP);第四條TCP到了傳輸層; 最後一條HTTP為應用層。 藉由封包的分析,我們可以更清楚瞭解每一層實際運作的情形。 ![]() GET / HTTP/1.1 HTTP/1.1 200 OK 步驟3:實戰練習 目的:找一個網站去瞭解其運作模式,藉此分析該網站的安全度、可靠度等細節。 流程:這次實驗挑選的對象是去年新成立的社交網站,該網站提供blog、相簿,並提供房間讓你布置,網站內的功能也持續推陳出新,是一個非常有趣新奇的網站,網址為:http://www.roomi.com.tw/。 ![]() ![]() ![]() ![]() GET 發現了嗎? 前陣子roomi server端還有防一些,現在好像什麼都沒有防。 寄信去沒人回~ 不只是錢、好像很多東西都可以改來改去。 |
歡迎光臨 百利工頭 (http://bb.pc104.tw/) | Powered by Discuz! 6.0.0 |