# T1201 - Password Policy Discovery
## Descrição
A descoberta de política de senhas é uma das primeiras ações que adversários executam após obter acesso inicial a um ambiente corporativo. Antes de tentar qualquer ataque de força bruta ou pulverização de senhas ([[t1110-brute-force|Brute Force]]), o atacante precisa entender as regras que governam as credenciais naquele domínio: comprimento mínimo, complexidade exigida, histórico de reutilização e, principalmente, o limiar de bloqueio de conta.
Esse conhecimento é estratégico porque evita que o adversário dispare alertas ao tentar muitas senhas erradas em sequência. Se a política bloqueia após cinco tentativas incorretas, o atacante ajusta sua cadência para no máximo três tentativas por conta, distribuídas ao longo de dias. Além disso, a política revela o padrão mínimo aceito - se o comprimento mínimo é oito caracteres e não há exigência de caracteres especiais, a wordlist de ataque pode ser substancialmente reduzida, aumentando a eficiência.
Em ambientes Windows e Active Directory, as políticas são consultadas via ferramentas nativas como `net accounts /domain` e o cmdlet PowerShell `Get-ADDefaultDomainPasswordPolicy`. Em sistemas Linux e macOS, as configurações ficam em arquivos como `/etc/pam.d/common-password` e são consultadas com `chage -l <usuario>`. Em ambientes de nuvem, as APIs oferecem endpoints dedicados: na AWS, `GetAccountPasswordPolicy` retorna toda a política da conta IAM; no Azure, as políticas do Entra ID são enumeradas via Graph API ou Azure CLI.
**Contexto Brasil/LATAM:** Organizações brasileiras dos setores financeiro, governo e saúde são alvos frequentes de grupos como [[g0049-oilrig|OilRig]] e [[g0010-turla|Turla]], que utilizam essa técnica como parte do reconhecimento pós-comprometimento. No Brasil, políticas de senhas historicamente fracas - especialmente em órgãos públicos municipais e estaduais - tornam essa etapa de reconhecimento particularmente rentável para os atacantes. Ambientes Microsoft 365 em empresas de médio porte no Brasil frequentemente apresentam políticas de complexidade insuficientes, facilitando ataques subsequentes de password spraying contra contas no Entra ID.
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial] --> B[**T1201 - Policy Discovery**]
B --> C[T1110 - Brute Force]
C --> D[Movimento Lateral]
```
## Como Funciona
A técnica segue um fluxo bem definido de coleta de informações antes de qualquer tentativa de comprometimento de credenciais:
1. **Preparação:** O adversário já possui acesso autenticado (usuário de baixo privilégio ou acesso a um host comprometido). O objetivo é coletar metadados sobre a política sem disparar alertas - por isso utiliza ferramentas nativas do sistema operacional.
2. **Execução em Windows/AD:** Comandos como `net accounts` e `net accounts /domain` enumeram a política local e de domínio, respectivamente. Para políticas granulares (Fine-Grained Password Policies no AD), o adversário pode usar `Get-ADFineGrainedPasswordPolicy` ou consultar diretamente o LDAP. Ferramentas como [[s0488-crackmapexec|CrackMapExec]] automatizam essa coleta em vários hosts simultaneamente.
3. **Execução em nuvem:** Na AWS, o comando `aws iam get-account-password-policy` retorna toda a configuração. No Microsoft 365, `Get-MsolPasswordPolicy` ou chamadas à Graph API revelam os parâmetros do tenant. Ferramentas de reconhecimento como [[s1091-pacu|Pacu]] (AWS) e [[s0677-aadinternals|AADInternals]] (Azure/M365) automatizam essas consultas.
4. **Pós-execução:** Os dados coletados alimentam diretamente a configuração do ataque de [[t1110-brute-force|Brute Force]] ou [[t1110-003-password-spraying|Password Spraying]], ajustando a cadência de tentativas abaixo do limiar de bloqueio.
**Exemplo:**
```bash
# Artefato detectável: consulta à política de senhas do domínio via net.exe
# Gera evento Windows Event ID 4798/4799 e log de processo
net accounts /domain
# Ou via PowerShell (gera ScriptBlock logging - Event ID 4104)
Get-ADDefaultDomainPasswordPolicy -Identity "empresa.local"
```
## Detecção
**Fontes de dados:** Windows Event Log (IDs 4798, 4799, 4103, 4104), LDAP query logs, AWS CloudTrail (`GetAccountPasswordPolicy`), Azure AD Sign-in Logs, Microsoft 365 Unified Audit Log, EDR process telemetry.
```yaml
title: Password Policy Discovery via Native Tools
id: a3f7c921-5e84-4b12-9d3a-c8e2f10b7654
status: experimental
description: Detects enumeration of password policy using native Windows commands or PowerShell
logsource:
category: process_creation
product: windows
detection:
selection_net:
Image|endswith: '\net.exe'
CommandLine|contains: 'accounts'
selection_powershell:
Image|endswith:
- '\powershell.exe'
- '\pwsh.exe'
CommandLine|contains:
- 'Get-ADDefaultDomainPasswordPolicy'
- 'Get-ADFineGrainedPasswordPolicy'
- 'Get-MsolPasswordPolicy'
condition: 1 of selection_*
falsepositives:
- Administrative activity
- IT audit scripts
level: medium
tags:
- attack.discovery
- attack.t1201
```
## Mitigação
| Mitigação | Recomendação Prática |
|-----------|---------------------|
| [[m1027-password-policies\|M1027 - Password Policies]] | Implementar política mínima de 12 caracteres com complexidade, lockout após 5 tentativas e revisão semestral. Habilitar Fine-Grained Password Policies para contas privilegiadas no AD. |
## Referências
*Fonte: [MITRE ATT&CK - T1201](https://attack.mitre.org/techniques/T1201)*