# T1003.008 - /etc/passwd and /etc/shadow
## Descrição
Adversários podem tentar realizar o dump do conteúdo de `/etc/passwd` e `/etc/shadow` para possibilitar o cracking de senhas de forma offline. A grande maioria dos sistemas operacionais Linux modernos utiliza a combinação desses dois arquivos para armazenar informações de contas de usuários - incluindo os hashes de senha, que ficam protegidos no `/etc/shadow`.
O arquivo `/etc/passwd` armazena dados básicos de cada conta: nome de usuário, UID (User ID), GID (Group ID), diretório home e shell padrão. Historicamente, os hashes de senha também ficavam neste arquivo, mas a transição para o modelo de "shadow passwords" moveu os hashes para o `/etc/shadow`, que por padrão somente o usuário `root` pode ler. O `/etc/shadow` contém entradas tanto para usuários com senha definida quanto para contas de serviço, contas bloqueadas e contas desabilitadas.
Esta técnica é uma sub-técnica de [[t1003-os-credential-dumping|T1003 - OS Credential Dumping]] e representa um vetor clássico de escalada pós-exploração em ambientes Linux. Uma vez que um adversário obtém acesso privilegiado (root) ao sistema, a extração dos hashes contidos no `/etc/shadow` é um dos primeiros passos para movimentação lateral, pois permite o uso de ferramentas de cracking como [[john-the-ripper|John the Ripper]] ou [[hashcat|Hashcat]] para recuperar senhas em texto claro.
A técnica é especialmente relevante em ambientes corporativos onde políticas de senha fracas são aplicadas, ou onde contas de serviço compartilham senhas com outros sistemas, possibilitando que credenciais comprometidas sejam reutilizadas em ataques de [[t1078-valid-accounts|T1078 - Valid Accounts]] ou [[t1021-remote-services|T1021 - Remote Services]].
> **Técnica pai:** [[t1003-os-credential-dumping|T1003 - OS Credential Dumping]]
> **Tática:** [[_credential-access|Credential Access]]
---
## Como Funciona
O ataque se divide em duas fases principais: **coleta** e **cracking offline**.
### Fase 1 - Coleta dos arquivos
O adversário, com privilégios de root (ou com capacidade de ler `/etc/shadow` via SUID/SGID abuse), executa comandos simples para obter o conteúdo dos arquivos:
```bash
# Leitura direta
cat /etc/passwd
cat /etc/shadow
# Cópia para exfiltração
cp /etc/shadow /tmp/.shadow_backup
cp /etc/passwd /tmp/.passwd_backup
```
### Fase 2 - Combinação com `unshadow`
A utilitária `unshadow`, parte do pacote `john` (John the Ripper), combina os dois arquivos em um formato adequado para cracking:
```bash
unshadow /etc/passwd /etc/shadow > /tmp/crack.password.db
```
O arquivo resultante contém o nome do usuário vinculado ao hash da senha, no formato reconhecido por ferramentas de cracking. Os hashes mais comuns encontrados no `/etc/shadow` em sistemas Linux modernos incluem:
| Prefixo | Algoritmo | Nível de Resistência |
|---------|-----------|---------------------|
| `$1
| MD5 | Baixo - quebrável em minutos |
| `$5
| SHA-256 | Médio |
| `$6
| SHA-512 | Médio-alto |
| `$y
| yescrypt | Alto |
| `$2b
| bcrypt | Alto |
Sistemas legados ou mal configurados frequentemente ainda utilizam MD5 (`$1
), tornando o cracking trivial com hardware moderno.
### Fase 3 - Cracking offline
```bash
# John the Ripper com wordlist
john --wordlist=/usr/share/wordlists/rockyou.txt /tmp/crack.password.db
# Hashcat com GPU
hashcat -m 1800 /tmp/crack.password.db /usr/share/wordlists/rockyou.txt
```
---
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial ao Sistema Linux] --> B[Escalada de Privilégio para root]
B --> C{Método de Coleta}
C --> D[cat /etc/shadow]
C --> E[Cópia direta dos arquivos]
C --> F[Leitura via script/malware]
D --> G[unshadow passwd + shadow]
E --> G
F --> G
G --> H[Exfiltração do arquivo combinado]
H --> I[Cracking Offline]
I --> J{Resultado}
J --> K[Senhas recuperadas em texto claro]
K --> L[Reutilização de credenciais]
L --> M[Movimentação Lateral via SSH/RDP]
L --> N[Acesso a outros sistemas com mesma senha]
J --> O[Hashes resistentes - não quebrados]
O --> P[Pass-the-Hash ou tentativa continuada]
```
---
## Exemplos de Uso
### Exemplo 1 - Coleta simples em servidor comprometido
Em muitos cenários de pós-exploração documentados por equipes de resposta a incidentes, adversários que obtiveram acesso root via exploração de vulnerabilidades (como [[t1190-exploit-public-facing-application|T1190]]) executam imediatamente a coleta dos arquivos de credencial:
```bash
# Sequência clássica pós-escalada
id && whoami
cat /etc/shadow | grep -v ':!:' | grep -v ':*:' # filtra contas ativas
unshadow /etc/passwd /etc/shadow > /dev/shm/.d
```
O uso de `/dev/shm/` (memória compartilhada em RAM) como destino temporário evita gravação em disco e dificulta a recuperação forense.
### Exemplo 2 - Uso pela ferramenta [[s0349-lazagne|LaZagne]]
LaZagne é uma ferramenta open-source de recuperação de credenciais que suporta o módulo `shadow` para Linux. Em sua execução, ela automaticamente tenta ler `/etc/shadow` se dispuser de privilégios adequados:
```bash
python3 laZagne.py all
# Módulo Linux: tenta /etc/shadow, histórico de bash, chaves SSH
```
### Exemplo 3 - Containerização e escape
Em ambientes Docker ou Kubernetes, um container com volume montando `/etc/` do host pode expor os arquivos de credencial. Configurações incorretas de montagem (`-v /etc:/host-etc`) permitem que um processo interno ao container acesse os hashes do sistema operacional hospedeiro sem precisar de root no host.
---
## Detecção
### Regra Sigma - Leitura suspeita de /etc/shadow
```yaml
title: Acesso suspeito a /etc/shadow ou /etc/passwd
status: experimental
description: >
Detecta tentativas de leitura dos arquivos /etc/shadow e /etc/passwd
por processos não autorizados, potencialmente indicando coleta de credenciais.
logsource:
category: file_access
product: linux
detection:
selection_files:
TargetFilename|contains:
- '/etc/shadow'
- '/etc/passwd'
filter_legitimate:
Image|contains:
- '/usr/bin/passwd'
- '/usr/sbin/useradd'
- '/usr/sbin/usermod'
- '/usr/bin/chage'
condition: selection_files and not filter_legitimate
level: high
tags:
- attack.credential_access
- attack.t1003.008
falsepositives:
- Ferramentas de backup legítimas
- Scripts de auditoria de contas
- Agentes de monitoramento (verificar baseline)
```
### Regra Sigma - Execução de unshadow
```yaml
title: Uso de unshadow para combinar passwd e shadow
status: experimental
logsource:
category: process_creation
product: linux
detection:
selection:
Image|endswith: '/unshadow'
selection_args:
CommandLine|contains:
- '/etc/passwd'
- '/etc/shadow'
condition: selection or selection_args
level: critical
tags:
- attack.credential_access
- attack.t1003.008
```
### Indicadores de Comprometimento (comportamentais)
- Processo incomum acessando `/etc/shadow` (verificar via `auditd`)
- Execução de `unshadow`, `john`, ou `hashcat` em sistemas de produção
- Criação de arquivos em `/dev/shm/` ou `/tmp/` com padrões de nomes aleatórios após escalada
- Transferência de arquivos contendo padrão de hash Linux (`$6
, `$5
, `$1
) via rede
### Fontes de log recomendadas
| Fonte | O que monitorar |
|-------|----------------|
| Linux Audit (`auditd`) | Regras `-w /etc/shadow -p r -k credential_access` |
| Syslog / journald | Acesso a arquivos críticos do sistema |
| EDR (endpoint detection) | Criação de processos filhos de shells com args suspeitos |
| SIEM | Correlação de escalada de privilégio + acesso a /etc/shadow |
---
## Mitigação
| ID | Mitigação | Descrição |
|----|-----------|-----------|
| M1026 | [[m1026-privileged-account-management\|M1026 - Privileged Account Management]] | Limitar o número de contas com acesso root. Usar `sudo` com políticas granulares em vez de acesso root direto. Auditar regularmente as contas privilegiadas no sistema. |
| M1027 | [[m1027-password-policies\|M1027 - Password Policies]] | Forçar uso de hashes fortes (`yescrypt` ou `SHA-512` com alto número de rounds). Implementar política de rotação de senhas. Banir senhas presentes em dicionários conhecidos (rockyou.txt, etc.). |
### Controles adicionais recomendados
- **Habilitar `auditd`** com regras de monitoramento em `/etc/shadow` e `/etc/passwd`
- **Usar PAM (Pluggable Authentication Modules)** com configurações que impedem acesso direto a hashes
- **Implementar MFA** para contas privilegiadas, reduzindo o impacto de credenciais comprometidas
- **Princípio do mínimo privilégio:** processos de aplicação não devem rodar como root
- **Monitorar integridade de arquivos** com ferramentas como AIDE ou Tripwire para detectar modificações nos arquivos de autenticação
---
## Contexto Brasil/LATAM
A técnica T1003.008 é amplamente observada em incidentes que afetam infraestrutura Linux na América Latina, especialmente em ambientes de servidores web, sistemas de e-commerce e infraestrutura financeira.
### Cenários mais comuns na região
**Servidores web comprometidos via webshell:** A sequência de ataque mais documentada em incidentes brasileiros envolve a exploração de vulnerabilidades em aplicações PHP mal mantidas (ex: CMS desatualizados, uploads irrestitos) para instalação de webshells, seguida de escalada de privilégio local e coleta de `/etc/shadow`. Credenciais de banco de dados e acesso SSH recuperadas são então reutilizadas para acessar outros sistemas da mesma organização.
**Grupos de ransomware:** Operadores de [[ransomware]] como [[lockbit|LockBit]] e seus afiliados ativos no Brasil documentadamente coletam credenciais Linux como parte de sua métodologia de movimentação lateral antes da fase de cifragem. A recuperação de credenciais root de servidores de backup ou servidores de banco de dados frequentemente precede a destruição de backups.
**Ataques a provedores de hospedagem compartilhada:** O setor de hosting brasileiro, com grande número de pequenos provedores utilizando painéis como cPanel/WHM em servidores Linux, representa um alvo frequente. O comprometimento de uma conta pode, em casos de configurações inadequadas de isolamento, escalar para acesso aos arquivos de credencial do sistema.
### Referências de incidentes públicos na região
- Grupos APT com presença documentada no Brasil (como [[g0032-lazarus-group|Lazarus Group]] em campanhas financeiras) utilizam credential dumping como passo padrão no playbook de pós-exploração em servidores Linux.
- O [[cert-br|CERT.br]] documenta regularmente campanhas de comprometimento de servidores Linux com ferramentas de credential dumping.
---
## Referências
- [MITRE ATT&CK - T1003.008](https://attack.mitre.org/techniques/T1003/008)
- [Linux man page: shadow(5)](https://man7.org/linux/man-pages/man5/shadow.5.html)
- [Linux man page: passwd(5)](https://man7.org/linux/man-pages/man5/passwd.5.html)
- [John the Ripper documentation](https://www.openwall.com/john/doc/)
- [Linux PAM documentation](https://www.linux-pam.org/Linux-PAM-html/)
- [CERT.br - Boas Práticas de Segurança em Servidores Linux](https://www.cert.br/)
- [[t1003-os-credential-dumping|T1003 - OS Credential Dumping]] (técnica pai)
- [[m1026-privileged-account-management|M1026 - Privileged Account Management]]
- [[m1027-password-policies|M1027 - Password Policies]]
- [[t1078-valid-accounts|T1078 - Valid Accounts]] (uso de credenciais obtidas)
- [[t1021-remote-services|T1021 - Remote Services]] (movimentação lateral pós-cracking)