Hide Artifacts: NTFS File Attributes T1564.004

Tactic: Stealth

Adversaries may use NTFS file attributes to hide their malicious data in order to evade detection. Every New Technology File System (NTFS) formatted partition contains a Master File Table (MFT) that maintains a record for every file/directory on the partition. Within MFT entries are file attributes, such as Extended Attributes (EA) and Data [known as Alternate Data Streams (ADSs) when more than one Data attribute is present], that can be used to store arbitrary data (and even complete files).

Events covered

8 catalog events are tagged with this technique by at least one rule.

Authoring guide

Patterns shared across the 34 rules above: which fields they filter on, what specific values they look for, and what they exclude. The catalog normalizes field names across vendors so Sigma's Image, Elastic's process.name, and Splunk's process_name collapse into one row. Each rule contributes at most once per row.

Fields filtered most (24 distinct)

The fields most rules look at when detecting this technique. The How column shows the operators authors use (eq, wildcard, regex_match, match) and how often each appears. Sample values are concrete examples to start from, not an exhaustive list.

FieldRulesHowSample values
CommandLine17contains 12, regex_match 4, match 3(?i)\.cab|(-|\/)F:|\x5cAppData\x5c|(Local|Roaming)\x5cTemp\x5c, .cab, :[^\\], -f, -i
Image11ends_with 9, contains 3, eq 1, match 1\appdata\, \temp\, findstr.exe, /chflags, [a-z]:\\:.+
TargetFilename8contains 4, regex_match 2, match 1, wildcard 1(?<!\/)\b\w+(\.\w+)?:\w+(\.\w+)?$, .bat:zone, .cmd:zone, .dll:zone, .cpl:zone
EventID5eq 515, 1, 4103, 4104, 4688
ParentImage5ends_with 5, eq 3, contains 1, starts_with 1\thor\thor64.exe, \webex\webexhost.exe, \appdata\local\temp\winget\, \aurora-agent-64.exe, \aurora-agent.exe
process_name5in 2, match 2, wildcard 1(?i)expand\.exe, appvlp.exe, baitandswitch.exe, bitsadmin.exe, cmd.exe
Contents4contains 2, regex_match 2.githubusercontent.com, anonfiles.com, cdn.discordapp.com, (?:[A-Za-z0-9+/]{128,})(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$, http[s]?://[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
OriginalFileName3eq 3findstr.exe, rundll32.exe
event.type3eq 3creation, start
Hashes2contains 2imphash=, imphash=00000000000000000000000000000000, imphash=021bcca20ba3381b11bdde26b4e62f20, imphash=03866661686829d806989e2fc5a72606, imphash=0588081ab0e63ba785938467e1b10cca
ScriptBlockText2contains 2-argumentlist , -filepath "$env:comspec" , -stream, >, add-content
CleanProcessCommandLine1contains 1decode, encode, url
Company1eq 1InstallShield Software Corporation
Description1eq 1InstallShield (R) Setup Engine
IMPHASH1ne 100000000000000000000000000000000

Top indicator values (362 distinct)

Specific (field, operator, value) combinations the rules check for, ranked by how many rules under this technique use each one. The Corpus reach column counts how many rules across the entire catalog (any technique) check the same combination. High numbers point to widely-used indicators that are likely noisy on their own; combine them with another condition for useful signal. Blank means the combination is specific to rules under this technique. Click a value to expand the rules under this technique that use it.

FieldKindValueRules (here)Corpus reach
ParentImageends_with
\thor\thor64.exe
4
ParentImageends_with
\webex\webexhost.exe
4
CommandLinecontains
.cab
35
CommandLinecontains
findstr
28
CommandLinematch
(?i)\.cab|(-|\/)F:|\x5cAppData\x5c|(Local|Roaming)\x5cTemp\x5c
33
CommandLineregex_match
:[^\\]
22
Contentscontains
.githubusercontent.com
22
Contentscontains
anonfiles.com
22
Contentscontains
cdn.discordapp.com
22
Contentscontains
ddns.net
22
Contentscontains
dl.dropboxusercontent.com
22
Contentscontains
ghostbin.co
22
Contentscontains
github.com
22
Contentscontains
glitch.me
22
Contentscontains
gofile.io
22
Contentscontains
hastebin.com
22
Contentscontains
mediafire.com
22
Contentscontains
mega.nz
22
Contentscontains
onrender.com
22
Contentscontains
pages.dev
22
Contentscontains
paste.ee
22
Contentscontains
pastebin.com
22
Contentscontains
pastebin.pl
22
Contentscontains
pastetext.net
22
Contentscontains
pixeldrain.com
22
Contentscontains
privatlab.com
22
Contentscontains
privatlab.net
22
Contentscontains
send.exploit.in
22
Contentscontains
sendspace.com
22
Contentscontains
storage.googleapis.com
22

Exclusions (39 distinct)

Field/operator/value combinations excluded by rules under this technique (top-level not() clauses), sorted by how many rules exclude each. These are the false-positive paths the community has learned to filter out. A new rule that ignores the high-count entries here will likely fire on the same noisy paths. Click a value to expand the rules under this technique that exclude it.

FieldKindValueRules excluding
ParentImageends_with
\thor\thor64.exe
4
ParentImageends_with
\webex\webexhost.exe
4
CommandLinematch
(?i):\x5cProgramData\x5cDell\x5cUpdateService\x5cTemp\x5c
3
CommandLinematch
\".*\.exe[^\"].*
1
Imagecontains
\appdata\
2
Imagecontains
\temp\
2
ParentImageeq
c:\windows\system32\cleanmgr.exe
2
ParentImageeq
c:\windows\system32\dism.exe
2
parent_process_namematch
(?i):\x5cProgram\sFiles\s\(x86\)\x5cDell\x5cUpdateService\x5cServiceShell\.exe
2
CommandLinecontains
\appdata\local\temp\
1
CommandLinecontains
\appdata\local\webex\webex64\meetings\wbxreport.exe
1
CommandLinecontains
c:\program files\git\cmd\scalar.exe
1
CommandLinecontains
c:\program files\git\post-install.bat
1
CommandLinecontains
c:\xampp\vcredist\vcredi~1.exe
1
Companyeq
InstallShield Software Corporation
1

Rules under this technique

Every rule in the catalog tagged with this technique, grouped by vendor. Click a rule title for its full predicates, exclusions, and indicators.

Platform (all)
Domain (all)

Sigma 23 rules

Elastic 3 rules

Splunk 7 rules

Kusto 1 rule