Skip to content

Repository files navigation

SIEM do Cientista de Dados (SIEM-Data-Scientist)

Este repositório contém o projeto SIEM do Cientista de Dados, desenvolvido para demonstrar de forma prática como técnicas de Ciência de Dados e Machine Learning podem ser aplicadas na detecção de anomalias e incidentes de cibersegurança em logs corporativos.

Sistemas de cibersegurança geram gigabytes de dados diariamente. Para um analista humano, inspecionar cada registro é inviável. Este projeto constrói um painel interativo em Python que analisa logs simulados de rede e autenticação para automatizar a identificação de comportamentos suspeitos.


Como a Aplicação Funciona

O projeto é estruturado em três etapas: Simulação de Dados, Análise de logs com Pandas e Machine Learning, e uma Interface Interativa para acompanhamento de incidentes.

graph TD
    A[generate_data.py] -->|Gera CSVs| B[auth_logs.csv / network_logs.csv]
    B --> C[analyzer.py]
    C -->|Detecção Estatística| D[Alertas de Login]
    C -->|K-Means Clustering| E[Outliers de Rede]
    D & E --> F[app.py Streamlit Dashboard]
    G[modules/security_helper.py] -->|Proteções CSP, CORS e Cookies| F
Loading

1. Detecção Estatística (Logs de Autenticação)

Análise focada em comportamento de usuários (estabelecimento de baseline) para identificar desvios de padrão:

  • Detecção de Força Bruta: O sistema calcula uma janela móvel de 5 minutos. Se um usuário registrar mais tentativas falhas seguidas do que o limite definido no período, um alerta é gerado.
  • Acesso em Horário Atípico e Localidade Incomum: Com base no histórico padrão do usuário, o algoritmo sinaliza logins bem-sucedidos em horários suspeitos (madrugada) ou vindos de países diferentes de sua baseline habitual.

2. Machine Learning com K-Means (Logs de Conexão de Rede)

Para logs de conexões de rede sem assinaturas estáticas conhecidas, foi aplicado um modelo de aprendizado não supervisionado:

  • Preparação de Dados: Padronização das variáveis de tráfego (bytes enviados, bytes recebidos e duração da conexão).
  • Agrupamento: O algoritmo K-Means (com k=3) agrupa os tráfegos normais e repetitivos.
  • Distância Euclidiana aos Centroides: A distância de cada ponto para o centro de seu respectivo grupo é medida. Pontos muito distantes são rotulados como outliers.
  • Classificação de Outliers: Detecta com precisão comportamentos suspeitos como tráfego de Command and Control (C2) (baixo tráfego, padrão de duração fixo e incomum) e Exfiltração de Dados (alto volume de bytes enviados para destinos externos).

3. Simulador SOC e Limiares Dinâmicos

Para demonstrar as defesas de forma prática, o frontend conta com ferramentas interativas:

  • Ajuste de Sensibilidade: Sliders no menu lateral permitem ajustar o limite de força bruta e a taxa de contaminação do K-Means em tempo real, recalculando as anomalias instantaneamente.
  • Simulador SOC em Tempo Real: Botões na interface injetam eventos legítimos ou ataques ativos na memória (utilizando st.session_state) para que o analista veja a reação imediata dos alertas e gráficos.
  • Exportação de Relatórios: Permite baixar a lista filtrada de anomalias em formato CSV.

Práticas de Segurança e Hardening (OWASP Top 10 e Produção)

Para garantir que a aplicação possa ser hospedada em nuvem com segurança, integrei as seguintes defesas inspiradas no guia OWASP Top 10:

  • Higienização e Validação de Entradas (A03:2021-Injection):
    • Filtro de Lista Branca (Allowlist): Validação rígida com expressões regulares no arquivo modules/validation.py para nomes de usuários e IPs digitados na busca.
    • Prevenção de XSS: Escapes de HTML aplicados nas entradas dos usuários para impedir ataques de Cross-Site Scripting.
  • Criptografia e Controle de Acesso (A01:2021-Broken Access Control e A02:2021-Cryptographic Failures):
    • Hashing com Bcrypt: Armazenamento de credenciais protegido por bcrypt com fator de trabalho 12, evitando algoritmos legados e vulneráveis.
    • Princípio do Privilégio Mínimo (RBAC): Estrutura para controle de acesso baseada em perfis com política padrão de negação (Default Deny).
  • Monitoramento e Logs Seguros (A09:2021-Security Logging and Monitoring Failures):
    • Auditoria Centralizada: Geração automática do arquivo de log de auditoria no servidor (server_audit.log).
    • Mascaramento de Dados (Data Masking): Filtro ativo no logger que intercepta e mascara chaves de API, senhas e tokens confidenciais antes de gravá-los no disco.
  • Hardening de Infraestrutura e Front-End:
    • Ocultação de Stack Traces: Tratamento de exceções com exibição de erros genéricos ao usuário. Streamlit configurado com showErrorDetails = false para evitar vazamento de caminhos e infraestrutura interna.
    • Segurança de Cabeçalhos e Cookies: Políticas de CSP (Content Security Policy) e CORS estritas em modules/security_helper.py, cookies emitidos com HttpOnly e SameSite=Strict, além de script JavaScript para limpar automaticamente o sessionStorage quando a aba do navegador for fechada.

Tecnologias Utilizadas

  • Python 3.8+
  • Pandas e NumPy: Manipulação, limpeza e tratamento dos datasets de log.
  • Scikit-Learn: Padronização com StandardScaler e aplicação de clusterização com KMeans.
  • Streamlit: Frontend dinâmico para a construção do painel web.
  • Plotly: Gráficos de dispersão interativos.
  • Python-Dotenv: Isolamento de variáveis de ambiente.

Como Instalar e Executar

  1. Clone o repositório:

    git clone https://github.com/MatheusLeo26/SIEM-Data-Scientist.git
    cd SIEM-Data-Scientist
  2. Crie e ative um ambiente virtual (Recomendado):

    python -m venv venv
    # No Windows:
    venv\Scripts\activate
    # No Linux/Mac:
    source venv/bin/activate
  3. Configure as variáveis de ambiente:

    cp .env.example .env

    (Ajuste os valores dentro de .env se necessário)

  4. Instale as dependências:

    pip install -r requirements.txt
  5. Gere os dados de teste (opcional, o aplicativo fará isso automaticamente na primeira execução caso não existam):

    python generate_data.py
  6. Inicie o painel interativo:

    streamlit run app.py

Estrutura de Arquivos

  • generate_data.py: Script gerador de eventos normais e simulador de ataques.
  • analyzer.py: A inteligência de análise do SIEM (processamento estatístico e modelo K-Means).
  • app.py: O frontend do dashboard interativo.
  • requirements.txt: Dependências do projeto.
  • .env.example: Modelo de variáveis de ambiente.
  • .streamlit/config.toml: Parâmetros de hardening do Streamlit.
  • modules/security_helper.py: Implementação de CSP, CORS e limpeza de storage.
  • modules/validation.py: Higienização de campos e prevenção contra ataques de injeção e XSS.
  • modules/auth.py: Hashing criptográfico de senhas e estrutura de RBAC.
  • modules/secure_logger.py: Logger auditável com filtro ativo de mascaramento de dados.

About

Um projeto de cibersegurança focado em Ciência de Dados. Analisa e detecta anomalias em logs de autenticação (baselines e força bruta) e conexões de rede (outliers com IA/K-Means) através de um dashboard Streamlit dinâmico e interativo.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages