Password Policy Discovery T1201

Tactic: Discovery

Adversaries may attempt to access detailed information about the password policy used within an enterprise network or cloud environment. Password policies are a way to enforce complex passwords that are difficult to guess or crack through Brute Force. This information may help the adversary to create a list of common passwords and launch dictionary and/or brute force attacks which adheres to the policy (e.g. if the minimum password length should be 8, then not trying passwords such as 'pass123'; not checking for more than 3-4 passwords per account if the lockout is set to 6 as to not lock out accounts).

Events covered

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

Authoring guide

Patterns shared across the 30 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 (39 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
CommandLine8contains 7, regex_match 1accounts, --local-auth, -d , -h , accounts
ScriptBlockText7contains 4, in 3, eq 2get-addefaultdomainpasswordpolicy, .getgporeport(), .maxpasswordage, .minlengthpassword, .minpasswordage
EventID6eq 64104, 4799, DeleteAccountPasswordPolicy, UpdateAccountPasswordPolicy
process_name6eq 5, starts_with 2, ends_with 1cmd.exe, powershell, \lsass.exe, dsget.exe, dsquery.exe
Image4ends_with 3, eq 1\net.exe, \net1.exe, \crackmapexec.exe, c:\windows\adws\microsoft.activedirectory.webservices.exe
OriginalFileName4eq 4net1.exe, net.exe, cmd.exe, powershell.exe, powershell_ise.exe
event.category4eq 4process, LOGIN
aws::eventName3in 2, eq 1GetAccountPasswordPolicy, UpdateAccountPasswordPolicy, ConsoleLogin, DeleteAccountPasswordPolicy, PutAccountPasswordPolicy
EventType2eq 1, ne 1ListeningConnectionCreated, UPDATE
ObjectServer2eq 2Security Account Manager
aws::userAgent2eq 1, starts_with 1(azure|sharp|blood)(hound)/., Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
data_stream.dataset2eq 1, in 1azure.activitylogs, azure.auditlogs, azure.graphactivitylogs, azure.signinlogs, o365.audit
sourcetype2eq 2aws:cloudtrail
AccessList1contains 1%%5392
ObjectName1starts_with 1DC=

Top indicator values (296 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
4268
process_nameeq
cmd.exe
477
process_nameeq
net1.exe
235
OriginalFileNameeq
net1.exe
344
OriginalFileNameeq
net.exe
228
event.categoryeq
process
3128
CommandLinecontains
accounts
22
CommandLinecontains
--local-auth
1
CommandLinecontains
-d
18
CommandLinecontains
-h
1
CommandLinecontains
-h 'nthash'
1
CommandLinecontains
-m
1
CommandLinecontains
-m pe_inject
1
CommandLinecontains
-o
13
CommandLinecontains
-p
110
CommandLinecontains
-u
18
CommandLinecontains
-x
12
CommandLinecontains
10.
13
CommandLinecontains
192.168.
13
CommandLinecontains
accounts
1
Imageends_with
\net.exe
249
Imageends_with
\net1.exe
247
ObjectServereq
Security Account Manager
27
ScriptBlockTextcontains
get-addefaultdomainpasswordpolicy
22
ScriptBlockTextin
get-addefaultdomainpasswordpolicy
22
aws::eventNamein
GetAccountPasswordPolicy
22
aws::eventNamein
UpdateAccountPasswordPolicy
22
process_namestarts_with
powershell
24
sourcetypeeq
aws:cloudtrail
259
AccessListcontains
%%5392
12

Exclusions (34 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
user.ideq
S-1-5-18
2
CommandLinein
*/FORCELOGOFF*
1
CommandLinein
*/MAXPWAGE*
1
CommandLinein
*/MINPWAGE*
1
CommandLinein
*/MINPWLEN*
1
CommandLinein
*/UNIQUEPW*
1
ScriptBlockTexteq
# copyright: (c) 2018, ansible project
1
ScriptBlockTexteq
#ansiblerequires -csharputil ansible.basic
1
ScriptBlockTexteq
#requires -module ansible.moduleutils.addtype
1
ScriptBlockTexteq
43c15630-959c-49e4-a977-758c5cc93408
1
ScriptBlockTexteq
__cmdletization_bindcommonparameters
1
ScriptBlockTexteq
activedirectory.types.ps1xml
1
ScriptBlockTexteq
ansible.windows.setup
1
ScriptBlockTexteq
cdxml-help.xml
1
ScriptBlockTexteq
cmdletization
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 8 rules

Elastic 6 rules

Splunk 11 rules

Kusto 2 rules

YARA-L 1 rule

Panther 2 rules