LokiBot Dopo un Decennio: Analisi di una Campagna Recente
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
LokiBot è un infostealer di lunga durata progettato per raccogliere credenziali da browser, portafogli di criptovalute e altre applicazioni sensibili. Questa campagna recente si basa su una catena di esecuzione multi-fase che inizia con un allegato JScript offuscato consegnato tramite malspam. Il malware utilizza l’iniezione di processi e il hashing delle API per ridurre la visibilità mentre invia i dati rubati alla sua infrastruttura di comando e controllo.
Indagine
L’indagine ha esaminato un campione multi-fase di LokiBot e ha tracciato la sua progressione da un allegato JScript a un caricatore PowerShell, poi a un iniettore .NET, e infine al payload LokiBot. Gli analisti hanno identificato l’uso di protezione ConfuserEx, decriptazione basata su XOR e tecniche di caricamento riflettente in tutta la catena. Lo studio ha anche descritto l’approccio personalizzato del malware al hashing delle API e un metodo di persistenza basato su registro difettoso.
Mitigazione
Le organizzazioni dovrebbero implementare un robusto filtro email per bloccare gli allegati JScript malevoli e il malspam prima della consegna. Monitorare processi figlio sospetti generati da wscript.exe and powershell.exe è altrettanto essenziale. Inoltre, limitare l’esecuzione di assembly .NET non attendibili e osservare cambiamenti insoliti nelle chiavi di Windows Run può aiutare a ridurre l’esposizione.
Risposta
Se LokiBot viene rilevato, isolare immediatamente l’endpoint colpito per fermare ulteriori furti di dati e comunicazioni di comando e controllo. Gli investigatori dovrebbero eseguire un’analisi forense per determinare il punto di ingresso originale e valutare l’entità del compromesso delle credenziali. Tutti gli account accessibili dall’host infetto dovrebbero subire un reset completo della password, e l’ambiente dovrebbe essere scansionato per artefatti JScript e PowerShell correlati.
Flusso dell’Attacco
Rilevamenti
Punti di Possibile Persistenza [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizza
La Possibilità di Esecuzione Attraverso Linee di Comando PowerShell Nascoste (via cmdline)
Visualizza
LOLBAS WScript / CScript (via process_creation)
Visualizza
Stringhe PowerShell Sospette (via powershell)
Visualizza
Comunicazione LokiBot C2 via Richiesta HTTP [Connessione di Rete di Windows]
Visualizza
Rilevamento dell’Iniezione di Processo LokiBot via aspnet_compiler.exe [Creazione di Processo di Windows]
Visualizza
Rileva l’Esecuzione di LokiBot tramite Script PowerShell Base64 e Caricamento di Assembly .NET [Windows Powershell]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere superato.
Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTPs identificate e mirano a generare l’esatta telemetria attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrativa & Comandi di Attacco: L’avversario ha ottenuto con successo l’accesso iniziale tramite un file JScript. Per evitare di lasciare un
.dllrilevabile sul disco, eseguono un comando PowerShell che contiene una stringa codificata in Base64. Questo script, una volta decodificato, utilizza la.NET Reflectioncapacità di richiamare[System.Reflection.Assembly]::Loadper estrarre un payload malevolo direttamente nella memoria del processo corrente. Questo approccio “senza file” è un tratto distintivo di LokiBot. -
Script di Test di Regressione:
# Script di Simulazione LokiBot # Questo script è progettato per corrispondere esattamente alle stringhe definite nella regola di rilevamento. # 1. Simulare il componente Base64 $encodedCommand = "Script PowerShell codificato in Base64" $dummyPayload = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("DummyPayload")) # 2. Simulare il componente di Caricamento dell'Assembly usando la stringa esatta dalla regola di rilevamento # Usiamo un try/catch perché questa è una simulazione e il "payload" non è un assembly reale. try { Write-Host "Esecuzione della fase codificata..." Write-Output $encodedCommand # Questa linea è il trigger principale per la regola di rilevamento $trigger = "[System.Reflection.Assembly]::Load" Write-Host "Tentativo di caricamento dell'assembly via: $trigger" # Lo chiamiamo tramite Invoke-Expression per assicurarci che appaia nel TextBlockScrittura Invoke-Expression "Write-Host 'Innescando: $trigger'" } catch { Write-Error "La simulazione non è riuscita ad eseguire la stringa del trigger." } -
Comandi di Pulizia:
# Nessuna modifica permanente viene apportata dallo script di simulazione. # Semplicemente sgombrando la console e assicurandosi che non esistano processi residui. Clear-Host Write-Host "Pulizia della simulazione completata. Nessun file è stato lasciato."