Account Discovery T1087

Tactic: Discovery

Adversaries may attempt to get a listing of valid accounts, usernames, or email addresses on a system or within a compromised environment. This information can help adversaries determine which accounts exist, which can aid in follow-on behavior such as brute-forcing, spear-phishing attacks, or account takeovers (e.g., Valid Accounts).

Events covered

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

ProviderEventTitle
SysmonEvent ID 1Process creation
SysmonEvent ID 3Network connection
SysmonEvent ID 7Image loaded
SysmonEvent ID 8CreateRemoteThread
SysmonEvent ID 11FileCreate
Security-AuditingEvent ID 4624An account was successfully logged on.
Security-AuditingEvent ID 4625An account failed to log on.
Security-AuditingEvent ID 4661A handle to an object was requested.
Security-AuditingEvent ID 4662An operation was performed on an object.
Security-AuditingEvent ID 4672Special privileges assigned to new logon.
Security-AuditingEvent ID 4688A new process has been created.
Security-AuditingEvent ID 4769A Kerberos service ticket was requested.
Security-AuditingEvent ID 4776The domain controller attempted to validate the credentials for an account.
Security-AuditingEvent ID 4798A user's local group membership was enumerated.
Security-AuditingEvent ID 4799A security-enabled local group membership was enumerated.
Security-AuditingEvent ID 5156The Windows Filtering Platform has permitted a connection.
Defender-DeviceEventsCreateRemoteThreadApiCallCreateRemoteThread API call
Defender-DeviceEventsLdapSearchLDAP search
Defender-DeviceEventsNtAllocateVirtualMemoryRemoteApiCallRemote virtual memory allocation (NtAllocateVirtualMemory)
Defender-DeviceEventsMemoryRemoteProtectRemote virtual memory protection change
Defender-DeviceEventsNtMapViewOfSectionRemoteApiCallRemote section map (NtMapViewOfSection)
Defender-DeviceEventsQueueUserApcRemoteApiCallRemote APC queued (QueueUserApc)
Defender-DeviceEventsSetThreadContextRemoteApiCallRemote thread context change (SetThreadContext)
Defender-DeviceEventsNtAllocateVirtualMemoryApiCallNtAllocateVirtualMemory API call
Defender-DeviceNetworkEventsanyNetwork activity (any)
Defender-DeviceNetworkEventsConnectionSuccessConnection succeeded
Defender-DeviceProcessEventsanyProcess activity (any)
ESFexecProcess Execution (Notify)
LDAP-ClientEvent ID 30LDAP search request
PowerShellEvent ID 4103Payload Context: ContextInfo User Data: UserData.
PowerShellEvent ID 4104Creating Scriptblock text (MessageNumber of MessageTotal).
Threat-IntelligenceEvent ID 1Remote Virtual Memory Allocation
Threat-IntelligenceEvent ID 2Remote Virtual Memory Protection Change
Threat-IntelligenceEvent ID 3Remote Section Map
Threat-IntelligenceEvent ID 4Remote APC Queue
Threat-IntelligenceEvent ID 5Remote Thread Context Change
Threat-IntelligenceEvent ID 6Local Virtual Memory Allocation
PowerShellEvent ID 800Event ID 800
Sysmon-for-LinuxEvent ID 1Process Create

Authoring guide

