# T1037.002 - Login Hook
Técnica pai: [[t1037-boot-or-logon-initialization-scripts|T1037 - Scripts de Inicialização]]
## Descrição
**T1037.002 - Login Hook** é uma sub-técnica de persistência exclusiva do macOS que permite a adversários executar um script arbitrário com privilégios de **root** no momento em que qualquer usuário faz logon no sistema. O mecanismo funciona por meio de uma entrada no arquivo de preferências `/Library/Preferences/com.apple.loginwindow.plist`, que pode ser configurada usando a ferramenta de linha de comando `defaults`.
O arquivo `com.apple.loginwindow.plist` aceita dois tipos de hooks:
- **LoginHook**: script executado com root imediatamente após o logon do usuário
- **LogoutHook**: script executado com root após o logout do usuário
Para configurar um Login Hook, o adversário usa o comando:
```bash
defaults write com.apple.loginwindow LoginHook /caminho/para/script.sh
```
O script registrado é executado automaticamente pelo sistema operacional na próxima vez que qualquer usuário fizer logon, com as credenciais de root - tornando essa técnica especialmente poderosa para implantes que precisam de execução privilegiada sem intervenção do usuário.
O sistema permite apenas **um Login Hook e um Logout Hook por vez**. Se um hook já existir, o adversário pode sobrescrever o caminho registrado para redirecionar a execução ao script malicioso, ou adicionar comandos adicionais ao script legítimo existente para encadear a execução maliciosa sem remover o hook original.
> [!warning] Depreciação no macOS 10.11 (El Capitan)
> A Apple depreciou Login Hooks a partir do macOS 10.11. Para sistemas modernos, o MITRE recomenda observar [[t1543-004-launch-daemon|T1543.004 - Launch Daemon]] e [[t1543-001-launch-agent|T1543.001 - Launch Agent]] como substitutos funcionais com maior prevalência em ataques atuais. Em sistemas legados ou em ambientes corporativos com versões antigas do macOS, o Login Hook ainda representa risco real.
> [!note] Privilégios necessários
> Todos os hooks - criação e modificação - requerem permissões de administrador. O adversário precisa de acesso root ou sudo para registrar o caminho do script no plist.
## Attack Flow
```mermaid
graph TB
A["Acesso Inicial<br/>(exploit, credencial, engenharia social)"]
B["Escalonamento de Privilégio<br/>(necessário: admin/root)"]
C["Leitura do plist existente<br/>defaults read com.apple.loginwindow"]
D{"Já existe<br/>um LoginHook?"}
E["Sobrescrever caminho<br/>com script malicioso"]
F["Adicionar comandos<br/>ao script legítimo existente"]
G["Novo hook registrado<br/>no com.apple.loginwindow.plist"]
H["Próximo logon de usuário<br/>→ execução do script como root"]
I["Persistência ativa:<br/>C2, coleta de credenciais, backdoor"]
A --> B
B --> C
C --> D
D -->|Não| E
D -->|Sim| F
E --> G
F --> G
G --> H
H --> I
classDef initial fill:#e74c3c,color:#fff
classDef priv fill:#8e44ad,color:#fff
classDef decision fill:#f39c12,color:#fff
classDef action fill:#3498db,color:#fff
classDef persist fill:#27ae60,color:#fff
classDef impact fill:#e67e22,color:#fff
class A initial
class B priv
class D decision
class C,E,F,G action
class H persist
class I impact
```
## Relação com Outras Técnicas
O Login Hook é conceitualmente próximo de outros mecanismos de persistência no macOS. A distinção principal é o contexto de execução e o nível de privilégio:
| Mecanismo | Técnica | Executa como | Visibilidade |
|-----------|---------|--------------|--------------|
| Login Hook | [[t1037-002-login-hook\|T1037.002]] | root | Baixa (plist oculto) |
| Launch Daemon | [[t1543-004-launch-daemon\|T1543.004]] | root | Média (launchctl) |
| Launch Agent | [[t1543-001-launch-agent\|T1543.001]] | usuário atual | Média (launchctl) |
| Login Items | [[t1547-015-login-items\|T1547.015]] | usuário atual | Alta (System Preferences) |
O Login Hook executa como root independentemente de qual usuário está fazendo logon - comportamento diferente dos Launch Agents, que executam no contexto do usuário que iniciou a sessão.
## Detecção
```mermaid
graph TB
A["Monitorar modificações<br/>em plist de loginwindow"]
B{"com.apple.loginwindow.plist<br/>foi alterado?"}
C["Verificar campos:<br/>LoginHook / LogoutHook"]
D{"Path aponta para<br/>arquivo legítimo<br/>e assinado?"}
E["ALERTA: script não-assinado<br/>ou path suspeito registrado"]
F["Auditoria de<br/>criação de processos"]
G{"Script executado logo<br/>após logon do usuário<br/>com uid=0?"}
H["Investigar: possível<br/>LoginHook malicioso ativo"]
A --> B
B -->|Sim| C
C --> D
D -->|Não| E
F --> G
G -->|Sim| H
classDef monitor fill:#27ae60,color:#fff
classDef check fill:#3498db,color:#fff
classDef alert fill:#e74c3c,color:#fff
classDef investigaté fill:#f39c12,color:#fff
class A,F monitor
class B,C,D,G check
class E alert
class H investigaté
```
### Comandos para Auditoria
Para verificar se existe um Login Hook registrado no sistema:
```bash
# Leitura do hook registrado
defaults read com.apple.loginwindow LoginHook
defaults read com.apple.loginwindow LogoutHook
# Leitura completa do plist de loginwindow
sudo defaults read /Library/Preferences/com.apple.loginwindow
# Remoção de hook malicioso (remediação)
sudo defaults delete com.apple.loginwindow LoginHook
```
### Fontes de dados MITRE
- **File: File Modification** - monitorar escrita em `/Library/Preferences/com.apple.loginwindow.plist`
- **Process: Process Creation** - detectar scripts executados como root imediatamente após eventos de logon
## Mitigações
| Mitigação | Descrição | Prioridade |
|-----------|-----------|------------|
| [[m1022-restrict-file-and-directory-permissions\|M1022 - Restrict File and Directory Permissions]] | Restringir permissões de escrita em `/Library/Preferences/com.apple.loginwindow.plist` para impedir modificações não-autorizadas | Alta |
> [!tip] Mitigação adicional recomendada
> Além das permissões de arquivo, o monitoramento contínuo do plist com ferramentas de EDR para macOS (como Jámf Protect ou CrowdStrike Falcon para Mac) é a detecção mais efetiva. Em ambientes gerenciados, use MDM para bloquear alterações em preferências críticas do sistema.
## Contexto Brasil/LATAM
No Brasil e na América Latina, o uso de Login Hooks como mecanismo de persistência é menos prevalente do que técnicas equivalentes no Windows, mas constitui um risco real em ambientes corporativos que adotaram macOS em larga escala - especialmente empresas dos setores [[financial|financeiro]], [[technology|tecnologia]] e agências de publicidade e design, onde o uso de MacBooks é predominante.
Campanhas de espionagem corporativa direcionadas a executivos e times jurídicos de grandes empresas brasileiras registraram o uso de implantes macOS - incluindo variantes do [[s0482-bundlore|Bundlore]] e do [[shlayer|Shlayer]] - que exploram mecanismos de persistência nativos do macOS para garantir sobrevivência entre reinicializações. Embora esses implantes utilizem principalmente Launch Agents ([[t1543-001-launch-agent|T1543.001]]) em versões modernas do macOS, em sistemas legados sem atualização (macOS 10.10 ou anterior, ainda presentes em alguns ambientes corporativos brasileiros), o Login Hook permanece operacional e menos monitorado.
O risco específico no contexto LATAM está associado à **gestão deficiente de endpoints macOS em PMEs**: ausência de MDM (como Jámf ou Mosyle), falta de políticas de atualização obrigatória e ausência de EDR com cobertura para macOS criam uma jánela de exposição significativa. Em ambientes onde a equipe de TI não é treinada específicamente para ameaças macOS, um Login Hook malicioso pode permanecer ativo por meses sem ser detectado, fornecendo ao adversário execução privilegiada a cada logon do usuário.
Para equipes de segurança brasileiras que gerenciam frotas mistas Windows/macOS, a auditoria do campo `LoginHook` no `com.apple.loginwindow.plist` deve ser incluída nos runbooks de hardening de endpoint, especialmente em máquinas de usuários com acesso a sistemas financeiros, dados sensíveis de clientes ou credenciais de infraestrutura crítica. Ferramentas como o [[t1543-004-launch-daemon|T1543.004 - Launch Daemon]] são substitutos funcionais preferidos por adversários em versões modernas do macOS, mas o Login Hook deve ser auditado em qualquer inventário que inclua máquinas com macOS anterior ao Catalina (10.15).
---
*Fonte: MITRE ATT&CK - T1037.002 (https://attack.mitre.org/techniques/T1037/002/)*