Apa itu teknik reverse enginering

Salah satu hal yang ditakutkan oleh sejumlah orang, khususnya para pengusaha adalah cyber attack yang dapat menyerang sistem mereka. Cyber attack adalah sebuah bentuk penyerangan yang menargetkan sistem pada komputer dengan tujuan untuk mengakses data pada sebuah sistem. Perusahaan pastinya akan mengalami kerugian yang besar apabila datanya diretas oleh pihak yang tidak bertanggung jawab. Maka, perlu sebuah solusi untuk mengatasi permasalahan tersebut agar tidak selamanya perusahaan mengalami kerugian. Sehingga, ditemukan sebuah solusi yaitu, melakukan reverse engineering pada software mereka. Reverse engineering adalah sebuah proses untuk melihat kembali sebuah program secara seksama dan detail. Proses ini seringkali dilakukan oleh pihak ketiga yang tidak terjun langsung untuk membuat code.

Reverse engineering dilakukan untuk menganalisis dan mendapatkan pengetahuan tentang cara kerja sesuatu. Namun, juga sering digunakan untuk melihat kelemahan sebuah program ataupun bug yang terjadi, dan menemukan sistem yang rentan untuk diserang. Serta, menganalisis sebuah sistem pemulihan yang selanjutnya dapat digunakan untuk melindungi dari penyerangan.

Cara Kerja Reverse Engineering

Apa itu teknik reverse enginering
Photo by searchsoftwarequality.techtarget.com/definition/reverse-engineering

Terdapat tiga tahap untuk melakukan reverse rReverse engineering adalah sebuah proses yang memiliki cara kerja, terdapat tiga tahap untuk melakukan reverse engineering, yaitu:

1. Information Extraction

Objek yang akan dilakukan reverse engineering akan dipelajari ulang desain sistem nya seperti bagaimana informasi di extract dari sistem. Nantinya informasi yang didapat akan digunakan untuk menentukan bagaimana kecocokan antara setiap sistem. Dalam reverse engineering di software, proses ini mungkin saja memerlukan pengumpulan source code dan dokumen mengenai desain sistem untuk dipelajari lebih lanjut. Implementasi proses ini bisa saja melibatkan penggunaan alat seperti disassembler untuk membagi program menjadi beberapa bagian kecil.

2. Modelling

Setelah pada tahap sebelumnya informasi dikumpulkan, pada tahap ini semua informasi yang telah dikumpulkan akan diubah ke dalam bentuk model konseptual. Masing masing bagian dari model akan menjelaskan fungsi dari sistem. Tujuan proses ini dilakukan adalah untuk mengambil informasi yang spesifik dari sistem asli lalu diubah ke dalam model umum. Nantinya model tersebut  dapat digunakan untuk membuat sistem baru atau kegunaan lain yang berhubungan dengan keamanan sistem. Pada reverse engineering di software, proses ini memberikan output berbentuk data flow diagram.

3. Review

Pada proses ini akan dilakukan peninjauan kembali terhadap model yang telah dibuat serta mengujinya dengan berbagai skenario untuk memastikan model yang dibuat telah sesuai dengan sistem asli. Nantinya setelah model diuji dengan skenario dan memberikan hasil yang baik, maka model dapat diimplementasikan untuk menggantikan sistem asli yang telah ada.

Dengan melakukan ketiga proses tersebut, maka reverse engineering bisa dilakukan pada sistem yang ingin diuji sehingga meningkatkan keamanan dan juga kinerja dari sistem.

Contoh Reverse Engineering

Reverse engineering adalah sebuah proses yang memiliki banyak variasi tergantung pada apa yang diterapkan dan tujuan penggunaan dari reverse engineering itu sendiri, berikut beberapa contoh implementasi dari reverse engineering:

1. Software

Apa itu teknik reverse enginering
Photo by apriorit.com/dev-blog

Terdapat beberapa contoh dimana reverse engineering digunakan untuk membongkar software yang telah dibuat. Contoh umumnya adalah dengan mereka ulang sebuah source code yang telah hilang dan mempelajari bagaimana program melakukan sebuah proses tertentu. Namun juga bisa digunakan untuk  meningkatkan kinerja serta memperbaiki bug yang ada. Salah satu area lain dimana reverse engineering digunakan pada software adalah apabila ditemukannya malware atau dikenal dengan malicious software. Malware adalah software berbahaya yang dibuat untuk melakukan aksi kriminal. Pelaku seringkali membuat blur code mereka untuk menjaga agar kode berbahaya yang dibuat oleh mereka tidak ditemukan oleh pemilik software. Pemilik software yang terinfeksi malware dapat melakukan reverse engineering untuk mengidentifikasi virus virus yang ada pada perangkat. Terdapat fakta menarik dimana badan intelijen pertahanan US mengatakan bahwa mereka bermaksud untuk menggunakan teknik reverse engineering pada sistem keamanan mereka. Teknik tersebut digunakan untuk merekayasa balik malware yang diberikan oleh musuh untuk membuat senjata cyber mereka sendiri.

2. Computer Parts

Apa itu teknik reverse enginering
Photo by engineeredmechanicalsystems.com/how-detailed-are-reverse-engineered-parts

