Skip to content
[ root@retasan:~# Tuesday, Jul 14, 2026 ]

> Retasan_

// Portal Berita Keamanan Siber Terkini

  • Kebijakan & Privasi
  • Kontak Retasan.id
  • Tentang Retasan.
Malware Exploit Development Kebijakan Keamanan Cyberwarfare Tools Data Breach Iklan
Exploit Development

Cara Bypass mTLS di Android Menggunakan Frida: Analisis Teknis Lengkap

// by retasan-news July 14, 2026 7 min read

Bypass mTLS Android Frida Technical Analysis

Mutual TLS (mTLS) merupakan salah satu mekanisme autentikasi paling kuat dalam komunikasi client-server, di mana kedua belah pihak — baik client maupun server — harus memverifikasi sertifikat digital satu sama lain sebelum komunikasi terenkripsi bisa dimulai. Berbeda dengan TLS konvensional di mana hanya server yang menampilkan sertifikat kepada client, mTLS menambahkan lapisan autentikasi timbal balik yang membuat aplikasi mobile jauh lebih sulit untuk diintersep oleh attacker yang menjalankan man-in-the-middle proxy seperti Burp Suite atau mitmproxy. Yigit Kiratli, seorang researcher keamanan, baru-baru ini mempublikasikan analisis teknis yang sangat komprehensif tentang cara bypass mTLS di Android menggunakan Frida — sebuah studi yang menjadi referensi penting bagi seluruh profesional penetration testing mobile.

Mekanisme mTLS yang dibangun dalam demo application yang dirancang oleh Kiratli menggunakan backend Go dengan custom Certificate Authority (CA) dan EC (Elliptic Curve) P-256 keys. Arsitektur ini merepresentasikan pola mTLS yang umum ditemukan dalam aplikasi perbankan dan fintech production-grade di Indonesia. Enrollment flow dimulai dengan server mengirimkan nonce challenge kepada client, yang kemudian menghasilkan key pair EC baru menggunakan KeyPairGenerator dan menandatangani challenge tersebut dengan algoritma SHA256withECDSA. Hasilnya disimpan sebagai PKCS12 keystore — format standar untuk menyimpan sertifikat dan private key dalam satu container yang terenkripsi. Proses enrollment ini menunjukkan bahwa aplikasi target membangun chain of trust yang kuat dari awal, menjadikan bypass mTLS sebagai tantangan teknis yang signifikan.

Pertahanan utama dari mekanisme mTLS ini adalah penggunaan PBKDF2 password yang dihasilkan secara runtime dengan 200.000 iterations dari kombinasi ANDROID_ID, Build.FINGERPRINT, dan packageName. PBKDF2 (Password-Based Key Derivation Function 2) dengan 200.000 iterations dirancang untuk memperlambat brute force secara signifikan — setiap percobaan membutuhkan waktu yang cukup lama untuk menghasilkan derived key. Penggunaan ANDROID_ID sebagai komponen password memastikan bahwa PKCS12 yang dihasilkan hanya bisa dibuka di perangkat yang sama dengan perangkat yang membuatnya. Build.FINGERPRINT menambahkan binding ke perangkat spesifik, dan packageName memastikan bahwa hanya aplikasi yang benar yang bisa mengakses keystore. Kombinasi tiga komponen ini menciptakan pertahanan bertingkat yang secara teori mempersulit ekstraksi private key.

Bypass Step 1 yang dijelaskan oleh Kiratli melibatkan hooking pada SSLContext.init() untuk mengganti TrustManager yang digunakan oleh aplikasi. TrustManager yang dimodifikasi akan menerima semua sertifikat tanpa memvalidasi chain of trust — artinya, sertifikat self-signed dari Burp Suite akan diterima oleh aplikasi seolah-olah itu adalah sertifikat yang valid dari CA resmi. Hook ini dilakukan menggunakan Frida JavaScript API yang memungkinkan runtime modification dari behavior aplikasi tanpa mengubah kode aslinya. Dengan hook ini aktif, traffic HTTPS antara aplikasi dan server akan melewati Burp Suite, namun ini baru setengah jalan karena mTLS memerlukan client juga menampilkan sertifikatnya kepada server — yang masih belum bisa dilakukan hanya dengan mengganti TrustManager.

Bypass Step 2 adalah langkah yang jauh lebih kompleks dan merupakan inti dari seluruh bypass technique: hooking constructor ClientKeyManager untuk mengekstrak sertifikat dan private key pada saat decryption terjadi. ClientKeyManager adalah komponen yang bertanggung jawab untuk menyimpan dan menyediakan key pair client saat server meminta client authentication. Dengan hooking constructor ini, Kiratli bisa menangkap momen tepat ketika PKCS12 keystore sedang dibuka dan private key sedang diekstrak dari dalamnya. Pada momen in, data decrypted masih berada dalam bentuk yang bisa diakses di memori aplikasi — sebelum di-wrapping oleh Android KeyStore atau Trusted Execution Environment (TEE).

Insight kunci yang menjadikan bypass ini mungkin adalah fakta bahwa private key dalam aplikasi demo ini dihasilkan menggunakan KeyPairGenerator.getInstance("EC") tanpa spesifikasi Android KeyStore provider. Ketika KeyPairGenerator menggunakan provider default (bukan Android KeyStore), key pair dihasilkan sepenuhnya dalam software memory — tidak pernah menyentuh hardware security module atau TEE. Implikasinya sangat kritis: getEncoded() method akan mengembalikan byte array yang valid dan lengkap untuk software-generated keys, namun akan mengembalikan null untuk keys yang disimpan di Android KeyStore/TEE. Perbedaan perilaku ini menjadi indicator utama yang bisa digunakan researcher untuk menentukan apakah bypass mTLS dengan cara ini akan berhasil atau tidak.

Kiratli kemudian menjelaskan langkah praktis untuk memanfaatkan key yang sudah diekstrak: membangun file PKCS12 menggunakan OpenSSL command-line tools dan mengimpornya ke Burp Suite untuk mendapatkan visibilitas penuh terhadap traffic mTLS. Proses ini melibatkan konversi private key dan sertifikat yang sudah diekstrak ke format yang kompatibel dengan Burp Suite, yang kemudian bisa digunakan untuk melakukan TLS interception terhadap semua komunikasi antara aplikasi dan server. Dengan setup ini, researcher bisa melakukan full traffic analysis, request modification, dan replay attacks terhadap aplikasi yang menggunakan mTLS — kemampuan yang sangat kritis dalam penetration testing profesional.

Dari sisi decision tree untuk penetration testing yang sesungguhnya, Kiratli menyarankan langkah pertama selalu adalah mengecek apakah private key disimpan di Android KeyStore dengan TEE binding. Jika jawabannya ya, maka ekstraksi melalui Frida memory hook tidak akan berhasil karena key bytes tidak pernah berada dalam memori yang bisa diakses oleh user-space code. Dalam kasus ini, researcher harus mencari alternatif lain seperti hooking lebih dalam di level CryptoPrimitive, menggunakan Magisk dengan Zygisk untuk akses lebih luas, atau mencari vulnerability lain dalam aplikasi yang bisa dieksploitasi untuk mencapai tujuan yang sama. Decision tree ini sangat berharga karena mencegah researcher membuang waktu pada pendekatan yang sudah pasti tidak akan berhasil.

Saran mitigasi utama yang diberikan oleh Kiratli adalah memindahkan generasi dan penyimpanan key pair ke Android KeyStore dengan binding ke hardware TEE (Trusted Execution Environment) atau StrongBox. Android KeyStore menyediakan isolated execution environment yang memastikan private key tidak pernah meningkatkan secure hardware — bahkan proses root atau malware berprivilege tinggi tidak bisa mengekstrak raw key bytes dari dalam TEE. Dengan menggunakan Android KeyStore, getEncoded() akan selalu mengembalikan null untuk private key, yang secara efektif memblokir seluruh teknik ekstraksi yang dijelaskan Kiratli. Namun, ini juga berarti developer harus menyesuaikan enrollment flow mereka untuk bekerja dengan key yang tidak bisa diekstrak — sebuah trade-off keamanan yang sepadan.

Pelajaran paling berharga dari seluruh studi ini adalah pemahaman bahwa password protection dan hardware isolation memecahkan masalah yang sangat berbeda. PBKDF2 dengan 200.000 iterations memang membuat brute force password menjadi sangat lambat, namun ia tidak melindungi key dari ekstraksi pada momen runtime saat password sudah benar diketikkan. Password protection hanya menjaga akses ke container yang menyimpan key, tapi jika attacker bisa menangkap key setelah container dibuka, maka seluruh pertahanan password menjadi tidak relevan. Hardware isolation (TEE/StrongBox) memecahkan masalah ini dengan memastikan key tidak pernah bisa diakses dalam bentuk raw bytes di memori, regardless dari apakah password sudah diketikkan atau tidak. Pemahaman tentang perbedaan fundamental ini sangat penting bagi setiap developer Android yang merancang sistem autentikasi mTLS.

Analisa Retasan

Studi bypass mTLS Yigit Kiratli merupakan kontribusi berharga bagi komunitas mobile penetration testing karena mengungkap gap kritis antara apa yang masyarakat umum pikirkan tentang mTLS (pertahanan tidak bisa ditembus) dan realitas implementasinya (banyak aplikasi yang menggunakan software keys alih-alih hardware-backed keys). Bagi profesional penetration testing di Indonesia, pemahaman tentang technique ini sangat berharga karena banyak aplikasi perbankan dan fintech lokal menggunakan mTLS sebagai pertahanan utama mereka terhadap MITM attack. Namun, jika private key-nya tidak di-generate di dalam TEE, seluruh pertahanan mTLS tersebut bisa dibypass dengan relatif mudah menggunakan Frida.

Pelajaran paling penting dari studi ini adalah bahwa password protection ≠ hardware isolation, dan kedua konsep ini memecahkan masalah yang sangat berbeda. Organisasi Indonesia yang mengembangkan aplikasi mobile dengan mTLS harus memastikan bahwa key pair di-generate dan disimpan di dalam Android KeyStore dengan TEE/StrongBox binding, bukan sekadar dilindungi oleh password PBKDF2 yang kuat. Tim development dan security harus bekerja sama untuk memahami bahwa keamanan kriptografi bukan hanya tentang memilih algoritma yang kuat, tetapi juga tentang memahami trust boundary dan memastikan key tidak pernah berada di luar lingkungan yang sudah dijamin keamanannya oleh hardware.

Sumber: Medium – How to Bypass mTLS on Android with Frida by Yigit Kiratli | Tags: mTLS, Frida, Burp Suite, Android Pentest, Certificate Extraction

Tags: Android Pentest Burp Suite Certificate Extraction Frida mTLS
Share:

retasan-news

← Previous GoldPickaxe Kembali: Ketika Informasi Biometrik Anda Sepenting Uang Anda
Next → RedHook Android Malware Menyalahgunakan ADB Wireless Debugging dan Shizuku untuk Mendapatkan Shell-Level Privileges

Artikel Terkait

Chrome 150 Perbaiki 27 Vulnerability Termasuk Dua Critical Flaw Use-After-Free di Ozone dan Views

Chrome 150 Perbaiki 27 Vulnerability Termasuk Dua Critical Flaw Use-After-Free di Ozone dan Views

July 14, 2026
GhostApproval: AI Coding Tools Ditipu untuk Hack Developer Machine Melalui Teknik Symlink Klasik

GhostApproval: AI Coding Tools Ditipu untuk Hack Developer Machine Melalui Teknik Symlink Klasik

July 14, 2026
Microsoft Patch CVE-2026-50656: RoguePlanet Defender Flaw yang Memberikan SYSTEM Privileges

Microsoft Patch CVE-2026-50656: RoguePlanet Defender Flaw yang Memberikan SYSTEM Privileges

July 14, 2026

> leave_comment_

Your email address will not be published. Required fields are marked *

Copyright © 2026 Retasan | retasan.my.id

  • Kebijakan & Privasi
  • Kontak Retasan.id
  • Tentang Retasan.