Trong kiểm thử bảo mật ứng dụng di động (Mobile Pentest), Flutter là một trong những nền tảng đặc thù nhất bởi ứng dụng không sử dụng Proxy của hệ điều hành Android và không tin cậy kho chứng chỉ hệ thống (System CA Store). Bài viết này sẽ hướng dẫn chi tiết phương pháp hook vào engine BoringSSL của Flutter bằng Frida để bắt gói tin qua Burp Suite.
1. Chuẩn bị môi trường thử nghiệm
- Android Emulator (khuyến nghị kiến trúc x86_64, Android 9 hoặc 10 không có Google Play Services để dễ ghi vào /system).
- Công cụ Burp Suite đã cấu hình Proxy lắng nghe trên tất cả các interface mạng.
- Môi trường Python đã cài đặt
fridavàfrida-tools.
2. Các bước thực hiện chi tiết
Bước 1: Liệt kê danh sách máy ảo Android (AVD)
emulator -list-avds
Bước 2: Khởi động Emulator với quyền ghi hệ thống (-writable-system)
emulator -avd <Ten_AVD> -writable-system -no-snapshot-load
Bước 3: Cài đặt chứng chỉ Burp Suite vào System Trust Store
Để máy ảo tin tưởng chứng chỉ CA của Burp Suite, chạy script hỗ trợ cài đặt quyền root và đẩy cert vào /system/etc/security/cacerts/:
adb root
adb remount
# Đẩy file chứng chỉ CA dạng hash .0 vào thư mục bảo mật hệ thống
Bước 4: Khởi chạy Frida Server trên thiết bị
Tải frida-server phiên bản tương ứng với kiến trúc máy ảo, đẩy vào thư mục /data/local/tmp/ và cấp quyền thực thi:
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "/data/local/tmp/frida-server &"
Bước 5: Hook BoringSSL để Bypass SSL Pinning và điều hướng Proxy
Sử dụng Frida script chuyên dụng để tìm hàm ssl_crypto_x509_session_verify_cert_chain trong thư viện libflutter.so và ghi đè kết quả trả về luôn là thành công (True):
frida -U -f com.example.flutterapp -l disable-flutter-tls.js --no-pause
💡 Tham Khảo Khóa Học Pentest Mobile Tại VietCyber:
Khóa học Mobile Security & Pentest tại VietCyber hướng dẫn bài bản kỹ thuật dịch ngược, bypass bảo vệ, phân tích API và vá lỗi cho cả hai nền tảng Android & iOS.