手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

MegatronKing發表於2018-12-23

1. HttpCanary簡介

HttpCanary是一款強大的Android端抓包和注入工具,已經支援HTTP1.0、HTTP1.1、HTTP2和WebSocket協議,包括SSL擴充套件協議,比如HTTPS和WSS。HttpCanary提供了強大的資料包解析和注入功能,偽造請求、修改響應都在一念之間。目前相容5.0+版本,最重要的是: 無需Root!無需Root!無需Root!

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

HttpCanary不需要設定Wifi代理,不需要電腦,支援Wifi網路、行動網路抓包,真正做到躺在被窩裡都能抓包!

補充:HttpCanary的核心庫NetBare已開源!點我

Wiki: github.com/MegatronKin…


2. HttpCanary原理

HttpCanary採用VPN的方式將網路包轉發給本地代理伺服器,本地代理伺服器將資料包轉發虛擬閘道器,由虛擬閘道器進行不同策略地攔截和協議解析,最後再將資料傳送給終端,原理圖如下。

這是請求:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

這是響應:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

其中,最重要的一層就是虛擬閘道器(Virtual Gateway),需要對協議進行鑑定解析等等,包括資料包的攔截注入都是在這一層處理的,比如HTTPS的中間人(MITM)解析出明文包。虛擬閘道器採用攔截器的設計(Interceptor),既提供了內部封裝的解析邏輯,又提供了對外擴充套件的介面,比如HttpCanary的模組化設計(後面會詳說)也是實現的這些介面。

以上整個過程都封裝在名為NetBare的庫內,已開源到Github。NetBare目前已經實現了對IP協議簇下的TCP和UDP的轉發邏輯,以及對TCP協議中HTTP1.0和1.1版本的解析功能,其它的協議可以後續再擴充套件。理論上,整合NetBare庫可以實現類似Wireshark,Fiddler等抓包工具的功能,HttpCanary App就是整合了NetBare庫,實現了對Http的抓包、注入等功能。


3. HttpCanary特性

下面主要介紹下HttpCanary此應用的功能以及特性,會強大到讓你顫抖!

3.1 HTTP/HTTPS抓包

HttpCanary能夠抓到HTTP/HTTPS 1.0和1.1版本的資料包,HTTP包很簡單,明文傳輸100%能抓到。但是HTTPS的包比較麻煩,HttpCanary通過中間人(MITM)的方式對TLS/SSL資料包進行解密並明文輸出。首先需要安裝自籤的CA證照,App內可以一鍵安裝,安裝時需要輸入使用者手勢密碼:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

但是,由於從Android Nougat(7.0)開始,谷歌改變了網路安全策略。自籤的CA證照將預設不被HTTPS連線信任,這意味著HttpCanary將無法解析TLS/SSL資料包,即無法抓取HTTPS的明文資料。但是我們可以通過兩種方式來繞過這種限制。

3.1.1 抓自己APP的包

首先,在AndroidManifest.xml中新增networkSecurityConfig:

<
?
xml version="1.0" encoding="utf-8"?>
<
manifest ... >
<
application android:networkSecurityConfig="@xml/network_security_config" ... >
... <
/application>
<
/manifest>
複製程式碼

network_security_config檔案放在 res/xml/ 目錄下面:

<
?
xml version="1.0" encoding="utf-8"?>
<
network-security-config>
<
base-config cleartextTrafficPermitted="true">
<
trust-anchors>
<
certificates src="system" />
<
certificates src="user" />
<
/trust-anchors>
<
/base-config>
<
/network-security-config>
複製程式碼

為了APP的資訊保安,需要注意以上配置只能用於debug包,正式釋出的包請移除這些配置。更多關於網路安全策略的資訊,請前往Android Developer檢視Network security configuration

3.1.2 抓第三方APP的包

我們可以藉助VirtualApp這款應用來抓第三方的HTTPS包。HttpCanary內已經整合了此應用,我們只需要去設定中直接點選安裝即可,注意要開啟應用安裝來源開關,安裝完成後可以再選擇關閉。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

有一點需要注意,安裝的VirtualApp是免費版本,在P(9.0)系統上執行相當不穩定,所以不建議在P(9.0)系統的手機上使用此方式抓包。

安裝完成後,在VirtualApp內再安裝你想抓包的應用,然後在VirtualApp內開啟此應用,這樣我們就可以愉快地對其抓包了,不過抓到的包的應用資訊會顯示成VirtualApp的。

3.1.3 補充說明

有些應用的HTTPS包即使不配置以上兩種方式,也是能夠抓到的,比如像瀏覽器等等,主要是這些客戶端HTTPS的策略是信任所有的CA證照,比如像使用OKHttp框架的時候程式碼寫死不做HOST校驗等等。

