Skip to main content

Yuk belajar reverse engineering malware windows, jangan cuma bisa makai doang ⚆ _ ⚆ (day 44)

Konten yang diberikan dalam post hanya bertujuan untuk edukasi tidak untuk dipakai buat menyebabkan kerusakan sebuah sistem. Taati hukum dan jadilah orang yang pintar !

Untuk temen-temen yang berkecimpung atau baru masuk di dunia kemanan komputer pasti pernah dengan istilah Trojan atau RAT (Remote Access Trojan) ?



Jadi ini program termasuk dalam kategori malware, Uniknya dari trojan adalah malware tipe ini melakukan kamuflase agar terlihat mirip dengan program yang terlihat tidak berbahaya. Konsep ini diambil dari cerita kuda perang troya. Jika Trojan masuk ke dalam komputer anda, hacker bisa mengambil alih komputer anda dari jarak jauh dan data-data anda dapat di ambil atau dicuri oleh mereka.
 
Lebih berbahaya nya lagi sekarang program trojan bisa dibuat secara otomatis oleh siapapun asalkan ada alatnya, contohnya seperti:
  • Prorat
  • Sub7
  • Netbus
  • Raptor
Pemakaiannya pun sendiri sangat mudah cuma bermodalkan klik dan kursor mouse bahkan "script kiddie" sendiri pun bisa memakai ini.


Oleh karena itu dalam kesempatan ini saya akan mencoba melakukan reverse engineering program RAT yang di buat oleh satu alat yang sudah disebutkan. Saya memilih prorat karena ini alat yang sering dipakai di beberapa tutorial di luar sana.

Agak sedikit miris waktu saya mencari tutorial sekitaran tentang malware lebih banyak blog yang ngasih tutorial cara bikin malware dengan alat-alat ini ketimbang analisa malware nya agar bisa dipakai buat mitigasi.

Persiapan:

Untuk melakukan analisa saya punya 2 VM windows yang sudah di buat snapshot dan jaringannya sudah diisolasi agar tidak terjadi apa-apa yang tidak diinginkan.


VM 1 (ATTACKER) : 192.168.56.107 => cuma dipakai buat bikin RAT
VM 2 (VICTIM): 192.168.156.108 => target kita dan analisa kita akan berjalan disini

Seperti yang sudah dikatakan sebelumnya pemakaian alatnya sendiri sangat mudah anda hanya perlu melakukan konfigurasi sedikit seperti dibawah ini:



biar lebih meyakinkan saya gabung kan trojannya dengan gambar dari windows. Kalau dijalankan di komputer target akan keluar seperti dibawah:



kalau sudah dieksekusi program Trojan akan membuka port 5110 dan kita tinggal melakukan koneksi ke target kita.



oke cukup simple kan ? saya tidak akan membahas lebih jauh tentang pembuatannya karena itu bukan tujuan dari materi hari ini.

Analisa:

Mari kita mulai analisanya, pertama-tama saya baru sadar bahwa sebelum file trojan di eksekusi file nya basih bertipe .exe tapi setelah dieksekusi dia akan berubah menjadi .jpg.


jadi kita fokus ke file .exe sebelum berubah ke .jpg


Oke saya langsung aja taruh file .exe nya ke ghidra buat dia analisa tetapi waktu saya analisa tidak banyak hasil yang dikeluarkan oleh alatnya.




saya coba liat strings dan function tetapi tidak banyak memberikan informasi ke saya. Saya lanjut saja taro di radare2 dan immunity debugger siapa tahu ada sesuatu yang bisa ditangkap oleh mereka.

Tapi hasilnya sama seperti ghidra, tidak terlalu banyak komponen file malware yang bisa dianalisa dan komponen nya sendiri tidak memberikan informasi lebih jauh tentang malwarenya.

Kecuali immunity debugger, debugger ini memberikan sebuah peringatan bahwa kodenya termasuk yang "self-modifying"


Karena peringatan ini saya mulai curiga kalau programnya sendiri itu mungkin sudah di modifikasi oleh packer. Saya tes hipotesis nya dengan menaruh programnya di virus total dan ternyata benar !


virustotal mengkategorikan malware ini memakai packer "fsg" dan kita bisa tes dua kali lagi dengan memakai alat PEid.


 bagusnya pake PEid ini adalah programnya sendiri sudah ditambahkan alat untuk melakukan unpacking jadi kita bisa dapat source code yang asli.


