Membobol certificate pinning Messenger milik Meta (macOS)
- Aplikasi Messenger untuk macOS milik Meta mirip dengan model Texts.com, yaitu aplikasi desktop mandiri.
- Batuhan İçöz, yang memimpin proyek platform Meta di Texts.com, menganggap langkah pertama yang penting adalah mencegat permintaan jaringan.
- Meta memperkuat keamanan dengan menerapkan certificate pinning dan mencegah analisis permintaan server melalui serangan MITM (man-in-the-middle).
Apa itu certificate pinning?
- Saat menyiapkan klien proxy, perlu dikonfigurasi agar mempercayai "certificate authority".
- Dengan menggunakan sertifikat yang diterbitkan oleh certificate authority, informasi dari permintaan dapat dicegat dan didekripsi.
- Jika sebuah layanan menerapkan certificate pinning, layanan itu hanya menerima sertifikat yang diterbitkan oleh certificate authority tertentu, sehingga sertifikat yang diterbitkan oleh certificate authority milik pengguna tidak bisa digunakan.
Perilaku dasar
- Jika certificate pinning tidak dinonaktifkan, semua permintaan akan dikembalikan sebagai "kesalahan internal", dan perangkat lunak proxy akan menampilkan "SSL handshake failure".
- Karena permintaan tidak dapat menyelesaikan seluruh siklus hidupnya, informasi tentang permintaan tersebut tidak dapat disimpulkan.
Perilaku yang diinginkan
- Dengan menggunakan serangan MITM, permintaan, respons, dan header dapat dibaca dengan sukses di alat debugging jaringan.
Pendekatan yang mungkin
- Salah satu metode yang sebelumnya berhasil adalah mengubah string URL di dalam biner ke endpoint self-hosted yang tidak aman dan tidak menerapkan TLS.
- Pustaka instrumentasi dinamis seperti Frida dapat digunakan, tetapi Messenger cenderung mudah crash, terutama saat dilakukan hooking.
- Penggunaan Frida juga melibatkan proses deployment yang kompleks.
Pendekatan
- Unduh Messenger, pindahkan ke folder Applications, lalu impor biner ARM ke Hopper.
- Dengan Hopper, biner dapat di-disassemble, di-decompile, di-recompile, di-debug, dan divisualisasikan.
- Dengan mencari string seperti "SSL pinning verification failed", tujuannya adalah meminimalkan jumlah modifikasi.
- String "Using custom sandbox -> turn off SSL verification" ditemukan, lalu fungsi terkait dicari dan dimodifikasi.
- Fungsi IsUsingSandbox diatur agar selalu bernilai true sehingga certificate pinning dinonaktifkan.
Hasil
- Setelah mengekspor executable baru dan menghapus tandatangannya, biner Messenger asli diganti dengan biner baru tersebut.
- Saat Messenger dijalankan ulang, alat proxy menampilkan header, isi respons, dan seluruh informasi permintaan.
- Intersepsi permintaan berhasil dilakukan dengan memodifikasi hanya 4 byte dari total 97.477.728 byte biner.
Deployment
- Setelah biner dikompilasi, file tersebut dikirim ke Batuhan.
- Batuhan menerima sertifikat penandatanganan, memasangnya, lalu menandatangani aplikasi tersebut.
- Setelah penandatanganan selesai, ia dapat menggunakan biner itu di sistemnya sendiri untuk melihat permintaannya sendiri.
Opini GN⁺
- Artikel ini memberikan contoh menarik tentang bagaimana peneliti keamanan dapat melewati certificate pinning pada aplikasi Messenger milik Meta.
- Certificate pinning adalah fitur keamanan penting untuk mencegah serangan man-in-the-middle, tetapi menemukan cara untuk melewatinya juga memberi wawasan penting bagi komunitas keamanan.
- Teknik ini dapat membantu pengembang memperkuat keamanan aplikasi atau layanan mereka sendiri, serta berkontribusi dalam menemukan dan memperbaiki kerentanan keamanan.
- Namun, karena riset semacam ini juga berpotensi digunakan untuk tujuan jahat, hasil penelitian perlu dibagikan dengan hati-hati.
- Alat lain yang menawarkan fungsi serupa antara lain alat analisis jaringan seperti Wireshark atau Burp Suite, yang banyak digunakan untuk memantau dan menganalisis lalu lintas jaringan.
1 komentar
Opini Hacker News
Rasa penasaran tentang aspek hukum
Upaya dekompilasi dan kompilasi ulang serta dedikasi
Hilangnya keterampilan masa lalu
Pengamatan terkait pertahanan RE Meta
IsUsingSandbox()dari build produksi kemungkinan akan mudah.Certificate pinning dalam mode sandbox
Kegunaan checksum biner saat runtime
Pertanyaan tentang penggunaan alat proxy
Keamanan aplikasi perusahaan besar
Kemungkinan mencegat trafik aplikasi Meta
Pentingnya pemantauan trafik