SOC Prime Bias: Mittel

17 Apr. 2026 17:49

ClickFix-Phishing-Kampagne als Claude-Installer getarnt

Author Photo
SOC Prime Team linkedin icon Folgen
ClickFix-Phishing-Kampagne als Claude-Installer getarnt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine Phishing-Kampagne nutzte die ClickFix-Technik, um ein bösartiges MSIX-Bundle zu verbreiten, das als Claude AI-Installer getarnt war. Die erste Ausführung beruhte auf mshta , das über das Windows-Ausführen-Dienstprogramm mit einer speziell erstellten URL gestartet wurde. Die heruntergeladene Nutzlast enthielt eine HTA-Datei, die eine verschleierte PowerShell-Stufe erstellte, AMSI umging, zusätzlichen PowerShell-Inhalt abrief und eine Prozessinjektionsroutine mit verschlüsseltem Shellcode ausführte. Die Aktivität wurde in Kundenumgebungen in Europa und den Vereinigten Staaten beobachtet und durch die Rapid7 InsightIDR-Abdeckung erkannt.

Untersuchung

Rapid7-Analysten identifizierten mshta eine Ausführung, die mit dem RunMRU-Registrierungsschlüssel verbunden war, und erfassten die URL download-version.1-5-8.com/claude.msixbundle. Die Analyse zeigte, dass das MSIX-Archiv eine HTA-Datei enthielt, die obfuskierte Zeichenfolgen decodierte, einen PowerShell-Befehl zusammenstellte, den AMSI-Kontext überschieb und letztendlich Shellcode durch native Windows-API-Aufrufe injizierte. Forscher fanden auch heraus, dass mehrere nachfolgende PowerShell-Stufen von dynamisch generierten URLs heruntergeladen wurden, die aus einem Hash abgeleitet wurden, der aus dem Computernamen und Benutzernamen des Opfers bestand.

Minderung

Verteidiger sollten den RunMRU-Registrierungsschlüssel auf verdächtige mshta Einträge überwachen und die mshta Ausführung blockieren, wenn sie aus nicht vertrauenswürdigen Quellen stammt. Organisationen sollten auch das Herunterladen von MSIX-Paketen von unbekannten Domains einschränken und Anwendung-Whitelist für PowerShell-Ausführung durchsetzen. AMSI-Schutz sollte aktiviert bleiben, und die PowerShell-Protokollierung sollte so konfiguriert sein, dass codierte oder verschleierte Befehlstätigkeiten zur Untersuchung erfasst werden.

Reaktion

Wenn diese Aktivität erkannt wird, sollten Sicherheitsteams den betroffenen Endpunkt isolieren, die Befehlszeilen-Artefakte sichern und eine forensische Analyse der heruntergeladenen PowerShell-Stufen und aller injizierten Prozesse durchführen. Anmeldedaten, die auf dem betroffenen System verwendet wurden, sollten zurückgesetzt werden, und der Browserverlauf sollte überprüft werden, um den ursprünglichen Köder nachzuverfolgen. Die Erkennungslogik sollte auch aktualisiert werden, um die beobachteten Domains, Hashes und zugehörigen Ausführungsmuster einzuschließen.

graph TB classDef action fill:#99ccff step_phishing[„<b>Aktion</b> – T1566.002 Phishing: Spearphishing-Link<br/><b>Beschreibung</b>: Opfer klickt auf einen bösartigen Link, der mshta startet.“] class step_phishing action step_mshta[„<b>Aktion</b> – T1218.005 Mshta<br/><b>Beschreibung</b>: mshta wird mit einer URL zu einem .msixbundle Payload ausgeführt.“] class step_mshta action step_hta_deobfuscation[„<b>Aktion</b> – T1027.010, T1027.013, T1140 Deobfuskation/Dekodierung<br/><b>Beschreibung</b>: HTA führt VBS aus, das eingebetteten Code deobfuskiert.“] class step_hta_deobfuscation action step_ps_encoded[„<b>Aktion</b> – T1059.001 PowerShell<br/><b>Beschreibung</b>: Erzeugt einen kodierten PowerShell-Befehl.“] class step_ps_encoded action step_stage1[„<b>Aktion</b> – T1059.001 PowerShell (Phase 1)<br/><b>Beschreibung</b>: MD5 von COMPUTERNAME+USERNAME berechnen, URL erstellen und Phase 2 herunterladen.“] class step_stage1 action step_stage2[„<b>Aktion</b> – T1562.001 Abwehrumgehung (AMSI-Bypass)<br/><b>Beschreibung</b>: AMSI-Kontext überschreiben und Phase 3 laden.“] class step_stage2 action step_stage3[„<b>Aktion</b> – T1059.001 PowerShell (Phase 3)<br/><b>Beschreibung</b>: Byte-Array dekodieren und ScriptBlock erstellen.“] class step_stage3 action step_process_injection[„<b>Aktion</b> – T1055 Prozessinjektion<br/><b>Beschreibung</b>: Code-Injektion in Zielprozess mittels .NET und nativer APIs.“] class step_process_injection action step_persistence[„<b>Aktion</b> – T1547.014 Run-Keys / Startup-Ordner (RunMRU)<br/><b>Beschreibung</b>: RunMRU-Eintrag für Persistenz erstellen.“] class step_persistence action step_phishing –>|führt zu| step_mshta step_mshta –>|führt aus| step_hta_deobfuscation step_hta_deobfuscation –>|verwendet| step_ps_encoded step_ps_encoded –>|generiert| step_stage1 step_stage1 –>|lädt| step_stage2 step_stage2 –>|lädt| step_stage3 step_stage3 –>|erstellt| step_process_injection step_mshta –>|etabliert| step_persistence

Angriffsablauf

Simulationsausführung

Voraussetzung: Der Telemetrie- & Basislinien-Pre-Flight-Check muss bestanden sein.

Begründung: In diesem Abschnitt wird die präzise Ausführung der gegnerischen Technik (TTP) beschrieben, die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und zielen darauf ab, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffserzählung & Befehle:

    1. Ziel: Führen Sie eine bösartige PowerShell-Nutzlast aus, die sowohl base-64-kodiert als auch mit .NET-Assembly-Aufrufen eingebettet ist, um Prozessinjektionen durchzuführen, und damit einen typischen „Living-off-the-land“-Angriff nachahmen.
    2. Schritte:
      • Erstellen Sie eine kleine .NET-Assembly (C#), die OpenProcess and WriteProcessMemory aufruft (simuliert über PowerShell’s [System.Runtime.InteropServices.Marshal]).
      • Kodieren Sie das PowerShell-Skript, das Invoke-Expression, FromBase64String, und einen Verweis auf System.Management.Automation.AmsiUtils enthält (zum Umgehen von AMSI).
      • Hängen Sie einen Dummy-Marker an 0x41414141 an, um „Padding“ zu emulieren, wie es oft in Obfuskation zu sehen ist.
      • Starten Sie das Skript mit powershell.exe und der vollständigen Befehlszeile sichtbar (damit die Erkennungsregel die Zeichenfolgen sehen kann).
  • Regressionstest-Skript:

    # ==============================================================
    # Simulierte bösartige PowerShell-Ausführung zur Auslösung der Sigma-Regel
    # ==============================================================
    # 1. Einfaches .NET-Payload erstellen (inline, zu Demonstrationszwecken)
    $cs = @'
    using System;
    using System.Runtime.InteropServices;
    public class Injector {
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
        [DllImport("kernel32.dll", SetLastError = true)]
        public static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, int nSize, out IntPtr lpNumberOfBytesWritten);
    }
    '@
    Add-Type -TypeDefinition $cs -Language CSharp
    
    # 2. Bösartiges PowerShell-Snippet erstellen
    $malicious = @'
    $b64 = "aW1wb3J0IHN5c3RlbS5JTy5TY3JpcHQgJ1Rlc3QnLCBJVkU="
    $decoded = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($b64))
    Invoke-Expression $decoded
    $dummy = 0x41414141
    '@
    
    # 3. Snippet kodieren (Base64, UTF-16LE wie PowerShell erwartet)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious)
    $encoded = [Convert]::ToBase64String($bytes)
    
    # 4. PowerShell mit dem kodierten Befehl starten
    $cmd = "powershell.exe -NoProfile -WindowStyle Hidden -EncodedCommand $encoded"
    Write-Host "Malicious PowerShell wird gestartet..."
    Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -EncodedCommand $encoded" -WindowStyle Hidden
    
    # Hinweis: Die obige Befehlszeile enthält die Zeichenfolgen:
    #   Invoke-Expression, FromBase64String, System.Management.Automation.AmsiUtils, 0x41414141
    # die die Sigma-Erkennungsbedingung erfüllen.
  • Bereinigungskommandos:

    # Beenden Sie alle verbleibenden PowerShell-Instanzen, die vom Test gestartet wurden
    Get-Process -Name powershell | Where-Object {$_.StartInfo.Arguments -match "EncodedCommand"} | Stop-Process -Force
    
    # Entfernen Sie alle temporären Module oder Variablen (falls sie beibehalten wurden)
    Remove-Variable -Name b64, decoded, dummy -ErrorAction SilentlyContinue

Berichtsende