SOC Prime Bias: Hoch

26 März 2026 16:24

T1547.004 in MITRE ATT&CK: Winlogon-Helfer erklärt

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
T1547.004 in MITRE ATT&CK: Winlogon-Helfer erklärt
shield icon

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

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:

    1. Erstellen Sie eine bösartige Nutzlast (z.B., C:Tempevil.exe).
    2. Fügen Sie einen neuen Wert hinzu zu HKLMSoftwareMicrosoftWindows NTCurrentVersionWinlogonShell weisend auf die Nutzlast.
    3. Überprüfen Sie, ob die Änderung wirksam wurde, dann ab- und anmelden, um die Ausführung zu erreichen.
  • 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."
    }