Reverse engineering juga dapat dilakukan pada bagian bagian hardware komputer. Salah satu contoh untuk mengimplementasikannya adalah dengan merekayasa balik sebuah prosesor yang dibeli dan kemudian menggunakan apa yang dipelajari untuk membuat prosesor sendiri. Cara ini sering dilakukan oleh banyak produsen, namun proses ini ilegal di banyak negara karena membutuhkan banyak keahlian, mahal dan juga terkesan menjiplak produk kompetitor. Namun, ada juga implementasi dari reverse engineering di computer part yang berguna untuk meningkatkan keamanan dari bagian komputer yang sudah usang.

3. Network Security Assessments

Apa itu teknik reverse enginering
Photo by securityscorecard.com/blog/what-is-network-security-assessment

Perusahaan memanfaatkan penggunaan reverse engineering sebagai salah satu alat mereka untuk melakukan penilaian terhadap network security assessment di perusahaan mereka. Nantinya perusahaan akan membagi kelompok keamanan menjadi dua tim. Satu tim akan bertindak sebagai tim penyerang yang melakukan simulasi penyerangan. Sedangkan, tim lainnya bertindak sebagai defense tim untuk memantau jaringan dan melakukan reverse engineer untuk merekayasa balik serangan dari tim lain. Nantinya, informasi yang diperoleh dari tim penyerangan akan digunakan untuk memperkuat jaringan perusahaan.

Tools dalam melakukan Reverse Engineering

Reverse engineering adalah salah satu senjata ampuh untuk memberantas cyber attack, dalam implementasinya membutuhkan beberapa tools untuk membantu dalam menerapkannya pada sistem. Berikut beberapa tools dalam melakukan reverse engineering:

1. IDA Pro

Apa itu teknik reverse enginering
Photo by secpod.com/blog/introduction-to-ida-pro

IDA Pro merupakan sebuah tool yang dianggap oleh banyak orang dalam industri sebagai sebuah reverse engineering tools yang terbaik, bukan hanya karena label harganya, tapi juga karena fitur nya yang sangat banyak. IDA Pro dapat berjalan pada beberapa platform seperti windows, macOS dan juga linux.

2. Ghidra

Apa itu teknik reverse enginering
Photo by ghidra-sre.org

Ghidra merupakan salah satu tools dalam melakukan reverse engineering yang pernah menjadi berita utama dikarenakan NSA memberitahukan framework reverse engineering mereka. Software ini bisa dijalankan pada windows, macOS dan juga linux. Ghidra memiliki beberapa fitur yang menarik seperti disassembly,assembly, decompilation, graphic, dan juga scripting. Selain itu, ghidra juga mendukung serangkaian instruksi proses dan format yang dapat berjalan pada otomatis. Program ghidra dapat disesuaikan dengan bahasa pemrograman yang digunakan dengan menulis plugin menggunakan python atau java.

3. Hopper

Apa itu teknik reverse enginering
Photo by tegakari.net/en/2018/10/hopper_disassembler

Hopper merupakan salah satu tools untuk melakukan reverse engineering untuk platform macOs dan juga linux. Hopper menyertakan SDK sehingga apabila fiturnya ingin diperluas, maka user dapat menulis filenya sendiri pada software ini. Selain itu, sebagian besar fitur software ini dapat dipanggil dari python script sehingga memberikan fleksibilitas kepada user. Untuk membuat prosedurnya mudah dipahami, ketika program dipanggil maka akan menampilkan representasi grafis dan control flow graph. File tersebut akan diekspor menjadi file PDF sehingga user bisa melihat apa saja yang terjadi pada software tersebut. Sayangnya, software hopper berbayar dengan menawarkan lisensi pribadi seharga 99 dollar dan lisensi komputer seharga 129 dollar.

Nah, itu dia segala hal mengenai reverse engineering, menarik bukan? Apabila mempelajari reverse engineering, maka kamu bisa mencegah cyber attack yang terjadi pada laptopmu. Apabila kamu ingin mengetahui jenis cyber attack yang sering terjadi di kalangan masyarakat, yuk cek artikel berikut!

Apa itu teknik reverse enginering

Bagi seorang programmer atau pengembang aplikasi, pastinya ia sudah terbiasa membuat sekumpulan script atau code – code yang hasil akhirnya nanti akan di compile menjadi sebuah aplikasi yang dapat dijalankan di komputer atau perangkat lainnya. Proses ini dinamakan Forward Engineering. Kita mungkin tidak perlu khawatir apabila aplikasi yang sudah kita buat, dapat dengan mudah di pelajari untuk tujuan negatif oleh orang lain, karna kita tidak memberikan kepadanya source code dari aplikasi tersebut. Namun, saat ini seseorang bisa saja memahami apa yang terjadi di dalam aplikasi tersebut tanpa harus membaca source code aslinya, teknik inilah yang dinamakan Reverse Engineering atau bisa disingkat Reversing.

Pengertian Reverse Engineering

