Flipper Zero merupakan tool hacking/pentesting serbaguna. Harganya tidak terlalu murah (169 Euro) tapi juga tidak terlalu mahal jika dibandingkan benda lain yang jadi saingannya, mengingat fungsionalitas nya banyak.
Awalnya saya cuma ingin memahami kenapa tahun lalu gagal melakukan akuisisi data WhatsApp di Android yang memakai Android 12 (non-root), tapi ternyata eksplorasinya malah mendalam ke bagaimana sistem backup di Android bekerja. Saya melakukan berbagai eksperimen dan juga langsung membaca source code Android untuk memahami berbagai detail mengenai backup data di Android.
Dalam tulisan ini saya akan menuliskan nomor versi Android yang dikenal user (misalnya Android 6.0) dan kadang mencantumkan API Levelnya jika memang relevan (misalnya: Android 6.0 memiliki API Level 23). Menurut saya versi Android ini lebih mudah dipahami dibandingkan API Level yang biasanya hanya dikenal oleh developer.
Latar Belakang
Untuk keperluan tertentu kadang kita ingin mengekstrak data dari sebuah aplikasi Android. Beberapa contoh: untuk keperluan forensik, untuk recovery data, atau untuk riset security.
Sebuah aplikasi bisa menyimpan data di lokasi yang dengan mudah diakses karena berada di lokasi publik. Contoh lokasinya: galeri foto, direktori Downloads, dan SD Card. Informasi yang disimpan di sini sifatnya publik dan untuk bisa dikonsumsi aplikasi lain. Contoh: media (foto, video, file) dari aplikasi chat seperti WhatsApp bisa disimpan di direktori publik.
Dalam tulisan ini saya akan membahas UEFI (Unified Extensible Firmware Interface) dari mulai dasarnya, securitynya, dan sekilas cara reverse engineeringnya, dan hal-hal apa yang perlu diperhatikan ketika berurusan dengan UEFI (misalnya ketika melakuan cloning komputer).
Meskipun tulisan ini cukup panjang, tapi ini hanya perkenalan saja. Ada banyak topik yang tidak saya bahas. Ada beberapa topik yang penjelasannya saya sederhanakan sehingga mungkin kurang akurat. Silakan baca berbagai website yang saya link dari artikel ini jika ingin mendapatkan penjelasan lebih dalam. Jika ingin belajar langsung dari sumbernya, spesifikasi UEFI dan source code dari Intel bisa dibaca.
Secara awam UEFI adalah pengganti BIOS (Basic Input Output System). BIOS sendiri adalah software yang sudah tertanam di komputer yang menyediakan akses dasar ke hardware. Sebagai informasi: BIOS hanya ada di arsitektur x86, sedangkan di arsitektur lain, fungsi BIOS ini digantikan oleh software lain. Software low level yang menempel ke hardware ini disebut juga sebagai firmware.
Ketika sebuah komputer dinyalakan, perlu ada firmware yang bisa meload sistem operasi dari suatu media, entah itu dari disk (macam-macam, bisa flash disk, micro sd, harddisk, SSD, NVME, dsb) dari network, atau mungkin dari sumber lain. Di dunia PC, firmware ini dulunya adalah BIOS, tapi sudah belasan tahun ini digantikan oleh UEFI.
Sedikit Sejarah
BIOS untuk x86 usianya sudah sangat tua (dari jaman PC XT), dan memiliki banyak keterbatasan (misalnya hanya bisa berjalan di mode 16 bit). Jadi untuk sistem operasi 32 atau 64 bit, boot loader atau sistem operasi perlu beralih mode dari 16 ke 32/64 bit setelah diload oleh BIOS.
Saya dulu pernah membuat sendiri OS sederhana dari nol, dan proses bootnya cukup panjang: mengimplementasikan kode MBR (yang otomatis diload oleh BIOS, ukurannya maksimal 512 byte), yang akan meload boot loader (memanggil fungsi/interrupt BIOS untuk mengakses disk), lalu boot loadernya meload kernel, switch ke mode 32 bit, lalu baru melakukan jump ke mode 32 bit. Detail proses booting klasik bisa dibaca di sini.
Artikel ini ditujukan untuk para reverse engineer dan pentester yang ingin mengetahui situasi terbaru hooking Android pada awal tahun 2022. Hooking Android artinya kita menulis kode untuk mengintercept fungsi yang ada dan menggantinya dengan milik kita. Tujuan hooking ada banyak, misalnya: bypass SSL Pinning, security testing, cheating game, dsb.
Setelah capek kucing-kucingan dengan Google dalam hal Safety Net, akhirnya Magisk Hide dihapus. Selain Magisk Hide, Magisk memiliki banyak modul. Modul Magisk sifatnya low level, seperti menyembunyikan, memindahkan, menggantikan atau menambahkan file tertentu di Android.
Sekarang ini ada modul magisk baru bernama Zygisk. Ini sekedar untuk meload sebuah .so di setiap proses (dan otomatis dipanggil ketika proses dimulai). Dengan ini, developer Magisk hanya ingin bilang: ini saya sediakan akses untuk hook low level, silakan dimanfaatkan untuk apapun.
Setelah berbagai obfuscator Python berhasil dibongkar, banyak orang sekarang mulai menggunakan Cython agar modulnya sulit dibongkar. Menurut saya ini cara yang sangat baik, karena selain lebih sulit dibongkar, kode yang dihasilkan juga sering kali lebih cepat dari modul Python yang ditulis langsung dalam Python.
Karena kebanyakan yang mencari tahu soal RE Cython ini adalah newbie yang berusaha mencuri kode Python orang lain, maka ini saya tuliskan di awal. Karena biasanya orang-orang ini tidak sabar membaca sampai akhir:
Jika punya file.so hasil kompilasi Cython, maka tidak bisa dikembalikan lagi menjadi .py secara otomatis.
Proses reversing bisa dilakukan manual, tapi butuh waktu lama dan butuh kesabaran tinggi
Mengenal Modul Python dalam C/C++
Kita bisa menulis modul Python dalam C/C++ dan juga bahasa lain. Bahasa yang resmi didukung hanya C/C++, tapi bahasa lain seperti Rust juga bisa dipakai. Bahkan sebenarnya banyak modul Python yang dipakai sehari-hari yang ditulis dalam C/C++, misalnya numpy, tensorflow, dan bebagai modul AI lain.
Ada berbagai cara untuk menulis modul Python, pertama adalah cara 100% manual. Manual artinya kita menulis sendiri kodenya dalam C/C++ tanpa library tambahan atau tool tambahan. Dokumentasi lengkap cara manual ini bisa dilihat situs resmi Python.
Membuat modul secara manual ini butuh waktu lama, maka ada berbagai cara lain untuk memudahkan pembuatan modul ptyhon. Tapi perlu dicatat bahwa semua cara lain ini pada akhirnya akan memanggil API Python yang sama seperti jika kita menggunakan cara manual. Jadi pertama kita perlu memahami dulu modul yang dibuat secara manual.
RISC-V (baca: Risk Five) adalah instruction set architecture (ISA) yang sifatnya terbuka, jadi yang mengimplementasikan ISA ini tidak perlu membayar royalti ke pihak tertentu. Ini tidak seperti ARM atau x86 di mana yang mengimplementasikan perlu membayar royalti. Mirip dengan ARM, ada berbagai versi ISA ini yang bisa dipakai mulai dari microcontroller sampai desktop.
Beberapa tahun terakhir sudah mulai ada yang mengimplementasikan RISC-V versi microcontroller (pernah saya bahas di sini) dengan harga relatif murah. Ini hanya bisa menjalankan Linux versi non-MMU. Kemudian sudah ada yang membuat versi desktop (SiFive HiFive Unmatched) tapi masih mahal. SBC dari Beaglebone sudah dibuat tapi masih untuk developer. Tapi bulan Mei lalu ada SBC baru yang relatif murah (99 USD) dan sudah bisa dipesan dari AliExpress.
Setelah tulisan saya mengenai Cheat dan AntiCheat pada game, banyak yang bertanya ke saya tentang cheating game. Kebanyakan adalah pemula yang tidak tahu programming, dan hanya sekedar memakai tool yang sudah jadi. Biasanya mereka mentok jika gamenya crash, atau jika modifikasinya tidak berhasil.
Tulisan ini bertujuan untuk menginspirasi: ada begitu banyak hal yang bisa dipelajari dari sekedar keisengan untuk mencurangi game. Tapi tentunya jangan sekedar cuma bisa mengikuti tutorial dan mentok di situ. Dari cheating game ini ada banyak hal tingkat lanjut dalam bidang programming dan security yang bisa dipelajari.
Di tulisan lalu, saya sudah memberi tahu bahwa ada begitu banyak game engine, dan ada banyak tool, banyak proteksi pada sebuah game. Di tulisan sebelumnya saya membahas game secara umum, jadi sekarang saya ingin mengambil contoh yang lebih konkrit: game yang dibuat dengan game engine Unity dan hanya pada Android.