Internet zone marker written onto a high-risk file type
AN0819 begins with a delivered file landing in a user-controlled path, and the one event that records that delivery rather than inferring it is Sysmon EventID 15, written when a handler stamps the Zone.Identifier alternate data stream onto a file it pulled from outside; this rule matches that stream on the file types that need a user to open them, which is MITRE's SuspiciousExtensions knob populated here with the script, shortcut, control-panel, disk-image and macro-document extensions the technique lists. The later leg of the analytic — the handler application spawning a system utility — is deliberately not written, because the corpus already carries exactly that logic under the parent technique T1204 and a second copy of the document-parent-spawns-LOLBin rule would add no coverage. Plain .exe and .msi are excluded for a different reason: a downloaded installer is the highest-volume zone-stream event on any estate and would bury every other match. EventID 15 is not emitted by a bare Sysmon install and most shipped configurations restrict stream hashing to a short extension list, so confirm these extensions are in the running config first — otherwise the rule is blind rather than quiet. UNVERIFIED AS AUTHORED — derived from MITRE ATT&CK DET0294, not hand-written and not tested by its author. Any lab result is on this rule's own page.Full descriptionShow less
The detection
The 3 SIEM queries below are previews produced by Siemphony’s own translator, not pySigma, and none has been executed against a real backend — review before you deploy.
detection.yml
Splunk · SPL
Run this as a search.
index=* (TargetFilename="*.hta:Zone.Identifier" OR TargetFilename="*.lnk:Zone.Identifier" OR TargetFilename="*.js:Zone.Identifier" OR TargetFilename="*.jse:Zone.Identifier" OR TargetFilename="*.vbs:Zone.Identifier" OR TargetFilename="*.vbe:Zone.Identifier" OR TargetFilename="*.wsf:Zone.Identifier" OR TargetFilename="*.wsh:Zone.Identifier" OR TargetFilename="*.bat:Zone.Identifier" OR TargetFilename="*.cmd:Zone.Identifier" OR TargetFilename="*.ps1:Zone.Identifier" OR TargetFilename="*.scr:Zone.Identifier" OR TargetFilename="*.pif:Zone.Identifier" OR TargetFilename="*.cpl:Zone.Identifier" OR TargetFilename="*.reg:Zone.Identifier" OR TargetFilename="*.iso:Zone.Identifier" OR TargetFilename="*.img:Zone.Identifier" OR TargetFilename="*.vhd:Zone.Identifier" OR TargetFilename="*.vhdx:Zone.Identifier" OR TargetFilename="*.docm:Zone.Identifier" OR TargetFilename="*.xlsm:Zone.Identifier" OR TargetFilename="*.xll:Zone.Identifier")Elastic · ES|QL
Run this as a search.
FROM logs-*| WHERE (TO_LOWER(file.path) LIKE "*.hta:zone.identifier" OR TO_LOWER(file.path) LIKE "*.lnk:zone.identifier" OR TO_LOWER(file.path) LIKE "*.js:zone.identifier" OR TO_LOWER(file.path) LIKE "*.jse:zone.identifier" OR TO_LOWER(file.path) LIKE "*.vbs:zone.identifier" OR TO_LOWER(file.path) LIKE "*.vbe:zone.identifier" OR TO_LOWER(file.path) LIKE "*.wsf:zone.identifier" OR TO_LOWER(file.path) LIKE "*.wsh:zone.identifier" OR TO_LOWER(file.path) LIKE "*.bat:zone.identifier" OR TO_LOWER(file.path) LIKE "*.cmd:zone.identifier" OR TO_LOWER(file.path) LIKE "*.ps1:zone.identifier" OR TO_LOWER(file.path) LIKE "*.scr:zone.identifier" OR TO_LOWER(file.path) LIKE "*.pif:zone.identifier" OR TO_LOWER(file.path) LIKE "*.cpl:zone.identifier" OR TO_LOWER(file.path) LIKE "*.reg:zone.identifier" OR TO_LOWER(file.path) LIKE "*.iso:zone.identifier" OR TO_LOWER(file.path) LIKE "*.img:zone.identifier" OR TO_LOWER(file.path) LIKE "*.vhd:zone.identifier" OR TO_LOWER(file.path) LIKE "*.vhdx:zone.identifier" OR TO_LOWER(file.path) LIKE "*.docm:zone.identifier" OR TO_LOWER(file.path) LIKE "*.xlsm:zone.identifier" OR TO_LOWER(file.path) LIKE "*.xll:zone.identifier")
Wazuh · XML rule
Deploy to your manager — this is a rule, not a search.
<group name="sigma,windows,create_stream_hash,"> <!-- Rule ids must be unique on your manager; 100000+ is the user range. --> <rule id="100000" level="7"> <!-- Set <if_sid> to the decoder/base rule for windows so this only evaluates relevant events. --> <field name="TargetFilename" type="pcre2">(?i)(\.hta:Zone\.Identifier$|\.lnk:Zone\.Identifier$|\.js:Zone\.Identifier$|\.jse:Zone\.Identifier$|\.vbs:Zone\.Identifier$|\.vbe:Zone\.Identifier$|\.wsf:Zone\.Identifier$|\.wsh:Zone\.Identifier$|\.bat:Zone\.Identifier$|\.cmd:Zone\.Identifier$|\.ps1:Zone\.Identifier$|\.scr:Zone\.Identifier$|\.pif:Zone\.Identifier$|\.cpl:Zone\.Identifier$|\.reg:Zone\.Identifier$|\.iso:Zone\.Identifier$|\.img:Zone\.Identifier$|\.vhd:Zone\.Identifier$|\.vhdx:Zone\.Identifier$|\.docm:Zone\.Identifier$|\.xlsm:Zone\.Identifier$|\.xll:Zone\.Identifier$)</field> <description>Internet zone marker written onto a high-risk file type</description> <mitre> <id>T1204.002</id> </mitre> </rule></group>
Sentinel · KQL
Run this as a search.
Sentinel cannot express this construct. No Sentinel table is modelled for this logsource ({"category":"create_stream_hash","product":"windows"}), so there is nothing honest to query. Pick a logsource this translator maps, or write the KQL by hand. The Sigma source is on the first tab, unchanged.
Verdicts · reactions · comments
Community
Verdicts from engineers who actually deployed it, and the conversation around it.
Nobody has run this in a real environment and said what happened.
Verdicts from engineers who deployed it
0 castNo verdicts reported yet. The first one is worth more than the tenth — say what you ran it against.
Log in to report a verdict.
Log in to join the discussion.
No comments yet. Someone who deploys this will have something to say about it.