Skip to content

registro · setupapi · evtx · LNK

El historial de dispositivos USB, reconstruido por ti

Suelta una colección de triage de Windows. USBSTOR, MountedDevices, setupapi.dev.log, Partition/Diagnostic 1006, Kernel-PnP, LNK, Jump Lists y ShellBags se convierten en una línea de tiempo por dispositivo — con la fuente de cada dato y los puntos en que las fuentes no coinciden. Se analiza en tu navegador con WebAssembly; no se sube nada.

Suelta una colección de triage, un ZIP o archivos sueltos

Hives SYSTEM y SOFTWARE, setupapi.dev.log, registros de eventos (Partition/Diagnostic, Kernel-PnP, DriverFrameworks, Security, System), NTUSER.DAT / UsrClass.dat, archivos LNK y Jump Lists. Las estructuras de KAPE y Velociraptor funcionan tal cual; los archivos no relacionados se omiten.

El ejemplo es una colección sintética de una estación de trabajo ficticia: una memoria USB conectada por una cuenta no autorizada durante una intrusión, más dos dispositivos más antiguos.

Se analiza en tu navegador — no se sube nada

Cómo obtener tus datos

Guía completa de adquisición

El historial USB está repartido entre los hives SYSTEM y SOFTWARE, setupapi.dev.log, algunos registros de eventos y el hive y la carpeta Recent de cada usuario. Recopílalos juntos: cada fuente que añades confirma o corrige a las demás.

  1. Recopila con un comando de administrador, KAPE o Velociraptor
  2. Suelta aquí la carpeta o el ZIP
  3. Análisis local — nada sale del navegador

En el equipo en vivo, abre PowerShell con “Ejecutar como administrador” y pega este bloque. reg save exporta los hives bloqueados; wevtutil exporta los registros de eventos (Security filtrado a 6416 y 4663); también se copian los hives de usuario de las cuentas con sesión iniciada y la carpeta Recent de cada perfil.

PowerShell · Admin
$t = 'C:\triage'; New-Item -ItemType Directory -Force $t | Out-Null
reg save HKLM\SYSTEM "$t\SYSTEM" /y; reg save HKLM\SOFTWARE "$t\SOFTWARE" /y
Copy-Item C:\Windows\INF\setupapi.dev*.log $t
'Microsoft-Windows-Partition/Diagnostic','Microsoft-Windows-Kernel-PnP/Configuration','Microsoft-Windows-DriverFrameworks-UserMode/Operational','System' |
  ForEach-Object { wevtutil epl $_ "$t\$($_ -replace '/','%4').evtx" /ow:true }
wevtutil epl Security "$t\Security.evtx" "/q:*[System[(EventID=6416 or EventID=4663)]]" /ow:true
Get-ChildItem Registry::HKEY_USERS | Where-Object PSChildName -match '^S-1-5-21-[\d-]+$' | ForEach-Object {
  reg save "HKU\$($_.PSChildName)" "$t\NTUSER_$($_.PSChildName).DAT" /y
  reg save "HKU\$($_.PSChildName)_Classes" "$t\UsrClass_$($_.PSChildName).dat" /y }
Get-ChildItem C:\Users -Directory | ForEach-Object {
  robocopy "$($_.FullName)\AppData\Roaming\Microsoft\Windows\Recent" "$t\Users\$($_.Name)\AppData\Roaming\Microsoft\Windows\Recent" /S /XJ /R:0 /W:0 /NP /NFL /NDL | Out-Null }

Todo queda en C:\triage. Suelta esa carpeta en la página.

O comprímela primero para sacarla del equipo (Windows 10 1803+ incluye tar):

PowerShell / cmd
tar -a -c -f C:\usb-triage.zip -C C:\ triage

Trampas habituales

  • Copiar SYSTEM o NTUSER.DAT con el Explorador falla o produce un archivo lleno de ceros mientras Windows está en ejecución: usa reg save, KAPE o una herramienta de copia en bruto.
  • setupapi.dev.log está en hora local. Añade el hive SYSTEM para que las horas se conviertan; de lo contrario se muestran como si fueran UTC.
  • Los registros de eventos se sobrescriben: un Security.evtx con mucha actividad puede cubrir solo unos días. Recopila pronto y conserva copias .evtx antiguas de copias de seguridad o Volume Shadow Copies.
  • reg save solo alcanza los hives de los usuarios con sesión iniciada; para los demás usa KAPE / Velociraptor o copia NTUSER.DAT desde una imagen.

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.

Una intrusión ficticia analizada con USB Forensics: localizar la memoria, confirmar cuándo se conectó, atribuir la cuenta y listar los archivos copiados.
Vincula accesos directos, Jump Lists, ShellBags y eventos 4663 con un dispositivo USB físico mediante números de serie, letras de unidad y horas.
Cómo leer las secciones de instalación de setupapi.dev.log, convertir su hora local a UTC y compararla con la primera instalación del registro.