Esecuzione JavaScript: Command and Scripting Interpreter — JavaScript (T1059.007)

JavaScript non vive solo nei browser. In ambiente Windows, la sua implementazione JScript gira nel Windows Script Host (WSH) e si integra con il Component Object Model, le pagine HTA di Internet Explorer e decine di componenti di sistema. Su macOS, JavaScript for Automation (JXA) è uno dei soli due linguaggi supportati dall'Open Scripting Architecture di Apple, capace di controllare applicazioni, interagire con il kernel e accedere alle API interne tramite osascript e il framework OSAKit. Su Linux, Node.js trasforma JavaScript in un linguaggio server-side completo, spesso presente su web server e ambienti CI/CD.

La tecnica ricade nella tattica Execution (TA0002): l'avversario esegue codice malevolo su un sistema locale o remoto, spesso combinando l'esecuzione con tecniche di altre fasi della kill chain — esfiltrazione, movimento laterale, persistenza. I numeri confermano la pervasività: 25 gruppi APT documentati, 32 software che sfruttano JS in qualche forma, 5 campagne tracciate e 4 mitigazioni raccomandate. Dalla distribuzione di ransomware via file .js in archivi ZIP protetti da password, fino al credential harvesting con script iniettati in pagine web bancarie, JavaScript offre agli attaccanti un vettore di esecuzione cross-platform, text-based e facilmente offuscabile che continua ad essere tra i più abusati nel panorama delle minacce moderne.


La simulazione dell'esecuzione JavaScript malevola in laboratorio copre tre superfici d'attacco distinte: Windows Script Host, macOS JXA e Node.js su Linux. Ciascuna richiede un approccio specifico.

Windows — WSH e HTA

Il punto di partenza è il classico dropper via wscript.exe. Crea un file .js che istanzia un oggetto WScript.Shell e invoca un comando arbitrario. In laboratorio si può testare con un semplice callback:

wscript.exe /e:JScript C:\lab\payload.js

Per simulare la catena d'attacco documentata in numerosi gruppi — dove il JS viene scaricato ed eseguito da un file Office o HTA — si può costruire un file HTA con blocco <script language="JScript"> che esegue ActiveXObject("WScript.Shell").Run(...). L'esecuzione avviene tramite:

mshta.exe C:\lab\dropper.hta

Per replicare scenari di offuscamento, lo strumento CactusTorch (open source) genera payload JScript che deserializzano assembly .NET in memoria, una tecnica usata da diversi malware documentati. Un'alternativa per generare shellcode eseguibile via JScript è Donut (open source), che supporta output in formato JScript e JavaScript.

Per testare l'efficacia delle regole ASR, abilita la modalità audit prima di passare al block:

Set-MpPreference -AttackSurfaceReductionRules_Ids D3E037E1-3EB8-44C8-A917-57927947596D -AttackSurfaceReductionRules_Actions AuditMode

Questa GUID corrisponde alla regola ASR che impedisce a JavaScript e VBScript di lanciare contenuto scaricato.

macOS — JXA

JavaScript for Automation si testa tramite osascript con il flag -l JavaScript:

osascript -l JavaScript -e 'ObjC.import("Cocoa"); $.NSLog($.NSProcessInfo.processInfo.environment)'

Questo comando legge le variabili d'ambiente del processo corrente tramite bridge Objective-C, dimostrando l'accesso alle API Apple da JXA. Per simulare la compilazione di uno script persistente:

osacompile -l JavaScript -o /tmp/lab_agent.scpt /tmp/payload.js

L'output compilato può essere inserito in un LaunchAgent per testare la persistenza.

Linux — Node.js

La simulazione di web shell JavaScript prevede il deploy di un semplice server Node.js che esegue comandi ricevuti via HTTP. Framework come Caldera (open source, sviluppato da MITRE) includono ability specifiche per T1059.007 che automatizzano l'intera catena. In alternativa, Atomic Red Team (open source) fornisce test atomici pronti per questa sotto-tecnica, eseguibili con il modulo PowerShell Invoke-AtomicTest o in ambiente Linux.


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.