# T1071.005 - Protocolos Publish/Subscribe
## Descrição
Protocolos de mensageria no modelo publish/subscribe (pub/sub) foram projetados para comunicação assíncrona e escalável entre sistemas distribuídos - são a espinha dorsal de pipelines de IoT, sistemas industriais e plataformas de eventos em tempo real. Nesse modelo, um broker centralizado gerencia a distribuição de mensagens: públicadores enviam mensagens categorizadas por tópicos, e assinantes recebem apenas as mensagens dos tópicos que escolheram. Os protocolos mais comuns são MQTT, XMPP, AMQP e STOMP.
Adversários exploram essa arquitetura para construir canais de C2 que se disfarçam de tráfego legítimo de aplicação. Em vez de se comúnicar diretamente com um servidor C2 controlado pelo atacante, o malware se conecta a um broker público ou semipúblico - como um servidor MQTT hospedado em nuvem - e recebe comandos como se fosse uma assinatura normal de tópico. O tráfego resultante é indistinguível de aplicações IoT ou de automação industrial legítimas, dificultando enormemente a detecção por soluções que inspecionam apenas o protocolo e não o comportamento.
A sub-técnica T1071.005 é filha de [[t1071-application-layer-protocol|T1071 - Application Layer Protocol]], que engloba o uso de protocolos de camada de aplicação para mascarar C2. O uso de pub/sub representa uma evolução sofisticada dessa evasão: além de misturar com tráfego legítimo, o modelo distribui a infraestrutura de C2 para brokers de terceiros frequentemente hospedados em provedores de nuvem confiáveis, tornando o bloqueio por IP ineficaz.
**Contexto Brasil/LATAM:** O setor industrial e de manufatura no Brasil e México é especialmente vulnerável a essa técnica, dado o crescimento de ambientes ICS/SCADA que utilizam MQTT nativamente para telemetria de equipamentos. Campanhas direcionadas a infraestrutura crítica na América Latina têm utilizado protocolos de mensageria para estabelecer C2 persistente em redes OT (Operational Technology) onde a inspeção de tráfego é limitada. O setor de agronegócio brasileiro, que modernizou rapidamente sua infraestrutura com sensores IoT, também representa superfície de ataque relevante para essa técnica.
## Attack Flow
```mermaid
graph TB
A[Acesso Inicial<br/>T1190 Exploit] --> B[**T1071.005<br/>Pub/Sub C2**]
B --> C[Broker MQTT/XMPP<br/>Infraestrutura C2]
C --> D[Execução de Comandos<br/>T1059]
D --> E[Exfiltração<br/>T1048]
```
## Como Funciona
**1. Preparação**
O adversário configura um broker pub/sub - pode ser um servidor MQTT auto-hospedado, um broker público como broker.hivemq.com ou test.mosquitto.org, ou um serviço gerenciado em nuvem (AWS IoT, Azure IoT Hub). O malware implantado na vítima é configurado com as credenciais de conexão ao broker e os tópicos a serem assinados para receber comandos.
**2. Execução**
Após comprometimento, o malware estabelece uma conexão persistente com o broker pub/sub, assinando tópicos específicos que funcionam como canal de entrada de comandos. O atacante pública mensagens nesses tópicos para enviar instruções. Os resultados da execução são públicados em tópicos de resposta. O tráfego MQTT usa a porta 1883 (não criptografado) ou 8883 (TLS) - portas muitas vezes liberadas em firewalls de ambientes IoT.
**3. Pós-execução**
O canal permanece ativo enquanto o broker estiver acessível. Como o broker é frequentemente um serviço legítimo de terceiros, bloqueá-lo causaria disruption em aplicações legítimas, o que o atacante conta como fator de defesa natural. O malware [[s0026-glooxmail|GLOOXMAIL]] é um exemplo documentado de uso do protocolo XMPP para C2 via pub/sub.
**Exemplo:**
```bash
# Artefato de detecção: conexão MQTT a broker externo iniciada por processo não-IoT
# Este padrão de tráfego é indicador quando originado de estação de trabalho ou servidor
# Evento gerado: Network connection (Sysmon Event ID 3) para porta 1883 ou 8883
# Exemplo de query de detecção no contexto de firewall:
# dst_port=1883 AND src_process NOT IN ["mqtt_service", "node-red", "mosquitto"]
mosquitto_sub -h broker.hivemq.com -t "cmd/target-id" -p 1883
```
## Detecção
**Fontes de dados:** Firewall/proxy logs (conexões saindo nas portas 1883, 8883, 5222, 5672), Sysmon Event ID 3 (conexões de rede), análise de payload de tráfego MQTT/XMPP/AMQP, anomalias de volume e frequência de mensagens pub/sub, DNS queries para brokers MQTT públicos conhecidos.
```yaml
title: Suspicious MQTT Connection from Non-IoT Process
id: 2b4e8f1a-9c3d-4e7b-a526-1f8d3c9e5b2a
status: experimental
description: Detects MQTT connections to external brokers initiated by processes not typically associated with IoT workloads, which may indicaté C2 activity via pub/sub protocol abuse
logsource:
category: network_connection
product: windows
detection:
selection:
DestinationPort:
- 1883
- 8883
Initiated: 'true'
filter_legitimate:
Image|contains:
- '\mosquitto'
- '\node-red'
- '\mqtt'
condition: selection and not filter_legitimate
falsepositives:
- IoT development environments and testing tools
- Industrial automation software with MQTT telemetry
level: medium
tags:
- attack.command_and_control
- attack.t1071.005
```
## Mitigação
| Mitigação | Recomendação Prática |
|-----------|---------------------|
| [[m1037-filter-network-traffic\|M1037 - Filter Network Traffic]] | Bloquear ou inspecionar tráfego nas portas 1883/8883 (MQTT) e 5222 (XMPP) em estações de trabalho e servidores que não tenham necessidade operacional documentada de conectividade IoT |
| [[m1031-network-intrusion-prevention\|M1031 - Network Intrusion Prevention]] | Configurar NDR para identificar fingerprints de protocolo MQTT/AMQP e alertar para uso fora de segmentos de rede OT/IoT designados |
## Técnicas Relacionadas
- [[t1071-application-layer-protocol|T1071 - Application Layer Protocol]] - técnica pai desta sub-técnica
- [[t1102-web-service|T1102 - Web Service]] - técnica similar que usa serviços web legítimos para C2
- [[t1571-non-standard-port|T1571 - Non-Standard Port]] - frequentemente combinada para evasão adicional
- [[t1573-encrypted-channel|T1573 - Encrypted Channel]] - uso de TLS sobre MQTT (porta 8883) para dificultar inspeção
---
*Fonte: [MITRE ATT&CK - T1071.005](https://attack.mitre.org/techniques/T1071/005)*