A maior parte dos esforços de segurança corporativa e doméstica foca exclusivamente no perímetro: firewalls bloqueando portas de entrada e filtros de DNS. No entanto, uma vez que um invasor (ou um dispositivo IoT comprometido) obtém acesso à rede Wi-Fi/LAN, ele ganha liberdade quase total para explorar outros hosts.

É aqui que entram os Honeypots Internos (ou Sistemas Canário).

Diferente de honeypots públicos que servem para atrair ataques da internet aberta, um honeypot interno serve como um sensor de alarme silencioso: ele escuta em portas de serviços vulneráveis clássicos (Telnet, FTP, SMB) dentro da sua sub-rede privada. Como nenhum usuário legítimo tem motivos para interagir com essas portas, qualquer tentativa de conexão é com 100% de certeza um sinal de anomalia, varredura (Nmap) ou tentativa de movimentação lateral.

Neste artigo, veremos como construir um honeypot multi-porta ultraleve em Python assíncrono.

1. O Conceito: Detectando o Invasor no Primeiro Toque

┌─────────────────────────────────────────────────────────────┐ │ REDE LOCAL PRIVADA (LAN) │ └──────────────────────────────┬──────────────────────────────┘ │ ┌──────────────────┴──────────────────┐ ▼ ▼ PC de Trabalho Dispositivo IoT (Tráfego Legítimo) (Comprometido / Bot) │ │ Dispara Varredura de Portas (SYN) ▼ ┌───────────────────────┐ │ HONEYPOT EM PYTHON │ │ Portas: 21, 23, 445 │ └───────────┬───────────┘ │ ▼ Alerta Imediato ⚠️ Movimentação Lateral Detectada! Origem: 192.168.1.145 (TV Box) 

2. Implementando o Honeypot em Python (asyncio)

O script abaixo simula banners de resposta realistas para induzir o invasor a continuar a interação, enquanto registra o IP de origem e o payload enviado:

import asyncio import logging from datetime import datetime logging.basicConfig( level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s" ) logger = logging.getLogger("InternalHoneypot") # Portas de alta probabilidade de varredura HONEYPOT_PORTS = { 21: b"220 ProFTPD 1.3.5 Server (Ubuntu) [192.168.1.100]\r\n", 23: b"Debian GNU/Linux 12\r\nLogin: ", 445: b"\x00\x00\x00\x2f\xff\x53\x4d\x42", # Assinatura simples SMB } async def handle_probe(reader, writer, port, banner): client_ip, client_port = writer.get_extra_info("peername") logger.warning(f"🚨 [ALERTA DE SEGURANÇA] Sonda detectada! IP: {client_ip}:{client_port} na Porta: {port}") try: # Envia banner simulado  writer.write(banner) await writer.drain() # Lê dados que o invasor tentar enviar (ex: credenciais)  data = await asyncio.wait_for(reader.read(1024), timeout=5.0) if data: logger.info(f"Payload capturado de {client_ip} na porta {port}: {data[:100]}") except (asyncio.TimeoutError, ConnectionResetError): pass finally: writer.close() await writer.wait_closed() async def start_honeypot(): servers = [] for port, banner in HONEYPOT_PORTS.items(): try: server = await asyncio.start_server( lambda r, w, p=port, b=banner: handle_probe(r, w, p, b), "0.0.0.0", port ) servers.append(server) logger.info(f"Honeypot ativo escutando na porta TCP {port}") except PermissionError: logger.error(f"Permissão negada para porta {port}. Execute com sudo ou use capabilities.") await asyncio.gather(*[s.serve_forever() for s in servers]) if __name__ == "__main__": try: asyncio.run(start_honeypot()) except KeyboardInterrupt: logger.info("Honeypot desativado.") 

3. Rodando com Menor Privilégio no Linux

Para escutar em portas privilegiadas (abaixo de 1024) sem precisar rodar o script como usuário root, você pode conceder a capacidade CAP_NET_BIND_SERVICE ao binário do Python:

sudo setcap 'cap_net_bind_service=+ep' $(readlink -f $(which python3)) 

4. O que Fazer Após o Alerta?

  1. Identificar o Hardware: Use a tabela ARP para descobrir o endereço MAC do IP invasor e consulte o fabricante (IEEE OUI);
  2. Isolar o Dispositivo: Se for um aparelho de TV Box, câmera IP ou sensor inteligente, migre-o imediatamente para uma VLAN de convidados/IoT com isolamento de clientes (Client Isolation) ativado no ponto de acesso;
  3. Bloquear Comunicações WAN: Bloqueie requisições de DNS e portas de saída suspeitas no firewall do seu roteador para impedir comandos de C2 (Command & Control).

Conclusão e Recursos

A melhor segurança não é aquela que tenta prever todos os ataques, mas aquela que detecta a presença do invasor no primeiro segundo em que ele tenta explorar a rede interna.

Confira o guia completo sobre arquiteturas de defesa em profundidade e automações no meu blog:

👉 Guia Completo no Vexis Sentinel

Você já identificou aparelhos na sua rede fazendo requisições ou conexões para IPs estranhos? O que descobriu?