# 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)*