
Android 앱의 SSL/TLS 인증서 피닝을 우회하는 Frida 툴킷으로, Java TrustManager, OkHttp, Conscrypt, 그리고 네이티브 OpenSSL/BoringSSL 계층을 후킹합니다.
Android용 범용 SSL/TLS 인증서 피닝 우회
작성자: Danieldev (GitHub: @danieldev23 | Telegram: @zadevz)
모든 Android 앱에서 SSL 피닝을 무력화하는 종합 Frida 툴킷 — 표준 OkHttp 피닝부터 Facebook의 커스텀 proxygen 네이티브 구현까지, Java와 네이티브 계층 모두를 아우릅니다.
| 기능 | 상태 |
|---|---|
| Java TrustManager / SSLContext | ✅ |
| HostnameVerifier (모든 호스트 이름 허용) | ✅ |
| OkHttp CertificatePinner (표준) | ✅ |
| 난독화된 OkHttp (FB, 뱅킹 앱) | ✅ |
| Conscrypt / Android TLS provider | ✅ |
| NetworkSecurityConfig (Android 7.0+) | ✅ |
| WebViewClient SSL 오류 우회 | ✅ |
| Apache HTTP client (레거시 앱) | ✅ |
| TrustKit 피닝 라이브러리 | ✅ |
| 네이티브 OpenSSL / BoringSSL | ✅ |
Flutter (ssl_verify_peer_cert) | ✅ |
Facebook Proxygen (verifyWithMetrics) | ✅ |
| 로드된 SSL 모듈 자동 감지 | ✅ |
| CModule 네이티브 교체 (0ms 오버헤드) | ✅ |
| 스크립트 | 설명 |
|---|---|
scripts/universal_bypass.js | 범용 스크립트 — 모든 Android 앱에서 작동 |
scripts/fb4a_bypass.js | Ghidra로 확인된 심볼을 사용한 Facebook (FB4A) 전용 최적화 스크립트 |
pip install frida-tools)/data/local/tmp/에서 frida-server 실행 중run.sh로 빠르게 사용하기# Clone the repository
git clone https://github.com/danieldev23/frida-ssl-bypass.git
cd frida-ssl-bypass
# Make the runner executable
chmod +x run.sh
# ── Universal bypass (Any app) ──
./run.sh -p com.example.app # Attach to running app
./run.sh -p com.example.app -m spawn # Spawn app and hook
# ── Facebook specific bypass ──
./run.sh -p com.facebook.katana -s fb4a # FB4A optimized mode
./run.sh # Default: Attach to Facebook
# ── Direct Frida CLI usage ──
frida -U -f com.instagram.android -l scripts/universal_bypass.js
frida -U -p 1234 -l scripts/universal_bypass.js
run.sh)./run.sh [options]
-p, --package <name> Target package name (default: com.facebook.katana)
-s, --script <name> Script to use: fb4a | universal (default: universal)
-m, --mode <mode> Mode: attach | spawn (default: attach)
-h, --help Show help message
SSLContext.init() → Injects TrustAllManager (trusts all certificates)
HostnameVerifier → Returns true for all domain names
CertificatePinner.check() → Noop (scans for standard and obfuscated classes)
Conscrypt → Bypasses certificate chain verification
NetworkSecurityConfig → Trusts user-added CA certificates
WebViewClient → Automatically proceeds on SSL errors
SSL_CTX_set_verify() → Forces SSL_VERIFY_NONE (0)
SSL_get_verify_result() → Always returns X509_V_OK (0)
SSL_set_custom_verify() → Disables custom verification callback
verifyWithMetrics() → CModule stub returns TRUE (Facebook Proxygen)
ssl_verify_peer_cert() → Returns 1 (Flutter / Dart Engine)
이 툴킷은 두 가지 전략을 사용하여 메모리에 로드된 SSL 모듈을 자동 감지합니다:
android_dlopen_ext / dlopen을 후킹합니다 (백오프 폴링 폴백 포함).frida-ssl-bypass/
├── README.md # Documentation (English)
├── LICENSE # MIT License
├── run.sh # Auto-runner script for frida-server & hooks
├── .gitignore
└── scripts/
├── universal_bypass.js # Universal bypass script for any app
└── fb4a_bypass.js # FB4A specific optimized bypass script
이 프로젝트는 보안 연구 및 교육 목적으로만 사용하도록 의도되었습니다. 본인이 소유하거나 감사에 대한 명시적 권한을 가진 애플리케이션에만 이 도구를 사용하십시오. 작성자는 어떠한 오용에 대해서도 책임을 지지 않습니다.
MIT 라이선스에 따라 배포됩니다 — 전체 세부 사항은 LICENSE를 참조하십시오.
| 애플리케이션 | 패키지 이름 | 권장 스크립트 | 비고 |
|---|
com.facebook.katana | fb4a / universal | C/C++ 네이티브 Proxygen 우회 | |
com.instagram.android | universal | OkHttp + 네이티브 OpenSSL | |
com.whatsapp | universal | Noise Protocol + 네이티브 SSL | |
| Twitter / X | com.twitter.android | universal | OkHttp 피닝 |
| TikTok | com.zhiliaoapp.musically | universal | BoringSSL 커스텀 검증 |
| 뱅킹 앱 | 다양함 | universal | Conscrypt + TrustKit |
| Flutter 앱 | 다양함 | universal | libflutter.so의 검증 체인 후킹 |
| React Native | 다양함 | universal | 기반 OkHttp 계층 커버 |