OpenCyber Academy
Pós-graduação · Capítulo 7 · Português
Código do curso: OCA-140Capítulo 07: OCA-140-C007

Capítulo 7 — Phishing e segurança do e-mail

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

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

Respostas comentadas

EX031. 5.823 mensagens.

EX032. Quatro domínios.

EX033. 23 mensagens.

EX034. As mudanças de um único caractere necessárias para transformar um domínio em outro.

EX035. Sempre confirmar ligando para um número conhecido.