利器 -- 抓包工具總結

[github 地址] (https://github.com/hanks-zyh/capturedata)

抓包工具整理

抓包工具 – Charles

基於Java 跨平臺: Linux , Mac OS X, Windows
官網

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).


以下爲Linux 平臺

安裝

下載 charles-proxy-3.11.2.tar.gz

# 解壓
tar zxvf charles-proxy-3.11.2.tar.gz

# 啓動 charles
./charles/bin/charles

手機抓包

前提:使手機和電腦在一個局域網內,不一定非要是一個ip段,只要是同一個路由下就可以了,比如電腦連接的有線網ip爲192.168.16.12,然後手機鏈接的wifi ip爲192.168.1.103,但是這個有線網和無線網的最終都是來自於一個外部ip,這樣的話也是可以的。

在安卓手機的 設置 -> wlan -> 長按連接的wifi -> 修改網絡 -> 高級選項 -> 代理選手動 , 填入電腦的 ip 和 charles 監聽的 端口(默認爲 8888)

查看電腦端口 : ifconfig
查看/修改 charles 監聽端口: charles的 Proxy -> Proxy Setting

設置好之後Charles彈出確認框,點擊Allow按鈕即可

圖片

圖片

抓取 https

圖片

安裝證書

charles的 Help -> SSL Proxy -> Install charles Root

設置 ssl enable

在需要抓取的 https 鏈接上 右鍵 enable ssl proxy
圖片

參考 charles使用教程指南

抓包工具 – mitmproxy

基於python 跨平臺: linux, windows, OSX (Mountain Lion and later)
官網

Mitmproxy是一個基於python的中間人代理的框架。做過滲透測試的肯定很熟悉工具burpsuite或Fiddler,這些工具能夠攔截並修改http或https的數據包,對於分析數據包交互的應用來說是非常有用的。但是這些工具都是整套給我們做好了。比如如果想自己定製一套這樣的工具,添加一些自己需要的功能的話,那麼我想,mitmproxy將是一個比較好的選擇,因爲它提供了一個可供用戶調用的庫libmproxy(注意該庫目前只支持linux系統)。

圖片

圖片

圖片


以下基於Linux臺(Ubuntu14.04)

下載

$ sudo pip install mitmproxy

如果下載速度慢可以下載tar包

啓動

$ mitmproxy -b 192.168.1.29 -p 9999

輸入 查看幫助, q返回

A      accept all intercepted flows
a      accept this intercepted flow
b      save request/response body
C      clear flow list or eventlog
d      delete flow
D      duplicate flow
e      toggle eventlog
F      toggle follow flow list
l      set limit filter pattern
L      load saved flows
m      toggle flow mark
n      create a new request
P      copy flow to clipboard
r      replay request
U      unmark all marked flows
V      revert changes to request
w      save flows
W      stream flows to file
X      kill and delete flow, even if it's mid-intercept
tab    tab between eventlog and flow list
enter  view flow
|      run script on this flow

手機設置好代理,界面上就可以看到請求了
圖片

mitmproxy 查看http請求響應

C (大寫) 清除抓包結果

j k 選擇請求, 回車查看詳細信息

圖片

tab 切換 RequestResponse

m Display Mode 美化信息
圖片
上圖輸入 m,在輸入 s,便可以以json形式展示

e 編輯
Edit request (cookies,query,path,url,header,form,raw body,method)?
Edit response (cookies,code,message,header,raw body)?

mitmproxy攔截 (Intercept)

相當於在客戶端和服務器做中間人,可以修改客戶端請求,修改服務器返回

輸入 i(代表Intercept filter)即可,此時界面便會讓你輸入想要攔截的條件:

mitmproxy的條件攔截在默認情況下是過濾抓包的URL的。也就是說當你直接輸入要攔截的條件(比如輸入“weibo”),那麼接下來要出現抓包會將匹配的抓包整體變黃:

mitmproxy條件過濾效果
mitmproxy條件攔截效果
這些橘黃色的數據包都代表被攔截了,還未發送給服務器,這個時候你就可以對這些數據包進行修改,我們選擇一個數據包enter進入:

mitmproxy 攔截 選擇數據包
與之前的類似,輸入“e”,進行request編輯模式,然後輸入“h”代表要編輯request的頭部:

mitmproxy 編輯攔截包的頭部
輸入enter便可對高亮的User-Agent的值進行修改,上圖的weibo版本之前是5.0的,被我改成了6.0 。我們還可以對header進行添加屬性,輸入“a”即可,然後使用tab分別鍵入key和value。這裏我添加了“test-test”鍵值對:

mitmproxy 攔截header添加鍵值對
至此,我對攔截的request header已經修改完畢,現在要做的就是我要認可接受這個修改,然後發給服務器。所以我們輸入“a”(代表“accept”)即可,等到服務器響應後,注意,mitmproxy便又了攔截服務器發過來的response(注意那個“Response intercepted”):

mitmproxy 攔截response
現在如果你想修改這個response也可以,方式同上面修改request一樣。這個時候我再輸入“a”,代表我接受了這個response,然後這個response便可發給客戶端了:

mitmproxy 攔截response之後accept

更多類型的mitmproxy攔截

同時mitmproxy還支持不同類型的條件過濾,之前在攔截字符串前面加上特定的參數比如我要攔截所有的POST request怎麼辦?輸入:~m POST 即可(m代表method):

mitmproxy 攔截特定的request 方法

攔截所有的request: ~q

攔截特定的header: ~h

攔截特定的domain: ~d

攔截特定的響應代碼(404之類的): ~c

mitmproxy官方文檔。


抓包工具 – Fiddler

基於C# windows, Linux看這裏 Mono Fiddler


下載

直接下載,安裝即可

手機抓包


抓包工具 – wireshark

跨平臺:Windows,OS X ,Linux

官網

發佈了272 篇原創文章 · 獲贊 59 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章