# T1205.002 - Socket Filters
## Descrição
A técnica **T1205.002 - Socket Filters** descreve o uso de filtros de socket de rede, especialmente programas **BPF (Berkeley Packet Filter)**, para monitorar tráfego de rede em busca de "pacotes mágicos" (*magic packets*) que ativam backdoors dormentes no host comprometido.
Com permissões elevadas, adversários utilizam bibliotecas como `libpcap` (Linux/macOS) ou `WinPcap`/`Npcap` (Windows) para abrir raw sockets e instalar filtros que determinam quais pacotes acionam ações adicionais no sistema. O filtro pode ser aplicado a toda interface de rede do host. Ao receber um pacote que satisfaz os critérios configurados, o implante executa ações como iniciar um reverse shell, instalar payloads adicionais ou sinalizar o agente C2 com um callback.
O mecanismo é especialmente difícil de detectar porque o backdoor permanece completamente inativo - sem portas abertas, sem conexões de rede, sem consumo de CPU - até que o pacote correto sejá recebido. Isso torna o implante práticamente invisível para ferramentas de monitoramento tradicionais baseadas em análise de conexões ativas.
Esta técnica é subtécnica de [[t1205-traffic-signaling|T1205 - Traffic Signaling]] e frequentemente combinada com [[t1572-protocol-tunneling|T1572 - Protocol Tunneling]] para camuflar a comunicação C2 dentro de tráfego legítimo.
> **Técnica pai:** [[t1205-traffic-signaling|T1205 - Traffic Signaling]]
**Fontes de dados recomendadas:**
- Socket-filter trigger → on-host raw-socket activity → reverse connection (T1205.002)
- Monitoramento de syscalls `setsockopt` com opção `SO_ATTACH_FILTER`
- Auditd (Linux): eventos de criação de raw sockets por processos não-privilegiados
---
## Como Funciona
### Mecanismo BPF e Magic Packets
O **Berkeley Packet Filter (BPF)** é uma interface do kernel Linux/BSD originalmente desenvolvida para análise de pacotes de rede (como o `tcpdump`). Adversários abusam dessa capacidade para criar filtros que ficam aguardando pacotes específicos.
O fluxo de exploração segue estas etapas:
1. **Instalação do implante**: O adversário, com acesso root, instala um programa que cria um raw socket e anexa um filtro BPF customizado usando `setsockopt(SO_ATTACH_FILTER)` ou `pcap_setfilter`.
2. **Definição do "magic packet"**: O filtro é configurado para aceitar apenas pacotes com características específicas - porta de destino específica, flags TCP/UDP/ICMP únicos, bytes em posições exatas no payload, ou combinação de IPs de origem.
3. **Estado dormente**: O implante permanece em `recvfrom()` em loop infinito, consumindo mínimos recursos, sem portas abertas nem conexões estabelecidas.
4. **Ativação remota**: O operador envia o magic packet de qualquer ponto da internet. O filtro captura o pacote antes que chegue a serviços normais do sistema.
5. **Execução do payload**: Ao detectar o magic packet, o implante executa a ação programada - tipicamente um reverse shell TCP/UDP para o IP embutido no próprio pacote.
### BPFDoor - Implementação de Referência
O [[s1161-bpfdoor|BPFDoor]] é o exemplo mais documentado dessa técnica em uso operacional. Atribuído ao grupo chinês [[g0096-apt41|APT41]] (também rastreado como UNC4191), o BPFDoor:
- Usa BPF para monitorar todos os protocolos (TCP, UDP, ICMP) simultaneamente
- O magic packet contém um "número mágico" específico no payload
- Após ativação, abre uma shell reversa ou um bind shell disfarçado
- Pode "mascarar" o processo como um daemon legítimo do sistema (ex: `httpd`, `syslog`)
- Remove seu próprio arquivo em disco após execução em algumas variantes
### Variantes de Implementação
| Implementação | Biblioteca | Sistema Operacional | Notas |
|---------------|-----------|---------------------|-------|
| `setsockopt(SO_ATTACH_FILTER)` | Kernel nativo | Linux | Mais furtivo, sem dependência externa |
| `pcap_setfilter()` | libpcap | Linux/macOS | Requer libpcap instalado |
| WinPcap / Npcap | Userspace | Windows | Menos comum, requer driver adicional |
| eBPF programs | Kernel eBPF | Linux 4.4+ | Variantes mais modernas e sofisticadas |
---
## Attack Flow
```mermaid
graph TB
A["🔓 Acesso Inicial<br/>RCE / Credenciais Comprometidas"] --> B["⚙️ Execução com Privilégio Root<br/>Instalação do Implante BPF"]
B --> C["🔧 Configuração do Raw Socket<br/>setsockopt SO_ATTACH_FILTER"]
C --> D["💤 Estado Dormente<br/>Sem portas abertas / Sem conexões"]
D --> E{"📦 Magic Packet<br/>Recebido?"}
E -- "Não" --> D
E -- "Sim" --> F["🔑 Verificação do Filtro BPF<br/>Validação de bytes / flags / porta"]
F --> G["💥 Ativação do Backdoor<br/>Execução do Payload"]
G --> H["🐚 Reverse Shell<br/>Conexão TCP/UDP para C2"]
G --> I["📥 Download de Payload<br/>Segunda Fase"]
H --> J["🎯 Comando & Controle<br/>Persistência Estabelecida"]
I --> J
style A fill:#c0392b,color:#fff
style D fill:#2c3e50,color:#fff
style E fill:#8e44ad,color:#fff
style G fill:#e74c3c,color:#fff
style J fill:#c0392b,color:#fff
```
---
## Exemplos de Uso
### BPFDoor - APT41 / UNC4191
O [[s1161-bpfdoor|BPFDoor]] foi amplamente documentado em 2022 após relatórios da PwC, Trend Micro e CrowdStrike. O implante foi detectado em infraestruturas de telecomúnicações, governo e retail na Ásia e Europa, com evidências de operação desde 2017.
- **Operadores**: [[g0096-apt41|APT41]] / grupos nexo China
- **Alvos**: Provedores de telecomúnicações, governo, retail
- **Capacidade**: Monitoramento simultâneo de TCP/UDP/ICMP via BPF
- **Referência**: Relatório PwC "BPFDoor: An Active Chinese Global Espionage Weapon" (2022)
### CASTLETAP - Operações de Espionagem
O [[s1224-castletap|CASTLETAP]] é um implante atribuído a adversários com nexo China que utiliza socket filters para comúnicação C2 encoberta. Identificado em redes de organizações governamentais no Sudeste Asiático.
### PITSTOP - Implante Complementar
O [[s1123-pitstop|PITSTOP]] é utilizado em conjunto com [[s1224-castletap|CASTLETAP]], com o PITSTOP atuando como segunda fase após a ativação via BPF socket filter.
### Penquin / Turla
O [[s0587-penquin|Penquin]] (também chamado Penguin_x64), atribuído ao grupo russo [[g0010-turla|Turla]], é um backdoor Linux que utiliza raw socket filters para monitorar pacotes TCP/UDP em busca de magic numbers específicos no campo de sequência TCP.
- **Operadores**: [[g0010-turla|Turla]] (FSB, Rússia)
- **Plataforma**: Linux - servidores expostos à internet
- **Técnica específica**: Monitora número de sequência TCP como trigger
---
## Detecção
### Sigma Rule - Detecção de Raw Socket com SO_ATTACH_FILTER
```yaml
title: Suspicious Raw Socket BPF Filter Attachment
id: d4e8f1a2-3b7c-4d9e-8f0a-1b2c3d4e5f6a
status: experimental
description: >
Detecta uso de setsockopt com SO_ATTACH_FILTER em processos suspeitos,
indicando possível instalação de backdoor BPF (ex: BPFDoor).
author: RunkIntel
daté: 2026/03/25
references:
- https://attack.mitre.org/techniques/T1205/002/
- https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/bpfdoor.html
logsource:
product: linux
category: process_creation
detection:
selection_syscall:
Syscall: 'setsockopt'
SockOptLevel: 'SOL_SOCKET'
SockOptName: 'SO_ATTACH_FILTER'
filter_legitimate:
ParentImage|contains:
- 'tcpdump'
- 'wireshark'
- 'tshark'
- 'dhclient'
condition: selection_syscall and not filter_legitimate
falsepositives:
- Ferramentas legítimas de captura de pacotes (tcpdump, Wireshark)
- Agentes de monitoramento de rede corporativos
level: high
tags:
- attack.defense_evasion
- attack.t1205.002
- attack.persistence
```
### Sigma Rule - Detecção de Processo com Raw Socket Sem Conexões Abertas
```yaml
title: Process with Raw Socket and No Established Network Connections
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: experimental
description: >
Detecta processos que possuem raw sockets abertos mas nenhuma conexão
TCP/UDP estabelecida - padrão característico de backdoors BPF dormentes.
author: RunkIntel
daté: 2026/03/25
logsource:
product: linux
category: network_connection
detection:
selection:
SocketType: 'SOCK_RAW'
ConnectionState: 'NONE'
filter_known_tools:
Image|endswith:
- '/ping'
- '/traceroute'
- '/nmap'
condition: selection and not filter_known_tools
falsepositives:
- Ferramentas de diagnóstico de rede (ping, traceroute, nmap)
level: medium
tags:
- attack.defense_evasion
- attack.t1205.002
```
### Estrategias de Detecção Complementares
| Camada | Método | Ferramenta |
|--------|--------|-----------|
| Syscall | Auditd: monitorar `socket(AF_PACKET)` e `setsockopt(SO_ATTACH_FILTER)` | auditd + auditctl |
| Processo | Verificar processos com `AF_PACKET` sockets abertos via `/proc/net/packet` | Osquery |
| Kernel | eBPF-based monitoring (Falco, Tetragon) - detecta criação de BPF programs | Falco / Tetragon |
| Host | EDR com análise comportamental de raw sockets em processos não-esperados | CrowdStrike, SentinelOne |
| Rede | Sistemas de análise de tráfego - detectar magic packets com payloads anômalos | Zeek / Suricata |
---
## Mitigação
| ID | Mitigação | Descrição | Prioridade |
|----|-----------|-----------|-----------|
| [[m1037-filter-network-traffic\|M1037]] | Filter Network Traffic | Implementar regras de firewall que bloqueiem pacotes com estruturas anômalas (flags incomuns, payloads com bytes mágicos específicos) | Alta |
| Princípio do Menor Privilégio | Restrição de root/CAP_NET_RAW | Raw sockets e BPF filters requerem `CAP_NET_RAW` ou root. Restringir capabilities a processos autorizados via SELinux/AppArmor | Crítica |
| Monitoramento de Integridade | Verificação de binários do sistema | Adversários frequentemente mascaram implantes como processos legítimos. Usar FIM (AIDE, Tripwire) para detectar substituições | Alta |
| EDR Comportamental | Detecção de uso de raw sockets | Soluções EDR modernas monitoram criação de raw sockets e BPF programs por processos não-esperados | Alta |
---
## Contexto Brasil/LATAM
Embora o uso documentado de BPF socket filters sejá predominantemente associado a APTs com nexo China (como [[g0096-apt41|APT41]]) operando contra telecomúnicações e governo na Ásia, existe relevância crescente para o contexto brasileiro:
**Infraestrutura de telecomúnicações como alvo prioritário**: Operadoras brasileiras de grande porte (Claro, Vivo, TIM, Oi) operam infraestrutura Linux-heavy com servidores expostos, tornando-as alvos atraentes para implantes como [[s1161-bpfdoor|BPFDoor]].
**Ataques a ICS/SCADA**: Empresas de energia elétrica (Eletrobras, distribuidoras estaduais) e óleo & gás (Petrobras, distribuidoras) frequentemente operam sistemas Linux em ambientes OT/ICS, onde implantes dormentes são particularmente perigosos por evitar alarmes em SIEMs corporativos.
**Capacidade ofensiva de grupos LatAm**: Grupos de crime organizado com capacidade técnica elevada no Brasil começam a adotar técnicas antes exclusivas de APTs nacionais, incluindo persistência via raw sockets em servidores Linux.
**Recomendação específica**: Equipes de segurança brasileiras devem incluir verificação periódica de processos com `AF_PACKET` sockets abertos em seus runbooks de threat hunting, especialmente em servidores de borda e sistemas Linux críticos.
---
## Software Associado
- [[s1224-castletap|CASTLETAP]] - implante C2 com comúnicação via BPF socket filters
- [[s1161-bpfdoor|BPFDoor]] - backdoor Linux de espionagem, nexo China, ativo desde 2017
- [[s1123-pitstop|PITSTOP]] - segunda fase de implante usado com CASTLETAP
- [[s0587-penquin|Penquin]] - backdoor Linux do grupo [[g0010-turla|Turla]] (Rússia), usa raw TCP socket monitoring
---
## Referências
- [MITRE ATT&CK - T1205.002](https://attack.mitre.org/techniques/T1205/002/)
- [PwC - BPFDoor: An Active Chinese Global Espionage Weapon (2022)](https://www.pwc.com/gx/en/issues/cybersecurity/cyber-threat-intelligence/bpfdoor.html)
- [Trend Micro - BPFDoor Analysis](https://www.trendmicro.com/en_us/research/23/g/detecting-bpfdoor-backdoor-variants-abusing-bpf-filters.html)
- [CrowdStrike - BPFDoor Hunt](https://www.crowdstrike.com/blog/bpfdoor-stealthy-backdoor-leveraging-bpf/)
- [SANS - Berkeley Packet Filter (BPF) Usage in Offensive Security](https://isc.sans.edu/diary/Berkeley+Packet+Filter+BPF+Usage+in+Offensive+Security/29050)
- [Elastic - Linux BPF Backdoor Detection](https://www.elastic.co/security-labs/a-peek-behind-the-bpfdoor)