OpenCyber Academy
Profissionalizante · Capítulo 4 · Português
Código do curso: OCA-040Capítulo 04: OCA-040-C004

Capítulo 4 — Perícia digital e análise de malware: métodos centrais

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 04 publicada. Mapa, exemplo, EX016.

flowchart TD
  N0["4.1 Perguntas primeiro"]
  N1["4.2 Comparação com a linha de base"]
  N2["Laboratório — novos endereços de entrada"]
  N3["4.3 Lendo o resultado"]
  N4["4.4 Explicações concorrentes"]
  N5["4.5 Confiança"]
  N6["4.6 Repetibilidade"]
  N7["Escrevendo hipóteses"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7
  N7 --> EX["Exemplo resolvido"]
  EX --> Q["Exercício EX016"]

Desenho lógico

flowchart LR
  N0["4.1 Perguntas primeiro"]
  N1["4.2 Comparação com a linha de base"]
  N2["Laboratório — novos endereços de entrada"]
  N3["4.3 Lendo o resultado"]
  N4["4.4 Explicações concorrentes"]
  N5["4.5 Confiança"]
  N6["4.6 Repetibilidade"]
  N7["Escrevendo hipóteses"]
  N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> N7 --> Q["EX016"]
[4.1 Perguntas primeiro]
    |
    v
[4.2 Comparação com a linha de base]
    |
    v
[Laboratório — novos endereços de entrada]
    |
    v
[4.3 Lendo o resultado]
    |
    v
[4.4 Explicações concorrentes]
    |
    v
[4.5 Confiança]
    |
    v
[4.6 Repetibilidade]
    |
    v
[Escrevendo hipóteses]
    |
    v
[Exemplo resolvido] --> [Exercício EX016]

Objetivos de aprendizagem

Você vai (1) formular perguntas e hipóteses; (2) comparar a atividade com uma linha de base; (3) analisar registros de entrada; (4) enunciar constatações com níveis de confiança.

4.1 Perguntas primeiro

Lena escreve as perguntas: a conta de Joy foi usada por outra pessoa? Quando isso começou? O que essa pessoa fez? Mais alguém foi afetado? Cada pergunta indica os registros que poderiam respondê-la. Escrever as perguntas antes de abrir qualquer exportação mantém o trabalho dentro do escopo e impede que ele vire uma navegação sem rumo. Por exemplo, 'quando começou?' aponta para o log de entradas de 1 a 3 de março, enquanto 'o que essa pessoa fez?' aponta para a auditoria da caixa de correio e o rastreamento de mensagens. A última pergunta, sobre outros afetados, é a que depois exige que Dev amplie o escopo.

4.2 Comparação com a linha de base

Joy normalmente entra a partir do endereço do escritório 198.51.100.7. Uma entrada bem-sucedida a partir de um endereço nunca visto para a conta dela é um sinal forte, mas não uma prova: ela poderia ter trabalhado de casa. A linha de base no laboratório são dois dias de entradas: Joy a partir de 198.51.100.7 em 2 e 3 de março, e m.lee a partir de 198.51.100.9. Incluir m.lee confere que o script não sinaliza usuários comuns. A comparação apenas sinaliza; Lena ainda precisa perguntar a Joy onde ela estava e à TI se o novo endereço pertence à Marlow antes de chamá-lo de não autorizado.

Laboratório — novos endereços de entrada

"""Synthetic sign-in log: flag successful sign-ins from addresses new for each user."""
import csv, io
LOG = """time,user,ip,result
2026-03-02 08:01,j.okafor,198.51.100.7,success
2026-03-02 08:30,m.lee,198.51.100.9,success
2026-03-03 08:02,j.okafor,198.51.100.7,success
2026-03-03 09:12,j.okafor,203.0.113.50,failure
2026-03-03 09:14,j.okafor,203.0.113.50,success
2026-03-03 09:31,m.lee,198.51.100.9,success
"""
seen = {}
for r in csv.DictReader(io.StringIO(LOG)):
    known = seen.setdefault(r["user"], set())
    if r["result"] == "success":
        if known and r["ip"] not in known:
            print("NEW IP", r["time"], r["user"], r["ip"])
        known.add(r["ip"])
print("users checked:", len(seen))

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

NEW IP 2026-03-03 09:14 j.okafor 203.0.113.50
users checked: 2

4.3 Lendo o resultado

Uma entrada bem-sucedida a partir de um endereço novo: 203.0.113.50 às 09:14 de 3 de março, dois minutos depois de uma tentativa malsucedida do mesmo endereço. A colega m.lee não mostra nada novo. Joy confirma que esteve na sua mesa no escritório a manhã toda. A tentativa malsucedida importa: uma falha seguida, dois minutos depois, de um sucesso a partir do mesmo endereço é coerente com alguém testando uma senha capturada, embora também possa ser uma digitação errada. O script trata a entrada das 08:02 no escritório como já conhecida, porque 198.51.100.7 foi visto em 2 de março. A linha users checked: 2 confirma que as duas contas da amostra foram lidas.

4.4 Explicações concorrentes

O 203.0.113.50 poderia ser uma VPN da empresa? A TI verifica: não é um endereço da Marlow. Joy poderia ter usado o celular nos dados móveis? O aplicativo de e-mail do celular dela mostra o Wi-Fi do escritório. A explicação "outra pessoa entrou" é a que melhor se encaixa. Cada explicação é testada com um registro, e não descartada por impressão: a lista de faixas de endereços da Marlow mantida pela TI responde à pergunta da VPN, e as configurações de rede do celular respondem à dos dados móveis. Se qualquer uma das verificações tivesse falhado, a constatação teria caído para uma confiança menor. Lena escreve os dois testes nas notas, porque Dev vai perguntar quais alternativas foram descartadas e como.

4.5 Confiança

Lena escreve "confiança alta" para o acesso não autorizado (endereço novo, declaração de Joy, clique no phishing) e "desconhecido" para quem estava por trás dele. Os três apoios são independentes: o registro de entrada vem do provedor de identidade, a visita ao phishing vem do proxy e a negação vem da própria Joy. A concordância entre três fontes separadas é o que justifica escrever 'alta' aqui. Sobre a pessoa por trás do acesso, Lena tem apenas um endereço, e 203.0.113.50 diz de onde veio uma conexão, e não quem a fez. Escrever 'desconhecido' impede que o relatório sugira uma identificação que nenhum registro sustenta.

4.6 Repetibilidade

O script do laboratório e sua entrada são guardados, para que Dev possa rodar a verificação de novo. Lena guarda o lab_signin.py com o CSV exato que ele leu e registra a saída esperada: uma linha NEW IP para j.okafor às 09:14 e users checked: 2. Quando Dev roda o script de novo num ponto de controle, uma saída diferente significaria que a entrada ou o código mudaram. A repetibilidade também ajuda depois: quando a exportação das entradas é refeita com o intervalo completo de 1 a 3 de março, o mesmo script pode rodar sobre o novo arquivo e os dois resultados podem ser comparados.

Escrevendo hipóteses

Uma hipótese é uma afirmação testável, como 'a entrada das 09:14 não foi feita por Joy'. Lena lista qual evidência a sustentaria e qual a refutaria antes de olhar, para não cair na tentação de ler só os registros que confirmam.

Exemplo resolvido

A constatação de Lena: "Entrada não autorizada em j.okafor às 09:14 a partir de 203.0.113.50 (não é endereço da Marlow; nunca visto para esta usuária). Sustentada pela declaração de Joy e pela visita às 09:10 à página imitada. Confiança: alta."

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

Erros e limites

Uma verificação de primeira ocorrência deixa passar atacantes que usam um endereço já visto ou uma VPN compartilhada.

Exercícios

Síntese

Pergunte primeiro, compare com a linha de base, teste as alternativas e enuncie a confiança com clareza.

Continue estudando — capítulo 04 de 12

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

Respostas comentadas

EX016. A conta foi usada por alguém além de Joy? Quando isso começou? O que essa pessoa fez, e mais alguém foi afetado?

EX017. Uma entrada bem-sucedida de j.okafor às 09:14 a partir de 203.0.113.50, dois minutos depois de uma falha do mesmo endereço; m.lee não mostrou nada novo.

EX018. Que o endereço fosse uma VPN da empresa, e que o celular de Joy tivesse entrado pelos dados móveis.

EX019. Um endereço IP mostra de onde veio uma conexão, e não qual pessoa a fez.

EX020. Um atacante que se conecte por um endereço já visto para a usuária, como uma VPN compartilhada, não seria sinalizado.