Cómo recopilar el repositorio WMI para análisis forense
Dónde está el repositorio WMI y cómo copiar OBJECTS.DATA, INDEX.BTR y los archivos MAPPING de forma segura: instantánea, KAPE, Velociraptor o imagen.
En resumen. Tome la carpeta C:\Windows\System32\wbem\Repository completa —OBJECTS.DATA, INDEX.BTR, MAPPING1.MAP, MAPPING2.MAP, MAPPING3.MAP— del mismo instante. En un host en funcionamiento, el servicio WMI bloquea los archivos: léalos desde una instantánea de volumen, con KAPE (target WBEM) o con Velociraptor. Nunca detenga el servicio WMI para copiarlos.
Dónde están los archivos
| Versión de Windows | Carpeta |
|---|---|
| Vista, 7, 8, 10, 11, Server 2008 y posteriores | C:\Windows\System32\wbem\Repository\ |
| XP, Server 2003 | C:\WINDOWS\system32\wbem\Repository\FS\ |
| Tras una actualización in situ | también C:\Windows.old\Windows\System32\wbem\Repository\ |
OBJECTS.DATA basta por sí solo para recuperar suscripciones mediante carving. INDEX.BTR y los archivos MAPPING añaden los espacios de nombres y distinguen los objetos activos de los eliminados, así que recopílelo todo.
Antes de empezar
- No detenga
Winmgmty no ejecutewinmgmt /salvagerepositoryni/resetrepositoryantes de recopilar: reescriben el repositorio y pueden destruir los registros eliminados que busca. - Mantenga los archivos juntos. Un
INDEX.BTRo un archivo MAPPING de otro momento apunta a páginas equivocadas. La vista estructurada se rompe; el carving sigue funcionando. - Recopile pronto. Las suscripciones eliminadas solo sobreviven hasta que WMI reutiliza sus páginas; las instalaciones y actualizaciones de software escriben en el repositorio.
Paso 1: Abrir un PowerShell con privilegios elevados
En el host, inicie Windows PowerShell con Ejecutar como administrador. Un simple copy de OBJECTS.DATA falla con una infracción de uso compartido mientras el servicio WMI está en ejecución.
Paso 2: Crear una instantánea y enlazarla
En la misma ventana, cree una instantánea de C: y expóngala como carpeta. La instantánea congela todos los archivos del repositorio en el mismo instante:
New-Item -ItemType Directory -Force -Path C:\triage | Out-Null
$sc = Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{ Volume = 'C:\' }
$vss = Get-CimInstance -ClassName Win32_ShadowCopy -Filter "ID='$($sc.ShadowID)'"
cmd /c mklink /d C:\triage\vss "$($vss.DeviceObject)\"
Paso 3: Copiar la carpeta Repository
robocopy /B copia en modo de copia de seguridad, de modo que no se omite ningún archivo:
robocopy C:\triage\vss\Windows\System32\wbem\Repository C:\triage\Repository /E /B /R:0 /W:0 /NP /NDL
Paso 4: Eliminar el enlace y la instantánea
cmd /c rmdir C:\triage\vss
$vss | Remove-CimInstance
Ya tiene C:\triage\Repository. Calcule su hash y empaquételo si va a analizarlo en otro equipo (tar.exe viene con Windows 10 1803 y posteriores):
tar -a -c -f C:\triage\wmi-repository.zip -C C:\triage Repository
Los mismos cuatro pasos están disponibles como un único bloque para copiar y pegar en Cómo obtener sus datos, en la página de inicio de WMI Parser.
Con una herramienta de triaje
KAPE tiene un target WBEM que copia ambas carpetas Repository (la actual y la de Windows.old) con acceso directo al disco. Está incluido en los targets compuestos KapeTriage y !SANS_Triage, así que una colección de triaje existente puede contenerlo ya:
kape.exe --tsource C: --tdest C:\triage\kape --target WBEM
Velociraptor: recopile Windows.Triage.Targets (proyecto Velociraptor Triage) con el target WBEM desde la interfaz gráfica, una hunt o un recopilador offline. Desde la línea de comandos, el artefacto integrado Windows.Search.FileFinder puede subir la carpeta:
velociraptor.exe artifacts collect Windows.Search.FileFinder --args SearchFilesGlob=C:\Windows\System32\wbem\Repository\* --args Upload_File=Y --output C:\triage\wmi.zip
Ambas salidas pueden soltarse tal cual en WMI Parser: encuentra el repositorio dentro de la carpeta o del ZIP, incluidas las rutas de Velociraptor codificadas con porcentajes.
Desde una imagen de disco
Monte la imagen en solo lectura (por ejemplo con Arsenal Image Mounter como E:) y copie la carpeta:
robocopy E:\Windows\System32\wbem\Repository C:\triage\Repository /E /R:0 /W:0 /NP /NDL
En Linux o macOS, con la imagen montada en /mnt/win:
mkdir -p ~/triage && cp -a /mnt/win/Windows/System32/wbem/Repository ~/triage/
En FTK Imager, vaya a Windows\System32\wbem, haga clic derecho en Repository y luego en Export Files. Revise también las instantáneas de volumen de la imagen: un repositorio anterior puede conservar una suscripción que se eliminó después.
Un vistazo rápido en vivo (no sustituye a lo anterior)
Para ver lo que está activo en este momento, pregunte al propio WMI:
'__EventFilter','__EventConsumer','__FilterToConsumerBinding' | ForEach-Object { Get-CimInstance -Namespace root/subscription -ClassName $_ } | Format-List *
Esto muestra solo los objetos activos de un único espacio de nombres, nunca los eliminados, y confía en el servicio WMI de un host posiblemente comprometido. Úselo para el triaje y después analice los archivos recopilados. La checklist de investigación enumera lo que conviene revisar a continuación.