Analisando tráfego UDP em Go utilizando Machine Learning – Começando

porAndré Luis Pereira dos Santos

Analisando tráfego UDP em Go utilizando Machine Learning – Começando

Como dito em post anterior,estou iniciando um pequeno projeto para verificar a viabilidade de uso de algumas bibliotecas em Go (Golang) para capturar pacotes UDP, analisá-los com um algorítimo de ML (Isolation Forest) e gerar alertas para discrepâncias (outliers).

Esse projeto possui potencial de uso em ferramentas de segurança de redes.

Na prática, ao que parece, nada me impediria de capturar tráfego de outros protocolos e fazer o mesmo, mas decidi iniciar com UDP por simplicidade.

Estou na fase de modelagem utilizando-me da biblioteca GoLearn (https://github.com/sjwhitworth/golearn) de ML e a biblioteca do Google Gopacket (https://github.com/google/gopacket) que me disponibiliza captura e processamento de pacotes de rede e outras facilidades relacionadas.

Vou descrever algumas idéias iniciais, já que estou nelas para daí gerar uma prova de conceito:

  • Captura de pacotes durante tráfego normal da rede
  • Filtragem dos pacotes para obtenção só dos que são UDP
  • Gravação dos pacotes e metadados em arquivo CSV que é a amostra de treino
  • Carregamento do CSV e treino da Isolation Forest
  • Passagem em tempo real de tráfego capturado através da Isolation Forest para obtenção de sua pontuação

Dessa maneira, ao final, cada pacote capturado em tempo real passa pela Isolation Forest “treinada” e obtêm-se sua pontuação indicando conforme a faixa, se aquele pacote representa um outlier (discrepância) ou não, possibilitando a emissão de alertas imediatos.

Lembrando que o algorítimo de Isolation Forest é um algorítimo de aprendizagem não-supervisionada.

Basicamente essa é a ideia. Agora vou partir para modelar uma arquitetura que torne possível a reutilização de componentes neste software e que ao mesmo tempo possibilite alto throghput.

*Photo by Robynne Hu on Unsplash

Sobre o Autor

André Luis Pereira dos Santos administrator