用 Charles 抓幣安 APP 包失敗:證書 Pinning 解釋
技術研究人員或安全審計員嘗試用 Charles 或 mitmproxy 抓幣安 APP 的 HTTPS 流量時,會發現 APP 直接拒絕連線或報 SSL 錯誤。這是因為幣安實現了證書 Pinning。本筆記從技術角度解釋這個機制。下載 APP 走 幣安官網 或 幣安官方APP;iPhone 裝機看 iOS安裝教程。
證書 Pinning 是什麼
普通 HTTPS 驗證流程:
- APP 發起連線
- 伺服器返回證書
- APP 檢查證書是否由系統受信任的 CA 簽發
- 任何受信任 CA 籤的都接受
證書 Pinning 是更嚴格的檢查:
- APP 內建一份「期望的證書指紋」
- 伺服器返回證書後,APP 不僅看 CA,還看是否匹配內建指紋
- 不匹配 → 拒絕連線
為什麼金融 APP 要做 Pinning
防中間人攻擊:
- 攻擊者可以誘騙使用者安裝其根證書
- 之後用自己的證書劫持流量
- 普通 HTTPS 驗證會透過(因為根證書已加白)
- 但 Pinning 會拒絕(因為指紋不匹配)
幣安、銀行、PayPal 等金融 APP 普遍做 Pinning。
Charles / mitmproxy 的工作方式
Charles 抓 HTTPS 包的步驟:
- 裝置裝 Charles 根證書並信任
- 設定代理指向 Charles
- APP 發請求 → Charles 用自己的證書偽裝目標
- APP 驗證:CA 受信任(因為裝了 Charles 證書)
- 普通 APP 接受 → 抓包成功
但幣安 APP 在第 4 步多查一項:
5'. 檢查證書指紋 → 不匹配 → 拒絕
所以抓包失敗。
抓包失敗的具體表現
| 現象 | 原因 |
|---|---|
| APP 啟動後轉圈 | TLS 握手被拒 |
| 行情圖空白 | WebSocket 連線拒絕 |
| API 返回連線錯誤 | 證書校驗失敗 |
| Charles 看到 SSL Handshake Error | 同上 |
| APP 直接閃退(罕見) | 處理異常未捕獲 |
繞過 Pinning 的幾種方式
研究人員可能用:
- Frida 指令碼:動態替換 APP 內的證書校驗邏輯
- LSPosed / Magisk 模組:注入修改的程式碼
- 反編譯 APK 後修改 dex 重打包
- 使用 PIN-SSL 修改器
這些都需要 root 裝置且違反 APP 使用者協議。幣安 APP 安全機制還可能檢測這些工具。
普通使用者為什麼會遇到這個問題
絕大多數使用者根本不抓包,但有幾種意外場景:
場景一 · 公司網路做 SSL 攔截 公司在路由器層面解密 HTTPS 流量做監控:
- 裝公司根證書到所有員工裝置
- 流量被解密
- 幣安 APP 拒絕連線(指紋不對)
判斷:公司其它需要 HTTPS 的 APP 是否也連不上銀行類。
場景二 · 殺軟的 HTTPS 檢查 卡巴斯基、Avast 等殺軟會掃描 HTTPS 流量:
- 類似的中間人方式
- 幣安 APP 可能拒絕
處理:臨時關閉殺軟的 HTTPS 檢查。
場景三 · 裝了「網路加速器」 某些「加速器」實際上做的是流量代理:
- 使用者不知情地裝了根證書
- 抓包並加速
- 幣安拒絕
處理:解除安裝來路不明的加速器。
Pinning 的更新機制
證書 Pinning 的指紋會變(幣安換證書時):
- 通常 APP 內建多個指紋
- 一個失效不影響連線
- 升級 APP 時同步更新
如果你長期不升級 APP,可能某天 Pinning 指紋與伺服器證書都變了,連不上。
客戶端的不同實現
幣安各端的 Pinning 力度:
| 客戶端 | Pinning 嚴格度 |
|---|---|
| 安卓 APP | 嚴 |
| iOS APP | 嚴 |
| 桌面客戶端 | 嚴 |
| 瀏覽器 | 不實現(依賴 OS 信任) |
瀏覽器沒有 Pinning(這就是為什麼瀏覽器能被中間人,APP 不能)。
抓包替代方案
技術研究的替代:
- 用幣安官方 API 文件(公開)
- 用 SDK 提供的介面
- Web 版抓包(瀏覽器開發工具)
- 網路層抓包(Wireshark,但只能看密文)
這些方式都不需要破壞 APP 安全機制。
安全建議
- 不要安裝來路不明的根證書
- 公司 / 公共 WiFi 上謹慎用幣安 APP
- 殺軟的 HTTPS 檢查與幣安並存時把幣安加白
- 不要 root 自己常用的裝置
FAQ
Q:Charles 能抓幣安網頁版的包嗎? A:能(瀏覽器無 Pinning),但只能看到 web 流量,不是 APP。
Q:mitmproxy 能不能讓幣安 APP 不做 Pinning? A:單獨 mitmproxy 不能。要配合 Frida 等工具。
Q:iOS 上安裝企業根證書後幣安會被攔嗎? A:可能。看具體證書是否被內嵌到信任鏈。
Q:root 安卓上能抓包嗎? A:用 Frida 等工具理論可行,但違反 APP 協議。