ATT&CK coverage › Technique

Deobfuscate/Decode Files or Information T1140

Adversaries may use Obfuscated Files or Information to hide artifacts of an intrusion from analysis. They may require separate mechanisms to decode or deobfuscate that information depending on how they intend to use it. Methods for doing that include built-in functionality of malware or by using utilities present on the system.

Events covered

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

ProviderEvent IDTitle
Sysmon1Process creation
Sysmon5Process terminated
Sysmon13RegistryEvent (Value Set)
Security-Auditing4688A new process has been created.
Security-Auditing4689A process has exited.
Defender-DeviceProcessEvents9001000Process activity (any)
PowerShell4103Payload Context: ContextInfo User Data: UserData.
PowerShell4104Creating Scriptblock text (MessageNumber of MessageTotal).

Authoring guide

Patterns shared across the 25 rules above: which fields they filter on, what specific values they look for, and what they exclude. Field names are normalized 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 (22 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
CommandLine11match 7, contains 3, is_not_null 2, ends_with 1, regex_match 1TVqQAAMAAAAEAAA, certutil, base64 --decode, .decode64(, .decode('base64')
Esql.script_block_pattern_count10ge 101, 2, 20, 5
Esql.script_block_length8gt 8500, 1000
file.directory4is_null 4
ScriptBlockText3match 3+, `, {0}
Image3ends_with 3\mshta.exe, \ping.exe, \powershell.exe, \pwsh.exe
Esql.script_block_ratio2gt 1, ge 10.5, 0.75
file.name2is_null 2
FileName2eq 2certutil.exe, netstat.exe, nslookup.exe, whoami.exe
EventID2eq 24688
OriginalFileName2eq 2mshta.exe, PowerShell.EXE, pwsh.dll
powershell.file.script_block_unique_symbols1lt 150
Process1is_not_null 1
SHA11eq 1CertUtilPESha1, CertUtilFESha1
CleanProcessCommandLine1match 1url, verify, decode

Top indicator values (109 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.

FieldKindValueRules (here)Corpus reach
Esql.script_block_pattern_countge166
Esql.script_block_lengthgt50066
Esql.script_block_lengthgt100022
Esql.script_block_pattern_countge222
CommandLinecontainsTVqQAAMAAAAEAAA2
EventIDeq46882
ScriptBlockTextmatch+1
Esql.script_block_ratiogt0.51
Esql.script_block_pattern_countge201
ScriptBlockTextmatch`1
Esql.script_block_ratioge0.751
powershell.file.script_block_unique_symbolslt501
Esql.script_block_pattern_countge51
ScriptBlockTextmatch{0}1
CleanProcessCommandLinematchdecode1
CleanProcessCommandLinematchverify1
CleanProcessCommandLinematchurl1
SHA1eqCertUtilFESha11
CleanProcessCommandLinematchencode1
FileNameeqcertutil.exe1

Common exclusions (9 distinct)

Field/operator/value combinations that rules under this technique routinely exclude (top-level not() clauses). 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.

FieldKindValueRules excluding
ScriptBlockTextmatch[System.IO.File]::Open('C:\\\\ProgramData\\\\Microsoft\\\\Windows Defender...1
ScriptBlockTextmatch$([char]0x1b)]6331
ScriptBlockTextmatch:::::\\\\windows\\\\sentinel1
ScriptBlockTextmatch$local:Bypassed1
ScriptBlockTextmatchorigPSExecutionPolicyPreference1
ScriptBlockTextmatch$s.BranchBehindStatusSymbol.Text1
ScriptBlockTextmatchGitBranchStatus1
ScriptBlockTextmatchsentinelbreakpoints1
ScriptBlockTextmatchGENESIS-56541

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.

Sigma 8 rules

Elastic 12 rules

Kusto Query Language 5 rules