Patterns shared across the 199 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 (170 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
CommandLine59contains 38, regex_match 10, match 7, ends_with 2, in 2, is_not_null 2, eq 1(?i)((tracert)|(query)|(net\s+((localgroup)|(group)|(conf..., (?i)searchroot|objectcategory=|userenum, oudmp , (?i)((netstat)|(netsh)|(schtasks)|(tasklist)|(driverquery..., (?i)((whoami)|(dir)|(hostname)|(hostname)|(systeminfo)|(i...
EventID53eq 534104, 4688, 1, 4103, 4662
process_name32eq 21, match 6, regex_match 2, starts_with 2, wildcard 2, ends_with 1, in 1net1.exe, cmd.exe, (?i)ipconfig.exe, (?i)net1?.exe, (?i)nltest.exe
Image26ends_with 22, eq 2, contains 1, regex_match 1, starts_with 1\net.exe, \net1.exe, \adexp.exe, \adexplorer.exe, \adexplorer64.exe
OriginalFileName24eq 24net1.exe, net.exe, adexp, adfind.exe, wmic.exe
ScriptBlockText22contains 19, in 5, eq 4*[adsisearcher]*, get-netuser, get-wmiobject, *accountexpires*, *lastlogoff*
Type14eq 14
event.type12eq 11, in 1start, process_started
EventType11eq 8, ne 2, in 1exec, ConnectionSuccess, GetCallerIdentity, DescribeCapacityReservations, DescribeOrganization
type9eq 9Policy, User, claude_chat_access_failed
OperationName8contains 6, in 2update a partner cross-tenant access setting, Add member to group, Add owner to group, Bulk invite users - started (bulk), Invite external user
ParentImage8ends_with 4, contains 2, eq 1, is_not_null 1, regex_match 1, starts_with 1-tomcat-, \caddy.exe, \httpd.exe, /volumes/, ?:\program files (x86)\teamcity\jre\bin\java.exe
data_stream.dataset7eq 6, in 1aws.cloudtrail, azure.activitylogs, azure.auditlogs, azure.graphactivitylogs, azure.signinlogs
displayName7eq 7tenantId, Group.DisplayName, Group.ObjectID, b2bCollaborationInbound, b2bCollaborationOutbound
parent_process_name7in 2, regex_match 2, starts_with 2, eq 1, match 1(?i)(powershell|pwsh)\.exe, (?i)(powershell\.exe)|(cmd\.exe), ., beasvc.exe, cmd.exe

Top indicator values (2174 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
EventIDeq
4104
24268
EventIDeq
4688
13313
EventIDeq
1
8237
EventIDeq
4103
6105
event.typeeq
start
11606
OriginalFileNameeq
net1.exe
844
OriginalFileNameeq
net.exe
728
OriginalFileNameeq
wmic.exe
461
process_nameeq
net1.exe
735
process_nameeq
net.exe
622
process_nameeq
cmd.exe
577
process_nameeq
dsquery.exe
412
DeviceProducteq
X Series
67
DeviceVendoreq
Vectra Networks
67
typeeq
Policy
66
DestinationPorteq
9389
55
Imageends_with
\net.exe
549
Imageends_with
\net1.exe
547
CommandLinecontains
user
417
DeviceEventClassIDne
asc
44
DeviceEventClassIDne
audit
44
DeviceEventClassIDne
campaigns
44
DeviceEventClassIDne
health
44
DeviceEventClassIDne
hsc
44
OperationNamecontains
update a partner cross-tenant access setting
44
SubjectUserNameends_with
$
43
data_stream.dataseteq
aws.cloudtrail
4141
dc_processgt
3
44
event.categoryeq
process
4128
event_countgt
0
44

Exclusions (211 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
SubjectUserNameends_with
$
4
user.ideq
S-1-5-18
3
user.idin
S-1-5-18
3
user.idin
S-1-5-19
3
user.idin
S-1-5-20
2
CommandLinecontains
add
2
CommandLinematch
(?i)\x5cSplunkUniversalForwarder\x5c(etc|bin)\x5c
2
Imagestarts_with
c:\windows\system32\windowspowershell\
2
Imagestarts_with
c:\windows\syswow64\windowspowershell\
2
usermatch
\$$
2
AADGroupIdin
Custom AAD GROUP OBJECT ID 2
1
AADGroupIdin
List with Custom AAD GROUP OBJECT ID 1
1
Accountends_with
$
1
AdditionalExtensionscontains
account
1
AlertNamecontains
0108
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 52 rules

Elastic 27 rules

Splunk 77 rules

Kusto 34 rules

YARA-L 1 rule

Panther 8 rules