標籤:

如何使用 Charles 抓包並分析 Http 報文

從Web安全的攻擊防禦方面來說,最多接觸的應該就是Http協議了,當我們作為中間人(man-in-the-middle)查看到所有瀏覽器到web伺服器的http報文的時候,一切就都有意思起來。

比如,分析某電商在交易支付的時候請求了哪些東西,分析某網站的登錄流程都請求了哪些數據,分析某社交軟體有沒有偷偷的上傳隱私數據等等,甚至可以拿到Https加密過的請求哦!

如果我是黑客,分析過後也許就會通過工具篡改偽造請求報文,欺騙伺服器,從而實現某些惡意行為,比如撞庫、刷單、擼羊毛、惡意爬蟲爬取數據等等。

那麼,如何快速有效的抓取http數據包並進行分析呢,這裡推薦一個跨平台抓包神器—Charles。

charles是一個圖形界面可視化的代理形式(HTTP,SOCKS,SSL/HTTPS)的抓包工具,它提供對HTTP,SSL/HTTPS協議下通過同一個路由器下的設備的數據交流分析,包括各種HTTP請求和響應信息,charles目前只支持抓到部分socket的數據。

安裝配置

● 下載安裝

charlesproxy.com/downlo

charles需求java環境,並且為收費工具,試用版每30分鐘將會關閉。

● socks/http代理配置

charles提供透明代理功能,當安裝配置對象為網關伺服器時,菜單處proxy->proxy setting勾選HTTP代理,勾選enabletransparent HTTP proxying選項即可。

檢測為第一次安裝使用時charles會提供部分瀏覽器和應用的自動代理設置:

Windows / Internet Explorer proxy settings – used automatically by mostWindows applicationsn Mac OS X proxy settings – used automatically by most Mac OS Xapplicationsn Mozilla Firefox proxy settings (all platforms)nnMozilla Firefox可在設置ADD-ONs處添加自動配置插件:https://addons.mozilla.org/en-US/firefox/addon/charles-proxy/n

其他應用/瀏覽器:

當於charles菜單proxy處設置好了設置以後,可以查詢各個瀏覽器,應用的代理設置方式,在設備(包括手機)處於同一網路(同一路由)下時,填寫charles所處設備的ip地址和charles設置的代理埠(默認8888),即可通過charles代理。

● SSL https代理配置

非手機:

charles菜單help->SSL proxy->安裝certificates後

菜單proxy->SSLproxy setting->添加代理目標地址(可於另外兩個選項添加client和root的certificates)。

手機:

在手機端瀏覽器輸入「charlesproxy.com/getssl「 下載證書,並將格式轉換為crt安裝在手機上即可。

通過代理client ip段設置:

於菜單proxy->AccessControl處可設置通過代理的clientIP段

charles可再通過代理傳輸數據,可在proxy->external proxy處設置代理,使charles再通過其他代理。

使用

charles的圖形界面提供格式話的抓包數據的分析和各種處理方式。

當配置完畢以後數據會在當前session數據界面(Structure樹狀和Sequence隊列兩種方式)顯示抓到的各個請求和相應信息,樹狀抓到的數據會以相同地址聚合的方式堆列為樹狀,而隊列形式為以先後的順序顯示。對顯示的數據有相應的選項可操作數據,其中request和response可以以image,text,html,json,javascript……的形式顯示。

charles提供斷點形式(breakpoint)的代理,可對請求進行再編輯以後再將請求發送過去。同時提供repeat 的重複發送功能,並有相應的功能設置(advance repeat)對該重複發送功能進行設置(定時定量)。

● 模式

charles在啟用時提供的模式主要以record,throttle,斷點模式。

其中,記錄模式即使關閉charles一樣在進行抓取數據,只是不將其顯示出來。

throttle模式可將目前連接代理的所有client虛擬為所設置的網路質量。

其中,在附帶工具中有可選其他關聯選項附加模式。

菜單->tool下有:

● no caching

對caching設置的工具,設置以後,代理將拒絕代理的client使用cache緩存的形式顯示相應。

● map *

local:該功能可將代理本地的文件替換請求所響應的結果,目標請求的響應將替換為本地所選資源返回並顯示給client。

remote:同上功能,但所替換的資源為遠程他網路伺服器上的其他請求地址或數據介面。

● rewrite

該工具可再編輯client發送給目標伺服器的請求,並且提供批量改寫欄位的編輯。

● blocking cookies

該功能提供保存目標伺服器發送/接收的各個cookies,可用來測試該web伺服器是否對代理所持有的cookies有效(該功能提供導入和導出所保存的cookies)。

● Mirror

該工具提供對目前的session進行鏡像處理。

charles提供終端下的命令形式操作方式和瀏覽器介面形式的操作方式。

● 終端:

charles <path>

以一個session文件打開一個新的session

charles -config <path>

制定一個config文件的使用

charles -headless

無圖形界面的啟動charles

charles -throttling

開啟throttling模式

● 網頁介面:

包括增加刪除,保存session,開啟關閉各種模式。同終端模式,並不提供各種可視化的抓包數據分析。

示例

● 舉個栗子:百度搜索櫻桃小丸子圖片

1. 輸入「櫻桃小丸子」搜索,然後點擊其中某一張圖片,查看具體圖片樣式;

2. 百度搜索會通過url的形式向伺服器請求這張圖片的具體信息;

3. Charles根據請求,可以抓取到伺服器對這個請求做出的響應。比如這張圖片的具體信息是什麼;

4. 同時,charles還可以查看不同的響應格式,比如image、JavaScript、Jason等。

推薦閱讀:

golang net/http的小問題?
淺談HTTP緩存
JMeter-HTTP請求sampler詳細說明
Aspera技術如何實現原來需要傳26小時的24GB文檔做到只需30秒?
大家在工作中那些地方用到了http協議的細節?

TAG:HTTP | 数据抓包 |