Kurzfassung: Eine Windows-Hilfedatei wirkt harmlos - und genau das macht sie zum Tarnmittel. Eine kompilierte CHM kann Skriptcode enthalten, und geöffnet wird sie vom signierten Windows-Programm hh.exe. So läuft der Code unter dem Deckmantel eines vertrauenswürdigen Bordmittels (System Binary Proxy Execution). Am Endpunkt verrät sich der Missbrauch durch drei Muster: hh.exe mit einer CHM aus einem auffälligen Pfad, hh.exe als Elternprozess eines Skript-Hosts und hh.exe aus einem Office- oder Browser-Prozess. Drei sigma-cli-validierte Sigma-Regeln nehmen genau das. Dazu Härtung und der Test im Lab. Serie "Angriff erkennen".
Compiled HTML Help (die CHM-Datei) ist ein Relikt aus der Windows-Hilfe: HTML-Seiten, Bilder und Skript, gebündelt in einer Datei und geöffnet vom Programm hh.exe. Dass CHM-Dateien eingebetteten Code ausführen können, macht sie für Angreifer interessant - der Schadcode steckt in einer unscheinbaren Hilfedatei, und die Ausführung läuft über ein signiertes Microsoft-Programm, das selten Verdacht erregt. Das ist der Kern von System Binary Proxy Execution: ein vorhandenes, signiertes Werkzeug missbrauchen. Für den Verteidiger ist hh.exe heute ein seltener Gast. Dieser Beitrag bleibt auf der Erkennungsseite und zeigt kein Vorgehen zum Bau solcher Dateien.
Einordnung in ATT&CK: Compiled HTML File (T1218.001), eine Untertechnik von System Binary Proxy Execution (T1218); in dieser Serie steht sie in der Spalte Stealth. Sie reiht sich neben die anderen Proxy-Bordmittel wie MSHTA, Regsvr32, Rundll32, Msiexec und InstallUtil ein - gemeinsam ist ihnen, dass ein signiertes Windows-Programm die Ausführung übernimmt; bei dieser Technik ist es hh.exe mit einer CHM.
Was der Angreifer tut
Der Missbrauch folgt - auf der Ebene des Prinzips, nicht als Anleitung - einem schlichten Gedanken: Code in eine Hilfedatei packen und sie vom System öffnen lassen.
- Code in eine CHM betten. Eine kompilierte Hilfedatei kann Skript enthalten, das beim Öffnen ausgeführt wird - versteckt hinter einer harmlosen Fassade.
- Die Datei ausliefern. Die CHM landet per Mail oder Download auf dem System und oft in einem temporären oder Download-Pfad.
- Mit hh.exe öffnen. Das signierte Windows-Programm hh.exe öffnet die Datei und führt den eingebetteten Code aus - die Ausführung trägt den Stempel eines vertrauenswürdigen Bordmittels.
- Weiter nachladen. Häufig startet der Code einen Skript-Host, der die eigentliche Schadlast holt - hier wird die Kette sichtbar.
Für die Erkennung ist entscheidend: hh.exe ist selten, und der Kontext verrät den Missbrauch - der Pfad der CHM, der Kindprozess und der Elternprozess. Nicht hh.exe an sich ist das Signal, sondern sein Umfeld.
Welche Logquellen die Technik zeigt
- Prozess-Telemetrie zuerst. Event 4688 zeigt hh.exe samt Befehlszeile, übergeordnetem Prozess und etwaigem Kindprozess - die wichtigste Quelle für diese Technik.
- Befehlszeilen-Kontext. Der Pfad der geöffneten CHM in der Befehlszeile trennt eine legitime Hilfedatei von einer nachgeladenen aus Temp oder Downloads.
- Eltern-Kind-Beziehung. hh.exe als Kind eines Office- oder Browser-Prozesses oder als Elternprozess eines Skript-Hosts ist das Kernsignal.
- Werkzeug-Kontext. hh.exe ist ein mitgeliefertes, signiertes Programm; erst der Kontext macht den Unterschied. Grundlagen zum Missbrauch solcher Bordmittel unter Living off the Land.
Das Muster im Log
Drei Signale tragen. Das erste ist hh.exe, dessen Befehlszeile auf Temp, Downloads, AppData oder das öffentliche Verzeichnis verweist. Das zweite ist hh.exe als Elternprozess eines Skript-Hosts oder LOLBin. Das dritte ist hh.exe als Kind eines Office-, Mail- oder Browser-Prozesses. Die Eltern-Kind-Regeln stehen auf hoher Stufe, weil eine echte Hilfedatei keinen Skript-Host startet und kaum je aus einem Browser heraus geöffnet wird; die Pfad-Regel steht auf mittlerer Stufe, weil eine legitime CHM selten, aber doch einmal in Downloads liegen kann. Legitime Treffer sind insgesamt rar, da CHM-Hilfe in modernen Umgebungen kaum noch vorkommt - bekannte Hilfedateien und Hosts gehören als Baseline ausgenommen. Auffällig wird es, wenn hh.exe überhaupt auftaucht, wo es sonst nie läuft. Der Blick auf Pfad, Eltern und Kind trennt die Hilfe vom Angriff.
Drei Sigma-Regeln
Die Regeln sind mit sigma-cli geprüft und nehmen die drei Signale: die CHM aus einem auffälligen Pfad, den Skript-Host als Kind und den Office- oder Browser-Prozess als Eltern. Alle drei werten die Prozess-Telemetrie aus.
1. hh.exe öffnet eine CHM aus einem auffälligen Pfad (T1218.001). hh.exe mit Temp, Downloads, AppData oder dem öffentlichen Verzeichnis in der Befehlszeile. Die Regel steht auf level: medium.
title: hh.exe oeffnet eine CHM aus einem auffaelligen Pfad
id: 6c2a9e81-4d73-4b62-a1f7-8c3d6b5e2a95
status: experimental
description: |
Erkennt den HTML-Help-Prozess hh.exe, dessen Befehlszeile auf einen auffaelligen Pfad verweist - Temp,
Downloads, AppData oder das oeffentliche Benutzerverzeichnis. Angreifer verstecken Skriptcode in einer
kompilierten Hilfedatei (CHM) und starten sie als vertrauenswuerdiges Windows-Programm (System Binary Proxy
Execution: Compiled HTML File).
references:
- https://attack.mitre.org/techniques/T1218/001/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.001
logsource:
product: windows
category: process_creation
detection:
sel_img:
Image|endswith: '\\hh.exe'
sel_path:
CommandLine|contains:
- '\\Temp\\'
- '\\Downloads\\'
- '\\AppData\\'
- '\\Users\\Public\\'
condition: sel_img and sel_path
falsepositives:
- Seltene legitime Hilfedateien in solchen Pfaden - bekannte CHM-Dateien und Hosts als Baseline ausnehmen
level: medium
2. hh.exe startet einen Skript-Host oder LOLBin (T1218.001). powershell, mshta und Co. als Kind von hh.exe. Wegen der Eindeutigkeit auf level: high.
title: hh.exe startet einen Skript-Host oder LOLBin
id: 8d3c1e62-7a94-4b53-a2e6-3c7b9d5f4a28
status: experimental
description: |
Erkennt hh.exe als Elternprozess eines Skript-Hosts oder LOLBin (powershell, cmd, mshta, wscript, cscript,
rundll32, regsvr32). Eine kompilierte Hilfedatei, die Code nachlaedt und ausfuehrt, erzeugt genau diese
Eltern-Kind-Kette (Compiled HTML File). Eine echte Hilfedatei startet so etwas nicht.
references:
- https://attack.mitre.org/techniques/T1218/001/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.001
logsource:
product: windows
category: process_creation
detection:
sel:
ParentImage|endswith: '\\hh.exe'
Image|endswith:
- '\\powershell.exe'
- '\\pwsh.exe'
- '\\cmd.exe'
- '\\mshta.exe'
- '\\wscript.exe'
- '\\cscript.exe'
- '\\rundll32.exe'
- '\\regsvr32.exe'
condition: sel
falsepositives:
- Praktisch keine - eine echte CHM startet keinen Skript-Host; vereinzelte Ausnahmen dokumentieren
level: high
3. hh.exe aus einem Office-, Mail- oder Browser-Prozess gestartet (T1218.001). hh.exe als Kind von winword, outlook, einem Browser und Co. Ebenfalls level: high.
title: hh.exe aus einem Office-, Mail- oder Browser-Prozess gestartet
id: 9a4c2e68-3d75-4b92-a6f3-7c5d8b2e4a17
status: experimental
description: |
Erkennt hh.exe als Kindprozess eines Office-Programms, von Outlook oder eines Browsers. Eine per Phishing
gelieferte und geoeffnete CHM-Datei erzeugt diese Eltern-Kind-Kette (Compiled HTML File). Solche
Elternprozesse starten normalerweise keine Hilfedatei.
references:
- https://attack.mitre.org/techniques/T1218/001/
author: blue-team.net
tags:
- attack.stealth
- attack.t1218.001
logsource:
product: windows
category: process_creation
detection:
sel:
ParentImage|endswith:
- '\\winword.exe'
- '\\excel.exe'
- '\\powerpnt.exe'
- '\\outlook.exe'
- '\\chrome.exe'
- '\\msedge.exe'
- '\\firefox.exe'
Image|endswith: '\\hh.exe'
condition: sel
falsepositives:
- Sehr selten oeffnet eine Anwendung eine Hilfedatei ueber hh.exe - bekannte Faelle als Baseline ausnehmen
level: high
Härtung: der Angriff, der ins Leere läuft
- hh.exe sperren, wo es nicht gebraucht wird. CHM-Hilfe ist in modernen Umgebungen selten; per AppLocker oder WDAC lässt sich hh.exe dort blockieren, wo es keinen Zweck hat.
- CHM am Gateway filtern. CHM-Dateien als Anhang oder Download behandeln wie andere ausführbare Formate - blockieren oder in Quarantäne nehmen.
- Office-Kindprozesse einschränken. Regeln zur Angriffsflächenreduzierung, die Office das Starten von Kindprozessen verbieten, nehmen der Eltern-Kind-Kette die Grundlage.
- Befehlszeile protokollieren. Prozessstart mit Befehlszeile und Elternprozess (Event 4688 oder Sysmon) zuverlässig erfassen - ohne sie fehlt der entscheidende Kontext.
Der Test
Die Erkennung lässt sich im Lab gefahrlos prüfen, auf einem isolierten System mit aktivem Sysmon und Command-Line-Auditing - mit einer harmlosen CHM:
- Für Regel 1 eine harmlose CHM-Datei in den Downloads-Ordner legen und mit hh.exe öffnen und prüfen, dass Event 4688 den Pfad in der Befehlszeile zeigt.
- Für Regel 2 hh.exe aus einem Testaufbau heraus einen Skript-Host starten lassen und kontrollieren, dass die Eltern-Kind-Regel greift.
- Für Regel 3 hh.exe aus einem harmlosen Elternprozess starten, der wie ein Office-Programm heißt, und prüfen, dass die Regel anspringt.
- Breiter wird der Test mit den Fällen zu T1218.001 aus Atomic Red Team.
Fehlalarme und Tuning
- Legacy-Hilfedateien. Einzelne Altanwendungen bringen noch CHM-Hilfe mit. Solche bekannten Dateien und Hosts als Baseline aufnehmen, bevor die Pfad-Regel scharf geschaltet wird.
- Die Eltern-Kind-Regeln sind eindeutig. Regel 2 und 3 stehen auf high, weil eine echte Hilfedatei keinen Skript-Host startet und kaum aus einem Browser kommt - Treffer gehören immer geprüft.
- Seltenheit nutzen. hh.exe ist heute ungewöhnlich; schon sein bloßes Auftreten ist ein guter Anlass für einen Hunt nach weiteren Spuren.
- Kette schlägt Einzelzeile. hh.exe aus einem Office-Prozess zusammen mit einem nachladenden Skript-Host ist weit aussagekräftiger als ein Treffer allein - die Korrelation schärft die Bewertung.
Fazit
Compiled HTML File ist ein klassischer Proxy-Ausführungsweg: Schadcode steckt in einer unscheinbaren Hilfedatei, und die Ausführung übernimmt das signierte Windows-Programm hh.exe. Die verlässlichen Signale sind eine CHM aus einem auffälligen Pfad, hh.exe als Elternprozess eines Skript-Hosts und hh.exe aus einem Office-, Mail- oder Browser-Prozess. Weil CHM-Hilfe in modernen Umgebungen selten ist, trägt schon das bloße Auftreten von hh.exe weit; Pfad, Eltern und Kind schärfen das Urteil. Die wirksamste Härtung ist, hh.exe dort zu sperren, wo es nicht gebraucht wird, und CHM-Dateien am Gateway zu filtern. Weitere Techniken dieser Taktik führt das Lexikon nach Taktik unter Stealth.