Cơ chế phát hiện và đối phó Frida trên Android
Cơ chế phát hiện và đối phó Frida trên Android
Phải công nhận là cộng đồng bên đó có rất nhiều pháp sư, đặc biệt ở mảng phân tích ứng dụng và bảo mật.
Lưu ý: Đây là bản dịch và chia sẻ lại nội dung gốc của tác giả Trung Quốc. Mình không phải tác giả của script hay bài viết gốc, mục đích chỉ là chia sẻ tài liệu để cộng đồng IT Việt Nam học hỏi thêm.
Đây là một script Frida dành cho Android, tập trung vào việc xử lý các cơ chế kiểm tra chứng chỉ (SSL Pinning) khi phân tích ứng dụng.
Script hoạt động trên cả hai tầng:
Java Layer: OkHttp, SSLContext, TrustManager, HttpsURLConnection, TrustKit, Cronet, WebView, Flutter...
Native Layer: BoringSSL, Cronet, OpenSSL và các callback như SSL_CTX_set_custom_verify, SSL_set_custom_verify.
Điểm mình thấy hay là tác giả mặc định để script chạy ở Stable Mode, ưu tiên tính ổn định thay vì hook mọi thứ ngay từ đầu.
Script hỗ trợ khá nhiều trường hợp phổ biến:
Bypass OkHttp CertificatePinner
Thay thế hostnameVerifier
Hook SSLContext.init()
Override TrustManagerImpl
Hook TrustManagerFactory
Xử lý HttpsURLConnection
Hỗ trợ TrustKit
Hỗ trợ Cronet Public Key Pinning
Nhận diện Flutter/Dart
Theo dõi dlopen để tự quét khi thư viện .so được load
Hook callback verify ở tầng Native của BoringSSL/Cronet
Một số tùy chọn được tắt sẵn:
enableMultiClassLoaderScan: false,
enableAutoDiscovery: false,
printNativeBacktrace: false,
enableCronetQuicDowngrade: false,
enableWebViewSslErrorProceed: false,
enableNativeReturnOverrideHooks: false,
hookSslCtxSetVerify: false,
Theo tác giả, đây là cách giảm nguy cơ gặp:
Màn hình trắng
Màn hình đen
Treo ứng dụng
Crash ngay khi inject
Thay vì bật toàn bộ hook ngay từ đầu, tác giả gợi ý:
Chạy với cấu hình mặc định.
Kiểm tra log xem đã hook được các thành phần như:
OkHttp CertificatePinner
SSLContext.init
SSL_CTX_set_custom_verify
libsscronet.so
libttboringssl.so
Nếu chưa bắt được HTTPS thì mới bật từng tính năng mở rộng.
Nếu app bị treo thì tắt dần các hook Native trước.
Cách tiếp cận này khá thực tế vì nhiều app hiện nay có chống Frida hoặc dùng thư viện mạng tùy biến.
Nếu gặp ứng dụng:
Obfuscate
Plugin hóa
Dùng packer
ClassLoader phức tạp
thì có thể bật:
enableMultiClassLoaderScan: true,
enableAutoDiscovery: true,
Nếu cần phân tích call stack Native:
printNativeBacktrace: true,
Nhưng tác giả cũng nhắc rằng tùy chọn này tạo rất nhiều log và ảnh hưởng hiệu năng.
Bài viết cũng nhấn mạnh rằng không phải mọi ứng dụng đều có thể xử lý bằng một script duy nhất.
Một số trường hợp vẫn cần bổ sung hook riêng, chẳng hạn:
Native TLS tự viết
Anti-Frida
Certificate Transparency
QUIC
Thư viện mạng tải động
Đây cũng là thực tế mà anh em làm reverse Android chắc gặp khá nhiều.
Đọc khá nhiều tài liệu từ cộng đồng Trung Quốc mới thấy họ đầu tư rất sâu vào mảng Android Security và Reverse Engineering. Nhiều bài viết chia sẻ cực kỳ thực chiến, đặc biệt là các script Frida được viết khá bài bản và có nhiều cấu hình để tránh crash ứng dụng.
Mình sẽ tiếp tục dịch và chia sẻ những tài liệu hay như thế này khi gặp, để anh em trong cộng đồng IT Việt Nam có thêm nguồn tham khảo khi nghiên cứu và học tập.
Nguồn: Bài viết gốc của tác giả trên diễn đàn kỹ thuật Trung Quốc (được dịch và tóm lược sang tiếng Việt, giữ nguyên tinh thần nội dung gốc).
Cơ chế phát hiện và đối phó Frida trên Android
Bạn cần đồng ý với điều khoản sử dụng của Army2.Net - Tải Game, Ứng Dụng & Tài Liệu Lập Trình Miễn Phí | Chia Sẻ Công Nghệ Mỗi Ngày trước khi tiếp tục xem nội dung.