hmmm tetapi sepertinya kita kena error kalau coba unpack kodenya



Error ini sebenernya terjadi karena peid ngga punya plugin yang cocok untuk unpack fsg kita tinggal cari saja .dll libary fsg biar bisa dipakai oleh PEid.

nyari di internet dapat link nya: https://www.softpedia.com/get/Programming/Other-Programming-Files/Unpacker-for-FSG.shtml

masukan .dll nya ke folder plugins nya direktori peid


Kita tinggal buka lagi PEid nya dan yeaa! kita berhasil dapetin program aslinya.



Kalau kita buka kembali binarinya di immunity debugger dapat di cek bahwa lebih banyak functions dan library yang bisa kita analisa.

Sebelum:


Sesudah:


Anda dapat melakukan cara kedua yaitu memakai plugin ollydump (http://www.openrce.org/downloads/details/108/OllyDump) yang ada di ollydbg (http://www.ollydbg.de/download.htm).

pastikan .dll ollydump sudah dimasukan kedalam direktori ollydbg.


untuk melakukan proses ekstraksi packer saya mengikuti konten di website ini (https://www.aldeid.com/wiki/Category:Digital-Forensics/Computer-Forensics/Anti-Reverse-Engineering/Packers/FSG)

pertama-tama kita perlu mengetahui dimana OEP (original entry point) yang ada dalam kode tersebut.

Secara simpel OEP adalah lokasi dimulai nya eksekusi kode program yang sebenarnya yang dikeluarkan oleh packer. Packer bekerja dengan melakukan teknik kompresi pada kode di program untuk menghindari deteksi antivirus dan saat program dijalankan packer akan membuka kompresi agar program bisa berjalan dengan baik secara runtime.jadi satu2nya cara untuk mendapatkan kode yang sebenarnya kita harus melakukan di memori os.


source: https://securingtomorrow.mcafee.com/blogs/enterprise/malware-packers-use-tricks-avoid-analysis-detection/

Jika kita menemukan OEP otomatis kita mendapatkan kode assembly asli dari file malware ini. Ollydmp memudahkan kita untuk melakukan proses ini


Kita buka file malware yang masih dalam kondisi terkompresi kedalam ollydbg dan akan mengeluarkan warning yang sama dengan immunity debugger.


Pergi ke plugin > ollydump > Find OEP by Section Heap (Trace over) olly akan melakukan penelusuran dalam binari untuk mencari bagian dimana sebelum melakukan unpacking


Setelah ditemukan pilih klik kanan di alamat yang ollydbg berhenti dan pilih Analysis > Analysis code


yess kita dapat kode program yang asli sisanya kita tinggal dump saja seperti di bawah.



(ollydbg nya jangan ditutup dulu)

Jangan bersenang hati dulu karena ini baru setengah dari perjalanan. Jika anda menjalankan program yang baru kita dumped akan keluar error.



Kamu akan mendapatkan error saat menjalankan file dump dari ollydump atau PEid. kenapa ini bisa terjadi ?

itu karena kode disassembly yang kita dapat masih belum memiliki IAT (Import Address Table) yang benar. Program windows (PE) menggunakan IAT untuk mengetahui letak import function (DLL) yang dibutuhkan program di memori.

Packer pada umumnya akan mengubah IAT pada program yang asli untuk mempersulit proses reverse engineering, beberapa teknik yang sering dipakai adalah:
  • IAT redirection
    • cara ini cukup simpel, packer akan memakai proxy setiap pemanggilan fungsi dalam kode program
Packet Program -> Proxy -> API Functions
  • Simple Redirection
    • cara ini dilakukan dengan mengubah (overwrite) semua fungsi di program menjadi pointer yang menunjuk ke bagian kode protektor (bagian kode yang mencegah tampering, contoh: ASProtect, Themida and Armadillo)
  • Function entry emulation
    • cara ini diterapkan dengan menambahkan beberapa kode sampah sebelum pemanggilan fungsi program yang sebenarnya, contoh:
 A -> fungsi () (sebelum packed)
A->B->C-> fungsi () (setelah packed)
  • API Emulation
    • cara paling greget menurut saya, program packer sendiri akan membuat emulasi API yang berjalan seperti API biasa.

agar program dapat memiliki IAT yang dibutuhkan kita dapat menggunakan dua alat ini yaitu ImpREC atau LordPE

Dalam post ini saya akan memakai ImpREC (karena banyak blog yang merekomendasikan ini daripada LordPE yang dianggap sering bermasalah)

ImpREC: https://tuts4you.com/download/415/
LordPE: https://www.softpedia.com/get/Programming/File-Editors/LordPE.shtml

buka ImpREC dan pilih proses debugging program kita sebelumnya



nah sebelum klik "Get Imports" kita harus mengubah isi dari OEP dengan nilai alamat yang kita temukan di ollydbg 00401690


Jika OEP yang kita masukan benar ImpREC akan mengimport IAT yang dibutuhkan oleh program. Klik "Fix Dump" agar ImpREC menambahkan IAT ke program yang sebelumnya di "Unpacked".



hasilnya akan mengeluarkan satu file baru yang memiliki IAT yang benar


Jika kita jalankan akan mengeluarkan tingkah laku seperti ini:


sama seperti sebelumnya programnya akan mengeluarkan sebuah gambar dan membuka backdoor tetapi karena kita sudah melakukan ekstraksi dari packer dan gambar yang disisipi maka gambar akan kosong.

Oke! sampai sini saja selanjutnya kita akan coba membongkar lebih dalam lagi alur dari malware nya dengan memakai debugger.

Referensi:
https://www.corelan.be/index.php/2011/12/01/roads-iat/
http://www.openrce.org/blog/view/1135/Basic_tutorial_about_how_to_dump_a_process_and_update_the_IAT_using_Immunity_Debug,_LordPE,_and_ImpRec
https://reverseengineering.stackexchange.com/questions/72/unpacking-binaries-in-a-generic-way/91#91
http://sandsprite.com/CodeStuff/Understanding_imports.html

Comments

Popular posts from this blog

Having fun analyzing nginx log to find malicious attacker in the net (ง'̀-'́)ง (day 37)

  What makes you sleepless at night? is it because of a ghost or scary stories? is it because you have an important meeting tomorrow? or is it because you have an exam? For me, what keeps me up all night is that I keep thinking about what happens to a website that I just created, is it safe from an attacker (certainly not) or did I missing some security adjustments that lead to vulnerability? well I'm not the best secure programmer in the world, I'm still learning and there is a big possibility that I can make a mistake but for me, a mistake can be a valuable investment to myself or yourself to be better so from this idea, I want to know more about what attackers casually do when attacking a website. Here in this post, I'm going to show you how I analyzed attack to the website that I have permission to design and also some interesting findings that I could get from the analysis Background: All of this analysis comes from the traffic that is targeted to th

Utilize Pwntools for crafting ROP chain :') (day 69)

who doesn't like pwntools? it is a very versatile tool and can be customized according to our need using the python script but did you need to know that pwntools itself can help us to automatically craft a rop chain for us? so in this post, I will show you how to make rop chain less painful and make pwntools do all the heavy lifting. To demonstrate this I will use the binary challenge callme 64 bit from ropemporium link: https://ropemporium.com/challenge/callme.html Crashing the app: Like any other exploitation process, we need to crash the program by generating a long string pattern to determine the offset. based on the information from the above figure we can see that we required to provide 40 bytes of offset Fun stuff: now this where the fun stuff began write the following python script: as in the guideline of the challenged said we need to chain the function call by first to call the callme_one function, callme_two function and then callme_three funct

WriteUp PWN tarzan ROP UNICTF ಠ_ಠ (day 61)

So in this post, I'm going to talk about how to solve the Tarzan pwn challenge from UNICTF 2019. Back in the day when the competition is still going I couldn't finish it and don't have any clue to solve this but this time I was able to finish it :) Also in this post, we will be going to be heavily focused on how to utilize pwntools to construct a ROP chain. If you kinda confused about my explanation in this post you can refer to this following youtube video, link: https://www.youtube.com/watch?v=gWU2yOu0COk I build the python script based on this video Ok, let's get started! In this challenge, you will get two binary first go with tarzan and libc-2.29.so by providing .so file it tell us what version library that the target machine is using this could help us to do ROP chain. first, we run the Tarzan binary to get the basic idea of the program work and as you can see it just show you some text, newline and when you try to input something it doesn't gi