# T1555.002 - Securityd Memory
> [!info] Técnica MITRE ATT&CK
> **ID:** T1555.002 | **Tática:** Credential Access | **Plataformas:** Linux, macOS
> **Técnica pai:** [[t1555-credentials-from-password-stores|T1555 - Credentials from Password Stores]]
## Descrição
T1555.002 descreve uma técnica avançada de extração de credenciais exclusiva de sistemas macOS (e potencialmente Linux) na qual um adversário com acesso root lê a memória do processo `securityd` para recuperar a senha de login do usuário em texto claro e, por extensão, obter acesso completo ao **Keychain** da vítima - o cofre centralizado de credenciais do sistema operacional Apple.
O `securityd` é o daemon de segurança do macOS responsável por implementar protocolos de autorização, criptografia e gerenciamento de chaves. Quando um usuário faz login, o macOS utiliza a senha de login como base para gerar uma chave mestra que desbloqueia automaticamente o Keychain do usuário - um comportamento de conveniência que elimina a necessidade de digitar a senha do Keychain separadamente. Para viabilizar esse desbloqueio automático, o `securityd` mantém informações derivadas da senha de login na memória.
A implementação legada do Keychain no macOS (anterior ao macOS El Capitan / OS X 10.11) permitia que usuários com privilégios root acessassem senhas em texto claro do Keychain de usuários logados, pois a Apple cacheava essas credenciais para evitar prompts repetitivos. O mecanismo funciona assim: o `securityd` recebe a senha de login do usuário, a criptografa usando PBKDF2, e armazena a chave resultante na memória. Com essa chave mestra em mãos, o adversário precisa apenas iterar sobre os valores de criptografia para desbloquear todas as senhas do Keychain.
Embora versões modernas do macOS implementem mitigações adicionais via SIP (System Integrity Protection) e novas APIs de Keychain, versões desatualizadas do sistema e variantes da técnica continuam sendo exploradas. O malware [[keydnap|Keydnap]] é um exemplo documentado de uso dessa técnica em ataques reais contra usuários macOS.
---
## Como Funciona
### Arquitetura do sistema de segurança macOS
O sistema de segurança do macOS é construído em torno de dois componentes principais:
**Keychain:** Banco de dados criptografado (AES-128-CBC ou AES-256) que armazena senhas de Wi-Fi, senhas de sites e aplicativos, certificados digitais, chaves privadas SSH/GPG, tokens de autenticação e notas seguras. Existe um Keychain de login (desbloqueado automaticamente no login) e keychains adicionais que podem exigir senhas separadas.
**securityd:** Daemon que implementa o acesso ao Keychain, autorização e serviços de criptografia. Roda com altos privilégios e é o intermediário entre aplicações e o armazenamento de chaves.
### O mecanismo de exploração
Em versões vulneráveis do macOS, o fluxo de ataque funciona da seguinte forma:
1. **Obtenção de root:** O adversário deve primeiro escalar privilégios para root no sistema alvo. Isso pode ser feito via [[t1068-exploitation-for-privilege-escalation|T1068 - Exploitation for Privilege Escalation]], abuso de binários SUID, configurações incorretas de sudoers, ou exploração de vulnerabilidades do kernel.
2. **Localização da chave mestra na memória do `securityd`:** O `securityd` armazena na memória uma representação derivada da senha de login (processada com PBKDF2). Usando ferramentas de leitura de memória de processo (disponíveis para root no macOS pré-El Capitan sem proteções adicionais), o adversário varre o heap do processo `securityd` procurando estruturas de dados que contenham a chave mestra.
3. **Descriptografia iterativa do Keychain:** Com a chave mestra identificada, o adversário itera sobre os demais valores de criptografia específicos do Keychain para derivar a chave de descriptografia final de cada item armazenado.
4. **Extração de credenciais em texto claro:** Senhas de Wi-Fi, credenciais de e-mail, senhas de websites (Safari), tokens OAuth, senhas de aplicativos, certificados e chaves privadas ficam disponíveis em texto claro.
### Variantes e técnicas relacionadas
**Leitura via Security Framework APIs:** Aplicações com acesso autorizado ao Keychain (e rodando no contexto da sessão do usuário com as permissões corretas) podem usar as APIs oficiais de `SecItemCopyMatching` para acessar itens legítimos. Malwares que obtêm autorização (via engenharia social ou abuso de permissões) podem usar esse vetor legítimo para exportar credenciais sem acesso root.
**securityd em Linux (gnome-keyring-daemon):** No Linux, o equivalente funcional é o `gnome-keyring-daemon`, usado em ambientes GNOME para gerenciar segredos do usuário. Técnicas análogas de leitura de memória do processo com root podem ser aplicadas para extrair segredos do gnome-keyring, expandindo o alcance desta técnica além do ecossistema Apple.
**CVE-relevant:** Vulnerabilidades históricas no `securityd` e no Security.framework da Apple (como as exploradas pelo [[keydnap|Keydnap]]) demonstram que esse vetor permanece relevante mesmo com as melhorias introduzidas no macOS moderno.
---
## Attack Flow
```mermaid
graph TB
A["🍎 Alvo macOS<br/>Versão vulnerável ou<br/>SIP desabilitado"] --> B["🎯 Acesso Inicial<br/>Phishing, trojanized app<br/>ou exploit remoto"]
B --> C["⬆️ Escalada de Privilégios<br/>CVE local / binário SUID<br/>Abuso de sudoers"]
C --> D{"Root obtido?"}
D -->|Sim| E["🔍 Reconhecimento do Processo<br/>Localizar PID do securityd<br/>Verificar versão macOS"]
D -->|Não| F["🔄 Técnica alternativa<br/>Keychain API com<br/>persuasão de permissão"]
E --> G["💾 Leitura de Memória do securityd<br/>Varredura do heap do processo<br/>Busca da chave mestra PBKDF2"]
G --> H["🔑 Derivação da Chave de Descriptografia<br/>Iteração sobre valores<br/>de criptografia do Keychain"]
H --> I["🗃️ Descriptografia do Keychain<br/>Extração de todos os itens<br/>em texto claro"]
F --> J["📋 Acesso via API Legítima<br/>SecItemCopyMatching<br/>com permissão aprovada"]
I --> K["💳 Credenciais Exfiltradas<br/>Senhas Wi-Fi, sites, apps<br/>Chaves SSH, certificados, tokens"]
J --> K
K --> L["🚀 Movimento Lateral / Persistência<br/>Uso das credenciais obtidas<br/>para acesso a serviços e sistemas"]
```
---
## Exemplos de Uso
### Keydnap - Backdoor macOS
O [[keydnap|Keydnap]] é um backdoor para macOS descoberto em 2016 e atribuído a um grupo de ameaça avançada. Sua funcionalidade mais notável era a capacidade de explorar a memória do `securityd` para extrair credenciais do Keychain do usuário. O malware era distribuído via arquivos ZIP contendo executáveis com ícone de documento de texto, enganando usuários ao clicar. Uma vez executado, escalava privilégios e extraía credenciais para exfiltração.
O Keydnap demonstrou que mesmo sem acesso à senha mestra diretamente, um adversário com root pode recuperar senhas armazenadas no Keychain através da exploração do estado em memória do `securityd` - tornando qualquer credencial já cadastrada no Keychain vulnerável.
### Ataques a desenvolvedores macOS
Desenvolvedores de software, designers e profissionais criativos são alvos frequentes de ataques usando T1555.002, pois frequentemente armazenam no Keychain credenciais de alto valor:
- Chaves privadas SSH para acesso a servidores de produção e repositórios Git
- Tokens de API para serviços cloud (AWS, GCP, Azure)
- Certificados de desenvolvedor Apple para assinatura de apps
- Credenciais de acesso a sistemas CI/CD (Jenkins, GitHub Actions)
- Senhas de bancos de dados e ambientes de staging
A exploração do Keychain via T1555.002 nesse perfil de vítima frequentemente resulta em comprometimento de supply chain ou acesso a infraestrutura de produção.
### Análise técnica - estrutura de memória do securityd
Em versões vulneráveis, pesquisadores identificaram que o `securityd` mantém no heap estruturas do tipo `CKeychain` e `CKeychainItem` que contêm referências às chaves de criptografia dos itens do Keychain. A senha de login processada com PBKDF2 resulta em uma chave de 20 bytes que, combinada com um salt armazenado no arquivo do Keychain, permite a descriptografia iterativa de cada item.
Ferramentas de análise forense como `OSXCollector` e técnicas documentadas por pesquisadores de segurança macOS demonstraram como varrer o espaço de memória do `securityd` para localizar essas estruturas - conhecimento que foi subsequentemente incorporado em frameworks de red team e malwares como o Keydnap.
---
## Detecção
### Indicadores de Comprometimento
- Processos não-Apple acessando a memória do `securityd` via chamadas de sistema como `task_for_pid()`, `mach_vm_read()` ou `process_vm_readv()`
- Escalada de privilégios para root precedendo acesso ao Keychain
- Erros de autorização Keychain em logs do sistema para aplicações sem histórico de acesso
- Execução de ferramentas de dump de memória em contexto de root no sistema
- Acesso ao arquivo de Keychain (`~/Library/Keychains/login.keychain-db`) por processos inesperados
- Logs do sistema mostrando múltiplas tentativas de acesso a itens do Keychain em curto período
### Regra de Detecção (Sigma)
```yaml
title: Suspicious Access to securityd Process Memory on macOS
status: experimental
description: >
Detecta tentativas de leitura da memória do processo securityd em sistemas macOS,
indicando possível extração de credenciais do Keychain via T1555.002.
logsource:
category: process_access
product: macos
service: endpoint_security
detection:
selection:
EventType: ES_EVENT_TYPE_AUTH_GET_TASK
TargetProcessName: securityd
filter_legitimate:
SourceProcessName|contains:
- "com.apple"
- "Security"
- "securityd"
condition: selection and not filter_legitimate
level: critical
tags:
- attack.credential_access
- attack.t1555.002
falsepositives:
- Ferramentas legítimas de monitoramento de sistema com permissões elevadas
- Software de backup ou diagnóstico aprovado pela equipe de TI
```
### Regra Complementar - Keychain File Access
```yaml
title: Keychain Database Access by Unexpected Process on macOS
status: experimental
description: >
Detecta acesso ao arquivo de banco de dados do Keychain por processos
que não sejam os utilitários Apple autorizados.
logsource:
category: file_access
product: macos
service: unified_log
detection:
selection:
FilePath|contains:
- "Library/Keychains/login.keychain"
- "Library/Keychains/login.keychain-db"
filter_apple_processes:
ProcessName|contains:
- "securityd"
- "keychain-access-groups"
- "security"
- "Keychain Access"
condition: selection and not filter_apple_processes
level: high
tags:
- attack.credential_access
- attack.t1555.002
```
### Fontes de log recomendadas
| Fonte | Dados relevantes |
|-------|-----------------|
| macOS Unified Log (`log stream`) | Eventos do Security.framework e acesso ao Keychain |
| macOS Endpoint Security Framework | Chamadas de sistema para acesso à memória de outros processos |
| macOS Audit Framework (BSM) | Chamadas `task_for_pid`, `proc_info`, `mach_vm_read` |
| EDR para macOS (Jámf Protect, CrowdStrike, Kandji) | Comportamentos anômalos de acesso à memória de processos privilegiados |
| Logs de Autorização macOS | `/var/log/authd.log` - tentativas de autorização incomuns |
---
## Mitigação
> [!warning] Mitigações nativas limitadas
> O MITRE ATT&CK não lista mitigações específicas para T1555.002, pois a técnica depende de acesso root que, uma vez obtido, oferece capacidades amplas no sistema. O foco deve ser em **prevenir a escalada de privilégios** que precede o ataque.
### Medidas de mitigação recomendadas
**Atualização do sistema operacional:**
- Manter macOS atualizado para versões modernas (macOS Ventura 13+, Sonoma 14+) que implementam SIP (System Integrity Protection), Gatekeeper aprimorado e restrições adicionais ao acesso de memória de processos privilegiados.
- SIP impede que mesmo usuários root modifiquem determinadas áreas do sistema e restringe a capacidade de inspecionar processos do sistema.
**Prevenção de escalada de privilégios:**
- Aplicar patches de segurança regularmente para corrigir CVEs de escalada de privilégios locais que são o pré-requisito desta técnica.
- Implementar EDR com detecção de escalada de privilégios em endpoints macOS.
- Auditar e restringir configurações de `sudoers` - eliminar entradas NOPASSWD desnecessárias.
- Revisar binários com bit SUID/SGID que possam ser abusados para escalada.
**Hardening do Keychain:**
- Criar um Keychain separado com senha distinta da senha de login para armazenar credenciais de alto valor - isso impede o desbloqueio automático pelo `securityd` no login.
- Configurar itens do Keychain para exigir confirmação de acesso (`kSecAccessControlUserPresence`) em vez de acesso silencioso.
- Usar "iCloud Keychain" com autenticação de dois fatores para credenciais pessoais.
**Gerenciamento de dispositivos macOS (MDM):**
- Usar soluções como Jámf Pro ou Apple Business Manager com perfis de configuração que impõem controles de segurança adicionais.
- Implementar FileVault para criptografia em disco - impede acesso ao arquivo do Keychain em ataques offline.
- Habilitar bloqueio de screen após inatividade para exigir reautenticação.
**Detecção e resposta:**
- Implementar Jámf Protect ou CrowdStrike Falcon para macOS com regras específicas para detecção de T1555.002.
- Monitorar Unified Log para eventos de acesso ao Keychain fora do padrão normal do usuário.
- Alertar para qualquer processo tentando usar `task_for_pid()` contra `securityd`.
---
## Contexto Brasil/LATAM
Embora T1555.002 sejá uma técnica altamente especializada com escopo restrito a macOS e Linux, sua relevância no contexto brasileiro está crescendo rapidamente:
**Adoção crescente de macOS em empresas brasileiras:** O mercado corporativo brasileiro tem visto adoção significativa de dispositivos Apple, especialmente em setores como tecnologia, finanças, publicidade, mídia e startups. Empresas como iFood, Nubank, XP Investimentos e grandes agências de publicidade operam frotas significativas de MacBooks, ampliando a superfície de ataque para técnicas específicas de macOS como T1555.002.
**Desenvolvedores como vetores de supply chain:** O Brasil possui um dos maiores ecossistemas de desenvolvimento de software da América Latina, com mais de 500.000 desenvolvedores ativos. Desenvolvedores que usam macOS e armazenam credenciais no Keychain - especialmente chaves SSH para servidores de produção, tokens de API e certificados de assinatura de código - representam alvos de alto valor para adversários interessados em [[supply-chain|ataques à cadeia de suprimentos de software]].
**Grupos APT focados em LATAM com capacidades macOS:** APTs como o grupo iraniano por trás do [[s0652-markirat|MarkiRAT]] e grupos norte-coreanos como [[g0032-lazarus-group|Lazarus Group]] possuem malwares documentados para macOS. Embora ataques direcionados específicamente a T1555.002 no LATAM sejam menos documentados públicamente que outras técnicas, o histórico de operações desses grupos na região e o crescimento do parque macOS empresarial cria um cenário de risco real.
**Setor financeiro e fintechs:** O Brasil lidera a América Latina em adoção de fintechs (mais de 1.000 registradas no Banco Central). Muitas dessas empresas operam com equipes predominantemente em macOS. Credenciais de acesso a sistemas de pagamento instantâneo (PIX), plataformas de câmbio e sistemas bancários armazenadas no Keychain representam alvos de alto impacto financeiro para adversários.
**LGPD e requisitos de auditoria:** Incidentes envolvendo T1555.002 podem resultar em exfiltração massiva de credenciais pessoais e corporativas com implicações diretas sob a Lei Geral de Proteção de Dados. A extração do Keychain de um único desenvolvedor ou administrador de sistemas pode expor dados de clientes se as credenciais comprometidas derem acesso a sistemas de processamento de dados pessoais.
---
## Software Associado
- [[keydnap|Keydnap]] (malware macOS) - demonstrou uso desta técnica em ataques documentados de 2016
---
## Referências
- [MITRE ATT&CK - T1555.002 Securityd Memory](https://attack.mitre.org/techniques/T1555/002)
- [Apple Security - System Integrity Protection](https://support.apple.com/en-us/102149)
- [Patrick Wardle - Analysis of macOS Keychain Security](https://objective-see.org/blog.html)
- [ESET - Keydnap Analysis](https://www.welivesecurity.com/2016/07/06/new-osxkeydnap-malware-hungry-credentials/)
- [[keydnap|Keydnap]] - malware macOS que explora securityd memory
- [[t1555-credentials-from-password-stores|T1555 - Credentials from Password Stores]]
- [[t1068-exploitation-for-privilege-escalation|T1068 - Exploitation for Privilege Escalation]]
- [[t1555-005-password-managers|T1555.005 - Password Managers]]
- [[t1555-001-keychain|T1555.001 - Keychain]]
- [[g0032-lazarus-group|Lazarus Group]] - APT com capacidades macOS documentadas
- [[s0652-markirat|MarkiRAT]] - malware com módulos de credential theft em macOS
---
*Fonte: [MITRE ATT&CK - T1555.002](https://attack.mitre.org/techniques/T1555/002)*