Cross-source coverage
T1201 / ATT&CK
Password Policy Discovery
From MITRE ATT&CK 19.2
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).
Password policies can be set and discovered on Windows, Linux, and macOS systems via various command shell utilities such as net accounts (/domain), Get-ADDefaultDomainPasswordPolicy, chage -l , cat /etc/pam.d/common-password, and pwpolicy getaccountpolicies. Adversaries may also leverage a Network Device CLI on network devices to discover password policy information (e.g. show aaa, show aaa common-criteria policy all).
Password policies can be discovered in cloud environments using available APIs such as GetAccountPasswordPolicy in AWS.
- Tactics
- Discovery
- Platforms
- Windows · Linux · macOS · IaaS · Network Devices · Identity Provider · SaaS · Office Suite
- Telemetry
-
WinEventLog:SysmonWinEventLog:PowerShellWinEventLog:Securityauditd:SYSCALLlinux:syslogmacos:unifiedlogmacos:MDMAWS:CloudTrailazure:auditm365:unifiednetworkdevice:syslog
How MITRE says to detect it DET0161
Password Policy Discovery – cross-platform behavior-chain analytics
Windows Analytic 0455
Cause→effect chain: (1) a user or service spawns a shell/PowerShell that queries local/domain password policy via commands/cmdlets (e.g., `net accounts`, `Get-ADDefaultDomainPasswordPolicy`, `secedit /export`); (2) optional directory/LDAP reads from DCs; (3) same principal performs adjacent Discovery or credential-related actions within a short window. Correlate sysmon process creation with PowerShell ScriptBlock and Security logs.
WinEventLog:SysmonEventCode=1WinEventLog:PowerShellEventCode=4103, 4104, 4105, 4106WinEventLog:SecurityEventCode=4662
Linux Analytic 0456
Chain: (1) interactive/non-interactive `chage -l`, `grep`/`cat` of PAM config (e.g., `/etc/pam.d/common-password`, `/etc/security/pwquality.conf`); (2) optional reads of `/etc/login.defs`; (3) same user performs account enumeration or password change attempts shortly after. Use auditd `execve` and file read events plus shell history collection.
auditd:SYSCALLexecveauditd:SYSCALLopen,openat,readlinux:syslogsudo chage|grep pam_pwquality|cat /etc/login.defs
macOS Analytic 0457
Chain: (1) execution of `pwpolicy` or MDM/DirectoryService reads of account policies; (2) optional read of `/Library/Preferences/com.apple.loginwindow` or config profiles; (3) follow-on credential probing or lateral movement by same user/session. Use unified logs and process telemetry.
macos:unifiedlogpwpolicy|PasswordPolicymacos:unifiedlogexec /usr/bin/pwpolicymacos:MDMprofiles -P|getaccountpolicies
IaaS Analytic 0458
Chain: (1) cloud API calls that fetch tenant/organization password policy (e.g., AWS `GetAccountPasswordPolicy`, GCP/OCI equivalents or IAM settings reads); (2) within a short window, the same principal creates users, rotates creds, or changes auth settings. Use cloud audit logs.
AWS:CloudTrailGetAccountPasswordPolicy
Identity Provider Analytic 0459
Chain: (1) IdP policy/read operations by a principal (e.g., Microsoft Entra/Graph requests to read password or authentication policies); (2) adjacent risky changes (role assignment, app consent) by same principal. Use IdP audit logs.
azure:auditoperation contains 'Get*Password*Policy' OR 'List*Authentication*Policy' OR 'Get-ADDefaultDomainPasswordPolicy'
SaaS Analytic 0460
Chain: (1) SaaS admin API or PowerShell remote session reads tenant password/authentication settings (e.g., M365 Unified Audit Log ‘Cmdlet’ with `Get-MsolPasswordPolicy`/`Get-OrganizationConfig` parameters that expose password settings); (2) same session proceeds to mailbox or tenant changes.
m365:unifiedWorkload=AzureActiveDirectory OR Exchange AND (Operation=Cmdlet AND Parameters contains 'Password' AND (CmdletName='Get-*' OR CmdletName='Get-OrganizationConfig'))
Network Devices Analytic 0461
Chain: (1) privileged CLI sessions run read-only commands that dump AAA/password policies (e.g., `show aaa`, `show password-policy`); (2) same account changes AAA or user DB shortly after. Use network device AAA/command accounting or syslog.
networkdevice:syslogcmd='show aaa*' OR 'show running-config | include password|aaa' OR 'show aaa common-criteria policy all'
Sub-techniques with coverage
Counted in the 42 above — a rule tagged a sub-technique covers this technique too.
socfortress/Wazuh-Rules
14 rules · 12 families+ 4 more from socfortress/Wazuh-Rules → showing the 10 highest-severity
splunk/security_content
9 rules| Detection | Severity | Format |
|---|---|---|
| AWS High Number Of Failed Authentications For User | Undefined | SPL |
| AWS Password Policy Changes | Undefined | SPL |
| Get ADDefaultDomainPasswordPolicy with Powershell | Undefined | SPL |
| Get ADDefaultDomainPasswordPolicy with Powershell Script Block | Undefined | SPL |
| Get ADUserResultantPasswordPolicy with Powershell | Undefined | SPL |
| Get ADUserResultantPasswordPolicy with Powershell Script Block | Undefined | SPL |
| Get DomainPolicy with Powershell | Undefined | SPL |
| Get DomainPolicy with Powershell Script Block | Undefined | SPL |
| Windows Password Policy Discovery with Net | Undefined | SPL |
SigmaHQ/sigma
6 rules| Detection | Severity | Format |
|---|---|---|
| HackTool - CrackMapExec Execution | High | Sigma |
| Password Policy Enumerated | Medium | Sigma |
| Cisco Discovery | Low | Sigma |
| Net.EXE Execution | Low | Sigma |
| Password Policy Discovery - Linux | Low | Sigma |
| Password Policy Discovery With Get-AdDefaultDomainPasswordPolicy | Low | Sigma |
Bert-JanP/Hunting-Queries-Detection-Rules
3 rules| Detection | Severity | Format |
|---|---|---|
| Detect net(1).exe Discovery Activities | Undefined | KQL |
| List net(1).exe discovery activities | Undefined | KQL |
| MITRE ATT&CK Mapping | Undefined | KQL |
elastic/detection-rules
3 rules| Detection | Severity | Format |
|---|---|---|
| Entra ID Sign-in BloodHound Suite User-Agent Detected | High | Elastic TOML |
| Entra ID Sign-in TeamFiltration User-Agent Detected | High | Elastic TOML |
| PowerShell Suspicious Discovery Related Windows API Functions | Low | Elastic TOML |
panther-labs/panther-analysis
3 rules| Detection | Severity | Format |
|---|---|---|
| ZIA Password Expiration | Medium | Panther Python |
| AWS CloudTrail Password Policy Discovery | Informational | Panther Python |
| EKS Audit Log Reporting system Namespace is Used From A Public IP | Informational | Panther Python |
elastic/protections-artifacts
2 rules| Detection | Severity | Format |
|---|---|---|
| Domain Password Policy Enumeration via LDAP | Undefined | Elastic TOML |
| Password Spraying Enumeration via LDAP | Undefined | Elastic TOML |
Azure/Azure-Sentinel
1 rule| Detection | Severity | Format |
|---|---|---|
| Suspicious enumeration using Adfind tool (Normalized Process Events) | Undefined | KQL |
chronicle/detection-rules
1 rule| Detection | Severity | Format |
|---|---|---|
| aws_password_policy_change | Medium | YARA-L |