# T1205.001 - Port Knocking ## Descrição **Port Knocking** é uma subtécnica de [[t1205-traffic-signaling|T1205 - Traffic Signaling]] em que adversários enviam uma sequência predefinida de tentativas de conexão a portas fechadas para ativar um backdoor ou abrir uma porta de escuta sem manter conexões persistentes abertas. A técnica permite que o atacante mantenha presença em um sistema sem expor qualquer porta visível em varreduras de rede convencionais, reduzindo drasticamente a superfície de detecção. Ao contrário de um servidor ouvindo ativamente em uma porta, o mecanismo de port knocking permanece completamente invisível a scanners como Nmap, Shodan e ferramentas de monitoramento de portas abertas. Somente após a sequência correta de "batidas" é que o firewall do host ou um daemon dedicado abre a porta de comunicação - geralmente por frações de segundo ou por uma jánela curta de tempo. A técnica foi originalmente documentada pela ferramenta **cd00r** (implementada em C usando libpcap), que sniffava pacotes silenciosamente sem abrir nenhuma porta. Implementações modernas utilizam `libpcap`, raw sockets, eBPF/BPFDoor e até pacotes ICMP ou UDP como sinal de knock, tornando a técnica aplicável a práticamente qualquer sistema Unix-like e dispositivos de rede. > **Técnica pai:** [[t1205-traffic-signaling|T1205 - Traffic Signaling]] > **Tática principal:** Defense Evasion (também: Command and Control, Persistence) > **Plataformas:** Linux, macOS, Windows, Network Devices --- ## Como Funciona O mecanismo de port knocking opera em quatro etapas fundamentais: **1. Configuração prévia (pré-comprometimento):** O adversário implanta um daemon ou módulo no host comprometido que monitora silenciosamente o tráfego de rede - usando `libpcap`, `raw sockets` ou chamadas BPF - sem abrir nenhuma porta visível. A sequência secreta de knock (ex.: TCP 7000, TCP 8000, TCP 9000) é codificada no malware ou passada por parâmetro de configuração. **2. Envio da sequência de knock (lado do atacante):** O operador do ataque envia pacotes SYN (ou UDP/ICMP) para as portas na sequência exata e, geralmente, dentro de uma jánela de tempo definida. Os pacotes são descartados pelo firewall do alvo, mas o daemon de escuta os detecta via análise passiva. **3. Validação e ativação:** Após detectar a sequência correta, o daemon executa uma ação: modifica uma regra de `iptables`/`nftables` para abrir uma porta, inicia um serviço de backdoor, ou estabelece uma conexão de saída (reverse shell) de volta ao atacante - eliminando a necessidade de portas de entrada abertas. **4. Comúnicação e limpeza:** A sessão ocorre na jánela aberta. Após o encerramento, a porta é fechada novamente. Alguns implementações usam knock de "encerramento" para limpar as regras do firewall, retornando o sistema ao estado invisível. **Variações técnicas observadas:** - **Knock via ICMP:** sequências de tipo/código ICMP como sinal (dificulta correlação por DPI) - **Knock via TCP flags incomuns:** uso de pacotes com flags FIN+URG ou RST para sinalização - **Knock criptografado (SPA - Single Packet Authorization):** uma única versão mais avançada onde o knock carrega um payload HMAC/AES autenticado, resistente a replay attacks - **BPF-based knock:** uso de filtros BPF no kernel para captura passiva (visto em [[s1161-bpfdoor|BPFDoor]]) --- ## Attack Flow ```mermaid graph TB A["Adversário - Pré-acesso"] --> B["Implantação de daemon<br/>(libpcap / raw socket / BPF)"] B --> C["Daemon monitora tráfego<br/>em modo passivo - porta fechada"] subgraph HOST_ALVO["Host Comprometido"] C --> D["Nenhuma porta visível<br/>ao scanner externo"] D --> E{"Sequência de knock<br/>detectada?"} E -- Não --> D E -- Sim --> F["Firewall abre porta<br/>ou conexão reversa inicia"] F --> G["Sessão C2 ativa<br/>(SSH / shell / protocolo customizado)"] G --> H["Sessão encerrada<br/>Porta fechada novamente"] end subgraph ATACANTE["Operador C2"] I["Envia sequência SYN<br/>(TCP 7000→8000→9000)"] --> E G --> J["Comando e controle<br/>executado"] end style HOST_ALVO fill:#1a1a2e,stroke:#e94560,color:#fff style ATACANTE fill:#16213e,stroke:#0f3460,color:#fff style F fill:#e94560,color:#fff style G fill:#e94560,color:#fff ``` --- ## Exemplos de Uso ### PROMETHIUM / StrongPity (APT turco) O grupo [[g0056-promethium|PROMETHIUM]], ativo desde 2012 e vinculado a operações de espionagem contra alvos curdos e turcos, utilizou port knocking como mecanismo de ativação de backdoors em campanhas documentadas entre 2020 e 2022. O malware [[s1060-mafalda|Mafalda]], atribuído ao grupo, implementava um listener passivo que aguardava sequências de knock via TCP antes de estabelecer canal C2 criptografado. ### UNC3886 (China-nexus, espionagem em infraestrutura) [[g1048-unc3886|UNC3886]], grupo de espionagem com nexo chinês especializado em appliances de rede e hypervisors VMware, utilizou port knocking em conjunto com o rootkit [[s1219-reptile|REPTILE]] em comprometimentos documentados pela Mandiant em 2023. O grupo explorou CVEs em VMware ESXi e FortiOS para implantar daemons de escuta passiva em dispositivos de borda, tornando a detecção extremamente difícil em ambientes com visibilidade limitada de tráfego E-W. ### BPFDoor (China-nexus, telecomúnicações) [[s1161-bpfdoor|BPFDoor]] é um backdoor Linux que utiliza filtros BPF (Berkeley Packet Filter) no kernel para implementar port knocking de forma extremamente furtiva. Reportado pela Trend Micro em 2022, o malware foi identificado em telecos e governos no Oriente Médio e Ásia. Em vez de usar libpcap em userspace, o BPFDoor opera diretamente via chamada de sistema `setsockopt(SO_ATTACH_FILTER)`, tornando sua detecção ainda mais complexa. ### cd00r (ferramenta histórica / referência técnica) [[s1204-cd00r|cd00r]] é a implementação de referência de port knocking usando libpcap, documentada originalmente por Ced Niçu. Serviu de base conceitual para múltiplas famílias de malware que adotaram o padrão. A ferramenta usa `pcap_open_live()` em modo promíscuo para capturar pacotes sem criar sockets de escuta. ### REPTILE e metaMain [[s1219-reptile|REPTILE]] é um rootkit LKM (Loadable Kernel Module) de código aberto que inclui funcionalidade de port knocking nativa. [[s1059-metamain|metaMain]] é um implante modular utilizado por UNC3886 que se apoia na infraestrutura do REPTILE para receber knock e ativar comúnicação C2. --- ## Detecção A detecção de port knocking é inerentemente difícil porque os pacotes de knock individualmente parecem tentativas de conexão descartadas - indistinguíveis de varreduras aleatórias. A estratégia eficaz combina análise de comportamento de firewall, auditoria de processos e análise de fluxo. ### Regra Sigma - Sequência de Portas Rejeitadas (Padrão de Knock) ```yaml title: Possível Port Knocking - Sequência de Portas Rejeitadas id: a3f2c1d8-9b4e-4f7a-8c3d-6e1f2a9b7c4d status: experimental description: > Detecta múltiplas tentativas de conexão rejeitadas para portas diferentes originadas do mesmo IP em curto intervalo de tempo, indicando possível sequência de port knocking. references: - https://attack.mitre.org/techniques/T1205/001/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1205.001 logsource: product: linux service: iptables detection: selection: type: "DROP" proto: "TCP" timeframe: 30s condition: selection | count(dpt) by src > 3 falsepositives: - Varreduras de rede legítimas (administração) - Testes de conectividade automatizados level: medium ``` ### Regra Sigma - Daemon Escutando via libpcap/Raw Socket ```yaml title: Processo Usando libpcap ou Raw Socket sem Justificativa id: b7e4d2a1-3c8f-4a9b-9d5e-2f1c6b8a3e7f status: experimental description: > Detecta processos que abrem raw sockets AF_PACKET ou carregam libpcap sem corresponder a processos de captura conhecidos (tcpdump, wireshark, etc.) references: - https://attack.mitre.org/techniques/T1205/001/ author: RunkIntel daté: 2026-03-25 tags: - attack.defense_evasion - attack.t1205.001 logsource: product: linux category: process_creation detection: selection: CommandLine|contains: - "AF_PACKET" - "SOCK_RAW" - "pcap_open_live" filter_legit: Image|endswith: - "/tcpdump" - "/wireshark" - "/tshark" - "/snort" - "/suricata" condition: selection and not filter_legit falsepositives: - Ferramentas de monitoramento customizadas - Agentes de segurança legítimos level: high ``` ### Indicadores Adicionais de Detecção | Indicador | Fonte de Dado | Relevância | |-----------|--------------|-----------| | Mudança súbita em regra iptables/nftables | `auditd` - syscall `setsockopt` | Alta | | Novo processo ouvindo em porta após sequência DROP | Netstat / `ss` diff | Alta | | Processo com descritor `AF_PACKET` sem root justificado | `/proc/net/packet` | Alta | | Tráfego de saída repentino após silêncio de rede | NetFlow / Zeek | Média | | Módulo BPF carregado por processo não-root | `bpftool prog list` | Alta | --- ## Mitigação | ID | Mitigação | Implementação Recomendada | |----|-----------|--------------------------| | [[m1037-filter-network-traffic\|M1037 - Filter Network Traffic]] | Filtro de rede | Implementar regras de firewall stateful que registrem e alertem para padrões de rejeição sequencial do mesmo IP. Usar `iptables -m recent` para rastrear IPs com múltiplas tentativas em portas distintas. | | Auditoria de processos | Monitoramento | Auditar todos os processos que utilizam `AF_PACKET` ou carregam `libpcap`. Processos não autorizados com essas capacidades devem gerar alerta imediato. | | Segmentação de rede | Arquitetura | Implementar Zero Trust: nenhuma porta deve ser aberta para segmentos não confiáveis. Port knocking em ambientes ZTA é menos eficaz pois qualquer tráfego não autorizado já gera alerta. | | Monitoramento de módulos kernel | LKM Auditing | Em Linux, monitorar `insmod`/`modprobe` para rootkits como REPTILE que implementam knock em kernel space. Ferramentas como Falco e auditd podem detectar carregamento suspeito de módulos. | | HIDS/EDR com análise de syscall | Detecção | Soluções como Falco, Sysdig e auditd permitem correlacionar chamadas `setsockopt(SO_ATTACH_FILTER)` com processos suspeitos, identificando daemons BPF-based knock. | --- ## Contexto Brasil/LATAM A técnica de port knocking é especialmente relevante no contexto brasileiro porque uma parcela significativa da infraestrutura crítica nacional - telecomúnicações, energia, serviços financeiros - opera appliances de rede e servidores Linux expostos à internet com monitoramento de segurança limitado. **Grupos com nexo a espionagem ativa na região:** - [[g1048-unc3886|UNC3886]] comprometeu appliances de borda de fabricantes com presença relevante no Brasil (VMware, Fortinet), usando port knocking para manter acesso persistente. A Mandiant documentou vítimas em telecomúnicações e governo no leste asiático com padrões de ataque replicáveis em LATAM. - [[g0056-promethium|PROMETHIUM]] opera principalmente no Mediterrâneo e Oriente Médio, mas o modelo técnico de port knocking via [[s1060-mafalda|Mafalda]] é amplamente documentado e pode ser replicado por grupos com menor sofisticação. **Infraestrutura de risco no Brasil:** - Roteadores e firewalls com firmware desatualizado (Mikrotik, Cisco, FortiGaté) são alvos frequentes de implantação de backdoors com port knocking - Provedores regionais de internet (ISPs) com capacidade limitada de NDR/NetFlow são alvos ideais - Servidores Linux em nuvem pública (AWS, Azure, GCP) no Brasil frequentemente carecem de configuração de auditoria adequada para detectar processos com `AF_PACKET` **Recomendação para SOCs brasileiros:** Implementar regras de correlação em SIEM para sequências de rejeição TCP/UDP do mesmo IP externo em mais de 3 portas distintas em jánela de 60 segundos. Integrar [[t1040-network-sniffing|T1040 - Network Sniffing]] na caça a esse TTP, pois a captura passiva de pacotes é um pré-requisito técnico. --- ## Técnicas Relacionadas - [[t1205-traffic-signaling|T1205 - Traffic Signaling]] (técnica pai) - [[t1205-002-socket-filters|T1205.002 - Socket Filters]] (variante BPF) - [[t1040-network-sniffing|T1040 - Network Sniffing]] (mecanismo de detecção de knock) - [[t1106-native-api|T1106 - Native API]] (libpcap, raw sockets) - [[t1059-command-scripting-interpreter|T1059 - Command and Scripting Interpreter]] (execução pós-knock) - [[t1543-create-or-modify-system-process|T1543 - Creaté or Modify System Process]] (persistência do daemon) - [[t1036-009-break-process-trees|T1036.009 - Break Process Trees]] (evasão combinada frequente) --- ## Referências - [MITRE ATT&CK - T1205.001](https://attack.mitre.org/techniques/T1205/001/) - [Mandiant - UNC3886 Uses VMware ESXi Zero-Days (2023)](https://www.mandiant.com/resources/blog/vmware-esxi-zero-day-temporary-account-creation) - [Trend Micro - BPFDoor: An Evasive Linux Backdoor (2022)](https://www.trendmicro.com/en_us/research/22/e/network-evasion-bpfdoor-an-evasive-linux-backdoor.html) - [Kaspersky - PROMETHIUM/StrongPity (2020)](https://securelist.com/strongpity-apt/) - [cd00r - Original Port Knocking Tool](http://www.0xbadc0de.be/papers/cd00r.en.html) - [Wikipedia - Port Knocking](https://en.wikipedia.org/wiki/Port_knocking)