Account Discovery: Domain Account T1087.002

Tactic: Discovery

Adversaries may attempt to get a listing of domain accounts. This information can help adversaries determine which domain accounts exist to aid in follow-on behavior such as targeting specific accounts which possess particular privileges.

Events covered

32 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 4661A handle to an object was requested.
Security-AuditingEvent ID 4662An operation was performed on an object.
Security-AuditingEvent ID 4688A new process has been created.
Security-AuditingEvent ID 4769A Kerberos service ticket was requested.
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)
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

Authoring guide

Patterns shared across the 91 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 (65 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
CommandLine33contains 21, regex_match 8, in 2, is_not_null 1, match 1(?i)searchroot|objectcategory=|userenum, oudmp , (?i)(objectcategory|trustdmp|member\s(.*)?-list), -sc u:, add
EventID30eq 304104, 4688, 1, 4103, 4662
OriginalFileName16eq 16net.exe, net1.exe, adexp, adfind.exe, cmd.exe
ScriptBlockText16contains 14, eq 4, in 3*[adsisearcher]*, *accountexpires*, *lastlogoff*, *lastlogon*, -filter
Image15ends_with 13, contains 1, eq 1\net.exe, \net1.exe, \adexp.exe, \adexplorer.exe, \adexplorer64.exe
process_name14eq 12, starts_with 2, wildcard 2, in 1cmd.exe, dscl, dsquery.exe, net.exe, net1.exe
Type6eq 6
event.type6eq 5, in 1start, process_started
process.args6eq 4, wildcard 4, in 2, starts_with 2, contains 1%appdata%, %homepath%, %localappdata%, (objectcategory=attributeschema), (objectcategory=computer)
DestinationPort5eq 4, in 19389, 389, 636, 88
ObjectType5contains 2, eq 2, in 1SAM_GROUP, SAM_USER, %{bf967a9c-0de6-11d0-a285-00aa003049e2}, %{bf967aba-0de6-11d0-a285-00aa003049e2}, bf967aba-0de6-11d0-a285-00aa003049e2
EventType4eq 3, ne 1ConnectionSuccess, ListeningConnectionCreated, exec
event_count4gt 40
Description3eq 2, contains 1Active Directory Editor, sharphound
ObjectName3ends_with 2, contains 1, in 1, starts_with 1-500, -502, -505, -512, CN=Account Operators,*

Top indicator values (1192 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
16268
EventIDeq
4688
6313
EventIDeq
1
3237
EventIDeq
4103
3105
EventIDeq
4662
313
OriginalFileNameeq
net.exe
528
OriginalFileNameeq
net1.exe
544
OriginalFileNameeq
adexp
33
OriginalFileNameeq
adfind.exe
34
event.typeeq
start
5606
DestinationPorteq
9389
45
Imageends_with
\net.exe
449
Imageends_with
\net1.exe
447
Imageends_with
\adexp.exe
33
Imageends_with
\adexplorer.exe
34
Imageends_with
\adexplorer64.exe
34
Imageends_with
\adexplorer64a.exe
34
event_countgt
0
44
process_nameeq
cmd.exe
477
process_nameeq
net.exe
322
process_nameeq
net1.exe
335
CommandLineregex_match
(?i)searchroot|objectcategory=|userenum
33
ScriptBlockTexteq
*[adsisearcher]*
34
SubjectUserNameends_with
$
33
event.categoryeq
process
3128
CommandLinecontains
oudmp
22
CommandLinecontains
-sc u:
22
CommandLinecontains
-subnets -f
22
CommandLinecontains
add
234
CommandLinecontains
adinfo
22

Exclusions (79 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
$
3
CommandLinecontains
add
2
CommandLinecontains
-i
1
CommandLinecontains
/add
1
user.ideq
S-1-5-18
2
user.idin
S-1-5-18
2
user.idin
S-1-5-19
2
user.idin
S-1-5-20
2
Accountends_with
$
1
AlertNamecontains
0108
1
Computereq
%admin_workstation%
1
Computereq
%domain_controllers%
1
CurrentDirectoryeq
/Applications/NinjaRMMAgent/programfiles/ninjarmm-macagent
1
CurrentDirectoryeq
/opt/Tanium/TaniumClient
1
CurrentDirectoryeq
/var/lib/nanitor/agent
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 28 rules

Elastic 11 rules

Splunk 45 rules

Kusto 7 rules