Guia Prático: Sniffer Wi-Fi com ESP32 para Segurança

Analisar redes Wi-FiConfigurando IP Estático e Dinâmico no ESP32 via Wi-FiConfigurando IP Estático e Dinâmico no ESP32 via Wi-FiEste tutorial detalha como configurar IP estático e dinâmico no ESP32 via Wi-Fi, garantindo comunicação estável e integração perfeita em projetos IoT. vai além de verificar a força do sinal. Um sniffer com ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! permite decodificar pacotes, identificar dispositivos não autorizados, otimizar a performance da rede e transformar conceitos complexos em soluções práticasSegurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados.. Este guia detalha como construir um analisador de tráfego capaz de mapear dispositivos, filtrar protocolos, detectar intrusões em tempo realExibindo Dados no Monitor Serial com ESP32Exibindo Dados no Monitor Serial com ESP32Aprenda a configurar e exibir dados no Monitor Serial com ESP32, utilizando exemplos práticos e técnicas de depuração para otimizar seus projetos IoT. e integrar técnicas avançadas de segurança. Ideal para administradores de rede, entusiastas de IoT e profissionais de segurança cibernética.

👉 Índice

Componentes Necessários🔗

ComponenteEspecificações TécnicasFunção no Projeto
ESP32-WROOM-32Wi-Fi 802.11 b/g/n, Dual-Core 240MHzProcessamento e captura de pacotes
Display OLED 0.96″Resolução 128x64, I2CExibição de dispositivos detectados
Módulo SD CardSPI, Capacidade ≥8GBArmazenamento de logs de tráfego
Antena Wi-Fi ExternaGanho 5dBi, SMAMelhora alcance de captura
Fonte de AlimentaçãoBateria LiPo 3.7V 2000mAhAutonomia para uso portátil

Opcionais:

Conceitos Fundamentais de Redes Wi-Fi🔗

Tipos de Pacotes

Modo Promíscuo

Permite ao ESP32O que é o ESP32: Introdução e Conceitos BásicosO que é o ESP32: Introdução e Conceitos BásicosDescubra como o ESP32 revoluciona a automação e IoT com dicas práticas e projetos que transformam sua casa conectada. Domine a tecnologia! capturar todos os pacotes no canal selecionado, independente do destino. Diferente dosSegurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados. modos station ou APProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEProtocolos Nativos: Wi-Fi (2.4 GHz), Bluetooth Classic e BLEDescubra como utilizar os protocolos Wi-Fi, Bluetooth Classic e BLE no ESP32, com exemplos práticos e dicas para projetos IoT inovadores., não requer conexão a uma rede específica.

Canais Wi-Fi

Redes operam em canais de 1 a 14 (2.4GHz). Um sniffer pode varrer múltiplos canais ou focar em um específico para análise direcionada.

Configurando o Modo Promíscuo no ESP32🔗

O códigoDesafios Práticos: Experimentando com Múltiplos LEDsDesafios Práticos: Experimentando com Múltiplos LEDsAprenda a controlar múltiplos LEDs com ESP32 em projetos IoT. Descubra desafios práticos, montagem de circuitos, programação e efeitos visuais incríveis! abaixo configura o ESP32 para operar em modo promíscuo e capturar pacotes em um canal definido:

#include "esp_wifi.h"
void setup() {
  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  esp_wifi_init(&cfg);
  esp_wifi_set_mode(WIFI_MODE_NULL); // Desativa Wi-Fi padrão
  esp_wifi_start();
  // Configura canal 6 e define callback para processamento
  esp_wifi_set_promiscuous(true);
  esp_wifi_set_channel(6, WIFI_SECOND_CHAN_NONE);
  esp_wifi_set_promiscuous_rx_cb(packet_handler);
}

Explicação Teórica:

Captura e Decodificação de Pacotes🔗

A função packet_handler extrai informações críticas dosSegurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados. pacotes:

void packet_handler(void* buf, wifi_promiscuous_pkt_type_t type) {
  wifi_promiscuous_pkt_t *pkt = (wifi_promiscuous_pkt_t*)buf;
  wifi_ieee80211_mac_hdr_t *hdr = (wifi_ieee80211_mac_hdr_t*)pkt->payload;
  // Extrai endereços MAC de origem e destino
  uint8_t *mac_src = hdr->addr2;
  uint8_t *mac_dest = hdr->addr1;
  // Identifica Beacon Frames (tipo 0x08)
  if (hdr->frame_control & 0x08) {
    log_beacon(mac_src, pkt->payload);
  }
}

Dados Capturáveis:

Filtragem Avançada e Análise de Tráfego🔗

Filtros por Endereço MAC

// Filtra pacotes de um MAC específico
if (memcmp(mac_src, "\xAA\xBB\xCC\xDD\xEE\xFF", 6) != 0) return;

Filtros por Protocolo

