Mapa da aula
Aula 23 publicada. Mapa, exemplo, EX067.
flowchart TD
N0["23.1 Indicadores"]
N1["23.2 Busca"]
N2["Laboratório — busca de indicadores"]
N3["23.3 Leitura do resultado"]
N4["23.4 Qualidade dos indicadores"]
N5["23.5 Delimitação do escopo"]
N6["23.6 Registro das buscas"]
N7["23.7 Compartilhamento de indicadores"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
N7 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX067"]
Desenho lógico
flowchart LR
N0["23.1 Indicadores"]
N1["23.2 Busca"]
N2["Laboratório — busca de indicadores"]
N3["23.3 Leitura do resultado"]
N4["23.4 Qualidade dos indicadores"]
N5["23.5 Delimitação do escopo"]
N6["23.6 Registro das buscas"]
N7["23.7 Compartilhamento de indicadores"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX067"]
[23.1 Indicadores]
|
v
[23.2 Busca]
|
v
[Laboratório — busca de indicadores]
|
v
[23.3 Leitura do resultado]
|
v
[23.4 Qualidade dos indicadores]
|
v
[23.5 Delimitação do escopo]
|
v
[23.6 Registro das buscas]
|
v
[23.7 Compartilhamento de indicadores]
|
v
[Exemplo resolvido] --> [Exercício EX067]
Objetivos de aprendizagem
Você vai (1) buscar indicadores de comprometimento em logs; (2) delimitar o escopo de um incidente a partir das ocorrências de indicadores; (3) entender a qualidade dos indicadores; (4) registrar as buscas de forma reproduzível.
23.1 Indicadores
Indicadores de comprometimento são valores observáveis ligados a atividade maliciosa: domínios, endereços IP, hashes de arquivos, caminhos do registro. Da ws-114 a equipe tem dois domínios: login-portal.example.net (página de phishing) e cdn-update.example.org (download da DLL). Os dois domínios vêm de etapas diferentes do ataque: a página de phishing, do histórico do navegador e do proxy; o domínio de download, do proxy e da análise estática de update.dll. O hash do arquivo e o caminho da run key são outros indicadores vindos do endpoint. Cada um é registrado com sua fonte e o horário em que foi visto pela primeira vez.
23.2 Busca
O log do proxy é pesquisado em busca de qualquer host que tenha contatado algum dos domínios. A correspondência exata no campo de host evita falsos acertos causados por cadeias parecidas nos caminhos. Uma busca por substring de example.net também encontraria hosts sem relação que compartilham o domínio pai, e poderia encontrar o domínio onde ele aparece só dentro do caminho de uma URL. A correspondência exata no campo de host evita os dois problemas. A contrapartida é que subdomínios usados pelo atacante, como outro prefixo no mesmo domínio, passariam despercebidos, por isso Leah faz uma segunda busca, mais ampla, e revisa à mão os resultados adicionais.
Laboratório — busca de indicadores
"""Match synthetic proxy-log lines against an indicator list."""
iocs = {"login-portal.example.net", "cdn-update.example.org"}
log = ["09:13:55 ws-114 mail.example GET /inbox",
"09:14:30 ws-114 login-portal.example.net POST /verify",
"09:31:02 ws-114 cdn-update.example.org GET /a.bin",
"09:40:11 ws-207 intranet.example GET /library"]
hits = [l for l in log if l.split()[2] in iocs]
for h in hits: print("HIT", h)
print(f"{len(hits)} of {len(log)} lines matched; hosts: {sorted({h.split()[1] for h in hits})}")
Execute com python3 lab_ioc.py. Saída verificada:
HIT 09:14:30 ws-114 login-portal.example.net POST /verify
HIT 09:31:02 ws-114 cdn-update.example.org GET /a.bin
2 of 4 lines matched; hosts: ['ws-114']
23.3 Leitura do resultado
Duas das quatro linhas sintéticas correspondem: o POST da ws-114 para a página de phishing às 09:14:30 e o GET de /a.bin no domínio de download às 09:31:02. Só a ws-114 aparece, então nesta amostra nenhum outro host contatou os indicadores. No log completo, a mesma busca é a base para responder à P4. A linha da ws-207 é um negativo útil: um host ativo no mesmo período que não correspondeu, o que mostra que a busca é seletiva em vez de encontrar tudo. A correspondência exata no terceiro campo depende de o formato do log ser o mesmo em todas as linhas; uma linha com menos de três campos faria esta versão simples parar com um erro de índice, e é por isso que o parser dos capítulos de programação conta as linhas malformadas.
23.4 Qualidade dos indicadores
Domínios e IPs mudam rapidamente e podem ser compartilhados com serviços legítimos; os hashes são exatos, mas frágeis. Indicadores são pistas a conferir, não veredictos. Para a ws-114, o hash de update.dll é exato, mas não encontraria uma variante recompilada; o domínio de download poderia ser trocado pelo atacante em poucas horas. Cada indicador, portanto, leva a uma pergunta, e não a uma conclusão. Um host que contatou cdn-update.example.org é examinado em busca de uma run key e da DLL antes que alguém o chame de infectado.
23.5 Delimitação do escopo
Se outros hosts tivessem correspondido, cada um viraria uma pista com sua própria coleta de evidências. Cada pista seguiria o mesmo padrão usado na ws-114: autorização, inventário, preservação, análise. Priorizá-las pelo quão recentemente contataram os indicadores e pela sensibilidade dos dados que guardam definiria a ordem. Neste caso a busca encontrou só a ws-114, o que manteve a investigação pequena, mas o método escala se o resultado tivesse sido outro. As notas de Leah registram que a busca foi feita, então a ausência de outros hosts é uma constatação, não uma suposição.
23.6 Registro das buscas
Termos de busca, dados pesquisados, intervalo de tempo e contagens de resultados são anotados para que um revisor possa repetir a busca. Um registro de busca da ws-114 poderia dizer: exportação do log do proxy das 09:00 às 12:00, correspondência exata de host para dois domínios, duas ocorrências, ambas da ws-114. Sem o intervalo de tempo, um leitor poderia supor que o dia inteiro foi pesquisado. Registrar a contagem de linhas pesquisadas, além das ocorrências, mostra que a busca rodou na exportação completa, e não numa amostra truncada. O registro vai para o arquivo do caso, ao lado do hash da exportação.
23.7 Compartilhamento de indicadores
Com aprovação, o escritório de segurança compartilha indicadores com instituições parceiras por canais confiáveis. O compartilhamento ajuda outras instituições a conferir seus próprios logs em busca da mesma campanha, e elas podem devolver indicadores que a universidade ainda não viu. A aprovação importa porque os indicadores podem revelar informações sobre o incidente e sobre os sistemas da universidade. Os itens compartilhados se limitam ao que os outros precisam, como domínios e hashes de arquivos, sem nomes nem nomes de hosts internos, e cada compartilhamento é registrado com a data e o destinatário.
Pivotagem
Uma ocorrência de um indicador pode revelar outros: o tamanho da resposta e o horário do download de /a.bin podem coincidir com outras requisições, e as strings da DLL podem nomear domínios adicionais. Leah registra cada pivô e sua fonte.
Exemplo resolvido
O log completo do proxy (09:00–12:00, 48.210 linhas) é pesquisado; só a ws-114 corresponde. Leah escreve: "Nenhum outro host no log do proxy contatou os dois domínios indicadores entre 09:00 e 12:00 UTC." Ela acrescenta que hosts que usam outros caminhos de saída não apareceriam.
Caso sintético. Os logs são gerados pelo script do laboratório.
Erros e limites
Uma busca negativa é limitada pelos dados pesquisados; ela não prova que nenhum outro contato ocorreu.
Exercícios
- EX067 — Ocorrências do laboratório. Quais linhas corresponderam, e de quais hosts?
Mostrar critérios de avaliação
Rubrica: 3 = POST das 09:14:30, GET das 09:31:02; só a ws-114; 2 = parcial; 1 = errado; 0 = nada. - EX068 — Limite do negativo. Como deve ser redigido o resultado negativo do log completo?
Mostrar critérios de avaliação
Rubrica: 3 = limitado pelo log e pelo intervalo; outros caminhos não cobertos; 2 = parcial; 1 = nenhum contato ocorreu; 0 = nada. - EX069 — Fragilidade do hash. Por que os indicadores de hash são frágeis?
Mostrar critérios de avaliação
Rubrica: 3 = a alteração de um byte gera novo hash; variantes não encontradas; 2 = parcial; 1 = algoritmo fraco; 0 = nada.
Síntese
As buscas de indicadores delimitam rapidamente os incidentes quando são exatas, registradas e honestamente limitadas.
Continue estudando — capítulo 23 de 40
← Capítulo 22 (rascunho) · Índice de capítulos do curso · Capítulo 24 (rascunho) →