瞭解過網路安全技術的人都知道一個名詞「抓包」。那對於局外人,一定會問什麼是抓包?考慮到,大家的技術水平不一,我儘可能用非專業的口吻簡單的說一下。

抓包就是將網路傳輸發送與接收的數據包進行截獲、重發、編輯、轉存等操作,也用來檢查網路安全。抓包也經常被用來進行數據截取等。黑客常常會用抓包軟體獲取你非加密的上網數據,然後通過分析,結合社會工程學

進行攻擊。所以,學會抓包,對於學好網路安全技術十分重要。

在我們做介面測試的時候,經常需要驗證發送的消息是否正確,或者在出現問題的時候,查看手機客戶端發送給server端的包內容是否正確,就需要用到抓包工具。而工程師和程序常用的抓包工具有哪些呢?今天我們就來簡單聊一聊最常用的2種。

Fiddler是在windows上運行的程序,專門用來捕獲HTTP,HTTPS的。

wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容。

總結,如果是處理HTTP,HTTPS 還是用Fiddler, 其他協議比如TCP,UDP 就用wireshark。

一、Fiddler

當啟動fiddler,程序將會把自己作為一個代理,所以的http請求在達到目標伺服器之前都會經過fiddler,同樣的,所有的http響應都會在返回客戶端之前流經fiddler。

Fiddler可以抓取支持http代理的任意程序的數據包,如果要抓取https會話,要先安裝證書。

Fiddler的工作原理

Fiddler 是以代理web伺服器的形式工作的,它使用代理地址:127.0.0.1, 埠:8888. 當Fiddler會自動設置代理, 退出的時候它會自動註銷代理,這樣就不會影響別的程序。不過如果Fiddler非正常退出,這時候因為Fiddler沒有自動註銷,會造成網頁無法訪問。解決的辦法是重新啟動下Fiddler.

Fiddler 如何捕獲Firefox的會話

能支持HTTP代理的任意程序的數據包都能被Fiddler嗅探到,Fiddler的運行機制其實就是本機上監聽8888埠的HTTP代理。Fiddler2啟動的時候默認IE的代理設為了127.0.0.1:8888,而其他瀏覽器是需要手動設置的,所以將Firefox的代理改為127.0.0.1:8888就可以監聽數據了。

Firefox 上通過如下步驟設置代理

點擊: Tools -> Options, 在Options 對話框上點擊Advanced tab - > network tab -> setting.

Firefox 中安裝Fiddler插件

修改Firefox 中的代理比較麻煩, 不用fiddler的時候還要去掉代理。推薦你在firefox中使用fiddler hook 插件, 這樣你非常方便的使用Fiddler獲取firefox中的request 和response,當你安裝fiddler後,就已經裝好了Fiddler hook插件,你需要到firefox中去啟用這個插件打開firefox tools->Add ons -> Extensions 啟動 FiddlerHook

Fiddler如何捕獲HTTPS會話

默認下,Fiddler不會捕獲HTTPS會話,需要你設置下, 打開Fiddler Tool->Fiddler Options->HTTPS tab

選中checkbox, 彈出如下的對話框,點擊"YES"

點擊"Yes" 後,就設置好了

Fiddler的基本界面

看看Fiddler的基本界面

Inspectors tab下有很多查看Request或者Response的消息。 其中Raw Tab可以查看完整的消息,Headers tab 只查看消息中的header. 如下圖

Fiddler的HTTP統計視圖

通過陳列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您當前請求的頁面。使用Statistics頁簽,用戶可以通過選擇多個會話來得來這幾個會話的總的信息統計,比如多個請求和傳輸的位元組數。

選擇第一個請求和最後一個請求,可獲得整個頁面載入所消耗的總體時間。從條形圖表中還可以分別出哪些請求耗時最多,從而對頁面的訪問進行訪問速度優化

QuickExec命令行的使用

Fiddler的左下角有一個命令行工具叫做QuickExec,允許你直接輸入命令。

常見得命令有:

help 打開官方的使用頁面介紹,所有的命令都會列出來

cls 清屏 (Ctrl+x 也可以清屏)

select 選擇會話的命令

.png 用來選擇png後綴的圖片

bpu 截獲request

Fiddler中設置斷點修改Request

Fiddler最強大的功能莫過於設置斷點了,設置好斷點後,你可以修改httpRequest 的任何信息包括host, cookie或者表單中的數據。設置斷點有兩種方法