HttpCanary無法保證100%抓到所有的HTTPS包。 比如有些App會校驗證照籤名,如果和服務端證照籤名不匹配的話,客戶端和服務端就會握手失敗。這種情況下,HttpCanary無論如何都是抓不到包的,且沒有任何辦法可以繞過去(除非我們能拿到服務端的證照,這個還是不要想了)。

所以在此,我們建議開發者在寫網路請求時,客戶端App儘量要校驗服務端的證照籤名,防止被使用自簽證照進行中間人攻擊(MITM)或者抓包(此處手動滑稽^-^)。


3.2 HTTP/HTTPS包分析

HttpCanary提供了各種強大的分析工具以及多種形式的資料預覽,幫助使用者快捷地分析資料包。

3.2.1 資料總覽

資料包總覽可以檢視網路請求的URL、協議、方法、Host、Keep-Alive、Content-Type、伺服器IP和埠、響應碼、開始時間和結束時間、耗時、資料量等等。長按還可以進行快速複製哦!

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

3.2.2 Raw檢視

Raw檢視可以檢視整個HTTP包的原始資料,包括請求/響應頭和請求/響應體,這些資料都沒有做過任何處理(當然HTTPS已經解析成明文了)。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

3.2.3 Text檢視

Text檢視會顯示對Body進行解碼後的資料,像一些gzip、chunked等形式的資料,都會進行自動解碼。

3.2.4 Json檢視

我們可以在預覽這一欄快速地檢視格式化的JSON資料:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

如果你覺得JSON資料太大,看的不方便,HttpCanary還提供了更加強大的JSON究極預覽彩色檢視,可以摺疊節點,以及快速一鍵摺疊,一鍵開啟等功能哦!還有,點選還可以進行節點資料複製!

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

3.2.5 Hex檢視

當然,有很多格式是無法預覽的,顯示出來文字是亂碼,兄弟勿急!HttpCanary還有Hex檢視,幫你方便地分析資料格式。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

3.2.5 其它檢視

HttpCanary還提供了圖片檢視和音訊檢視。其中圖片檢視可以預覽BPM、PNG、GIF、JPG、WEBP等格式的圖片內容;音訊檢視可以播放AAC、WAC、 MP3、OGG、MPEG等格式的音訊內容。最後,還有很多強大的檢視功能正在規劃開發中,比如zip壓縮包預覽等等。


3.3 HTTP/HTTPS包注入

說到這裡,其實以上都不是HttpCanary最強大的功能。HttpCanary最強大的功能是能夠進行請求包和響應包的注入。比如最最簡單的注入功能,遮蔽請求和遮蔽響應,一個是客戶端資料不發給伺服器,一個是伺服器資料不發給客戶端,只要在HttpCanary的設定頁面開啟遮蔽請求和遮蔽響應開關就OK啦!

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

如果說這個太簡單了,不算。HttpCanary還有非常厲害的兩種注入模式:靜態注入和動態注入。顧名思義,靜態注入就是你不用隨時動手,動態注入就是要隨時動手。下面來簡單介紹下這兩種注入模式。

長按首頁的抓包記錄,會彈框提供兩種注入模式的選擇。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

3.3.1 靜態注入

靜態注入支援對HTTP/HTTPS包全量的注入,包括請求引數、請求頭、請求體、響應行、響應頭、響應體等。另外,如果配置了靜態注入,注入器將會快取起來,以便後面重複使用。但是可以前往App的設定->
模組管理頁面,對其進行禁用、啟用、刪除等操作。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

上圖是對請求進行注入,這裡URL、協議版本號以及請求方法是不支援注入的(技術上實現很簡單,但我覺得應該沒這種奇葩需求吧)。由於是GET請求,所以這裡沒有顯示Body注入的選項(POST等其它會有的)。請求引數(Query Parameters)以及Headers的注入都是鍵值對的形式,靜態注入對此提供了三種注入選項:跟隨,自定義,禁用。

  • 跟隨:表示使用客戶端發給伺服器的原始資料,不進行任何干預。
  • 自定義:自定義key和value,會根據key對客戶端的請求資料進行覆蓋,無需覆蓋即當做新增(等同Map的put操作)。
  • 禁用:表示刪除客戶端發給伺服器的key-value資料(等同Map的remove操作)。

下面來看對響應進行注入:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

響應注入支援對響應行(僅code+message)、Headers、Body三者的注入,其中Headers的注入和上面請求注入類似,有跟隨、自定義、禁用三個選項。

