Scripting Lua: Command and Scripting Interpreter - Lua (T1059.011)

Lua è un linguaggio di scripting leggero, multipiattaforma e progettato principalmente per l'integrazione in applicazioni host. La sua sintassi minimale, la piccola footprint dell'interprete e l'ampia adozione in videogiochi, apparati di rete e software embedded lo rendono un vettore attraente per gli attori malevoli.

La tecnica T1059.011 ricade sotto la tattica TA0002 (Execution) del framework MITRE ATT&CK e descrive l'abuso di comandi e script Lua per eseguire codice arbitrario sul sistema bersaglio. Gli avversari possono invocare l'interprete stand-alone lua, distribuire file .lua insieme al payload principale, oppure sfruttare interpreti Lua già embedded in applicazioni legittime tramite la struttura lua_State. In alcuni casi documentati l'attaccante sostituisce direttamente l'interprete legittimo con una versione trojanizzata.

Nella kill chain, Lua compare tipicamente nelle fasi di Execution post-delivery e come componente di Command and Control, dove funge da layer di scripting sopra impianti nativi. I dati MITRE registrano cinque famiglie malware che ne fanno uso — inclusi Remsec, EvilBunny, PoetRAT, Line Runner e il più recente RedLine Stealer che sfrutta bytecode Lua compilato — segnalando una tecnica trasversale a operazioni di cyber-espionaggio, targeting di apparati di rete e criminalità finanziaria. L'assenza di monitoraggio nativo su interpreti non-Microsoft rende Lua un'opzione low-noise per bypassare controlli focalizzati su PowerShell o Bash.

In un ingaggio red team, l'abuso di Lua offre un vettore di esecuzione poco monitorato rispetto a PowerShell o Bash. La prima decisione operativa riguarda la modalità di consegna: interprete stand-alone, script embedded in applicazione host, oppure bytecode precompilato con luac per offuscare la logica.

Su Windows, il setup di laboratorio parte dal download dell'interprete ufficiale dal sito lua.org (open source, licenza MIT) o dalla distribuzione LuaJIT (open source), particolarmente rilevante perché più performante e presente in molti prodotti commerciali. Un payload di test si esegue con:

lua.exe payload.lua

Per emulare tecniche osservate in PoetRAT, si può stagionare l'interprete in una directory user-writable insieme allo script e triggerare l'esecuzione via Scheduled Task o LNK file. L'uso di luac per compilare in bytecode (luac -o payload.luac payload.lua) simula quanto fatto da RedLine Stealer, complicando l'analisi statica.

Su Linux, l'interprete è tipicamente disponibile via package manager (apt install lua5.4 o lua5.4 dal repository). Un red teamer può testare esecuzione da percorsi non standard per valutare la copertura EDR:

/tmp/.cache/lua -e 'os.execute("id")'

La funzione os.execute() e io.popen() rappresentano le API più abusate per shell-out verso comandi di sistema. Per test di persistenza, l'inclusione di uno script Lua in cron o systemd unit permette di verificare la telemetria di logging.

Su macOS, Lua non è preinstallato ma è ottenibile via Homebrew (brew install lua, open source). Utile testare esecuzione con parent process differenti (Terminal, LaunchAgent, applicazione Cocoa che embedda Lua) per valutare la baseline del difensore.

Per apparati di rete, alcuni firewall e router (MikroTik RouterOS, alcuni Cisco IOS-XE) supportano scripting Lua nativo o via moduli. La simulazione richiede lab virtualizzato con immagini legittime; l'iniezione di script tramite API di configurazione emula il pattern osservato in Line Runner.

Per offuscamento avanzato, tool come luaobfuscator (freemium) o loader custom che decodificano bytecode a runtime permettono di stressare pipeline di analisi. Documentare hash SHA-256 di ogni artefatto, timestamp di esecuzione e output SIEM è essenziale per il purple team debrief.

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

Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo

TEST GRATUITO
2 minuti · 7 domande Che professionista cyber sei? Scopri il profilo più vicino al tuo modo di pensare e inizia dal percorso giusto.