// Captura pacotes TCP na porta 80 (HTTP)
if (pkt->payload[23] == 0x06 && pkt->payload[20] == 0x50) {
  log_http_request(pkt->payload);
}

Detecção de Padrões Anômalos

Integração com Machine Learning (Avançado)

Utilize modelos pré-treinados para identificar padrões de tráfego suspeitos:

# Exemplo: Classificação de tráfego com TensorFlow Lite
model = tf.lite.Interpreter(model_path="traffic_model.tflite")
input_details = model.get_input_details()
output_details = model.get_output_details()
# Processa dados do ESP32
model.set_tensor(input_details[0]['index'], processed_data)
model.invoke()
prediction = model.get_tensor(output_details[0]['index'])

Detecção de Intrusos e Comportamentos Anômalos🔗

Técnicas de Identificação

  • Lista Branca de MACs: Alerta para dispositivos não cadastrados.
  • Análise de Comportamento:
    • Dispositivos transmitindo em canais incompatíveis.
    • Pacotes criptografados em redes abertas.

Exemplo: Detecção de Rogue AP

if (strcmp(ssid, "RedeOficial") == 0 && !is_mac_authorized(mac_src)) {
  digitalWrite(LED_ALERT, HIGH);
  log_sd("Rogue AP detectado: MAC %s", mac_to_str(mac_src));
}

Visualização e Integração com Ferramentas Externas🔗

Display OLED

#include <Adafruit_SSD1306.h>
void update_display() {
  display.clearDisplay();
  display.setCursor(0,0);
  display.printf("Dispositivos: %d\n", devices_count);
  display.display();
}

Integração com SIEM (ex: Wazuh)

Encaminhe logs para um Sistema de Gerenciamento de Eventos de SegurançaSegurança em MQTT: Autenticação e Criptografia no ESP32Segurança em MQTT: Autenticação e Criptografia no ESP32Descubra como proteger conexões MQTT em aplicações IoT com ESP32, implementando autenticação e criptografia TLS para segurança máxima.:

# Configuração do agente Wazuh no ESP32
wazuh-agent -d -l sniffer_logs.csv

Casos Práticos: Rogue AP, Ataques DoS e Monitoramento Residencial🔗

Caso 1: Detecção de Rogue AP em Ambiente Corporativo

Caso 2: Mitigação de Ataque DoS em Eventos

  • Sintomas: Pico de Deauth Frames (>500/min).
  • Ação: Ativação de filtro de MAC e alternância de canal.

Caso 3: Monitoramento Residencial com Alertas em Tempo Real

Considerações Éticas e Legais🔗

1. Legalidade: Sniffing passivo é ilegal sem consentimento em redes alheias. Use apenas em redes próprias ou autorizadas.

2. Privacidade: Ofusque MAC addresses em logsSegurança e Autenticação em APPsSegurança e Autenticação em APPsDescubra estratégias essenciais para implementar HTTPS, autenticação JWT e segurança robusta em APPs conectados ao ESP32 para IoT. para evitar identificação indevida.

3. CriptografiaSegurança em MQTT: Autenticação e Criptografia no ESP32Segurança em MQTT: Autenticação e Criptografia no ESP32Descubra como proteger conexões MQTT em aplicações IoT com ESP32, implementando autenticação e criptografia TLS para segurança máxima.: Pacotes WPA2Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Segurança na Rede: Protegendo a Conexão Wi-Fi do ESP32Proteja a conexão Wi-Fi do ESP32 com dicas de criptografia, senhas fortes e monitoramento, garantindo segurança e integridade dos dados./3 não podem ser decodificados sem a chave de rede.

// Ofuscação de MAC em logs
void log_mac(uint8_t *mac) {
  Serial.printf("%02X:%02X:XX:XX:XX:XX\n", mac[0], mac[1]);
}

Conclusão e Próximos Passos🔗

Um sniffer Wi-Fi com ESP32 é uma ferramenta poderosa para administradores de rede e entusiastas de segurança. Ao combinar captura de pacotes, filtragem avançada e integração com sistemas externos, é possível criar soluções robustas para detecção de intrusões e otimização📡 Drone FPV com Transmissão de Vídeo ao Vivo📡 Drone FPV com Transmissão de Vídeo ao VivoEste tutorial técnico detalha a construção de um drone FPV com transmissão de vídeo, telemetria via MAVLink e otimizações de latência. de redes.

Próximos Passos:

// Exemplo de envio de dados para Node-RED
void send_to_node_red(uint8_t *data) {
  HttpClient http;
  http.post("http://node-red:1880/sniffer", data);
}

Nota Final: Este projeto é um ponto de partida. Adapte-o para suas necessidades, sempre respeitando as leis locais e os princípios éticos da segurançaSegurança em MQTT: Autenticação e Criptografia no ESP32Segurança em MQTT: Autenticação e Criptografia no ESP32Descubra como proteger conexões MQTT em aplicações IoT com ESP32, implementando autenticação e criptografia TLS para segurança máxima. cibernética.

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados