SOC Prime Bias: Mittel

17 Apr 2026 14:49 UTC

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.

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