T1547.004 in MITRE ATT&CK: Winlogon-Helfer erklärt
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Der Artikel erläutert die Winlogon Helper DLL-Persistenzmethode, die als T1547.004 verfolgt wird, und zeigt, wie Gegner Winlogon-Registrierungsschlüssel manipulieren, um bösartigen Code beim Benutzerlogin zu laden. Er bezieht sich auf reale Beispiele, die mit der ToyBraker-Kampagne, KamiKakaBot-Malware und einer Probe namens Mandela.exe verbunden sind. Der Schwerpunkt liegt auf Registrierungsänderungen, die die automatische Ausführung bösartiger DLLs oder ausführbarer Dateien auslösen, wenn ein System startet oder sich ein Benutzer anmeldet.
Untersuchung
Forscher dokumentierten Angreifer, die unautorisierte Benutzerkonten erstellten und Winlogon-Registrierungswerte wie LegalNoticeText, DefaultUserName, AutoLogonCount und Shell änderten, um den Zugriff zu bewahren. Malware-Proben und Einbruchsereignisse zeigten auch die Verwendung von Befehlszeilen-Tools wie net user und reg add, um bösartige Einstellungen einzugeben und PowerShell-Payloads während des Anmeldeprozesses zu starten.
Minderung
Verteidiger sollten Änderungen an Winlogon-Registrierungsschlüsseln genau überwachen und einschränken, Kontrollen mit minimalen Rechten für die Kontoerstellung anwenden und Anwendungssteuerungen verwenden, um nicht vertrauenswürdige oder unsignierte DLLs zu blockieren. Regelmäßige Überprüfungen geplanter Aufgaben, Dienste und Startorte können weiterhelfen, nicht autorisierte Persistenzänderungen zu identifizieren.
Antwort
Wenn verdächtige Aktivitäten in der Winlogon-Registrierung entdeckt werden, sollte der betroffene Endpunkt isoliert, flüchtige Beweise erfasst und die geänderten Registrierungswerte in einen bekannten, guten Zustand zurückversetzt werden. Eine forensische Untersuchung sollte dann nach zusätzlichen Persistenzmechanismen suchen und den Host auf verwandte Malware-Komponenten scannen.
"graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef persistence fill:#c2f0c2 classDef technique fill:#ffd699 classDef malware fill:#f4a6a6 %% Node definitions action_create_account["<b>Aktion</b> – Lokales Konto erstellen<br/><b>Technik</b>: T1136.001 Konto erstellen: Lokales Konto<br/><b>Beschreibung</b>: Fügt mit dem Befehl net user einen neuen lokalen Benutzer hinzu."] class action_create_account action tool_net_user["<b>Werkzeug</b> – net user-Befehl<br/><b>Zweck</b>: Lokale Windows-Konten erstellen oder ändern."] class tool_net_user tool action_modify_registry["<b>Aktion</b> – Winlogon-Registrierung ändern<br/><b>Technik</b>: T1112 Registrierung ändern<br/><b>Beschreibung</b>: Ändert Winlogon-Schlüssel (Notify, Userinit, Shell, DefaultUserName, AutoLogonCount) über reg add."] class action_modify_registry action tool_reg_add["<b>Werkzeug</b> – reg add-Befehl<br/><b>Zweck</b>: Windows-Registrierungswerte hinzufügen oder ändern."] class tool_reg_add tool persistence_winlogon_helper["<b>Persistenz</b> – Winlogon Helper DLL<br/><b>Technik</b>: T1547.004 Winlogon Helper DLL<br/><b>Beschreibung</b>: Lädt eine bösartige DLL oder ausführbare Datei während des Benutzerlogins und ermöglicht erhöhte Ausführung."] class persistence_winlogon_helper persistence technique_T1547_004["<b>Technik</b> – T1547.004<br/><b>Name</b>: Winlogon Helper DLL<br/><b>Beschreibung</b>: Registriert eine DLL zur Winlogon-Last, die Persistenz und Privileg-Erweiterung gewährt."] class technique_T1547_004 technique malware_kamkaka["<b>Malware</b> – KamiKakaBot<br/><b>Verwendet</b>: Winlogon Helper DLL-Persistenz."] class malware_kamkaka malware malware_mandela["<b>Malware</b> – Mandela.exe<br/><b>Verwendet</b>: Winlogon Helper DLL-Persistenz."] class malware_mandela malware %% Connections showing flow action_create_account –>|verwendet| tool_net_user action_modify_registry –>|verwendet| tool_reg_add action_create_account –>|aktiviert| persistence_winlogon_helper action_modify_registry –>|aktiviert| persistence_winlogon_helper persistence_winlogon_helper –>|implementiert| technique_T1547_004 technique_T1547_004 –>|beobachtet_in| malware_kamkaka technique_T1547_004 –>|beobachtet_in| malware_mandela "
Angriffsverlauf
Erkennungen
Mögliche Persistenzpunkte [ASEPs – Winlogon/AppInit-Hives] (über registry_event)
Ansehen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER-Hive] (über cmdline)
Ansehen
Die Möglichkeit der Ausführung über versteckte PowerShell-Befehlszeilen (über cmdline)
Ansehen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER-Hive] (über registry_event)
Ansehen
IOCs (E-Mails) zur Erkennung: T1547.004 Winlogon Helper in MITRE ATT&CK Erklärt
Ansehen
IOCs (HashSha256) zur Erkennung: T1547.004 Winlogon Helper in MITRE ATT&CK Erklärt
Ansehen
Erkennung von bösartigen Änderungen in Winlogon-Registrierungsschlüsseln [Windows-Registrierungsereignis]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetry & Baseline-Pre‑flight Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Angreifertechnik (T1547.004), die entwickelt wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählungen erzeugen direkt die Telemetrie, die von der Erkennungslogik erwartet wird.
-
Angriffs-Narrativ & Befehle:
Ein Angreifer, der lokale Admin-Rechte erlangt hat, will Persistenz über Neustarts hinweg. Er wählt das klassische Winlogon „Shell“-Hijack, weil es vor dem Laden des Benutzer-Desktops läuft und viele Endpunkt-AV-Produkte umgeht. Die Schritte sind:- Erstellen Sie eine bösartige Nutzlast (z.B.,
C:Tempevil.exe). - Fügen Sie einen neuen Wert hinzu zu
HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShellweisend auf die Nutzlast. - Überprüfen Sie, ob die Änderung wirksam wurde, dann ab- und anmelden, um die Ausführung zu erreichen.
- Erstellen Sie eine bösartige Nutzlast (z.B.,
-
Regressionstestskript:
#------------------------------------------------- # Regressionstest – Winlogon Shell Hijack (T1547.004) #------------------------------------------------- param( [string]$PayloadPath = "C:Tempevil.exe", [string]$BackupPath = "$env:Tempwinlogon_shell_backup.txt" ) # 1. Bereitstellung einer Dummy-Nutzlast (eine einfache calc.exe-Kopie zum Testen) if (-not (Test-Path $PayloadPath)) { Copy-Item "$env:SystemRootSystem32calc.exe" $PayloadPath -Force } # 2. Sicherung des aktuellen Shell-Wertes (falls vorhanden) $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $currentShell = (Get-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue).Shell Set-Content -Path $BackupPath -Value $currentShell -Encoding UTF8 # 3. Setzen des bösartigen Shell-Wertes Set-ItemProperty -Path $regPath -Name Shell -Value $PayloadPath -Force Write-Host "[+] Bösartiges Winlogon-Shell auf $PayloadPath gesetzt" Write-Host "[+] Originalwert in $BackupPath gespeichert" -
Aufräumbefehle:
#--------------------------------- # Aufräumen – Wiederherstellung des Winlogon Shell #--------------------------------- $regPath = "HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinlogon" $backupFile = "$env:Tempwinlogon_shell_backup.txt" if (Test-Path $backupFile) { $original = Get-Content -Path $backupFile -Raw if ([string]::IsNullOrWhiteSpace($original)) { # Originalwert war leer – Eigenschaft entfernen Remove-ItemProperty -Path $regPath -Name Shell -ErrorAction SilentlyContinue } else { Set-ItemProperty -Path $regPath -Name Shell -Value $original -Force } Remove-Item $backupFile -Force Write-Host "[+] Winlogon-Shell in den Originalzustand wiederhergestellt." } else { Write-Warning "Sicherungsdatei nicht gefunden – manuelle Überprüfung erforderlich." }