◇ OpenCyber Academy
Graduação · Capítulo 30 · Português

Capítulo 30 — Laboratório II

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

Capítulo 30 — Laboratório II

Mapa da aula

Aula 30 publicada. Mapa, exemplo, EX088.

flowchart TD
  N0["30.1 A tarefa"]
  N1["Laboratório — Ajuste de uma regra de impossible trav"]
  N2["30.2 Ajuste"]
  N3["30.3 Relato"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4
  N4 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX088"]

Desenho lógico

flowchart LR
  N0["30.1 A tarefa"]
  N1["Laboratório — Ajuste de uma regra de impossible trav"]
  N2["30.2 Ajuste"]
  N3["30.3 Relato"]
  N4["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX088"]
[30.1 A tarefa]
    |
    v
[Laboratório — Ajuste de uma regra de impossible trav]
    |
    v
[30.2 Ajuste]
    |
    v
[30.3 Relato]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX088]

Objetivos de aprendizagem

Você vai (1) simular a revisão de logs em busca de logins suspeitos; (2) ajustar uma regra de detecção simples; (3) medir falsos positivos e falhas de detecção em dados sintéticos.

30.1 A tarefa

O segundo laboratório pede que Lucas escreva uma regra de detecção para logins suspeitos usando logs sintéticos do sistema de identidade da Fernway. Cada registro tem um usuário, um horário, um país e um resultado. Ele começa com uma regra que sinaliza logins vindos de um país diferente do habitual do usuário. Os dados sintéticos incluem eventos rotulados, alguns deles ataques genuínos plantados pelo Dr. Bellini, para que Lucas possa medir o quão bem sua regra funciona. Todos os dados são gerados, então nenhuma atividade real de funcionários é examinada.

Laboratório — Ajuste de uma regra de impossible travel

# Tune a sign-in rule on labelled synthetic logs: (user, hour, country, attack?)
logs = [("ana", 9, "UK", 0), ("ana", 10.5, "BR", 1), ("ben", 8, "UK", 0), ("ben", 20, "FR", 0),
        ("cai", 7, "UK", 0), ("cai", 8.5, "RU", 1), ("dee", 9, "UK", 0), ("dee", 15, "ES", 0),
        ("eli", 12, "UK", 0), ("eli", 13.5, "CN", 1), ("fay", 9, "DE", 0), ("fay", 18, "DE", 0),
        ("gus", 9, "UK", 0), ("gus", 30, "IT", 0), ("hal", 9, "UK", 0), ("hal", 9.8, "US", 1)]
home = "UK"
def evaluate(name, flags):
    tp = sum(1 for i in flags if logs[i][3]); fp = len(flags) - tp
    miss = sum(r[3] for r in logs) - tp
    print(f"{name}: flagged {len(flags)}, attacks caught {tp}, false positives {fp}, missed {miss}")
evaluate("any foreign", [i for i, r in enumerate(logs) if r[2] != home])
def travel(window):
    out = []
    for i, r in enumerate(logs):
        for j, p in enumerate(logs[:i]):
            if p[0] == r[0] and p[2] != r[2] and r[1] - p[1] <= window: out.append(i)
    return out
evaluate("2-hour travel", travel(2)); evaluate("1-hour travel", travel(1))

Execute com python3 lab_detect.py. Saída verificada:

any foreign: flagged 9, attacks caught 4, false positives 5, missed 0
2-hour travel: flagged 4, attacks caught 4, false positives 0, missed 0
1-hour travel: flagged 1, attacks caught 1, false positives 0, missed 3

30.2 Ajuste

A primeira regra sinaliza todo login do exterior, inclusive de compradores em viagens a fornecedores, produzindo muitos alarmes falsos. Lucas acrescenta uma condição: sinalizar apenas quando dois logins bem-sucedidos do mesmo usuário vêm de países diferentes em até duas horas, o que é rápido demais para viajar. O laboratório mostra a mudança: os falsos positivos caem drasticamente, enquanto os ataques plantados continuam sendo detectados. Ele também testa uma janela mais estreita, de uma hora, e descobre que ela deixa passar três dos quatro ataques, então mantém duas horas. O ajuste é uma troca entre ruído e falhas de detecção, medida em dados rotulados.

30.3 Relato

Lucas relata o desempenho da regra em dados sintéticos e avisa que os dados reais serão diferentes. Ele recomenda um teste de duas semanas na ferramenta de identidade da Fernway em modo apenas de alerta, com Hannah registrando quais alertas eram reais. Ele observa que a regra não detecta atacantes que fazem login do mesmo país do usuário, então ela complementa, e não substitui, a autenticação resistente a phishing. O Dr. Bellini observa que declarar o que uma regra não consegue detectar é tão importante quanto sua taxa de detecção, porque, do contrário, os defensores confiam demais nela.

Exemplo resolvido

Lucas escreve e ajusta uma regra de impossible travel em logs sintéticos rotulados, compara janelas por falsos positivos e falhas de detecção e planeja um teste.

Caso sintético. Os logs e os ataques são sintéticos.

Erros e limites

Os dados sintéticos raramente reproduzem o ruído real. VPNs e aplicativos de viagem podem confundir regras de localização.

Exercícios

Síntese

Regras de detecção são ajustadas em dados rotulados equilibrando alarmes falsos e omissões, e os seus pontos cegos precisam ser declarados.

Continue estudando — aula 30 (capítulo 30 de 40)

← Capítulo 29 · Índice das aulas · Capítulo 31 →

Continue para a próxima aula já escrita.