What is Reverse Engineering?
Apa itu reverse engineering?
Last updated
Apa itu reverse engineering?
Last updated
Pada sub-bab ini kita akan mengenal lebih dekat apa itu reverse engineering.
Reverse Engineering adalah proses membongkar suatu benda dengan tujuan untuk mendapatkan informasi terkait benda tersebut.
Dari penjelasan tersebut, reverse engineering dapat dilakukan pada banyak hal, seperti:
Makanan, untuk mengetahui resep atau bahan dari makanan tersebut.
Barang elektronik, untuk mengetahui komponen yang ada pada barang tersebut.
Program, untuk mengetahui algoritma dari program tersebut.
Dan lain-lain.
Salah satu contoh kasus reverse engineering dalam dunia militer adalah kejadian . Pada Desember 2011, sebuah drone RQ-170 milik Amerika Serikat dilaporkan terjatuh atau diambil alih di wilayah Iran.
Insiden ini membuka kemungkinan bagi pihak Iran untuk mempelajari teknologi canggih yang ada di drone tersebut dengan cara melakukan reverse engineering.
Iran dikabarkan telah memproduksi drone Shahed 171 Simorgh dan Shahed Saegheh berdasarkan analisis dari RQ-170.
Dari banyaknya penggunaan reverse engineering, yang akan kita fokuskan pada buku ini adalah software reverse engineering, yaitu mempelajari algoritma dari suatu software atau program.
Reverse engineering pada suatu program dapat dilakukan untuk kegiatan yang positif maupun negatif.
Banyak orang mengenal reverse engineering untuk melakukan cracking pada suatu program, seperti mendapatkan full version atau key generator untuk menghasilkan serial number yang valid agar tidak perlu membayar program tersebut kepada pengembang.
Tidak semua bentuk modifikasi program berupa crack, banyak hal positif yang dapat dilakukan, seperti:
Memperbaiki bug program.
Menambahkan fitur pada program (contoh yang sering saya temukan adalah Game Mod).
Selain hal positif, terdapat juga hal negatif pada modifikasi program seperti menambahkan malware (malicious software) ke dalam suatu aplikasi.
Banyak program legal yang diketahui menginstal rootkit pada perangkat pengguna.
Rootkit adalah malware yang dirancang untuk menyembunyikan keberadaan program atau aktivitas tertentu di dalam sistem komputer.
Berikut adalah contoh kasus rootkit pada program komersial:
Selain itu, berbagai perangkat seperti router dan IoT perlu di-reverse engineering untuk mengetahui cara kerjanya. Mengingat banyaknya kasus rootkit yang terjadi serta adanya perang teknologi dari negara besar seperti Amerika Serikat dan China, kita perlu bersikap skeptis.
Exploit (atau eksploitasi) yang dimaksud dalam pembahasan ini adalah sebuah teknik atau kode yang memanfaatkan celah atau kelemahan yang ada pada suatu sistem.
Dalam dunia Cyber Security, terdapat istilah binary exploitation. Binary Exploitation adalah proses mencari dan memanfaatkan celah di program biner (kode yang sudah dikompilasi) untuk mendapatkan akses atau kontrol yang tidak seharusnya.
Untuk mengetahui adanya celah pada suatu binary program yang tidak diketahui source code-nya, kita harus melakukan reverse engineering.
Sebagai contoh, eksploitasi pada OS komersial seperti Windows dan iOS (closed-source software) pasti dihasilkan dari reverse engineering.
Ketika membuat eksploitasi untuk open-source software, terkadang kita butuh melakukan reverse engineering untuk memastikan berbagai address yang dihasilkan compiler.
Ketika melakukan pentest, seringkali kita menemukan aplikasi yang diproteksi oleh berbagai mekanisme keamanan. Misalnya, aplikasi web sering mengimplementasikan enkripsi parameter data dan HMAC signature untuk menghambat percobaan parameter tampering. Proses enkripsi dan pembuatan HMAC ini biasanya dilakukan di Javascript yang telah di-minify dan di-obfuscate. Oleh karena itu, pentester perlu melakukan reverse engineering pada Javascript tersebut untuk mengetahui alur enkripsi dan HMAC, sehingga dapat melakukan tampering dan membuat script untuk automation testing.
Hal serupa juga sering diterapkan pada aplikasi Android, ditambah lagi adanya pengamanan SSL pinning serta RASP. Dalam kondisi tersebut, pentester tidak bisa mengandalkan script publik dan harus melakukan reverse engineering pada kode Java, bahkan pada native libary (berbentuk .so
) yang ditulis dalam bahasa C, untuk menemukan celah agar dapat mem-bypass proteksi keamanan serta memahami alur enkripsi dan HMAC.
Kerentanan tersebut memungkinkan penyerang untuk melakukan transfer uang menggunakan rekening orang lain. Yang unik adalah aplikasi ini menggunakan komunikasi melalui socket langsung, bukan HTTP/S. Jika dikonversi ke bentuk HTTP, data yang dikirim kurang lebih terlihat seperti berikut:
Dari contoh kasus ini, jika pentester tidak memiliki kemampuan untuk melakukan reverse engineering, tentu temuan kritis seperti ini pasti akan terlewat.
Itulah beberapa gambaran betapa pentingnya reverse engineering dalam kegiatan pentest, tidak hanya pada aplikasi web dan mobile, tetapi juga pada aplikasi Windows (binary .exe
) dan platform lainnya.
Berbagai file yang terkena ransomware berhasil didekripsi karena ada kelemahan dalam enkripsinya, ini bisa ditemukan dengan ilmu reverse engineering (dan tentunya ilmu kriptografi).
Setelah diteliti oleh para ahli keamanan, diketahui terdapat kelemahan untuk memecahkan enkripsi tersebut dan mengembangkan tool dekripsi yang memungkinkan korban untuk mendapatkan kembali file mereka tanpa membayar tebusan.
Berbagai protokol komunikasi aplikasi komersial berhasil dibongkar lalu diimplementasikan ulang dalam bentuk open-source software.
Misalnya, aplikasi WhatsApp tidak menggunakan HTTP/S untuk berkomunikasi dengan server, melainkan menggunakan protokol khusus yang berjalan di atas koneksi TCP (awalnya berbasis XMPP yang telah dimodifikasi).
Sebagai contoh menarik, Pak pernah menemukan kerentanan IDOR pada sebuah aplikasi mobile yang dilindungi oleh SSL pinning, enkripsi khusus dan HMAC signature. Pengujian dilakukan dengan metode black-box (tanpa informasi internal mengenai target).
Salah satu contoh kasus adalah . Ransomware ini menargetkan komputer para gamer, mengenkripsi file korban dan meminta tebusan sebesar $500 untuk mendapatkan kunci dekripsinya.
Salah satu contoh dari hasil reverse engineering protokol WhatsApp dan implementasinya dalam open-source software adalah .