Análise de linha do tempo · Aula 4 de 5
Pivotagem e corroboração entre fontes
12 min de leitura
O Módulo 2 ensinou cada artefato do Windows isoladamente; a Aula 3.3 os reuniu em uma superlinha do tempo. Esta aula aborda o método que transforma linhas em constatações: pivotar por meio de identificadores compartilhados, examinar eventos próximos de uma âncora, corroborar cada fato importante em uma fonte independente e declarar conflitos e graus de confiança com honestidade, que é o que as questões sobre correlação do exame CFX avaliam.
Pontos de pivotagem
Um ponto de pivotagem é um valor que aparece em mais de um artefato e, assim, os conecta.
| Ponto de pivotagem | Onde aparece (exemplos) | Cuidado |
|---|---|---|
| Nome ou caminho de arquivo | LNK, Jump Lists, MRUs, Shellbags, arquivos referenciados no Prefetch, $MFT, $UsnJrnl, histórico do navegador | Nomes não são únicos; letras de unidade são reutilizadas |
| Entrada da MFT e número de sequência | $MFT, registros de $UsnJrnl e $LogFile, itens do shell em LNK de destinos NTFS | Números de entrada são reutilizados após a exclusão; o número de sequência diferencia os usos |
| Número de série do volume (VSN) | VBR, LinkInfo de LNK, Jump Lists, informações de volume do Prefetch, Vbr0 de Partition/Diagnostic 1006 | Muda quando o volume é reformatado |
| Número de série do dispositivo | USBSTOR, USB, dados de MountedDevices, setupapi.dev.log, 1006, eventos Kernel-PnP | Um ID cujo segundo caractere é & é gerado pelo Windows |
| SID do usuário | ProfileList, chave BAM, UserId do SRUM, logs de eventos, $Recycle.Bin\<SID> | Um hive por usuário também identifica o usuário pelo perfil de origem |
| ID de logon | Security 4624, 4672, 4688, 4634 | Único somente até a próxima reinicialização |
| Nome ou caminho do processo | Prefetch, Amcache, BAM, Shimcache, AppId do SRUM, 4688 | Um nome não é uma identidade; associe-o ao caminho e a um hash |
| SHA-1 ou SHA-256 | FileId do Amcache (SHA-1), arquivos em imagens, inteligência de ameaças | Para arquivos com mais de 31.457.280 bytes, o Amcache calcula o hash apenas dos primeiros 31.457.280 bytes |
| Endereço IP | IpAddress do 4624, eventos RDP, logs de firewall e proxy | NAT e DHCP alteram quem está por trás de um endereço |
| Janela de tempo | Todas as fontes | Resolução, fuso horário e atraso de gravação diferem entre as fontes |
A técnica de pivotagem
- Estabeleça uma âncora. Comece com algo conhecido e específico: um alerta, um arquivo citado no caso, um dispositivo, uma conta.
- Extraia todos os identificadores contidos na âncora: números de série, GUIDs, caminhos, SIDs, hashes, horários.
- Pesquise cada identificador em todas as fontes, não apenas onde você espera encontrá-lo: a superlinha do tempo, os CSVs processados e uma pesquisa por palavras-chave nas imagens brutas.
- Adicione cada novo identificador a uma lista de trabalho, anotando sua origem.
- Repita até que novas pesquisas não retornem nada relevante para a questão.
A lista de trabalho é sua trilha de auditoria. Prefira identificadores específicos (um número de série, um VSN, um hash) a identificadores genéricos, como report.docx ou a letra E:.
Proximidade temporal
Quando os identificadores se esgotarem, pivote pelo tempo: liste tudo em uma janela em torno da âncora, por exemplo, ±10 minutos em torno da última chegada de um dispositivo. Dimensione a janela de acordo com a fonte de menor resolução envolvida: segundos para fontes FILETIME, 2 segundos para horários de gravação FAT, cerca de uma hora para o SRUM.
A proximidade sugere uma relação, mas não a comprova: o Windows grava muitos eventos em segundo plano a cada minuto, e qualquer um deles pode ocorrer próximo da âncora por acaso. Um programa executado dois minutos após uma conexão USB é uma pista; ela se torna uma constatação quando um identificador compartilhado conecta os dois, como uma referência do Prefetch a um caminho no volume com aquele VSN. Relate proximidade como proximidade ("6 minutos após a chegada do dispositivo"), nunca como causa.
Corroboração e independência
Uma constatação é forte quando duas fontes independentes a registram. Independente significa mecanismos diferentes gravando registros diferentes, de modo que um erro, uma lacuna ou uma adulteração em uma delas não afete igualmente a outra. Dois analisadores de um mesmo arquivo são uma fonte verificada duas vezes: isso valida sua ferramenta, não o evento.
| Constatação | Fonte 1 | Fonte 2 | Independência |
|---|---|---|---|
| Arquivo aberto | Último acesso na DestList da Jump List | Horário de modificação de $SI do LNK em Recent | Parcial: arquivos separados gravados pelo shell para um único registro de item recente |
| Programa executado | Horário da última execução no Prefetch | Valor BAM sob o SID do usuário | Boa: o prefetcher e o driver BAM gravam em armazenamentos diferentes |
| Última conexão USB | Última chegada em 0066 de USBSTOR | Partition/Diagnostic 1006 | Boa: propriedade de dispositivo no Registro versus registro no log de eventos |
| Primeira conexão USB | 0065 de USBSTOR | Início da seção em setupapi.dev.log | Boa: FILETIME do Registro (UTC) versus log de texto (hora local) |
| Dados enviados | BytesSent do SRUM | Histórico do navegador, log de proxy ou de auditoria em nuvem | Boa: contador de recursos versus registro de aplicativo ou de rede |
O primeiro par é o mais fraco: uma única ação de limpeza ou configuração de privacidade remove ambos, portanto adicione um terceiro mecanismo, como a lista MRU do próprio aplicativo. Dois valores concordam quando a diferença entre eles é menor que a resolução da fonte menos precisa somada ao seu atraso de gravação conhecido.
Quando as fontes discordam
Os conflitos geralmente decorrem de aspectos mecânicos:
- Resolução. Um horário de gravação DOS tem incrementos de 2 segundos; uma linha do SRUM abrange um intervalo de cerca de uma hora. Um horário DOS e um FILETIME com diferença inferior a 2 segundos não constituem um conflito.
- Hora local versus UTC. Os horários DOS do FAT e o setupapi.dev.log usam hora local; os FILETIMEs do Registro, EVTX, LNK e Prefetch usam UTC. Uma diferença exatamente igual ao deslocamento do fuso horário é o sinal característico.
- Atrasos de gravação. O Shimcache é gravado no desligamento, o SRUM descarrega seus dados em disco cerca de uma vez por hora, um arquivo Prefetch é gravado cerca de 10 segundos após o início do programa, e o LastWrite de uma chave reflete sua última alteração, que pode ser posterior ao evento de interesse.
- Alterações do relógio. Um ajuste abrupto no relógio do sistema (evento 1 de Kernel-General, Security 4616) desloca tudo o que foi gravado antes dele. A Aula 3.5 mostra como medir e corrigir isso.
Declare cada conflito abertamente: os dois valores e suas fontes, a explicação e em qual valor você se baseia e por quê. Nunca descarte um valor que não se encaixe; se não conseguir explicá-lo, diga isso e reduza seu grau de confiança.
Como expressar o grau de confiança
A ISO/IEC 27042 fornece orientações sobre análise e interpretação de evidências digitais. Na prática: separe o que um artefato registra daquilo que você infere, considere alternativas e escolha palavras compatíveis com o respaldo das evidências.
| Expressão | Quando usar | Exemplo |
|---|---|---|
| "registra" | Ao relatar o que uma fonte contém | "A entrada da DestList registra um último acesso às 13:54:29Z." |
| "é compatível com" | As evidências se encaixam, mas ainda existem alternativas razoáveis | "A linha do SRUM é compatível com um upload do arquivo compactado." |
| "indica" | Há forte respaldo de uma ou mais fontes; alternativas são improváveis, mas não foram excluídas | "O arquivo LNK e a Jump List indicam que o arquivo foi aberto a partir do volume USB." |
| "estabelece" | Fontes independentes concordam e as alternativas foram testadas e excluídas | "O VSN no 1006 e na imagem estabelece que o volume adquirido estava naquele dispositivo." |
Artefatos registram contas e processos, não pessoas: escreva "a conta de ana", não "ana", a menos que outras evidências coloquem a pessoa diante do teclado.
Linha do tempo do caso versus superlinha do tempo
A superlinha do tempo (Aula 3.3) contém milhões de linhas. A linha do tempo do caso lista apenas os eventos que respondem à questão, geralmente dezenas de linhas, cada uma com o horário UTC na precisão da fonte, o evento em linguagem simples, a fonte (arquivo mais registro, offset ou caminho da chave), a fonte de corroboração e qualquer nota sobre conflitos. Inclua eventos que enfraqueçam sua hipótese. Você pesquisa na superlinha do tempo; você relata a linha do tempo do caso.
Exemplo resolvido: furto de dados em 2026-03-14
Um arquivo de orçamento apareceu fora da empresa. O pacote contém uma coleta de triagem do Windows 11 (ActiveTimeBias 180, portanto UTC = hora local + 3 h) e uma imagem E01 de uma unidade USB FAT32. A âncora é o número de série da unidade, 4C530001230411109384.
| Etapa | Fonte | Identificador usado | Novo identificador encontrado | Horário (UTC) |
|---|---|---|---|---|
| 1 | SYSTEM Enum\USBSTOR\...\4C530001230411109384&0, propriedade 0066 | Número de série do dispositivo (âncora) | Horário da última chegada | 2026-03-14T13:52:05Z |
| 2 | Partition/Diagnostic 1006 | Número de série do dispositivo | Bytes de Vbr0 em 0x43 4D 3C 2B 1A: VSN 1A2B-3C4D | 2026-03-14T13:52:06Z |
| 3 | SYSTEM MountedDevices | Número de série do dispositivo dentro do caminho do dispositivo | GUID do volume {a9d9c980-…}, letra E: | nenhum |
| 4 | C:\Users\ana\NTUSER.DAT MountPoints2; ProfileList | GUID do volume | Conta ana, SID S-1-5-21-…-1001 | LastWrite da chave 2026-03-14T13:52:09Z |
| 5 | Recent\budget-q3.xlsx.lnk de ana e Jump List do Excel | VSN 1A2B3C4D, tipo de unidade removível | Caminho E:\Clients\budget-q3.xlsx | DestList 2026-03-14T13:54:29Z; LNK modificado às 13:54:30Z |
| 6 | Prefetch 7ZG.EXE-<hash>.pf; BAM sob …-1001 | Nome BUDGET-Q3.XLSX; VSN nas informações de volume | Programa 7zG.exe; os arquivos referenciados incluem \CLIENTS\Q3-FILES.7Z | Última execução 2026-03-14T13:58:41Z; BAM 13:58:49Z |
| 7 | Imagem USB, entrada de diretório FAT32 | Nome q3-files.7z; VSN 1A2B-3C4D | Tamanho de 64.108.233 bytes | Horário de gravação 2026-03-14T13:59:12Z (convertido) |
| 8 | Uso de dados de rede do SRUM | SID …-1001; janela 13:52Z–14:31Z | AppId chrome.exe; BytesSent 66.912.404 | Intervalo de 13:31:09Z a 14:31:09Z |
| 9 | History do Chrome de ana, tabelas visits e urls | Processo chrome.exe; janela | URL https://transfer.example.com/upload | 2026-03-14T14:09:47Z |
As etapas 1 e 2 concordam com diferença de até um segundo, assim como os horários da DestList e do LNK na etapa 5; os horários do Prefetch e do BAM na etapa 6 têm diferença de 8 segundos, dentro da variação normal.
O conflito na etapa 7. A palavra de horário de gravação no offset 0x16 da entrada de diretório é 66 57, lida como 0x5766, e a palavra de data em 0x18 é 6E 5C, lida como 0x5C6E. Data: 0x5C6E >> 9 = 46, portanto 1980 + 46 = 2026; (0x5C6E >> 5) & 0xF = 3; 0x5C6E & 0x1F = 14. Horário: 0x5766 >> 11 = 10; (0x5766 >> 5) & 0x3F = 59; (0x5766 & 0x1F) × 2 = 6 × 2 = 12 s. Uma ferramenta que rotula esse valor como UTC mostra 2026-03-14T10:59:12Z, quase três horas antes da última chegada da unidade e incompatível com a etapa 6. O FAT armazena hora local, portanto a correção ausente é o deslocamento: 10:59:12 + 3 h = 13:59:12Z, 31 segundos após o início de 7zG.exe. A linha do tempo do caso mantém os dois valores com essa explicação.
Etapa 8. BytesSent excede o tamanho do arquivo compactado em 66.912.404 − 64.108.233 = 2.804.171 bytes (cerca de 4,4 %), plausível para sobrecarga e outras atividades de navegação. O SRUM não pode informar qual arquivo foi enviado, nem quando.
Etapa 9. O visit_time do Chrome conta microssegundos desde 1601 (Aula 3.1). O valor 13.417.970.987.412.318 ÷ 1.000.000 = 13.417.970.987,412318 s; − 11.644.473.600 = Unix 1.773.497.387,412. Subtrair 1.773.446.400 (2026-03-14T00:00:00Z) deixa 50.987 s = 14 h 09 min 47 s, portanto 2026-03-14T14:09:47.412Z.
Constatação declarada. "O dispositivo com número de série 4C530001230411109384 foi conectado pela última vez em 2026-03-14T13:52:05Z (USBSTOR, corroborado por Partition/Diagnostic 1006). Seu volume, VSN 1A2B-3C4D, foi montado na sessão da conta ana (SID S-1-5-21-…-1001). O arquivo LNK e a Jump List indicam que essa conta abriu E:\Clients\budget-q3.xlsx a partir desse volume às 13:54:29Z. Prefetch e BAM estabelecem que 7zG.exe foi executado às 13:58:41Z, sob essa conta segundo o BAM; q3-files.7z no volume adquirido foi gravado pela última vez às 13:59:12Z. O SRUM e o histórico do navegador são compatíveis com um upload do arquivo compactado por meio de chrome.exe entre 14:09:47Z e 14:31:09Z, mas não identificam o arquivo enviado." O Prefetch mostra que 7zG.exe referenciou os dois arquivos; somente o conteúdo do arquivo compactado, listado a partir da imagem, mostra que budget-q3.xlsx está dentro de q3-files.7z.
Como responder às tarefas do exame com precisão
- Distinga o valor exato solicitado: um número de série sem
&0não é o ID da instância, um caminho sem a letra da unidade está incompleto, e um SID ou hash truncado é um valor diferente. - Forneça horários em ISO 8601 UTC com
Z, como2026-03-14T13:52:05Z, truncados para segundos, a menos que seja solicitada maior precisão. - Leia o verbo: "conectado pela primeira vez" (
0065, setupapi) não é "conectado pela última vez" (0066); "aberto", "executado" e "copiado" apontam para artefatos diferentes. - Confira o valor em um segundo artefato antes de enviar; uma diferença exatamente igual ao deslocamento significa um valor não convertido.
Foco no exame: Espere questões de cenário que exijam dois ou três saltos, como do número de série de um dispositivo ao SID de um usuário, ou de um arquivo na unidade USB ao programa que o acessou. As questões podem avaliar quais fontes são consideradas independentes, como explicar um horário FAT cuja diferença em relação a um FILETIME seja exatamente igual ao deslocamento e qual formulação uma constatação permite sustentar.
Pontos principais
- Pontos de pivotagem são valores compartilhados entre artefatos, como caminhos, VSNs, números de série de dispositivos, SIDs, hashes e janelas de tempo.
- Pivote pesquisando os identificadores da âncora em todas as fontes e repetindo o processo; a proximidade temporal fornece pistas, e um identificador compartilhado transforma uma pista em uma constatação.
- Corroboração independente significa mecanismos diferentes, não analisadores diferentes do mesmo arquivo; explique conflitos pela resolução, pelo fuso horário, pelo atraso de gravação ou pela alteração do relógio.
- Use uma formulação compatível com o respaldo das evidências ("registra", "é compatível com", "indica", "estabelece") e relate uma linha do tempo do caso selecionada criteriosamente, não a superlinha do tempo.