Reverse Engineering?

CDEF Podcast Episode 8

Sabtu kemarin (21 September 2019), saya mendapat undangan dari teman-teman CDEF (Cyber Defense Indonesia) Community untuk sharing dalam Live Streaming Podcast rutin mereka. Tema yang diangkat adalah Reverse Engineering and Malware Analysis. Selain saya ada narasumber lain yaitu Mas Iqbal Muhardianto yang menjabat sebagai Staff IT di Kementrian Luar Negeri yang saat ini tinggal di Singapore. Saat melakukan live streaming ini, saya, Digit Oktavianto dan juga Ritchie Fergindo berada di kediaman Mas Iqbal di Singapore. Live Streaming Podcast tesebut juga dipandu oleh Thomas Gregory (Spentera), Sida Nala Rukma (Korelasi Persada Indonesia), Ritchie Fergindo (Horangi), dan Digit Oktavianto (Mitra Integrasi Informatika) yang sekaligus kolega saya di tempat saat ini saya bekerja.

Bagi yang berminat dengar podcast, bisa langsung klik Spotify CDEF Indonesia.

Di awal diskusi, kami membahas terminologi dasar dan pengenalan Reverse Engineering serta Malware Analysis. Audience pun tak kalah antusias dengan memborbardir beberapa pertanyaan melalui chatbox Youtube Live Streaming. Intinya sih tentang bagaimana pengalaman reversing dan memulai terjun di dalam bidang ini.

Karena menarik, saya akan tuliskan poin-poin penting pertanyaan tersebut.

Reverse Engineering itu digunakan dimana aja sih?

Ada banyak sih. Terutama untuk forensic (malware analysis) dan exploit development.

Di forensic kebanyakan tujuannya buat tau perilaku malware dan dampaknya. Ujung-ujungnya bikin IOC (Indicator of Compromise). Tapi ketika menjumpai sebuah malware yang khusus menyasar suatu instansi, kita perlu lebih deep sampai, misal, mencari actor 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 bikin crack, bikin bot, dsb #eh

Tahapan buat reversing apa aja sih?

Ada beberapa tahapan memang dalam reversing. Dan bergantung kepada target yang kita hadapi. Umumnya sih begini:

  • pertama, identifikasi dulu target itu seperti apa. Dibikin pake framework apa, bahasa apa, library apa, dsb. Masing-masing punya karakteristik sendiri sehingga butuh taktik yang berbeda pula.
  • kedua, tentukan fokus yang diinginkan, mau reverse bagian apa? misal di malware bagian payload dan self-defense yang banyak dibahas. Bagaimana dia evade produk endpoint security, misalnya. Kalo bukan malware ya tinggal disesuaikan aja, misal bagian otentikasi serial number.
  • ketiga, buat gambaran kasar proses yang terjadi di sana (bagian yang kita pengen ketahui). Seandainya kita jadi programmer makhluk itu, bagaimana kita akan implementasikan. Gak perlu terlalu spesifik atau detail membayangkannya. Kita cuman 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 apa aja yang dibutuhkan?

Tergantung dari target yang mau dibongkar.

Disassembler (+decompiler):

  • IDA Pro
  • Radare2 (+ cutlas sebagai GUI)
  • GHIDRA
  • JEB2 (untuk android)

Debugger

  • x64dbg
  • Ollydbg
  • Immunity Debugger

Dynamic Binary Instrumentation:

  • Frida

Behavior analysis:

  • Cuckoo Sandbox (bisa cari bukunya Digit Oktavianto dan Iqbal M. di Amazon hehe)

Dalam kasus tertentu kadang kita perlu analisis lebih deep. Ke level kernel misalnya. Karena hari sebelumnya (Jumat, 20 September 2019) kami mengikuti CRESTcon, kami mengetahui tools baru seperti eBPF. Kami belum pernah pakai sih tapi tampaknya patut untuk dicoba.

Selain itu ada juga tools yang bisa digunakan seperti:

  • Regshot (membandingkan snapshot registry)
  • Process Explorer
  • Burp Suite (analisis request yang dikirim) + proxifier (memaksa aplikasi mengirim request via interceptor proxy)

dll.

Kalo referensi yang bagus, apa aja?

Ada banyak sumber, seperti online course, buku (cetak / pdf), dan channel youtube.

Course:

Youtube Channel:

Book

  • “Beginners.RE” karya Dennis Yurichev. https://beginners.re/
  • “The IDA Pro Book — Unofficial Guide” karya Chris Eagle
  • “Practical Reverse Engineering” karya Bruce Dang, Alexandre Gazet, Elias Bachaalany
  • “Reversing — Secret of Reverse Engineering” karya Eldad Eilam
  • “Practical Malware Analysis” karya Michael Sikorski, Andrew Honig

Kalo menekuni Reverse Engineering, ambil sertifikasi apa?

Sebenernya sertifikasi itu gak wajib. Tapi kalau memang mau terjun dan berkarir dalam bidang Reverse Engineering, nggak ada salahnya ambil sertifikasi.

Ada beberapa sih, seperti eCRE dari eLearnSecurity dan GREM dari SANS. Kalo eCRE membahas Reverse Engineering secara general. Sementara GREM membahas Reverse Engineering yang memfokuskan pada Malware.

Untuk di Indonesia sendiri profesi yang benar-benar memanfaatkan Reverse Engineering itu jarang. Biasanya sebagai kompetensi tambahan seorang konsultan cyber security. Tapi kalau di luar ada lowongan-lowongan khusus untuk orang yang berkecimpung di bidang reverse engineering. Dan jarang yang mematok harus punya sertifikat. Tapi gak ada salahnya juga kalau punya hehe.

Demikian post dari saya untuk pembahasan kali ini, sampai jumpa di postingan berikutnya, dan jangan lupa Follow Medium MII Cyber Security!

See You!

--

--