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
- EX065 — A cadeia. Dê a cadeia de processos suspeita.
Mostrar critérios de avaliação
Rubrica: 3 = explorer→wscript→svch→cmd com identificadores; 2 = só os nomes; 1 = errado; 0 = nada. - EX066 — Filho normal. Qual filho do explorer era normal?
Mostrar critérios de avaliação
Rubrica: 3 = teams (420); 2 = só o nome; 1 = wscript; 0 = nada. - EX067 — Reutilização de identificadores. Como Sana se protege da reutilização do identificador do pai?
Mostrar critérios de avaliação
Rubrica: 3 = confere se o pai existia no início do filho; 2 = parcial; 1 = vago; 0 = nada. - EX068 — Árvore e linha do tempo. A árvore e a linha do tempo concordam? Dê os horários.
Mostrar critérios de avaliação
Rubrica: 3 = sim; 10:02:41, 10:02:44, 10:03:10; 2 = só sim; 1 = não; 0 = nada.
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) →