[RegistryDate] Conoce la fecha de modificación del registro

Tuesday, December 11, 2012

Incomprensiblemente, Microsoft no cuenta con ningún método gráfico o herramienta nativa para conocer cuándo ha sido modificada una rama del registro. Aunque existe ya un programa de Nirsoft para mostrar este dato, no funciona en línea de comando, ni permite ver los milisegundos. Este es el hueco que cubre RegistryDate.
Hemos creado una herramienta muy sencilla. Simplemente, se especifica en línea de comando la rama que se desea consultar y muestra la fecha de última modificación. Permite también buscar ramas modificadas entre dos fechas. Esto es muy útil para análisis forenses. Por ejemplo, para saber en qué momento se añadió una clave a la rama
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
Se podría hacer una búsqueda del tipo:
RegistryDate.exe HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion 27-11-2012:12.00 27-11-2012:12.14
y buscará todas las ramas que hayan sido modificadas durante ese periodo de tiempo
(entre las 12.00 y y las 12.14 del 27-11-2012).
Como se puede observar, el formato de fechas y el tipo de programa está inspirado en macmatch.exe, una herramienta muy usada en forenses, que permite conocer entre qué fechas se ha creado, accedido o modificado los ficheros.
¿Por qué dos versiones?
El programa se presenta en dos formatos. RegistryDate64.exe, que accederá a las ramas en Windows de 64 bits, y RegistryDate.exe, que funcionará en cualquier sistema (pero no verá las ramas nativas de 64 bits en este tipo de arquitectura). La versión de 64 bits requiere .NET4.
La razón es la siguiente. Actualmente la mayoría de los sistemas operativos Windows 7, tienen (aprovechan) una arquitectura de 64 bits. No así los XP (aunque se lanzó XP de 64 bits, no es muy popular). Todavía existen muchas aplicaciones compiladas para 32 bits para mantener la "compatibilidad hacia atrás". Así que para lidiar con esto, Microsoft "virtualiza" muchas ramas del registro. Por ejemplo, una muy conocida (por ser usada por malware) es:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
En un Windows de 64 bits, aquí escribirán solo las aplicaciones compiladas específicamente con 64 bits. En la imagen, todas las aplicaciones son de 64 bits nativas.
Pero Microsoft "separa" virtualmente las ramas para los programas de 32 bits. Un programa de 32 bits que intente acceder a la rama descrita, en verdad lo hará a esta:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
En la imagen, todas las aplicaciones son de 32 bits.
Pero las aplicaciones de 32 bits (la mayoría del malware y muchos programas), no "verán" esa rama. Si intentan acceder a 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
, serán automáticamente redirigidos a
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
Por esta razón, existe RegistrDate64.exe que, si bien es una aplicación compilada en 32 bits, está especialmente creada para acceder a esas ramas de 64 bits. Por tanto RegistryDate.exe y RegistryDate64.exe pueden devolver datos diferentes aunque parezca que acceden a la misma rama.
En realidad, la primera (si se mira en el editor regedit) devolverá la fecha de
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
y la segunda, de HKEY_LOCAL_MACHINE\SOFTWARE\
\Microsoft\Windows\CurrentVersion\Run
Esperamos que sea útil para los analistas que realicen forenses. Puede ser descargada desde: www.hispasec.com/resources/soft/RegistryDate.zip
Sergio de los Santos
Twitter: @ssantosv


Subscribe via e-mail for updates!