Mapa da aula
Aula 07 publicada. Mapa, exemplo, EX031.
flowchart TD
N0["7.1 O problema"]
N1["7.2 O laboratório dos domínios parecidos"]
N2["Laboratório — Sinalizando domínios de remetente pare"]
N3["7.3 Controles técnicos"]
N4["7.4 Controles humanos"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX031"]
Desenho lógico
flowchart LR
N0["7.1 O problema"]
N1["7.2 O laboratório dos domínios parecidos"]
N2["Laboratório — Sinalizando domínios de remetente pare"]
N3["7.3 Controles técnicos"]
N4["7.4 Controles humanos"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX031"]
[7.1 O problema]
|
v
[7.2 O laboratório dos domínios parecidos]
|
v
[Laboratório — Sinalizando domínios de remetente pare]
|
v
[7.3 Controles técnicos]
|
v
[7.4 Controles humanos]
|
v
[Exemplo resolvido] --> [Exercício EX031]
Objetivos de aprendizagem
Você vai (1) analisar os padrões de phishing nos dados de e-mail; (2) detectar domínios de remetente parecidos; (3) combinar controles técnicos e humanos contra o phishing.
7.1 O problema
As clínicas do Moorfield recebem e-mails de phishing com frequência, alguns fingindo vir da sede ou de fornecedores e pedindo pagamentos ou dados de login. No ano passado, uma gerente de clínica digitou sua senha numa página de login falsa, e a conta enviou phishing a pacientes antes de ser bloqueada. Elena quer entender os padrões. O Dr. Qureshi sugere começar pelos domínios dos remetentes, porque muitos ataques usam domínios quase idênticos aos genuínos, o que uma equipe ocupada raramente percebe. Ela pede ao provedor de e-mail uma exportação de três meses de logs.
7.2 O laboratório dos domínios parecidos
O laboratório lê um log sintético de 5.823 mensagens recebidas de 68 domínios de remetente distintos. Ele compara cada domínio com o domínio do próprio Moorfield usando a distância de edição, o número de mudanças de um único caractere necessárias para transformar um no outro. Quatro domínios estão a até duas mudanças, como o algarismo um no lugar da letra l ou um hífen inserido, e 23 mensagens vieram deles. Elena observa que os quatro passariam numa olhada rápida. Ela mostra os quatro domínios ao comitê de segurança lado a lado com o genuíno, e nenhum dos membros identifica todas as diferenças sem ajuda.
Laboratório — Sinalizando domínios de remetente parecidos por distância de edição num log sintético de e-mail
"""Flag lookalike sender domains by edit distance in a synthetic mail log (stdlib only)."""
import random
random.seed(30)
OWN = "moorfielddental.example"
def dist(a, b):
prev = list(range(len(b) + 1))
for i, ca in enumerate(a, 1):
cur = [i]
for j, cb in enumerate(b, 1):
cur.append(min(prev[j] + 1, cur[j - 1] + 1, prev[j - 1] + (ca != cb)))
prev = cur
return prev[-1]
fakes = ["moorfie1ddental.example", "moorfielddentai.example", "moorfield-dental.example", "moorfielddental.examp1e"]
normal = [f"supplier{i}.example" for i in range(60)] + ["labwork.example", "dentalsupply.example", "bank.example"]
log = [random.choice(normal) for _ in range(5000)] + [OWN] * 800 + [random.choice(fakes) for _ in range(23)]
flag = {d for d in set(log) if d != OWN and dist(d, OWN) <= 2}
n_flag = sum(d in flag for d in log)
print(f"messages {len(log)}; distinct sender domains {len(set(log))}")
print(f"lookalike domains (distance <= 2): {sorted(flag)}; messages from them {n_flag}")
Execute com python3 lab_lookalike.py. Saída verificada:
messages 5823; distinct sender domains 68
lookalike domains (distance <= 2): ['moorfie1ddental.example', 'moorfield-dental.example', 'moorfielddentai.example', 'moorfielddental.examp1e']; messages from them 23
7.3 Controles técnicos
Elena pede ao provedor de e-mail que coloque em quarentena as mensagens de domínios a até duas edições do domínio do Moorfield e dos domínios dos principais fornecedores, e que marque todas as mensagens externas com uma faixa visível. Ela publica registros de autenticação de e-mail para o domínio do Moorfield, para que os sistemas destinatários possam rejeitar as mensagens que alegam falsamente vir dele. Ela também ativa a autenticação multifator em todas as caixas postais, para que uma senha roubada sozinha não abra mais uma conta. Depois de um mês, a quarentena pega várias novas mensagens de domínios parecidos, e o provedor de e-mail confirma que as mensagens que usam falsamente o próprio domínio do Moorfield agora são rejeitadas.
7.4 Controles humanos
Os controles técnicos deixam passar alguns ataques. Elena introduz uma regra simples para as mudanças de pagamento e de dados bancários: sempre confirmar ligando para um número conhecido, nunca para um informado no e-mail. Ela acrescenta um botão de comunicação e agradece a cada pessoa que comunica. Breves exemplos mensais mostram domínios parecidos reais, com as diferenças destacadas. O Dr. Qureshi observa que as pessoas e a tecnologia juntas dão uma proteção melhor do que qualquer uma delas sozinha. Os gerentes das clínicas dizem que os exemplos mensais são úteis porque a equipe os discute nas reuniões. Em três meses, as comunicações de e-mails suspeitos dobram, e a equipe central encontra duas campanhas mais cedo do que antes.
Exemplo resolvido
Elena analisa 5.823 mensagens sintéticas, encontra quatro domínios parecidos que enviaram 23 mensagens, coloca em quarentena os quase idênticos, acrescenta a autenticação de e-mail e a MFA e define uma regra de retorno de ligação.
Caso sintético. Os dados de e-mail são sintéticos; as saídas vêm de lab_lookalike.py.
Erros e limites
Os domínios parecidos passam numa olhada rápida, então depender de que a equipe os perceba fracassa.
Exercícios
-
EX031 — Número de mensagens. Quantas mensagens o log contém?
Mostrar critérios de avaliação
Rubrica: 3 = 5.823;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma. -
EX032 — Número de domínios parecidos. Quantos domínios parecidos são sinalizados?
Mostrar critérios de avaliação
Rubrica: 3 = quatro;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma. -
EX033 — Mensagens dos domínios parecidos. Quantas mensagens vieram de domínios parecidos?
Mostrar critérios de avaliação
Rubrica: 3 = 23;; 2 = parcialmente correto;; 1 = errado;; 0 = nenhuma. -
EX034 — Distância de edição. O que a distância de edição conta?
Mostrar critérios de avaliação
Rubrica: 3 = as mudanças de um único caractere entre as cadeias;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma. -
EX035 — Regra de pagamento. Qual é a regra para as mudanças de pagamento?
Mostrar critérios de avaliação
Rubrica: 3 = confirmar ligando para um número conhecido;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.