OpenCyber Academy
Técnico · Capítulo 17 · Português
Código do curso: OCA-063Capítulo 17: OCA-063-C017

Capítulo 17 — Perícia digital e análise de malware: laboratório isolado II

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 17 publicada. Mapa, exemplo, EX065.

flowchart TD
  N0["17.1 Árvores de processos"]
  N1["17.2 Os dados do laboratório"]
  N2["Laboratório — montando a árvore"]
  N3["17.3 Lendo o resultado"]
  N4["17.4 O que o cmd fez"]
  N5["17.5 Relacionando com a linha do tempo"]
  N6["17.7 Relato"]
  N7["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX065"]

Desenho lógico

flowchart LR
  N0["17.1 Árvores de processos"]
  N1["17.2 Os dados do laboratório"]
  N2["Laboratório — montando a árvore"]
  N3["17.3 Lendo o resultado"]
  N4["17.4 O que o cmd fez"]
  N5["17.5 Relacionando com a linha do tempo"]
  N6["17.7 Relato"]
  N7["Síntese"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX065"]
[17.1 Árvores de processos]
    |
    v
[17.2 Os dados do laboratório]
    |
    v
[Laboratório — montando a árvore]
    |
    v
[17.3 Lendo o resultado]
    |
    v
[17.4 O que o cmd fez]
    |
    v
[17.5 Relacionando com a linha do tempo]
    |
    v
[17.7 Relato]
    |
    v
[Síntese]
    |
    v
[Exemplo resolvido] --> [Exercício EX065]

Objetivos de aprendizagem

Você vai (1) reconstruir uma árvore de processos a partir de registros sintéticos do EDR; (2) identificar relações suspeitas entre processo pai e processo filho; (3) relacionar a árvore com a linha do tempo; (4) relatar as constatações com seus limites.

17.1 Árvores de processos

Todo processo tem um pai. Ler as ligações entre pai e filho mostra como um programa chegou a rodar: um documento aberto por um usuário, um script iniciado por um atalho ou uma ferramenta lançada por malware. O hábito ao estilo do SANS de "conhecer o normal" significa saber quais filhos cada pai costuma ter. Conhecer o normal nos PCs das alas significa saber que o explorer.exe costuma iniciar programas como o Teams e o visualizador de medicação, e não hosts de scripts rodando a partir de uma unidade removível. Um processo filho incomum para o seu pai é uma pista, e não uma constatação, até que outra evidência o sustente. Sana confere cada ligação incomum com a linha do tempo e com os eventos de arquivo.

17.2 Os dados do laboratório

O laboratório isolado guarda registros sintéticos de processos do EDR para o WARD4-PC2 por volta das 10:02, com identificadores de processo e de processo pai. Não há amostras. Os registros mantêm a estrutura real, um identificador de processo, um identificador do pai e um nome, mas são cópias sintéticas preparadas para o laboratório. Os identificadores de processo no laboratório são números simplificados, e não os valores da exportação real. O exercício ensina a ler a estrutura sem expor nenhum dado real do hospital. A cópia do laboratório cobre apenas os minutos em torno das 10:02 no WARD4-PC2.

Laboratório — montando a árvore

"""Build a process tree from synthetic (pid, ppid, name) records."""
procs = [(400, 1, "explorer.exe"), (812, 400, "wscript.exe"), (900, 812, "svch.exe"),
         (950, 900, "cmd.exe"), (420, 1, "teams.exe")]
kids = {}
for pid, ppid, name in procs: kids.setdefault(ppid, []).append((pid, name))
def show(p, depth=0):
    for pid, name in kids.get(p, []):
        print("  " * depth + f"{name} ({pid})"); show(pid, depth + 1)
show(1)

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

explorer.exe (400)
  wscript.exe (812)
    svch.exe (900)
      cmd.exe (950)
teams.exe (420)

17.3 Lendo o resultado

O explorer (400) iniciou o wscript (812), que iniciou o svch (900), que iniciou o cmd (950). O explorer também iniciou o Teams (420), um filho normal. Um host de scripts lançado pelo explorer a partir de uma unidade removível, depois um programa em C:/Users/Public, depois um shell de comandos, formam uma cadeia que não ocorre no uso normal de uma ala. A cadeia coincide com o que o laboratório de filtragem anterior mostrou: o wscript.exe iniciou a partir do pendrive e gravou o svch.exe. A árvore acrescenta que o próprio svch.exe iniciou o cmd.exe, algo que o filtro de eventos sozinho não mostrava. O Teams foi incluído para mostrar que uma cadeia incomum se destaca diante dos filhos normais do explorer.

17.4 O que o cmd fez

O relatório do analista diz que o cmd rodou comandos de informação do sistema; o EDR bloqueou a atividade seguinte com a contenção das 10:09. Sana não repete nem testa nenhum comando; ela registra o que os registros mostram. O papel de Sana é registrar a cadeia e os horários; interpretar o que os comandos significavam cabe ao analista. Repetir os comandos num PC de laboratório não acrescentaria nada com segurança e poderia confundir os registros. A contenção das 10:09 desligou o PC da rede cerca de seis minutos depois que o cmd.exe iniciou. O diagrama dela anota que a atividade do cmd.exe vem do relatório do analista, e não do seu próprio exame.

17.5 Relacionando com a linha do tempo

O início do wscript corresponde a 10:02:41 corrigido; o svch, a 10:02:44; o cmd, a 10:03:10. A árvore e a linha do tempo concordam. O início do cmd.exe às 10:03:10 vem vinte e seis segundos depois da gravação do svch.exe, o que é coerente com o programa executando um comando logo depois de iniciar. Os três são horários do EDR carimbados pelo servidor sincronizado do EDR, então coincidem com os horários locais corrigidos do PC sem nenhum ajuste. Owen então confirma o horário do cmd.exe com o horário informado no relatório do analista. A concordância entre a árvore e a linha do tempo sustenta tanto a correção do relógio quanto a ordem dos eventos.

17.6 Limites

Processos de vida curta podem passar despercebidos se o agente estava ocupado; identificadores de pai podem ser reutilizados depois que um processo termina. Sana confere os horários de início para garantir que o pai existia quando o filho iniciou. Conferir os horários de início significa confirmar que o processo 812 já estava rodando quando o processo 900 iniciou, e assim por diante ao longo da cadeia. Se o horário de início de um pai viesse depois do de seu filho, a ligação seria um identificador reutilizado, e não um pai de verdade. Sana registra essa conferência de horário do pai na linha de fonte do diagrama, para cada ligação.

17.7 Relato

A árvore entra no relatório como um diagrama simples com recuos, horários e fontes. Um diagrama com recuos é mais fácil de ler para os gestores do que uma tabela de identificadores, e os horários e as fontes o mantêm verificável. O diagrama cita a exportação do EDR de que foi montado pelo seu hash SHA-256. A confirmação de Owen do horário do cmd.exe com o relatório do analista é anotada logo abaixo. A versão do diagrama para o conselho omite os identificadores de processo e mantém os nomes e os horários.

Exemplo resolvido

O diagrama de Sana: "explorer (400) → wscript (812) 10:02:41 → svch (900) 10:02:44 → cmd (950) 10:03:10; explorer → teams (420) normal. Fonte: exportação do EDR, hash registrado. Horários de início dos pais conferidos." Owen confirma o horário do cmd com o relatório do analista.

Caso sintético. Os registros vêm do script do laboratório.

Erros e limites

As árvores de processos mostram o que iniciou o quê, e não por quê; a intenção vem de evidências mais amplas.

Exercícios

Síntese

As árvores de processos revelam cadeias suspeitas; confira identificadores e horários, e relate com fontes e limites.

Continue estudando — capítulo 17 de 18

← Capítulo 16 (rascunho) · Índice de capítulos do curso · Capítulo 18 (rascunho) →

Respostas comentadas

EX065. O explorer (400) iniciou o wscript (812), que iniciou o svch (900), que iniciou o cmd (950).

EX066. O Teams (420), lançado pelo explorer como no uso diário.

EX067. Ela confirma que o processo pai já estava rodando quando o filho iniciou.

EX068. Sim: o wscript às 10:02:41, o svch às 10:02:44 e o cmd às 10:03:10 coincidem com a linha do tempo corrigida.