File and Directory Discovery T1083

Tactic: Discovery

Adversaries may enumerate files and directories or may search in specific locations of a host or network share for certain information within a file system. Adversaries may use the information from File and Directory Discovery during automated discovery to shape follow-on behaviors, including whether or not the adversary fully infects the target and/or attempts specific actions.

Events covered

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

Authoring guide

Patterns shared across the 67 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 (56 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
CommandLine25contains 19, regex_match 5, wildcard 3, ends_with 2, match 1, starts_with 1/bin/bash, (?i)\x5c\x5c(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2..., --results=verified, confluence , docker --image
host.os.type21eq 20, in 1
EventType20in 11, eq 9exec, exec_event, ProcessRollup2, open, fork
Image19ends_with 17, eq 2, contains 1, is_not_null 1, starts_with 1, wildcard 1/find, /apt, /apt-get, /bin/, /bin/ls
process_name19in 11, eq 8, starts_with 1find, egrep, awk, bash, grep
event.type18eq 18start, change
process.args15in 8, contains 3, eq 3, starts_with 3, wildcard 3-2000, -4000, -6000, -r, .aws/credentials
EventID7eq 74688, 1, 4104, 4103
ParentImage5ne 2, ends_with 1, is_not_null 1, starts_with 1/dev/shm/, /home/, /root/, /usr/lib/venv-salt-minion/bin/python.original, /usr/lib/vmware/viewagent/bin/uninstall_viewagent.sh
event.category5eq 5, in 1process, file
execve_command4in 4* .*, * ./.*, *.accdb*, *.avi*, *.db*
sourcetype4eq 4auditd
OriginalFileName3eq 3dirlister.exe, pchunter.exe, seatbelt.exe
ScriptBlockText3contains 2, eq 1, in 1-append, -erroraction , -path , -recurse, .getgporeport()
TargetFilename3eq 2, starts_with 2/etc/modprobe.conf, /etc/modprobe.d, /etc/modprobe.d/, /library/preferences/com.apple.timemachine.plist, /var/lib/kubelet/pods/

Top indicator values (731 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
18606
EventTypein
exec
11171
EventTypein
exec_event
11139
EventTypein
ProcessRollup2
9117
EventTypein
start
9134
EventTypein
executed
788
EventTypein
process_started
774
process_namein
grep
814
process_namein
egrep
711
process_namein
find
79
process_namein
cat
523
process_namein
fgrep
58
process_namein
locate
55
process_namein
awk
413
process_namein
bash
488
process_namein
mlocate
44
process_namein
sed
411
process_namein
sh
483
EventTypeeq
exec
7171
Imageends_with
/find
45
event.categoryeq
process
4128
sourcetypeeq
auditd
456
CommandLinecontains
/bin/bash
38
CommandLinecontains
/bin/dash
37
CommandLinecontains
/bin/fish
37
CommandLinecontains
/bin/sh
312
CommandLinecontains
/bin/zsh
38
CommandLineregex_match
(?i)\x5c\x5c(10\.\d{1,3}\.\d{1,3}\.\d{1,3}|172\.(1[6-9]|2[0-9]|3[0-1])\.\d{1,...
33
EventIDeq
4688
3313
container.idwildcard
*
325

Exclusions (171 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
ParentImagestarts_with
/var/lib/docker/
2
process_namestarts_with
python
2
CommandLinein
cat /etc/login.defs
1
CommandLinein
cat /home/asterisk/.aws/credentials
1
EventDatacontains
gc_service.exe
1
EventDatacontains
gc_worker.exe
1
Imageeq
/usr/bin/pacman
1
Imageeq
/usr/lib/dracut/dracut-install
1
Imagein
/bin/file
1
Imagein
/bin/readlink
1
Imagein
/tmp/newroot/bin/file
1
Imagein
/tmp/newroot/bin/readlink
1
Imagein
/usr/bin/file
1
Imagein
/usr/bin/readlink
1
Imagein
/usr/local/bin/helm
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 24 rules

Elastic 25 rules

Splunk 10 rules

Kusto 7 rules

Panther 1 rule