# T1559.003 - Abuso de XPC Services
## Técnica Pai
Esta é uma sub-técnica de [[t1559-inter-process-communication|T1559 - T1559 - Inter-Process Commúnication]].
## Descrição
O XPC (Cross-Process Commúnication) é o mecanismo nativo do macOS para comunicação entre processos. Ele permite que aplicações deleguem tarefas privilegiadas - como conexões de rede, acesso a arquivos protegidos e operações de sistema - a daemons auxiliares que rodam com privilégios elevados, frequentemente como root. Essa separação de privilégios é um pilar do modelo de segurança do macOS: a aplicação principal opera com privilégios limitados enquanto um helper separado executa operações sensíveis sob demanda.
Adversários exploram essa arquitetura para executar código malicioso com privilégios elevados sem precisar de um exploit de escalada de privilégios tradicional. O ataque funciona injetando conteúdo malicioso no handler do XPC Service de uma aplicação legítima. Se o daemon helper não válida corretamente a identidade do processo que está enviando mensagens - uma falha comum em implementações descuidadas - um processo não-privilegiado pode enviar comandos como se fosse a aplicação legítima, levando o daemon a executar operações privilegiadas em seu nome.
Duas APIs estão no centro dessa técnica: a C API de baixo nível (`xpc_connection_creaté`, `xpc_dictionary_creaté`) e a API Objective-C de alto nível `NSXPCConnection`. Ambas são amplamente usadas por desenvolvedores legítimos, o que torna a detecção por análise de API difícil. A exploração mais comum envolve a ausência de verificação de `audit token` no lado do daemon, permitindo que qualquer processo local - não apenas a aplicação esperada - se conecte e envie mensagens privilegiadas.
Combinada com [[t1068-exploitation-privilege-escalation|Exploitation for Privilege Escalation]], essa técnica pode ser usada para escalar de um processo de usuário comum para root em sistemas macOS, particularmente em versões mais antigas onde as proteções de válidação de cliente XPC eram menos rigorosas. Softwares de segurança, ferramentas de administração de sistema e aplicativos populares de terceiros são alvos frequentes devido à amplitude de seus daemons helpers.
**Contexto Brasil/LATAM:** O crescimento do uso corporativo de macOS no Brasil - especialmente em empresas de tecnologia, agências criativas, escritórios de advocacia e fintechs - amplia a relevância dessa técnica para o cenário local. Adversários focados em espionagem corporativa e roubo de propriedade intelectual têm motivação para explorar vulnerabilidades XPC em aplicações populares no ecossistema brasileiro. A baixa visibilidade de times de segurança sobre comportamentos específicos do macOS, em comparação com Windows, aumenta o tempo de permanência de ameaças que utilizam essa abordagem.
## Attack Flow
```mermaid
graph TB
A[Execução Inicial] --> B[Identificar Helper com Falha]
B --> C[T1559.003 - Abuso XPC]
C --> D[Execução como Root]
D --> E[Persistência / Coleta de Dados]
```
## Como Funciona
**1. Preparação**
O atacante, já com execução como processo de usuário comum no macOS, enumera daemons XPC instalados no sistema (localizados em `/Library/PrivilegedHelperTools/` e dentro de bundles de aplicação). Ferramentas de análise de binários são usadas para identificar helpers que não implementam válidação adequada do `audit token` do cliente.
**2. Execução**
O processo malicioso estabelece uma conexão XPC com o daemon helper vulnerável usando `NSXPCConnection` ou a C API. Como o daemon não verifica adequadamente a identidade do chamador, ele aceita e processa as mensagens enviadas. O atacante explora a interface exposta pelo daemon para executar operações privilegiadas - gravar arquivos em locais protegidos, modificar configurações de sistema, instalar persistência, ou executar comandos arbitrários como root.
**3. Pós-execução**
Com execução privilegiada estabelecida, o atacante instala [[t1547-001-launch-agent|Launch Agents]] ou [[t1543-004-launchd|Launch Daemons]] para persistência, coleta credenciais do Keychain, ou instala malware adicional em locais protegidos pelo SIP (System Integrity Protection) que normalmente seriam inacessíveis para processos de usuário.
**Exemplo:**
```bash
# Artefatos de detecção: enumerar helpers privilegiados instalados
# ls -la /Library/PrivilegedHelperTools/
# Verificar property lists dos helpers (definição do protocolo XPC exposto):
# plutil -p /Library/LaunchDaemons/*.plist | grep -i "MachServices"
# Monitorar via Endpoint Security Framework (ESF):
# Eventos: ES_EVENT_TYPE_NOTIFY_EXEC com processo pai inesperado
# Eventos: ES_EVENT_TYPE_NOTIFY_WRITE em caminhos protegidos por processo não-privilegiado
# Unified Log para atividade XPC suspeita:
# log stream --predicaté 'subsystem == "com.apple.xpc"' --level debug
```
## Detecção
**Fontes de dados:** macOS Endpoint Security Framework (ESF), Unified Logging System (`log stream`), auditd, EDR com suporte a macOS, análise de processos filhos de daemons privilegiados
```yaml
title: Abuso de XPC Service - Execução Privilegiada por Processo Não-Autorizado
id: c9f5g2b3-04de-5g8c-b634-7h0c12f3g6e9
status: experimental
description: Detecta tentativas de comúnicação XPC onde o processo cliente não corresponde ao caller esperado do daemon helper privilegiado
logsource:
category: process_creation
product: macos
detection:
selection_privileged_helper:
ParentImage|contains:
- '/Library/PrivilegedHelperTools/'
Image|endswith:
- '/sh'
- '/bash'
- '/python3'
- '/osascript'
filter_known_good:
ParentCommandLine|contains:
- 'com.apple.'
condition: selection_privileged_helper and not filter_known_good
falsepositives:
- Scripts de administração legítimos invocados por daemons de gerenciamento
- Ferramentas de gerenciamento MDM (Jámf, Mosyle)
- Atualizações automáticas de software
level: high
tags:
- attack.execution
- attack.t1559.003
- attack.privilege_escalation
```
## Mitigação
| Mitigação | Recomendação Prática |
|-----------|---------------------|
| [[m1013-application-developer-guidance\|M1013 - Application Developer Guidance]] | Para desenvolvedores: sempre válidar o `audit token` do processo cliente antes de processar mensagens XPC privilegiadas. Usar `xpc_connection_get_audit_token` e verificar o `SecCodeRef` do chamador. Implementar o protocolo de entitlement `com.apple.security.cs.allow-unsigned-executable-memory` apenas quando absolutamente necessário. Para equipes de segurança: auditar regularmente os helpers em `/Library/PrivilegedHelperTools/` e verificar se suas definições de protocolo expõem operações sensíveis sem válidação adequada de cliente. |
## Técnicas Relacionadas
- [[t1068-exploitation-privilege-escalation|T1068 - Exploitation for Privilege Escalation]] - frequentemente combinada para escalar ao root
- [[t1547-001-launch-agent|T1547.001 - Launch Agent]] - persistência comum após execução privilegiada via XPC
- [[t1543-004-launchd|T1543.004 - Launch Daemon]] - alternativa de persistência em nível de sistema
- [[t1055-process-injection|T1055 - Process Injection]] - técnica relacionada para execução em contexto privilegiado no macOS
---
*Fonte: [MITRE ATT&CK - T1559.003](https://attack.mitre.org/techniques/T1559/003)*