Unsecured Credentials T1552

Tactic: Credential Access

Adversaries may search compromised systems to find and obtain insecurely stored credentials. These credentials can be stored and/or misplaced in many locations on a system, including plaintext files (e.g. Shell History), operating system or application-specific repositories (e.g. Credentials in Registry), or other specialized files/artifacts (e.g. Private Keys).

Events covered

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

Authoring guide

Patterns shared across the 219 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 (185 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
CommandLine46contains 39, wildcard 6, regex_match 3, in 2, match 2, is_not_null 1\sysvol\, --results=verified, confluence , docker --image , ntevent
process_name38in 16, eq 15, starts_with 5, regex_match 4, match 1, ne 1, wildcard 1bash, awk, ., busybox, cat
EventType37eq 24, in 11, wildcard 2exec, ProcessRollup2, exec_event, open, executed
event.type31eq 28, ne 2, in 1start, change, deletion, process_started
EventID28eq 284688, 4104, 1, 4663, 10
Image25ends_with 19, starts_with 3, wildcard 3, eq 1\findstr.exe, /dev/shm/, \find.exe, /.*, /boot/*
host.os.type25eq 21, in 4
process.args21in 11, eq 9, wildcard 9, contains 5, starts_with 2, ends_with 1, match 1/bin/awk, /bin/cat, /bin/head, *socat *, --output
data_stream.dataset17eq 17aws.cloudtrail, kubernetes.audit_logs, azure.activitylogs, auditd_manager.auditd, azure.signinlogs
OriginalFileName16eq 16findstr.exe, find.exe, reg.exe, wevtutil.exe, wmic.exe
event.category13eq 13process, file, network
TargetFilename12in 5, contains 3, ends_with 3, starts_with 2, eq 1, wildcard 1.pfx, /etc/kubernetes/admin.conf, /var/run/secrets/kubernetes.io/serviceaccount/ca.crt, *\\profiles\\outlook\\9375cff0413111d3b88a00104b2a6676*, *\\windows messaging...
event.outcome11eq 8, in 3success, Success
ScriptBlockText9contains 6, eq 2, in 2export-certificate, export-pfxcertificate, -r, -pattern , .maxpasswordage
username9contains 9, ne 1serviceaccount, kubelet-nodepool-bootstrap

Top indicator values (2114 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
event.typeeq
start
27606
EventTypeeq
exec
12171
EventTypeeq
open
515
event.categoryeq
process
9128
event.categoryeq
file
531
usernamecontains
serviceaccount
924
EventIDeq
4688
8313
EventIDeq
4104
6268
OriginalFileNameeq
findstr.exe
812
event.outcomeeq
success
8251
EventTypein
exec
7171
EventTypein
exec_event
6139
EventTypein
executed
588
EventTypein
start
5134
process_namein
bash
788
process_namein
dash
778
process_namein
fish
772
process_namein
ksh
773
process_namein
sh
783
process_namein
zsh
782
process_namein
cat
623
process_namein
csh
671
process_namein
tcsh
669
container.idwildcard
*
625
data_stream.dataseteq
aws.cloudtrail
6141
data_stream.dataseteq
kubernetes.audit_logs
536
process.interactiveeq
true
642
Imageends_with
\findstr.exe
512
kubernetes.audit.objectRef.resourceeq
secrets
56
objectRef.resourceeq
secrets
56

Exclusions (299 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
usernamein
aksService
9
usernamein
masterclient
9
usernamestarts_with
system:
9
responseStatus.codege
1
7
responseStatus.codege
400
7
responseStatus.codele
16
7
namespacein
gke-system
5
namespacein
kube-node-lease
5
namespacein
kube-public
5
namespacein
kube-system
5
verbne
create
4
ParentCommandLineeq
runc init
2
ScriptBlockTexteq
sentinelbreakpoints
2
ScriptBlockTexteq
set-psbreakpoint
2
kubernetes.audit.user.groupseq
system:serviceaccounts:ibm-csi
2

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 52 rules

Elastic 72 rules

Splunk 44 rules

Kusto 15 rules

YARA-L 6 rules

Panther 30 rules