Reverse Engineering adalah teknik yang ampuh untuk pengembang software apa pun. Tetapi seperti halnya alat, itu semua tergantung pada orang yang menggunakannya. Kali ini kita akan membahas apa itu Reverse Engineering di dunia cyber security.
Baca Juga: Apa Itu Social Engineering: Cara Kerja, Jenis, Dan Contoh
DAFTAR ISI
Apa Itu Reverse Engineering?
Reverse Engineering adalah teknik untuk mengetahui lajur dan cara kerja dari suatu program. Harapannya adalah penguji dapat mengetahui dan berharap mendapatkan flaw atau celah dari program yang dimaksud. Hal ini dilakukan dengan cara melihat source code pada program tersebut.
Pada tag “Reverse” ini semua akan mendebug program binary executable yang dicompile dengan bahasa C. Hasil reverse dari binary tersebut pasti berupa assembly. Sehingga, mau tidak mau kalian harus punya basic di bahasa assembly.
Dalam keamanan software, Reverse Engineering juga banyak digunakan untuk memastikan bahwa sistem tidak memiliki kelemahan atau kerentanan keamanan utama. Ini membantu untuk membuat sistem yang kuat, sehingga melindunginya dari peretas jahat. Beberapa pengembang bahkan meretas sistem mereka untuk mengidentifikasi kerentanan, sistem yang disebut ethical hacker. untuk mengetahui lebih lanjut bisa membaca artikel ethical hacking ini ya.
Fungsi Reverse Engineering
Dalam ilmu komputer sendiri, Reverse Engineering bisa diartikan dengan proses memahami algoritma atau struktur suatu aplikasi dan bahkan mungkin untuk mendapatkan source code dari aplikasi yang sudah berjalan atau binary / executable file. Sebenarnya Reverse Engineering memiliki beberapa fungsi tetapi beberapa diantaranya bisa bernilai positif dan juga negatif.
- Memperbaiki bug/error
- Membuat patch aplikasi
- Mendapatkan data kredensial
- Melakukan bypass verifikasi
- Melakukan exploit terhadap aplikasi
- Analisis malware
- Mencari algoritma sebuah software
- Menyisipkan malware/backdoor/trojan/logger dan lain sebagainya.
Contoh Reverse Engineering
Reverse Engineering (RE) atau rekayasa terbalik dapat diartikan sebagai prosedur dan proses dalam membongkar suatu objek untuk mengetahui bahan, cara kerja, atau teknologi yang dipakai sehingga objek tersebut bisa berfungsi dengan baik.
Orang bisa merekayasa balik berbagai macam hal, misalya kita ambil contoh paling sederhana seperti mencari tahu resep suatu masakan. Kita bisa menebak bahan, bumbu dan rempah yang dipakai dalam suatu masakan, atau bisa juga dengan melakukan riset komprehensif untuk “menguliti” rasa dan aroma dalam setiap sendoknya.
Setelah melalui proses yang panjang, akhirnya kita tahu bahwa masakan itu terbuat dari bahan utama berupa daging ayam yang direbus bersama rempah tradisional, misalnya.
Kembali pada reverse engineering, dalam konteks ini RE adalah proses bagaimana kita bisa mengetahui algoritma program atau source codenya jika memungkinkan.
Rekayasa balik software melibatkan kode mesin atau bilangan biner pada suatu program untuk dikembalikan ke sumber (kode) aslinya. Sedangkan untuk rekayasa balik pada hardware biasanya melibatkan pembongkaran pada perangkat untuk mengetahui cara kerjanya.
Misalnya, jika produsen prosesor komputer ingin melihat cara kerja prosesor dari pabrikan lain, mereka akan membeli prosesor tersebut dan membongkarnya untuk membuat prosesor mereka sendiri yang serupa atau lebih baik dari pesaingnya. Namun, proses ini ilegal di banyak negara.
Dimana Reverse Engineering Digunakan?
Biasanya reversing digunakan untuk keperluan Pentest (Penetration Testing) yaitu melakukan testing terhadap keamanan sebuah aplikasi untuk mencari kelemahan dari aplikasi itu sendiri dan biasanya juga banyak digunakan dalam sebuah kompetesi CTF (Capture The Flag).
Reverse Engineering juga sering digunakan untuk forensic (malware analysis) dan exploit development. Di forensic biasanya tujuannya untuk mengetahui perilaku malware dan dampaknya. Yang pada akhirnya harus membuat IOC (Indicator of Compromise). Tapi ketika menjumpai sebuah malware yang khusus menyasar suatu instansi, kita perlu lebih dalam menganalisanya, misalnya mencari pelaku yang terlibat.
Tapi memang biasanya ketika Incident Response, kita tidak perlu sampai dalam membongkar sebuah malware, karena fokus kita adalah kembali ke normal operation.
Sementara di exploit development reverse engineering digunakan untuk mencari celah. Bisa dengan memang membongkar produk versi tertentu. Tapi kadang kita dapat celah dengan membandingkan perbedaan (diffing) antara binary asal dan binary yang telah diperbaiki oleh vendor.
Atau bisa juga kita mendapatkan celah dari malware yang lebih dahulu memanfaatkan celah zero day tersebut. Keduanya merupakan penerapan reverse engineering yang lumrah di bagian security. Tentunya selain membuat crack, bot, dsb.
Tahapan Reverse Engineering
Ada beberapa tahapan dalam melakukan reversing. Itu semua tergantung pada target yang kita hadapi. Tetapi umumnya seperti ini:
- Pertama, identifikasi terlebih dahulu target itu seperti apa. Dibuat menggunakan framework apa, bahasa apa, library apa, dsb. Masing-masing punya karakteristik sendiri sehingga butuh taktik yang berbeda pula.
- Kedua, tentukan fokus yang diinginkan, kalian ingin melakukan reverse bagian apa? misal di malware bagian payload dan self-defense yang banyak dibahas. Bagaimana dia evade produk endpoint security, misalnya. Kalo bukan malware, kalian hanya tinggal disesuaikan saja, misal bagian otentikasi serial number.
- Ketiga, buat gambaran kasar proses yang terjadi di sana (bagian yang ingin kita ketahui). Seandainya kita jadi programmer disana, bagaimana kita akan implementasikan. Tidak perlu terlalu spesifik atau detail membayangkannya. Kita hanya perlu membuat acuan awal, supaya kita dapat mengenali kode aplikasi dengan lebih mudah.
- Keempat, trace dan baca semua kode yang relevan. Intinya baca dan pahami. Kalo belum paham, buat catatan, dan baca lagi alurnya.
Tools Reverse Engineering
Sebenarnya untuk melakukan Reverse Engineering dasar utamanya kita harus memiliki kemampuan memprogram. Sedangkan tool Reverse Engineering hanya berguna untuk memudahkan pekerjaan RE yang tadinya butuh berjam-jam bisa jadi hanya butuh beberapa menit. Ada banyak tool untuk tujuan spesifik, contohnya seperti:
Disassembler (+decompiler):
Debugger:
Dynamic Binary Instrumentation:
Kesimpulan
Jadi apa itu Reverse Engineering? Sederhananya Reverse Engineering adalah proses yang digunakan untuk mengetahui komponen dan fungsi program untuk menemukan kerentanan dalam program. Itu dilakukan dengan memulihkan desain software asli dengan menganalisis kode atau biner program.
Tujuan Reverse Engineering bisa beragam, tetapi biasanya untuk mendapatkan prinsip kerja sistem, memodifikasi sistem, dan membuat replika sistem. Reverse engineering merupakan topik paling menarik, tetapi juga butuh waktu yang sangat lama untuk mempelajarinya.
Sekian artikel Apa Itu Reverse Engineering. Nantikan artikel menarik lainnya dan jangan lupa share artikel ini ke teman-teman kalian. Terimakasih…