但響應行和Body的注入只有兩個選項:跟隨服務端和自定義。下圖是對響應行的自定義,必須從列表中選擇一項:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

對Body的注入採用上傳檔案整體替換的形式,點選可以從手機上選擇一個檔案。如果有需要替換的Body,可以先儲存成檔案,然後在這裡選擇就可以了。

最後,有兩點需要注意:

  • Body注入的檔案最大不超過10M。
  • 如果響應行code為204或者304,將會忽略對Body的注入。

3.3.2 動態注入

動態注入需要在抓包服務執行的過程中進行。相比於靜態注入,動態注入不支援對請求體和響應體的注入,主要是由於手機端不方便處理太大資料型別的請求體和響應體。不過,我正在考慮支援動態注入一些小資料型別的請求體和響應體。如果使用動態注入,必須先將抓包服務執行起來。動態注入過程中,所有請求和響應都會Block住,所以切記注入不要花太長時間,防止請求或者響應超時。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

動態注入模式中,請求引數(Query Parameters)以及Headers的注入只有兩個選項:修改和刪除,這個就不用解釋了吧。請求注入確認完成後需要點右上角將資料發給伺服器,然後等待收取伺服器資料,再對響應進行注入。響應注入和請求注入差不多,不細說了。記住,別Holder太久哦,請求或響應會超時的。

3.4 Mod擴充套件

NetBare庫和HttpCanary設計的初衷就是對外提供高擴充套件性,希望能由開發者自己進行一些特殊需求的實現,比如資料解密,資料儲存等等,為此我設計了HttpCanary-ModSDK庫。使用ModSDK庫開發的擴充套件Mod可以在HttpCanary的模組管理頁面中以外掛的形式新增進來,真正做到開發者自己動手豐衣足食。實際上,上面講到的靜態注入就是以使用者手動建立Mod的形式新增進來的。

按照設計,Mod將分為三種型別:自建Mod、擴充套件Mod、內建Mod。

  • 自建Mod:使用者自動手動建立的Mod,比如靜態注入器。
  • 擴充套件Mod:使用者從模組管理器中匯入的Mod(暫未開放)。
  • 內建Mod:內建在App內的實驗性Mod,無法刪除。

Mod一共有三種狀態:啟用狀態、禁用狀態、過時狀態。

  • 啟用狀態:會隨App自啟動,處於工作狀態。
  • 禁用狀態:不會隨App自啟動,處於不工作狀態。
  • 過時狀態:隨著Mod-SDK版本變化,Mod不相容或無法使用,將處於此狀態。

使用者可以在模組管理頁面對Mod進行操作,可以隨時進行啟用、禁用、刪除。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

前方高能預警!!!

我來演示一個厲害的內建Mod:微信朋友圈定位漂移。

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

啟用後來看看效果:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

這簡直就是HttpCanary號宇宙飛船,哈哈!

3.5 HttpCanary小技巧

我已經為HttpCanary設計了一些實用的小功能。

  • 收藏,抓到一些有意思的請求,可以先收藏請求,後面慢慢分析。
  • 分享,請求和響應都可以分享給他人,分享的檔案格式是.hcy,hcy檔案可以直接使用HttpCanary開啟。
  • 搜尋,首頁導航欄有個搜尋功能,可以對抓包記錄進行條件篩選。
  • 效能模式,HttpCanary在工作時的耗電量會比較高,可以選擇開啟此選項,代價是看不到資料包應用來源。
  • 白名單,在設定中新增白名單過濾會比首頁的搜尋效率要高。

還有一些小功能,正在規劃中,比如視窗模式等。


最後

HttpCanary目前已經上架Google Play,分為免費版本和付費版本。HttpCanary的功能免費版本基本可以使用的,只有首頁加了廣告。另外注入功能體驗期結束後,會有使用限制,但可以通過看廣告後獲取免費使用天數。付費版本,就不說了,您是爺!

有梯子的童鞋,請搬梯子。

有梯子的童鞋, 請訪問wiki,內含下載連結。

HttpCanary技術交流微信群,請掃碼:

手機抓包+注入黑科技HttpCanary——最強大的Android抓包注入工具

HttpCanary的設計和開發花費了非常多的心血,由於工作較忙,基本都是下班後每天擼程式碼到晚上2-3點,所以希望大家能支援正版!

哦,還有個事情。HttpCanary號宇宙飛船(微信朋友圈定位漂移)暫時不在釋出版本中,原因大家懂的,有需求的可以微信聯絡我。

最後,再宣告下:

HttpCanary只可用於學習參考和開發除錯,嚴禁用於網路攻擊、釣魚等非法途徑!

來源:https://juejin.im/post/5c1e370ae51d45374272696e

相關文章