Mapa da aula
Aula 24 publicada. Mapa, exemplo, EX070.
flowchart TD
N0["24.1 Regras por limiar"]
N1["24.2 Regras de correlação"]
N2["Laboratório — comparando variantes de regras"]
N3["24.3 Lendo o resultado"]
N4["24.4 O propósito decide"]
N5["24.5 Rótulos"]
N6["24.6 Amostras pequenas"]
N7["Nomes e severidade das regras"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX070"]
Desenho lógico
flowchart LR
N0["24.1 Regras por limiar"]
N1["24.2 Regras de correlação"]
N2["Laboratório — comparando variantes de regras"]
N3["24.3 Lendo o resultado"]
N4["24.4 O propósito decide"]
N5["24.5 Rótulos"]
N6["24.6 Amostras pequenas"]
N7["Nomes e severidade das regras"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX070"]
[24.1 Regras por limiar]
|
v
[24.2 Regras de correlação]
|
v
[Laboratório — comparando variantes de regras]
|
v
[24.3 Lendo o resultado]
|
v
[24.4 O propósito decide]
|
v
[24.5 Rótulos]
|
v
[24.6 Amostras pequenas]
|
v
[Nomes e severidade das regras]
|
v
[Exemplo resolvido] --> [Exercício EX070]
Objetivos de aprendizagem
Você vai (1) projetar detecções por limiar e por correlação; (2) avaliar regras contra janelas rotuladas; (3) comparar variantes de regras por verdadeiros e falsos positivos; (4) escolher variantes pelo propósito operacional.
24.1 Regras por limiar
Uma regra por limiar dispara quando uma contagem numa janela ultrapassa um limite: pelo menos 5 usuários distintos falhando a partir de uma /24 em 10 minutos. Contar usuários distintos, em vez do total de falhas, mira o padrão de stuffing: muitas contas, poucas tentativas cada. Um único cliente falhando dez vezes não acionaria a regra, o que é intencional. A janela e o limite são parâmetros a ajustar, e a documentação da regra registra os valores escolhidos e a evidência que levou a eles. Cinco em dez minutos é o ponto de partida.
24.2 Regras de correlação
Uma regra de correlação exige várias condições, possivelmente de fontes diferentes: falhas seguidas de um sucesso, ou um sucesso seguido de uma alteração de endereço. A correlação acrescenta significado ao juntar passos que são fracos isoladamente. Falhas acontecem o tempo todo; um sucesso isolado é normal; falhas seguidas de um sucesso a partir da mesma rede sugerem uma senha adivinhada. Uma alteração de endereço depois de um login vindo de uma rede nova é mais suspeita do que qualquer dos dois eventos separadamente. Essas regras precisam de fontes com horários alinhados e campos compartilhados. Os desvios de relógio entre as fontes precisam ser pequenos.
Laboratório — comparando variantes de regras
"""Evaluate a Sigma-style burst rule over synthetic 10-minute windows with labels."""
windows = [ # (window, distinct users failed, any success, label)
("09:50", 2, True, "benign"), ("10:00", 7, True, "attack"), ("10:10", 6, False, "attack"),
("10:20", 1, False, "benign"), ("11:00", 9, False, "benign"), # load test
("13:30", 5, True, "attack"), ("14:00", 3, True, "benign"), ("15:00", 6, False, "benign")]
def rule(users, success, threshold): return users >= threshold and success
for t in (5, 6):
tp = sum(rule(u, s, t) and l == "attack" for _, u, s, l in windows)
fp = sum(rule(u, s, t) and l == "benign" for _, u, s, l in windows)
fn = sum(not rule(u, s, t) and l == "attack" for _, u, s, l in windows)
print(f"threshold={t} with-success: TP={tp} FP={fp} FN={fn}")
tp = sum(u >= 5 and l == "attack" for _, u, s, l in windows); fp = sum(u >= 5 and l == "benign" for _, u, s, l in windows)
print(f"threshold=5 no success clause: TP={tp} FP={fp} FN={3-tp}")
Execute com python3 lab_rule.py. Saída verificada:
threshold=5 with-success: TP=2 FP=0 FN=1
threshold=6 with-success: TP=1 FP=0 FN=2
threshold=5 no success clause: TP=3 FP=2 FN=0
24.3 Lendo o resultado
Com a cláusula de sucesso e limiar 5, a regra pega 2 de 3 janelas de ataque, sem alertas falsos; com limiar 6, pega apenas 1. Sem a cláusula de sucesso, o limiar 5 pega as 3 janelas de ataque, mas acrescenta 2 alertas falsos — o teste de carga das 11:00 e uma janela das 15:00. Os números mostram a troca com clareza. Exigir um sucesso torna a regra precisa, mas custa uma janela de ataque, uma tentativa que nunca teve sucesso. Retirar a cláusula pega todas as tentativas, mas acrescenta ruído, inclusive um teste de carga que uma exceção para ferramenta assinada poderia remover. Elevar o limiar para seis perde mais uma janela real sem remover nenhum alerta falso, já que não havia nenhum.
24.4 O propósito decide
A variante sem sucesso detecta tentativas; a variante com sucesso detecta comprometimento provável. A Lindqvist usa as duas: as tentativas vão para uma fila diurna de ajuste dos limites de taxa; o comprometimento provável aciona o turno da noite. Nenhuma variante é simplesmente melhor; cada uma responde a uma pergunta diferente. As tentativas importam para ajustar as defesas, como os limites de taxa, e podem esperar o dia. O comprometimento provável exige ação em minutos, então justifica acordar alguém. Dividir a regra por propósito dá a cada uma a urgência certa, em vez de forçar um único limiar de meio-termo para as duas necessidades.
24.5 Rótulos
A avaliação precisa de janelas rotuladas. Os rótulos vêm de incidentes investigados, de testes autorizados e da revisão de amostras pelos analistas. Cada fonte de rótulos tem fraquezas. Os incidentes investigados são confiáveis, mas poucos; os testes autorizados são limpos, mas podem não se parecer com ataques reais; as revisões dos analistas são abundantes, mas podem estar erradas. Registrar de onde veio cada rótulo permite aos avaliadores ponderá-los e verificar se os resultados dependem demais de um tipo de rótulo. Ao lado de cada uma de suas oito janelas, Amara escreve qual fonte forneceu o rótulo e quem o confirmou, para que um revisor possa contestar qualquer rótulo isolado.
24.6 Amostras pequenas
Oito janelas apenas ilustram o método; uma avaliação real usa semanas de dados. Com oito janelas, uma única janela mal rotulada muda os resultados drasticamente. Semanas de dados dão centenas de janelas, o suficiente para estimar taxas com confiança útil e para ver a variação entre dias úteis e fins de semana. O conjunto pequeno continua valioso para o ensino e para testes unitários, em que cada janela pode ser conferida à mão. Amara declara o tamanho da amostra ao lado de cada número que relata, para que ninguém confunda o exemplo didático com um desempenho medido da regra em produção.
Nomes e severidade das regras
Cada variante recebe um nome claro e uma severidade. "Tentativas de stuffing no portal" é baixa e vai para a fila; "Possível tomada de conta no portal" é alta e aciona o plantão. Os nomes dizem aos analistas o que esperar antes de abrirem o alerta, o que acelera a triagem e reduz a confusão entre regras parecidas.
Exemplo resolvido
Amara apresenta os resultados a Paolo como uma tabela de variantes, com uma recomendação: acionar o plantão com "limiar 5 com sucesso" e enviar "limiar 5 sem sucesso" para a revisão diurna. A janela de ataque das 10:10 que foi perdida não teve sucesso, então a regra de acionamento corretamente ficou em silêncio — o atacante ainda não tinha entrado. Isso traz o limiar de acionamento de volta dos 6 em que o laço de ajuste anterior se estabilizou para 5. Aquele laço ajustava a regra só de falhas, em que elevar o limiar era a única forma de cortar alertas falsos. Uma vez acrescentada a cláusula de sucesso, ela remove os alertas falsos por si só: nas janelas do laboratório, o limiar 5 com sucesso não tem alertas falsos e pega duas janelas de ataque, enquanto o 6 pega apenas uma. Manter o 6 perderia detecção sem ganhar nada, então o limiar do R-07 é alterado para 5 por meio do controle de mudanças.
Caso sintético. As janelas e os rótulos vêm do script do laboratório.
Erros e limites
Os próprios rótulos podem estar errados; revise os contestados.
Exercícios
- EX070 — Resultados das variantes. Informe VP, FP e FN das três variantes.
Mostrar critérios de avaliação
Rubrica: 3 = 5+sucesso 2/0/1; 6+sucesso 1/0/2; 5 sem sucesso 3/2/0; 2 = duas; 1 = uma; 0 = nada. - EX071 — Dois propósitos. Por que manter uma variante com sucesso e outra sem sucesso?
Mostrar critérios de avaliação
Rubrica: 3 = tentativas vs comprometimento provável; filas diferentes; 2 = parcial; 1 = escolher uma; 0 = nada. - EX072 — A janela perdida. Por que perder a janela das 10:10 é aceitável para a regra de acionamento?
Mostrar critérios de avaliação
Rubrica: 3 = ainda sem sucesso: não há comprometimento para acionar; 2 = parcial; 1 = não é aceitável; 0 = nada.
Síntese
Projete variantes de regras para propósitos distintos e escolha-as por resultados medidos em dados rotulados.
Continue estudando — capítulo 24 de 50
← Capítulo 23 (rascunho) · Índice de capítulos do curso · Capítulo 25 (rascunho) →