Qué reconstruye esta herramienta
Windows registra un dispositivo extraíble en una docena de lugares, y ninguno está completo. El hive SYSTEM conoce el dispositivo (USBSTOR, USB, WPDBUSENUM), su letra de unidad y su GUID de volumen (MountedDevices) y cuatro marcas de tiempo de propiedades: primera instalación, última instalación, última conexión y última extracción. setupapi.dev.log fecha la primera instalación. Los registros de eventos fechan cada conexión y extracción, y Partition/Diagnostic 1006 incluso contiene el registro de arranque del volumen (VBR), y por tanto el número de serie del volumen. El hive de cada usuario, sus accesos directos, Jump Lists y ShellBags muestran quién montó el volumen y qué se abrió en él.
USB Forensics los lee todos en tu navegador y los vincula por dispositivo físico — por número de serie / ID de instancia, luego por GUID de volumen y luego por número de serie del volumen — en una ficha de dispositivo y una única línea de tiempo. Cada dato lleva etiquetas de evidencia que indican el archivo y la clave, el registro o la línea de donde procede, y cuando las fuentes discrepan la herramienta lo indica en lugar de elegir una en silencio.
Artefactos leídos
- SYSTEM: Enum\USBSTOR (fabricante, producto, revisión, número de serie, FriendlyName, ContainerID y las marcas de tiempo Properties\{83da6326-97a6-4088-9453-a1923f573b29}: 0064 fecha de instalación, 0065 fecha de primera instalación, 0066 última conexión, 0067 última extracción), Enum\USB (VID/PID), Enum\SWD\WPDBUSENUM, MountedDevices, TimeZoneInformation.
- SOFTWARE: Microsoft\Windows Portable Devices\Devices (etiquetas de volumen), Windows NT\CurrentVersion\EMDMgmt (etiqueta + número de serie del volumen), ProfileList (SID → cuenta).
- C:\Windows\INF\setupapi.dev.log: secciones de instalación de dispositivos, convertidas desde la hora local con la zona horaria de SYSTEM.
- Registros de eventos: Partition/Diagnostic 1006, Kernel-PnP/Configuration 400/410/420/430, DriverFrameworks-UserMode 2003/2100/2101/2102, Security 6416 y 4663, System UserPnp 20001/20003.
- Por usuario: MountPoints2 de NTUSER.DAT, ShellBags de UsrClass.dat, Recent\*.lnk, Jump Lists AutomaticDestinations / CustomDestinations.
Qué responde
- Qué dispositivos de almacenamiento USB se conectaron alguna vez, con fabricante, modelo y número de serie (y si Windows generó el número de serie).
- Cuándo se instaló cada uno por primera vez, y cada conexión y extracción que alguna fuente aún conserve.
- Qué letras de unidad, etiquetas de volumen y números de serie del volumen tuvo a lo largo del tiempo, y qué cuentas lo montaron.
- Qué archivos y carpetas se abrieron, escribieron o leyeron en él, y quién lo hizo.
- Hallazgos para el triage: un dispositivo conectado durante la ventana del incidente, un dispositivo de almacenamiento visto por primera vez recientemente, archivos copiados a medios extraíbles o abiertos desde ellos, un dispositivo usado por una cuenta inesperada.
Limitaciones
- Los registros de transacciones del registro (.LOG1/.LOG2) no se aplican: un hive sucio (dirty) se señala, y pueden faltar los cambios más recientes.
- Solo se lee el control set actual. No se recuperan claves eliminadas ni espacio libre (slack).
- setupapi.dev.log se convierte con las reglas de zona horaria de SYSTEM; no se aplican las reglas Dynamic DST específicas de cada año, y el formato setupapi.log de Windows XP no es compatible.
- ShellBags y Security 4663 no nombran el dispositivo: se vinculan a él por letra de unidad o número de volumen y por coincidencia temporal, y se marcan como “inferido”.
- Los archivos de acceso directo sueltos se fechan por su hora de última modificación en la colección; si la copia no la conservó, apóyate en la Jump List y en las horas del destino que se muestran en la evidencia.
- El motor se ha validado con datos sintéticos y casos límite creados a mano; compáralo con herramientas consolidadas antes de apoyarte en él ante un tribunal.
Cómo recopilar
- Lo más rápido: el bloque de PowerShell con privilegios elevados de arriba (reg save + wevtutil + robocopy) — o el target USBDetective de KAPE.
- Velociraptor: Windows.Triage.Targets con el target USBDetective; después suelta el ZIP de la colección tal cual.
- Imágenes de disco: móntalas en solo lectura y copia los archivos indicados conservando sus rutas, o suelta una exportación de FTK Imager.
Preguntas frecuentes
¿Se suben mis archivos?
No. El analizador está escrito en Rust compilado a WebAssembly y se ejecuta en un Web Worker dentro de la pestaña de tu navegador. Los archivos se leen localmente y no se envía nada a ninguna parte.
¿Por qué un número de serie contiene “&”?
Cuando el segundo carácter de un ID de instancia de USBSTOR es “&”, el dispositivo no informó un número de serie utilizable y Windows generó uno (por ejemplo 7&1f2e3d4c&0). Solo es único en ese equipo y no es el número de serie real del dispositivo, así que identifica ese dispositivo por fabricante, producto, número de serie del volumen y horas.
¿Qué marca de tiempo indica cuándo se conectó una memoria USB?
Varias: la propiedad 0066 “última conexión” del hive SYSTEM da la más reciente, los eventos Partition/Diagnostic 1006 y Kernel-PnP dan cada conexión, y setupapi.dev.log y 0065 (FirstInstallDate) dan la primera. La herramienta las fusiona en una sola entrada de conexión y muestra cada fuente como una etiqueta.
¿Cómo se vinculan los accesos directos a una memoria USB?
Un acceso directo guarda el número de serie del volumen de la unidad donde estaba su destino. La herramienta lee ese mismo número de serie del registro de arranque del volumen registrado en Partition/Diagnostic 1006 y de EMDMgmt, lo que vincula el acceso directo con el dispositivo físico incluso cuando las letras de unidad se reutilizaron.
¿Qué pasa si las fuentes discrepan?
La discrepancia se muestra en la ficha del dispositivo con ambos valores y sus fuentes: por ejemplo, setupapi y el registro con fechas de primera instalación distintas tras una reinstalación, o una hora de última conexión en el registro sin ningún registro de eventos correspondiente porque los registros se sobrescribieron.