# T1574.004 - Sequestro de Dylib
## Técnica Pai
[[t1574-hijack-execution-flow|T1574 - Sequestro de Fluxo de Execução]]
## Descrição
Adversários exploram o mecanismo de carregamento dinâmico de bibliotecas do macOS para executar payloads maliciosos ao posicionarem uma dylib (dynamic library) com nome esperado em um caminho que uma aplicação vítima pesquisa em tempo de execução. O dynamic loader do macOS (`dyld`) busca bibliotecas em uma sequência de caminhos definida no binário - e o atacante explora a ordem dessa busca para interceptar o carregamento com sua própria biblioteca.
O mecanismo de `@rpath` é central para essa técnica: ele permite que desenvolvedores usem caminhos relativos configuráveis em tempo de execução, definindo um array de diretórios a serem pesquisados. Se um desses diretórios for gravável pelo usuário corrente - ou se o adversário já tiver comprometido permissões - uma dylib maliciosa com o nome correto colocada nesse caminho será carregada antes da biblioteca legítima. Uma vez carregada no espaço de endereço da aplicação, a dylib herda todos os privilégios, entitlements e recursos da aplicação hospedeira, podendo resultar em escalada de privilégios e acesso irrestrito à rede.
A variante de **weak linking** (`LC_LOAD_WEAK_DYLIB`) é particularmente explorável: aplicações compiladas com esse flag continuam executando mesmo quando uma dylib referênciada não existe. Isso significa que basta criar a dylib inexistente no caminho correto - sem necessidade de substituir um arquivo legítimo. A execução maliciosa é completamente mascarada sob o processo legítimo da aplicação vítima, dificultando a detecção por produtos de segurança que confiam em listas de processos confiáveis.
**Contexto Brasil/LATAM:** O crescimento do uso de macOS em ambientes corporativos no Brasil - especialmente em empresas de tecnologia, fintechs e escritórios jurídicos - amplia a superfície de ataque para essa técnica. Ameaças como o [[g0032-lazarus-group]] têm direcionado ataques a desenvolvedores macOS na região com implantes que utilizam dylib hijacking para persistência em IDEs e ferramentas de desenvolvimento. Ambientes com [[t1078-valid-accounts|contas de usuário com privilégios excessivos]] e sem controles de integridade de bibliotecas são especialmente vulneráveis.
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial<br/>Engenharia Social / App Malicioso] --> B[Reconhecimento<br/>Mapeamento de @rpath e weak dylibs]
B --> C[ESTA TÉCNICA<br/>T1574.004 - Dylib Hijacking<br/>Dylib maliciosa posicionada no caminho]
C --> D[Execução<br/>dyld carrega dylib ao iniciar aplicação]
D --> E{Resultado}
E --> F[Persistência<br/>Executa a cada abertura da aplicação]
E --> G[Escalada de Privilégios<br/>Herda entitlements da aplicação]
E --> H[Evasão de Defesas<br/>Execução mascarada por processo legítimo]
F --> I[Acesso Contínuo<br/>C2 ou exfiltração]
G --> I
H --> I
```
## Como Funciona
1. **Identificação de caminhos vulneráveis:** O adversário analisa binários macOS com ferramentas como `otool` ou `dyldinfo` para mapear as entradas `@rpath`, `@executable_path` e `LC_LOAD_WEAK_DYLIB`. Identifica bibliotecas que são referênciadas mas ausentes no sistema, ou cujos caminhos de busca incluem diretórios graváveis.
2. **Criação da dylib maliciosa:** Uma dylib com o nome exato da biblioteca esperada é compilada. Para não interromper a execução da aplicação, a dylib maliciosa geralmente reexporta a dylib legítima (usando `LC_REEXPORT_DYLIB`) enquanto executa o payload em paralelo - mantendo a aplicação funcional e o usuário sem suspeitas.
3. **Posicionamento no caminho correto:** A dylib maliciosa é colocada no diretório identificado na busca de `@rpath`, em uma posição anterior à biblioteca legítima, ou no lugar de uma dylib ausente (`LC_LOAD_WEAK_DYLIB`). Não requer privilégios de root se o diretório for gravável pelo usuário.
4. **Execução na abertura da aplicação:** A cada vez que a aplicação vítima é aberta, o `dyld` carrega a dylib maliciosa antes de encontrar a legítima (ou no lugar da ausente). O payload executa no contexto da aplicação, com todos os seus privilégios e entitlements do sistema.
**Exemplo - identificação de weak dylibs e @rpath (análise forense):**
```bash
# Listar todos os @rpath configurados em um binário
otool -l /Applications/AlvoApp.app/Contents/MacOS/AlvoApp | grep -A2 LC_RPATH
# Identificar weak dylibs (LC_LOAD_WEAK_DYLIB) - candidatos a hijacking
otool -L /Applications/AlvoApp.app/Contents/MacOS/AlvoApp | grep weak
# Verificar quais dylibs referenciadas não existem no sistema
dyldinfo -dylibs /Applications/AlvoApp.app/Contents/MacOS/AlvoApp
```
## Detecção
```yaml
title: Detecção de Dylib Hijacking macOS - T1574.004
logsource:
category: file_event
product: macos
detection:
# Criação de dylib em diretórios de @rpath de aplicações comuns
dylib_in_rpath:
TargetFilename|endswith: '.dylib'
TargetFilename|contains:
- '/Contents/Frameworks/'
- '/Contents/MacOS/'
- '/usr/local/lib/'
Initiated|contains:
- 'bash'
- 'zsh'
- 'python'
- 'curl'
# Carregamento de módulo incomum por aplicações conhecidas
suspicious_module_load:
Image|contains:
- '/Applications/'
ImageLoaded|contains:
- '/tmp/'
- '/var/folders/'
- '/Users/'
ImageLoaded|endswith: '.dylib'
condition: dylib_in_rpath or suspicious_module_load
falsepositives:
- Instalação legítima de plugins e extensões de aplicações
- Ambientes de desenvolvimento com bibliotecas locais em @rpath
level: high
tags:
- attack.persistence
- attack.privilege-escalation
- attack.defense-evasion
- attack.t1574.004
```
**Fontes de dados prioritárias:**
- Unified Log do macOS (`log stream`) - rastrear eventos `dyld` de carregamento de bibliotecas
- Endpoint Security Framework (ESF) - eventos `ES_EVENT_TYPE_NOTIFY_MMAP` para carregamentos de dylib
- File Integrity Monitoring nos diretórios de Frameworks de aplicações críticas
- `fs_usage` para monitorar acessos ao sistema de arquivos em tempo real por processo
## Mitigação
| Mitigação | Orientação |
|-----------|------------|
| [[m1022-restrict-file-and-directory-permissions\|M1022 - Restrict File and Directory Permissions]] | Garantir que diretórios no `@rpath` de aplicações críticas não sejam graváveis por usuários não privilegiados. Revisar permissões em `/usr/local/lib/` e diretórios de Frameworks. |
| [[m1044-restrict-library-loading\|M1044 - Restrict Library Loading]] | Habilitar System Integrity Protection (SIP) e Hardened Runtime em aplicações desenvolvidas internamente. Usar `CS_REQUIRE_LV` para válidação de assinatura em carregamento de bibliotecas. |
**Controles adicionais:**
- Habilitar **Gatekeeper** e manter atualizado para bloquear dylibs não assinadas
- Usar **notarização da Apple** para todas as aplicações internas distribuídas
- Implementar **allowlist de aplicações** (MDM/Jámf) para limitar quais apps podem executar
- Auditar regularmente aplicações com `LC_LOAD_WEAK_DYLIB` no ambiente corporativo
## Referências
*Fonte: [MITRE ATT&CK - T1574.004](https://attack.mitre.org/techniques/T1574/004/)*