Secara umum, menurut wikipedia, Reverse Engineering (dalam bahasa indonesia bisa disebut Rekayasa Balik) adalah proses penemuan prinsip – prinsip teknologi dari suatu perangkat, objek, atau sistem melalui analisis strukturnya, fungsinya, dan cara kerjanya. 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. Lalu sebenarnya apa manfaat yang bisa didapatkan dari melakukan reversing ini?  beberapa diantaranya bisa bernilai positif dan juga negatif.

  1. Memperbaiki bug / error
  2. Membuat patch aplikasi
  3. Mendapatkan data kredensial
  4. Melakukan bypass verifikasi
  5. Melakukan exploit terhadap aplikasi
  6. Menyisipkan malware/backdoor/trojan/logger dan lain sebagainya.

Biasanya reversing dilakukan 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), CTF adalah sebuah kompetisi Cyber Security yang bersaing untuk mendapatkan score tertinggi dengan cara mencari kelemahan dari suatu sistem yang sudah diberikan oleh panitia. Mengenai CTF ini mungkin lebih lengkapnya akan saya bahas di artikel mendatang.

Untuk menguasai reversing, diperlukan setidaknya beberapa pengetahuan mengenai dasar sistem aplikasi dan juga pemrograman, karna dalam hal ini, anda mungkin akan berhadapan dengan arsitektur komputer, sistem operasi, compiler dan anda juga akan sering menggunakan bahasa pemrograman assembly.

Bahasa Assembly

Bahasa Assembly atau disingkat asm adalah bahasa pemrograman tingkat rendah yang digunakan dalam pemrograman komputer, mikroprosesor, pengendali mikro, dan perangkat lainnya yang dapat diprogram.

Bahasa Assembly dibagi ke 3 bagian

  • Bagian data, digunakan untuk mendaklarasikan data dan konstan.
  • Bagian bss, digunakan untuk mendaklarasikan variabel.
  • Bagian text, digunakan untuk menyimpan kode sebenarnya.

Contoh Script :

section .text global _start ;must be declared for linker (ld) _start: ;tells linker entry point mov edx,len ;message length mov ecx,msg ;message to write mov ebx,1 ;file descriptor (stdout) mov eax,4 ;system call number (sys_write) int 0x80 ;call kernel mov eax,1 ;system call number (sys_exit) int 0x80 ;call kernel section .data msg db 'Hello, world!', 0xa ;string to be printed len equ $ - msg ;length of the string

Dasar Reverse Engineering

Pada artikel ini saya hanya akan memberikan tahapan proses atau teknik dasar yang biasanya digunakan untuk melakukan reversing.

Identifikasi File

Pada tahapan awal, terlebih dahulu kita harus mengidentifikasi jenis / tipe file yang akan kita gunakan untuk reversing, salah satunya dengan menggunakan perintah “file” di terminal.

Apa itu teknik reverse enginering

Kemudian kita bisa menggunakan perintah “strings” untuk melihat printable characters atau string yang ada pada file tersebut, terkadang hal ini berguna untuk mendapatkan informasi sensitif yang mungkin dapat membantu anda ketika melakukan reversing.

Apa itu teknik reverse enginering

Extract File

Sebuah file executable umumnya adalah file archive hasil compress dari kumpulan source code yang sudah tercompile.

Apa itu teknik reverse enginering

Contohnya pada file APK, hanya dengan menggunakan perintah “unzip” sederhana pun kita sudah bisa mendapatkan file yang ada di dalam archive tersebut.

Apa itu teknik reverse enginering

Decompile File

Decompile adalah proses untuk mengembalikan file yang sudah di compile menjadi source code aslinya. Proses decompile file ini cukup rumit, karna beberapa file executable pastinya sudah menggunakan proteksi yang bagus, sehingga akan sulit untuk melakukannya secara manual. Saat ini sudah ada beberapa tools yang menyediakan fitur decompile secara otomatis salah satunya yaitu menggunakan IDA pro, walaupun hasil source code yang berhasil di decompile mungkin tidak akan sama persis dengan source code yang dibuat oleh si pembuatnya.

Disassemble File

Disassemble adalah proses untuk membaca isi file yang sudah tercompile menjadi bahasa assembly. Proses ini sangat umum sekali dilakukan saat reversing, karna bagaimana pun assembly adalah bahasa tingkat rendah yang lebih mudah dipahami untuk menangani bahasa mesin.

Untuk melakukan disassemble file anda bisa menggunakan tools bernama GDB (GNU Project Debugger) tools ini mungkin agak sulit dipahami oleh seorang pemula yang baru saja mempelajari reversing, alternatif lainnya anda bisa menggunakan tools IDA.

Apa itu teknik reverse enginering

Ketika kita melakukan reversing kita akan menemukan berbagai macam studi case dan kita mungkin harus menggunakan teknik yang berbeda ketika menemukan file executable tertentu, untuk menguasai nya kita harus lebih banyak praktek dan terus mempelajarinya. Sekian dari saya, mohon dikoreksi apabila terdapat kesalahan pada apa yang saya sampaikan. Terima Kasih

Referensi :

en. wikipedia .org/wiki/Reverse_engineering

yohan .es/reverse-engineering/

en. wikipedia .org/wiki/Assembly_language

www. tutorialspoint .com/assembly_programming