第一種:打開Fiddler 點擊Rules-> Automatic Breakpoint ->Before Requests(這種方法會中斷所有的會話)

如何消除命令呢? 點擊Rules-> Automatic Breakpoint ->Disabled

第二種: 在命令行中輸入命令: bpu baidu.com (這種方法只會中斷baidu.com)

如何消除命令呢? 在命令行中輸入命令 bpu

二、Wireshark

Wireshark是另外一種抓包工具,這種工具比fiddler更強大,消息量更多。大家可能會問:有了fiddler,為什麼還要用wireshark呢?這裡說下,在測試中,發現用fiddler抓包,有些包是沒有抓到的,比如在驗證反作弊信息的時候,反作弊pingback信息的消息用fiddler就沒抓到,用wireshark就抓到了。還有另外一種情況,就是在驗證cna的時候,如果先用fiddler抓包,如果沒有種下cna的時候,以後就永遠沒有cna了,情況很詭異。解決辦法就是把包卸載了重新安裝,第一次用wireshark抓包。

Wireshark優勢:

1、強大的協議解析能力,一到七層全解碼,一覽無遺,對於協議細節的研究特別有幫助。

2、對於https加密流量,只要將瀏覽器的session key 自動導入wireshark,Wireshark可以自動解密https流量。

Wireshark不足之處:

儘管可以自定義過濾列表,但為了抓取一個特定TCP Flow /Session 流量需要寫一個長長的過濾列表,這對於初學者很不友好。

操作實例:

wireshark是捕獲機器上的某一塊網卡的網路包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。

點擊Caputre->Interfaces.. 出現下面對話框,選擇正確的網卡。然後點擊"Start"按鈕, 開始抓包:

一、WireShark 界面

1、Display Filter(顯示過濾器),用於過濾;

2、Packet List Pane(封包列表),顯示捕獲到的封包,有源地址和目標地址,埠號;

3、Packet Details Pane(封包詳細信息), 顯示封包中的欄位;

4、Dissector Pane(16進位數據);

5、Miscellanous(地址欄,雜項)。

二、Wireshark 顯示過濾

使用過濾是非常重要的,初學者使用wireshark時,將會得到大量的冗餘信息,在幾千甚至幾萬條記錄中,以至於很難找到自己需要的部分。搞得暈頭轉向。過濾器會幫助我們在大量的數據中迅速找到我們需要的信息。

過濾器有兩種:

1、一種是顯示過濾器,就是主界面上那個,用來在捕獲的記錄中找到所需要的記錄

2、一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設置。

三、保存過濾

在Filter欄上,填好Filter的表達式後,點擊Save按鈕, 取個名字。比如"Filter 102",Filter欄上就多了個"Filter 102" 的按鈕。

四、過濾表達式的規則

表達式規則

1.協議過濾 比如TCP,只顯示TCP協議。

2.IP 過濾

比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,ip.dst==192.168.1.102,目標地址為192.168.1.102。

3.埠過濾

tcp.port ==80, 埠為80的

tcp.srcport == 80, 只顯示TCP協議的願埠為80的。

4.Http模式過濾

http.request.method=="GET", 只顯示HTTP GET方法的。

5.邏輯運算符為 AND/ OR

五、封包列表(Packet List Pane)

封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你可以看到不同的協議用了不同的顏色顯示。 你也可以修改這些顯示顏色的規則, View ->Coloring Rules.

六、封包詳細信息 (Packet Details Pane)

這個面板是我們最重要的,用來查看協議中的每一個欄位。各行信息分別為

·Frame: 物理層的數據幀概況

·Ethernet II: 數據鏈路層乙太網幀頭部信息

·Internet Protocol Version 4: 互聯網層IP包頭部信息

·Transmission Control Protocol: 傳輸層T的數據段頭部信息,此處是TCP

·Hypertext Transfer Protocol: 應用層的信息,此處是HTTP協議

七、Wireshark與對應的OSI七層模型

八、TCP包的具體內容

從下圖可以看到wireshark捕獲到的TCP包中的每個欄位。

總結:

總的來說,兩款抓包軟體各有優缺點,選擇的關鍵在於我們的需求是什麼,當然,對於軟體測試從業者而言,兩款軟體都是十分有必要學習的~


推薦閱讀:
查看原文 >>
相關文章