Artefatos do Windows · Aula 6 de 9
USB e dispositivos externos
12 min de leitura
Quando dados saem de uma organização em uma unidade USB, o perito precisa responder a três perguntas: qual dispositivo foi conectado, quando ele foi conectado e qual usuário trabalhou com ele. Nenhum artefato isolado responde às três. O Windows 10 e o 11 distribuem as evidências entre as hives SYSTEM, SOFTWARE e NTUSER.DAT, um log de instalação em texto simples e vários logs de eventos. Esta aula mostra onde cada valor fica e como encadeá-los, chegando ao número de série do volume na própria imagem USB. Esse encadeamento é central para o exame CFX, cujas questões frequentemente descrevem uma coleta de triagem do Windows e uma imagem E01 de uma unidade USB.
Antes de começar: o conjunto de controle
Uma hive SYSTEM offline não tem CurrentControlSet. Esse nome é um link que existe apenas em um sistema em execução. Leia primeiro SYSTEM\Select\Current. Um valor de 1 significa que ControlSet001 é o conjunto ativo. Todos os caminhos de SYSTEM nesta aula pressupõem ControlSet001. Converta os horários locais usando as configurações de fuso horário que você registrou na Aula 2.2.
Identificação do dispositivo: USBSTOR e USB
Todo dispositivo de armazenamento em massa USB que o Windows configurou recebe uma entrada de dois níveis em SYSTEM\ControlSet001\Enum\USBSTOR:
- Chave de classe do dispositivo:
Disk&Ven_<vendor>&Prod_<product>&Rev_<rev>, por exemplo,Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00. O fabricante e o produto aqui são as strings informadas pelo dispositivo, não IDs registrados. - Chave de instância:
<serial>&<n>, por exemplo,4C530001230411109384&0. A parte antes do último&é o número de série do dispositivo (a string USB iSerialNumber). O número final é o número da unidade lógica (LUN), normalmente0, que o Windows acrescenta.
O valor FriendlyName da chave de instância armazena um nome legível, como SanDisk Cruzer Blade USB Device.
A armadilha do número de série. Se o segundo caractere do ID de instância for &, como em 7&2c1f9a3e&0, o dispositivo não informou um número de série exclusivo. O próprio Windows gerou o ID, em parte com base na porta à qual o dispositivo foi conectado. Ele não é um número de série de hardware, não pode ser associado a um dispositivo físico e a mesma unidade pode produzir um ID diferente em outra porta. Relate-o como um ID de instância gerado pelo Windows, nunca como um número de série.
O mesmo dispositivo também aparece em SYSTEM\ControlSet001\Enum\USB\VID_xxxx&PID_yyyy\<serial>. VID e PID são os IDs de 16 bits do fabricante e do produto em hexadecimal, por exemplo, VID_0781&PID_5567 para um SanDisk Cruzer Blade. Aqui, o nome da instância é o número de série sem o sufixo &0, portanto a string do número de série é o que vincula as entradas USB e USBSTOR. Unidades USB que usam o protocolo UASP são frequentemente enumeradas em Enum\SCSI, em vez de Enum\USBSTOR, portanto pesquise nos dois.
Registros de data e hora do dispositivo na chave Properties
A chave de instância armazena os horários mais precisos do dispositivo em Properties\{83da6326-97a6-4088-9453-a1923f573b29}\. Cada subchave é um ID de propriedade em hexadecimal. Seu valor é um FILETIME de 8 bytes, que conta intervalos de 100 nanossegundos desde 1601-01-01 UTC.
| Subchave | Propriedade (devpkey.h) | Significado |
|---|---|---|
0064 | DEVPKEY_Device_InstallDate | Última instalação da instância do dispositivo; muda quando o driver é reinstalado ou atualizado |
0065 | DEVPKEY_Device_FirstInstallDate | Primeira instalação: a primeira vez que este dispositivo foi configurado |
0066 | DEVPKEY_Device_LastArrivalDate | Última chegada: a conexão mais recente |
0067 | DEVPKEY_Device_LastRemovalDate | Última remoção: a desconexão mais recente (Windows 8 e posteriores) |
Algumas folhas de consulta publicadas identificam 0064 como "primeira instalação". O cabeçalho devpkey.h do Windows SDK define a propriedade 100 (0x64) como InstallDate e 101 (0x65) como FirstInstallDate. Para uma unidade USB, os dois valores geralmente são iguais, portanto verifique ambos e cite a subchave que você usou. Em um sistema em execução, a chave Properties normalmente só pode ser lida por SYSTEM, portanto um editor do Registro executado como Administrador pode ter o acesso negado. Offline, qualquer analisador de hives, como RECmd ou Registry Explorer, a lê diretamente.
Letra de unidade e volume: MountedDevices
SYSTEM\MountedDevices mapeia nomes para volumes com dois tipos de valores:
\DosDevices\E:armazena o volume ao qual a letra E: foi atribuída mais recentemente.\??\Volume{GUID}armazena uma entrada para cada volume que o Mount Manager já identificou. O GUID do volume é persistente para esse volume neste sistema.
Os dados binários identificam o volume. Para mídias removíveis, são uma string UTF-16LE que contém o caminho do dispositivo, por exemplo, _??_USBSTOR#Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00#4C530001230411109384&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}. O número de série nessa string vincula o GUID do volume à instância USBSTOR. Para um disco fixo MBR, como muitos discos rígidos USB, os dados têm 12 bytes: a assinatura de disco de 4 bytes seguida pelo offset inicial da partição de 8 bytes, expresso em bytes. Partições GPT armazenam DMIO:ID: seguido pelo GUID da partição.
Letras de unidade são reutilizadas. Toda nova unidade pode se tornar E:, e \DosDevices\E: mantém apenas a última. Um caminho como E:\Plans\budget.xlsx não comprova a qual dispositivo se referia. A letra é uma evidência fraca até que um número de série do volume a confirme.
Vinculação do dispositivo a um usuário: MountPoints2
O NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2 de cada usuário contém uma subchave chamada {volume GUID} para cada volume que apareceu na sessão desse usuário. Se o GUID corresponder a um valor \??\Volume{GUID} em MountedDevices, o dispositivo foi montado enquanto esse usuário estava conectado. O NTUSER.DAT no qual você o encontrou identifica a conta. O horário LastWrite da subchave indica atividade recente envolvendo o volume na sessão desse usuário. Trate-o como evidência de apoio, pois outras atividades também podem atualizar o horário LastWrite de uma chave (Aula 2.1). MountPoints2 também lista compartilhamentos de rede, como subchaves do tipo ##server#share.
Rótulos de volume na hive SOFTWARE
Duas chaves de SOFTWARE podem recuperar um rótulo de volume, como "WORK", que a hive SYSTEM não registra:
SOFTWARE\Microsoft\Windows Portable Devices\Devices\<device path containing the serial>: o valorFriendlyNamefrequentemente é o rótulo do volume, ou a letra da unidade se o volume não tinha rótulo.SOFTWARE\Microsoft\Windows Search\VolumeInfoCache\<drive letter>: armazena o rótulo do último volume identificado nessa letra. Assim como MountedDevices, é indexada por letra e sobrescrita.
Nenhuma das chaves é preenchida para todos os dispositivos, portanto use-as para corroboração, não como evidência primária.
setupapi.dev.log: primeira instalação
C:\Windows\INF\setupapi.dev.log é um log de texto das instalações de drivers. Na primeira vez em que um dispositivo é conectado, o Windows grava um bloco como este:
>>> [Device Install (Hardware initiated) - USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00\4C530001230411109384&0]
>>> Section start 2026/03/10 14:22:06.120
O horário de Section start é o da primeira instalação, que equivale, na prática, à primeira conexão. Ele está no horário local do sistema, sem indicação de fuso, portanto você deve convertê-lo para UTC. Conexões posteriores do mesmo dispositivo não criam novos blocos de instalação. Entradas mais antigas são movidas para arquivos de rotação, como setupapi.dev.yyyymmdd_hhmmss.log, na mesma pasta.
Logs de eventos
- Microsoft-Windows-Partition/Diagnostic, ID de evento 1006 (
Microsoft-Windows-Partition%4Diagnostic.evtx, Windows 10 e 11): registrado quando um disco chega ou sai. Registra Manufacturer, Model, Revision, SerialNumber e Capacity, o estilo e a tabela de partições, além de cópias brutas do MBR (Mbr) e de até quatro registros de inicialização de volume (Vbr0aVbr3). Eventos de desconexão mostram capacidade 0 e nenhum dado de partição. O evento 1006 vincula o número de série de hardware a um sistema de arquivos, pois o número de série do volume pode ser lido nos bytes deVbr. O evento permanece após a remoção do dispositivo. - Microsoft-Windows-Kernel-PnP/Configuration: os IDs de evento 400 (dispositivo configurado), 410 (dispositivo iniciado) e 420 (dispositivo excluído) identificam o ID de instância do dispositivo, incluindo o número de série, e corroboram os horários de conexão.
- Microsoft-Windows-DriverFrameworks-UserMode/Operational: os IDs de evento 2003 e 2100 a 2102 registram conexão e remoção, mas o canal é desabilitado por padrão no Windows 10 e no 11. Não conte com sua presença e não trate sua ausência como significativa.
O encadeamento do número de série do volume
Um sistema de arquivos grava um número de série do volume (VSN) em seu registro de inicialização de volume (VBR) quando o volume é formatado. Todos os offsets abaixo são relativos ao início do volume, e os valores estão em little-endian:
| Sistema de arquivos | Offset no VBR | Tamanho | Exibido como |
|---|---|---|---|
| NTFS | 0x48 | 8 bytes | 4 bytes menos significativos, XXXX-XXXX |
| FAT32 | 0x43 | 4 bytes | XXXX-XXXX |
| exFAT | 0x64 | 4 bytes | XXXX-XXXX |
O mesmo número aparece em três lugares. O primeiro é o VBR na imagem USB. O segundo é o VolumeID de LinkInfo dos arquivos LNK e das Listas de Atalhos no host (Aula 2.4), ao lado do tipo de unidade (removível) e do caminho original. O terceiro é a cópia de Vbr0 em Partition/Diagnostic 1006. Um quarto vínculo, o número de série USBSTOR, os vincula ao hardware por meio do campo SerialNumber desse evento. Se um arquivo LNK em C:\Users\ana\... aponta para E:\Plans\budget.xlsx com VSN 1A2B3C4D, e o VBR do E01 contém o mesmo VSN, então o arquivo foi aberto a partir desse volume. Ele não foi aberto a partir de alguma outra unidade que também usava a letra E:. Há uma limitação: a reformatação cria um novo VSN, portanto uma correspondência identifica uma formatação específica da mídia, que o número de série de hardware então vincula ao dispositivo físico.
Exemplo resolvido: um dispositivo, de ponta a ponta
As configurações de fuso horário (Aula 2.2) mostram E. South America Standard Time com ActiveTimeBias = 180 minutos, portanto UTC = horário local + 3 horas.
Select\Current= 1.ControlSet001\Enum\USBSTOR\Disk&Ven_SanDisk&Prod_Cruzer_Blade&Rev_1.00\4C530001230411109384&0existe. O segundo caractere éC, portanto o número de série é real: 4C530001230411109384.Enum\USB\VID_0781&PID_5567\4C530001230411109384o confirma.MountedDevices: o valor\??\Volume{a9d9c980-1ca5-11f1-a3d2-806e6f6e6963}contém...#4C530001230411109384&0#..., e\DosDevices\E:armazena os mesmos dados.C:\Users\ana\NTUSER.DATcontémMountPoints2\{a9d9c980-1ca5-11f1-a3d2-806e6f6e6963}, portanto o volume foi montado na sessão de ana.- setupapi.dev.log: Section start
2026/03/10 14:22:06.120, no horário local. Somar 3 horas resulta em 2026-03-10T17:22:06.120Z.0065armazena os bytes00 A0 2F 6C B2 B0 DC 01, que são decodificados como 2026-03-10T17:22:08Z e corroboram o horário do setupapi com uma diferença de segundos. 0066armazena os bytes80 70 DD BD B9 B3 DC 01. Lidos em little-endian, eles representam 0x01DCB3B9BDDD7080 = 134.179.699.250.000.000 intervalos de 100 ns. Dividido por 10.000.000, isso equivale a 13.417.969.925 s desde 1601. Subtrair 11.644.473.600 s resulta no horário Unix 1.773.496.325, que é 2026-03-14T13:52:05Z (última chegada).- Partition/Diagnostic 1006 em 2026-03-14T13:52:06Z mostra SerialNumber 4C530001230411109384 e uma partição que começa no LBA 2.048. Os bytes de 0x43 a 0x46 de
Vbr0são4D 3C 2B 1A. - No E01, a partição começa em 2.048 × 512 = 1.048.576 bytes. O VSN FAT32 em 1.048.576 + 0x43 é
4D 3C 2B 1A, ou seja, 0x1A2B3C4D, exibido como 1A2B-3C4D.fsstat -o 2048 usb.E01informa o mesmo ID de volume. - A pasta Recent de
anacontémbudget.xlsx.lnkcom tipo de unidade removível, número de série 1A2B3C4D e caminhoE:\Plans\budget.xlsx.
Respostas no estilo do exame: número de série 4C530001230411109384 (sem &0); primeira conexão 2026-03-10T17:22:06Z.
Tabela de resumo
| Pergunta | Artefato | Campo |
|---|---|---|
| Número de série do dispositivo | SYSTEM Enum\USBSTOR\...\<serial>&0 | Nome da chave de instância |
| ID do fabricante e do produto | SYSTEM Enum\USB\VID_xxxx&PID_yyyy | Nome da chave |
| Primeira conexão | setupapi.dev.log; Properties 0065 | Section start (local); FILETIME (UTC) |
| Última conexão / remoção | Properties 0066 / 0067 | FILETIME (UTC) |
| Letra de unidade e GUID do volume | SYSTEM MountedDevices | Dados de \DosDevices\X:, \??\Volume{GUID} |
| Qual usuário | NTUSER.DAT MountPoints2 | Subchave {volume GUID} |
| Rótulo do volume | SOFTWARE Windows Portable Devices; VolumeInfoCache | FriendlyName; VolumeLabel |
| Número de série do volume | VBR da imagem USB; LinkInfo do LNK; Partition/Diagnostic 1006 | 0x43 / 0x48 / 0x64; DriveSerialNumber; Vbr0 |
Foco no exame: Espere questões que peçam um número de série USB, que deve ser o número de série de hardware, e não um ID com & gerado pelo Windows, e o horário da primeira ou da última conexão em UTC. O horário do setupapi deve ser convertido do horário local. Esteja preparado para mostrar como comprovar que um arquivo aberto a partir de uma letra de unidade veio de uma determinada imagem USB, correspondendo o VSN no VBR da imagem ao arquivo LNK e ao evento 1006.
Pontos principais
- Resolva primeiro
SYSTEM\Select\Current, depois leiaEnum\USBSTOReEnum\USB. Um ID de instância cujo segundo caractere é&é gerado pelo Windows, não é um número de série. Properties\{83da6326-...}:0065primeira instalação,0066última chegada,0067última remoção, todos FILETIME em UTC. setupapi.dev.log fornece a primeira instalação no horário local.- MountedDevices vincula o número de série a um GUID de volume e a uma letra. MountPoints2 em NTUSER.DAT vincula esse GUID a um usuário.
- Letras de unidade são reutilizadas, portanto o número de série do volume (NTFS 0x48, FAT32 0x43, exFAT 0x64) é o que vincula caminhos de LNK a um volume específico.
- Partition/Diagnostic 1006 registra o número de série de hardware e uma cópia do VBR, estabelecendo a ligação entre o dispositivo e seu sistema de arquivos. DriverFrameworks-UserMode fica desativado por padrão.