威脅模型
攻擊者使用 Charles、Fiddler、mitmproxy 等工具攔截 APP 與服務器通訊,竊取 API、篡改請求、重放攻擊。
防護層級
1. 網絡層:SSL Pinning(憑證綁定)
- 客戶端內置服務器憑證公鑰/指紋,驗證握手時的憑證鏈。
- 繞過系統信任存儲,防止中間人安裝根證書解密。
- OkHttp 實現:
CertificatePinner;Retrofit 配合 PinningInterceptor。
2. 應用層:簽名與加密
- 請求參數加時間戳、Nonce、HMAC-SHA256 簽名,服務端驗證防重放。
- 敏感數據(密碼、身份證)使用 AES-GCM/ChaCha20-Poly1305 加密傳輸,密鑰透過 ECDH 協商或硬件密鑰庫 (Keystore/StrongBox) 保護。
3. 代碼層:混淆與加固
- ProGuard/R8 混淆、資源混淆、Arithmetic 混淆。
- 使用 DexGuard、爱加密、梆梆加固 等商業加固:類加密、動態載入、反調試、完整性校驗。
- 關鍵邏輯下沉至 Native (JNI) 或 TEE (TrustZone) 執行。
4. 運行時檢測
- 檢測
Xposed、Frida、VirtualXposed、Magisk Hide 等注入框架。
- 檢測代理設置:
Proxy.getDefault()、ConnectivityManager、/proc/net/route。
- 檢測 Root、模擬器、多開環境。
5. 服務端配合
- API 限流、風控引擎(設備指紋、行為分析)。
- 關鍵操作需二次驗證(短信、人臉、OTP)。
- 日誌審計、異常封禁。
參考資源
OSChina:Android APP 加固防抓包實戰
結語
沒有「完美」方案,只有纵深防禦。根據業務價值與威脅等級,選擇適當層級組合,並持續迭代更新。