Análisis de línea de tiempo · Lección 4 de 5
Pivoteo y corroboración entre fuentes
13 min de lectura
El módulo 2 enseñó cada artefacto de Windows por separado; la lección 3.3 los integró en una superlínea de tiempo. Esta lección aborda el método que convierte filas en hallazgos: pivotar mediante identificadores compartidos, examinar eventos cercanos a un punto de referencia, corroborar cada hecho clave en una fuente independiente y exponer los conflictos y el grado de confianza con honestidad, que es lo que evalúan las preguntas del examen CFX sobre correlación.
Puntos de pivoteo
Un punto de pivoteo es un valor que aparece en más de un artefacto y, por tanto, los vincula.
| Punto de pivoteo | Dónde aparece (ejemplos) | Precaución |
|---|---|---|
| Nombre o ruta de archivo | LNK, Jump Lists, MRU, Shellbags, archivos referenciados en Prefetch, $MFT, $UsnJrnl, historial del navegador | Los nombres no son únicos; las letras de unidad se reutilizan |
| Entrada MFT y número de secuencia | $MFT, registros de $UsnJrnl y $LogFile, elementos del shell de LNK con destinos NTFS | Los números de entrada se reutilizan tras la eliminación; el número de secuencia distingue los distintos usos |
| Número de serie del volumen (VSN) | VBR, LinkInfo de LNK, Jump Lists, información de volumen de Prefetch, Vbr0 de Partition/Diagnostic 1006 | Cambia cuando se reformatea el volumen |
| Número de serie del dispositivo | USBSTOR, USB, datos de MountedDevices, setupapi.dev.log, 1006, eventos de Kernel-PnP | Windows genera los ID cuyo segundo carácter es & |
| SID de usuario | ProfileList, clave BAM, UserId de SRUM, registros de eventos, $Recycle.Bin\<SID> | Un subárbol del Registro por usuario también identifica al usuario mediante el perfil del que procede |
| ID de inicio de sesión | Security 4624, 4672, 4688, 4634 | Es único solo hasta el siguiente reinicio |
| Nombre o ruta del proceso | Prefetch, Amcache, BAM, Shimcache, AppId de SRUM, 4688 | Un nombre no es una identidad; combínelo con la ruta y un hash |
| SHA-1 o SHA-256 | FileId de Amcache (SHA-1), archivos en imágenes, inteligencia de amenazas | Para archivos de más de 31.457.280 bytes, Amcache calcula el hash solo de los primeros 31.457.280 bytes |
| Dirección IP | IpAddress de 4624, eventos RDP, registros de firewall y proxy | NAT y DHCP cambian quién está detrás de una dirección |
| Intervalo de tiempo | Todas las fuentes | La resolución, la zona horaria y el retraso de escritura varían según la fuente |
La técnica de pivoteo
- Fijar un punto de referencia. Comience por algo conocido y específico: una alerta, un archivo mencionado en el caso, un dispositivo, una cuenta.
- Extraer todos los identificadores que contiene el punto de referencia: números de serie, GUID, rutas, SID, hashes, horas.
- Buscar cada identificador en todas las fuentes, no solo donde espera encontrarlo: la superlínea de tiempo, los CSV procesados y una búsqueda por palabras clave en las imágenes sin procesar.
- Añadir cada nuevo identificador a una lista de trabajo, anotando de dónde procede.
- Repetir hasta que las nuevas búsquedas no devuelvan nada relevante para la pregunta.
La lista de trabajo es su registro de auditoría. Dé preferencia a los identificadores específicos (un número de serie, un VSN, un hash) frente a los genéricos, como report.docx o la letra E:.
Proximidad temporal
Cuando se agoten los identificadores, pivote sobre el tiempo: enumere todo lo que haya en un intervalo alrededor del punto de referencia, por ejemplo, ±10 minutos alrededor de la última llegada de un dispositivo. Ajuste el intervalo a la fuente con menor resolución temporal: segundos para las fuentes FILETIME, 2 segundos para las horas de escritura FAT y aproximadamente una hora para SRUM.
La proximidad sugiere una relación, pero no la demuestra: Windows escribe muchos eventos en segundo plano cada minuto, y cualquiera puede quedar junto al punto de referencia por casualidad. Un programa que se ejecutó dos minutos después de una conexión USB es una pista; se convierte en un hallazgo cuando un identificador compartido vincula ambos, como una referencia de Prefetch a una ruta del volumen con ese VSN. Informe de la proximidad como proximidad ("6 minutos después de la llegada del dispositivo"), nunca como causa.
Corroboración e independencia
Un hallazgo es sólido cuando dos fuentes independientes lo registran. Independiente significa que mecanismos diferentes escriben registros diferentes, de modo que un error, una ausencia de datos o una manipulación en una fuente no afecte por igual a la otra. Dos analizadores de un mismo archivo son una sola fuente comprobada dos veces: eso valida su herramienta, no el evento.
| Hallazgo | Fuente 1 | Fuente 2 | Independencia |
|---|---|---|---|
| Archivo abierto | Último acceso de DestList de una Jump List | Hora de modificación de $SI de un LNK de elementos recientes | Parcial: archivos separados escritos por el shell para un mismo registro de elemento reciente |
| Programa ejecutado | Hora de última ejecución de Prefetch | Valor BAM bajo el SID del usuario | Buena: el mecanismo de precarga y el controlador BAM escriben en almacenes diferentes |
| Última conexión de USB | Última llegada de USBSTOR 0066 | Partition/Diagnostic 1006 | Buena: propiedad de dispositivo en el Registro frente a entrada del registro de eventos |
| Primera conexión de USB | USBSTOR 0065 | Inicio de sección de setupapi.dev.log | Buena: FILETIME del Registro (UTC) frente a registro de texto (hora local) |
| Datos enviados | BytesSent de SRUM | Historial del navegador, registro de proxy o de auditoría en la nube | Buena: contador de recursos frente a registro de aplicación o de red |
El primer par es el más débil: una sola acción de limpieza o configuración de privacidad elimina ambos, por lo que debe añadir un tercer mecanismo, como la lista MRU de la propia aplicación. Dos valores concuerdan cuando su diferencia es inferior a la resolución de la fuente menos precisa más su retraso de escritura conocido.
Cuando las fuentes discrepan
Los conflictos suelen deberse a aspectos mecánicos:
- Resolución. Una hora de escritura DOS tiene incrementos de 2 segundos; una fila de SRUM abarca un intervalo de aproximadamente una hora. Una hora DOS y un FILETIME con una diferencia inferior a 2 segundos no constituyen un conflicto.
- Hora local frente a UTC. Las horas DOS de FAT y setupapi.dev.log usan la hora local; los FILETIME del Registro, EVTX, LNK y Prefetch usan UTC. Una diferencia exactamente igual al desfase de la zona horaria es la señal característica.
- Retrasos de escritura. Shimcache se escribe al apagar el sistema, SRUM se vuelca aproximadamente una vez por hora, un archivo Prefetch se escribe unos 10 segundos después de que se inicie el programa y el LastWrite de una clave refleja su último cambio, que puede ser posterior al evento que le interesa.
- Cambios de reloj. Un ajuste del reloj del sistema (evento 1 de Kernel-General, Security 4616) desplaza todo lo escrito antes de él. La lección 3.5 muestra cómo medirlo y corregirlo.
Exponga abiertamente cada conflicto: ambos valores y sus fuentes, la explicación y en qué valor se basa y por qué. Nunca descarte un valor que no encaje; si no puede explicarlo, indíquelo y reduzca su grado de confianza.
Cómo expresar el grado de confianza
ISO/IEC 27042 ofrece orientación sobre el análisis y la interpretación de evidencia digital. En la práctica: separe lo que registra un artefacto de lo que usted infiere, considere alternativas y elija palabras que se ajusten al respaldo disponible.
| Expresión | Cuándo usarla | Ejemplo |
|---|---|---|
| "registra" | Al informar de lo que contiene una fuente | "La entrada de DestList registra un último acceso a las 13:54:29Z." |
| "es compatible con" | La evidencia encaja, pero siguen existiendo alternativas razonables | "La fila de SRUM es compatible con una carga del archivo comprimido." |
| "indica" | Hay un respaldo sólido de una o más fuentes; las alternativas son poco probables, pero no están descartadas | "El archivo LNK y la Jump List indican que el archivo se abrió desde el volumen USB." |
| "establece" | Las fuentes independientes concuerdan y se comprobaron y descartaron las alternativas | "El VSN en 1006 y en la imagen establece que el volumen del que se obtuvo la imagen estaba en ese dispositivo." |
Los artefactos registran cuentas y procesos, no personas: escriba "la cuenta de ana", no "ana", a menos que otra evidencia sitúe a la persona frente al teclado.
Línea de tiempo del caso frente a superlínea de tiempo
La superlínea de tiempo (lección 3.3) contiene millones de filas. La línea de tiempo del caso enumera solo los eventos que responden a la pregunta, normalmente decenas de filas, cada una con la hora UTC con la precisión de la fuente, el evento expresado en lenguaje claro, la fuente (archivo más registro, desplazamiento o ruta de clave), la fuente de corroboración y cualquier nota sobre conflictos. Incluya los eventos que debiliten su hipótesis. Se busca en la superlínea de tiempo; se presenta la línea de tiempo del caso.
Ejemplo resuelto: robo de datos el 2026-03-14
Un archivo de presupuesto ha aparecido fuera de la empresa. El paquete contiene una recopilación de triaje de Windows 11 (ActiveTimeBias 180, por lo que UTC = hora local + 3 h) y una imagen E01 de una unidad USB FAT32. El punto de referencia es el número de serie de la unidad, 4C530001230411109384.
| Paso | Fuente | Identificador utilizado | Nuevo identificador encontrado | Hora (UTC) |
|---|---|---|---|---|
| 1 | SYSTEM Enum\USBSTOR\...\4C530001230411109384&0, propiedad 0066 | Número de serie del dispositivo (punto de referencia) | Hora de última llegada | 2026-03-14T13:52:05Z |
| 2 | Partition/Diagnostic 1006 | Número de serie del dispositivo | Bytes de Vbr0 en 0x43 4D 3C 2B 1A: VSN 1A2B-3C4D | 2026-03-14T13:52:06Z |
| 3 | SYSTEM MountedDevices | Número de serie del dispositivo dentro de la ruta del dispositivo | GUID de volumen {a9d9c980-…}, letra E: | ninguna |
| 4 | C:\Users\ana\NTUSER.DAT MountPoints2; ProfileList | GUID de volumen | Cuenta ana, SID S-1-5-21-…-1001 | LastWrite de la clave 2026-03-14T13:52:09Z |
| 5 | Recent\budget-q3.xlsx.lnk de ana y Jump List de Excel | VSN 1A2B3C4D, tipo de unidad extraíble | Ruta E:\Clients\budget-q3.xlsx | DestList 2026-03-14T13:54:29Z; modificación de LNK 13:54:30Z |
| 6 | Prefetch 7ZG.EXE-<hash>.pf; BAM bajo …-1001 | Nombre BUDGET-Q3.XLSX; VSN en la información de volumen | Programa 7zG.exe; los archivos referenciados incluyen \CLIENTS\Q3-FILES.7Z | Última ejecución 2026-03-14T13:58:41Z; BAM 13:58:49Z |
| 7 | Imagen USB, entrada de directorio FAT32 | Nombre q3-files.7z; VSN 1A2B-3C4D | Tamaño 64.108.233 bytes | Hora de escritura 2026-03-14T13:59:12Z (convertida) |
| 8 | Uso de datos de red de SRUM | SID …-1001; intervalo 13:52Z–14:31Z | AppId chrome.exe; BytesSent 66.912.404 | Intervalo de 13:31:09Z a 14:31:09Z |
| 9 | History de Chrome de ana, tablas visits y urls | Proceso chrome.exe; intervalo | URL https://transfer.example.com/upload | 2026-03-14T14:09:47Z |
Los pasos 1 y 2 concuerdan con una diferencia de un segundo, al igual que las horas de DestList y LNK en el paso 5; las horas de Prefetch y BAM en el paso 6 difieren en 8 segundos, dentro de la variación normal.
El conflicto del paso 7. La palabra de la hora de escritura en el desplazamiento 0x16 de la entrada de directorio es 66 57, que se lee como 0x5766, y la palabra de la fecha en 0x18 es 6E 5C, que se lee como 0x5C6E. Fecha: 0x5C6E >> 9 = 46, por lo que 1980 + 46 = 2026; (0x5C6E >> 5) & 0xF = 3; 0x5C6E & 0x1F = 14. Hora: 0x5766 >> 11 = 10; (0x5766 >> 5) & 0x3F = 59; (0x5766 & 0x1F) × 2 = 6 × 2 = 12 s. Una herramienta que etiqueta este valor como UTC muestra 2026-03-14T10:59:12Z, casi tres horas antes de la última llegada de la unidad y en contradicción con el paso 6. FAT almacena la hora local, por lo que la corrección que falta es el desfase: 10:59:12 + 3 h = 13:59:12Z, 31 segundos después del inicio de 7zG.exe. La línea de tiempo del caso conserva ambos valores con esta explicación.
Paso 8. BytesSent supera el tamaño del archivo comprimido en 66.912.404 − 64.108.233 = 2.804.171 bytes (aproximadamente un 4,4 %), algo plausible por la sobrecarga y otras actividades de navegación. SRUM no puede decir qué archivo se envió ni cuándo.
Paso 9. visit_time de Chrome cuenta microsegundos desde 1601 (lección 3.1). El 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. Al restar 1.773.446.400 (2026-03-14T00:00:00Z) quedan 50.987 s = 14 h 09 min 47 s, por lo que resulta 2026-03-14T14:09:47.412Z.
Hallazgo expresado. "El dispositivo con número de serie 4C530001230411109384 se conectó por última vez a las 2026-03-14T13:52:05Z (USBSTOR, corroborado por Partition/Diagnostic 1006). Su volumen, VSN 1A2B-3C4D, se montó en la sesión de la cuenta ana (SID S-1-5-21-…-1001). El archivo LNK y la Jump List indican que esta cuenta abrió E:\Clients\budget-q3.xlsx desde ese volumen a las 13:54:29Z. Prefetch y BAM establecen que 7zG.exe se ejecutó a las 13:58:41Z, bajo esa cuenta según BAM; q3-files.7z en el volumen del que se obtuvo la imagen se escribió por última vez a las 13:59:12Z. SRUM y el historial del navegador son compatibles con una carga del archivo comprimido mediante chrome.exe entre las 14:09:47Z y las 14:31:09Z, pero no identifican el archivo enviado." Prefetch muestra que 7zG.exe hizo referencia a ambos archivos; solo el contenido del archivo comprimido, enumerado a partir de la imagen, muestra que budget-q3.xlsx está dentro de q3-files.7z.
Responder con precisión a las tareas del examen
- Distinga el valor exacto solicitado: un número de serie sin
&0no es el ID de instancia, una ruta sin la letra de unidad está incompleta y un SID o hash truncado es un valor diferente. - Proporcione las horas en ISO 8601 UTC con
Z, como2026-03-14T13:52:05Z, truncadas a segundos salvo que se solicite mayor precisión. - Lea el verbo: "se conectó por primera vez" (
0065, setupapi) no es "se conectó por última vez" (0066); "abierto", "ejecutado" y "copiado" apuntan a artefactos diferentes. - Compruebe el valor con un segundo artefacto antes de enviar la respuesta; una diferencia exactamente igual al desfase significa que hay un valor sin convertir.
Enfoque del examen: Espere preguntas basadas en escenarios que requieran dos o tres saltos, como pasar del número de serie de un dispositivo a un SID de usuario, o de un archivo de la unidad USB al programa que interactuó con él. Las preguntas pueden evaluar qué fuentes se consideran independientes, cómo explicar una hora FAT que difiere de un FILETIME exactamente en el desfase y qué expresión respalda un hallazgo.
Puntos clave
- Los puntos de pivoteo son valores compartidos entre artefactos, como rutas, VSN, números de serie de dispositivos, SID, hashes e intervalos de tiempo.
- Pivote buscando los identificadores del punto de referencia en todas las fuentes y repitiendo el proceso; la proximidad temporal aporta pistas, y un identificador compartido convierte una pista en un hallazgo.
- La corroboración independiente implica mecanismos diferentes, no analizadores diferentes del mismo archivo; explique los conflictos por la resolución, la zona horaria, el retraso de escritura o un cambio de reloj.
- Ajuste la expresión al respaldo disponible ("registra", "es compatible con", "indica", "establece") y presente una línea de tiempo del caso seleccionada cuidadosamente, no la superlínea de tiempo.