¿Registro de Windows? ¡Prepara la cafetera! Uso de #RegRipper

Publicada en Publicada en Análisis forense

Hola secuaces:

Serviros el ☕️primer café☕️, que esto va a ser un poco largo, y aún no sé ni cómo enfocar este artículo 😅

¿Por qué me es complicado empezar este artículo? Porque quiero hablaros del Registro de Windows. De cómo usar algunas herramientas para hacer un Análisis del Registro de Windows.

Realizar un análisis del Registro de Windows es un paso imprescidible y fundamental en cualquier caso. No en vano muchas herramientas forenses basan su funcionamiento en la extracción de datos de ciertas claves del Registro. De él se puede extraer información única que no es posible encontrar en otro sitio.

Y esto no es fácil, a menos que se conozca a la perfección el mismo. De hecho, no voy a realizar ningún análisis de ningún caso en particular. Sólo me limitaré a explicar cómo usar lo que vamos a ver, y ver algún ejemplo de qué tipo de información se puede extraer.

Pienso que es muy complicado entender su funcionamiento. Que hace falta mucho tiempo de estudio para comprenderlo.

Quizás, debiera empezar definiendo qué es el Registro de Windows.

Y qué mejor forma de hacerlo que desde el propio sitio de Microsoft. En una página que lleva por título "Windows registry information for advanced users", y que nos hace referencia al "Microsoft® Computer Dictionary 5th ed. Edition", que nos dice, de forma literal

"Una base de datos jerárquica central utilizada en Microsoft Windows 98, Windows CE, Windows NT y Windows 2000 con el fin de almacenar información necesaria para configurar el sistema para uno o varios usuarios, aplicaciones y dispositivos de hardware.

El Registro contiene información que Windows utiliza como referencia continuamente, por ejemplo los perfiles de los usuarios, las aplicaciones instaladas en el equipo y los tipos de documentos que cada aplicación puede crear, las configuraciones de las hojas de propiedades para carpetas y los iconos de aplicaciones, los elementos de hardware que hay en el sistema y los puertos que se están utilizando.

El Registro reemplaza a la mayoría de los archivos .ini basados en texto que se utilizan en los archivos de configuración de Windows 3.x y MS-DOS, como Autoexec.bat y Config.sys. Aunque el Registro es común a varios sistemas operativos Windows, existen algunas diferencias entre ellos."

El Registro de Windows, a pesar de tratarse de una base de datos jerárquica, se divide en unos ficheros, llamados 'hive', (Colmenas). Algunos 'hive' son volátiles y no se almacenan en el disco y no todos se cargan a la vez.

Como curiosidad, ¿Por qué 'hive'? Porque uno de los desarrolladores originales de Windows NT odiaba a las abejas. Así que el desarrollador, que era responsable del registro, metió tantas referencias de abejas como pudo.

Y, ¿Qué es un 'hive'? Esta vez, nos dirigimos a otra página del sitio de Microsoft, que lleva por título "Registry Hives", y que nos dice que

"Es un grupo lógico de claves, subclaves y valores en el registro que tiene un conjunto de archivos de respaldo que contienen copias de seguridad de sus datos.

Cada vez que un nuevo usuario inicia sesión en un equipo, se crea una nuevo 'hive' para ese usuario con un archivo separado para el perfil de usuario.

...

El 'hive' de un usuario contiene información de registro específica relacionada con la configuración de la aplicación, el escritorio, el entorno, las conexiones de red e impresoras del usuario."

Con todo esto ya podéis haceros una idea de la cantidad de información que maneja el Registro de Windows.

Siempre he pensado que el Registro es el corazón de Windows. Cualquier manipulación incorrecta que se haga de él afecta al Sistema de una forma crítica. Incluso me atrevería a decir que, casi cualquier acción que ocurra en el Sistema, queda grabada en él.

¿Qué tipo de archivos de Registro se encuentran en un Sistema Windows? ¿Cuál es su ubicación?

C:\Documents and Setting\User Profile\NTUSER.DAT o C: \Users\User Profile\NTUSER.DAT

C:\Windows\System32\config\DEFAULT

C:\Windows\System32\config\SAM

C:\Windows\System32\config\SECURITY

C:\Windows\System32\config\SOFTWARE

C:\Windows\System32\config\SYSTEM

Y ¿Cuáles son los Registros volátiles?

HKEY_LOCAL_MACHINE\Hardware

HKEY_LOCAL_MACHINE\System\Clone

¿Son estos los que hay en un Sistema Windows? ¿Hay más? Sí, existen más. Desde las versiones de Windows Vista se han incluido dos Registros más.

C:\Windows\System32\config\COMPONENTS

C:\Users\username\AppData\Local\Microsoft\Windows\UsrClass.dat

¿Ya está? No. Desde Windows 8 se ha incluido otras cuatro más.

C:\Windows\AppCompat\Programs\Amcache.hve

C:\Windows\System32\config\ELAM

C:\Windows\System32\config\BBI

C:\Windows\System32\config\DRIVERS

Y, desde luego, es muy recomendable conocer su estructura. Así que no hablaré más del Registro. Tenéis disponible un montón de información sobre ello en la Red, comenzando por su sitio oficial en Microsoft, "About the Registry".

También existe información bastante interesante sobre el Registro de Windows en la ForensicWiki.

Visto, muy, muy, muy superficialmente, qué es el Registro de Windows, vamos a ver cómo podemos analizarlo, cómo podemos parsear, hacer legible, su información.

Para ello, vamos a usar una herramienta por excelencia en este campo, como es RegRipper.

RegRipper es una aplicación forense, de código abierto, desarrollada por Harlan Carvey. Está escrito en Perl, y es una herramienta que sirve para la extracción de datos del Registro de Windows. Tiene, también, disponible un ejecutable independiente de Windows, "compilado", de la secuencia de comandos utilizando 'Perl2Exe'. Así que es posible utilizarla tanto en entornos Linux como en entornos Windows. No requiere instalación, lo que quiere decir que es portable.

¿Quién es Harlan Carvey? Cuando hablamos de Harlan Carvey, hablamos de uno de los mayores especialistas en el Registro de Windows, (que yo conozca y amén de otros de los que espero poder hablar más adelante). No en vano es, entre otras cosas, autor del Blog Windows Incident Response, (un Blog de lectura obligada si te interesa esta materia), dedicado a la ingente información en materia DFIR sobre Sistemas Windows. Es también autor de numerosos libros sobre esta materia, de los que voy a destacar "Windows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry", "Windows Forensic Analysis DVD Toolkit", y "Digital Forensics with Open Source Tools", escrito junto a Cory Altheide.

Nuestro amigo @fpalenzuela, del Blog Aprendiz de Sysadmin ya nos introdujo en el uso de RegRipper en un par de entradas. Voy a intentar tratarlo con otro enfoque.

Particularmente, suelo usarla en mi Laboratorio Linux, pero en esta ocasión vamos a usarlo sobre un Laboratorio Windows.

Tras montar la imagen del Sistema que queremos analizar, siempre como sólo lectura, o tras extraer los ficheros del Registro y copiarlos a nuestro laboratorio... Comenzamos.

Como siempre, y antes de nada, lo primero que tenemos que hacer es descargar la herramienta RegRipper desde su sitio oficial en Github.

Tras descargarla y descomprimirla, se nos presentan estos ficheros.

La forma 'tradicional' de usarlo es a través del ejecutable 'rr.exe', que nos muestra esta pantalla después de su apertura.

Una vez abierto, tan sólo tenemos que indicarle, usando los botones de 'Browse', el fichero del Registro que queremos parsear y el nombre del reporte que queremos generar. Seleccionamos también, haciendo uso del desplegable, el perfil que queremos cargar, (un perfil para cada fichero del Registro), y le damos al botón 'Rip It'.

Puede trabajar sobre un total de 346 plugins en total, a día de hoy.

☕️Segundo café☕️

Una vez que ha terminado podremos ver, al principio de su cuadro de texto, la ruta donde se ha generado el fichero '.log' y el perfil que se ha usado para realizar la extracción de datos.

También podremos ver, al final del cuadro de texto, si han existido plugins con errores.

Si nos dirigimos a la ruta que le hemos indicado anteriormente para que nos genere los ficheros de reporte, observaremos que se han generado dos archivos.

Uno es el '.log' y otro es el '.txt'.

El fichero '.log' contiene información acerca de la ejecución del programa. Y es muy interesante su lectura porque podremos ver qué plugins han arrojado algún tipo de error.

El fichero '.txt' contiene toda la información que ha sido extraída del fichero del Registro de Windows que hemos parseado. Toda. En este ejemplo ha usado 110 plugins que pueden trabajar sobre el fichero del Registro 'SOFTWARE'.

Podemos ver que, en este caso, tiene 14876 líneas. Y el tamaño del fichero generado puede ser de menor o mayor que en este ejemplo, porque depende del uso que haya tenido la máquina, entre otras cosas.

Todos sabemos que

Las herramientas NO realizan el análisis por sí mismas. Las herramientas ayudan, pero el trabajo lo hace, de momento, el analista.

Y, vista la ingente cantidad de información que puede contener un fichero del Registro, puede llevar muchísimo tiempo estudiar este reporte. Más aún si no se busca nada en concreto.

Por esta razón, y para atender a sus necesidades de análisis con una mejor precisión, Harlan Carvey escribió, también, una herramienta llamada 'Plugin Browser', que permite gestionar los plugins que usa RegRipper a través de una interfaz gráfica de usuario. Con esta herramienta se puede crear un perfil, totalmente acorde a nuestras necesidades.

Es de un uso muy intuitivo. Esta herramienta se encuentra disponible en su sitio oficial de Google Code.

Descargamos el fichero 'wfa3e.zip', (Windows Forensic Analysis toolkit 3rd edition), que se trata del material asociado a ese libro.

Procedemos a su descompresión y se nos presentarán estos ficheros, dentro de la carpeta 'ch5\RegRipper'.

Una vez estamos en esa ubicación, procedemos a copiar los ficheros 'pb.exe' y 'p2x588.dll' a la carpeta donde tenemos alojada la versión de RegRipper que hemos descargado antes.

Ejecutamos el fichero 'pb.exe' y se nos presenta esta ventana.

Y, como he dicho anteriormente, tiene un uso muy sencillo. Basta con usar el botón de 'Browse' para que se abra una ventana donde elegiremos la carpeta que contiene los plugins de RegRipper. Tras seleccionarla, usamos el botón 'Aceptar'.

Se cargarán en el cuadro de texto de la izquierda todos los plugins que se encuentran en esa carpeta. Si seleccionamos uno, se nos mostrará información relativa a ese plugin, conteniendo el nombre, la versión, el 'hive' sobre el que es capaz de trabajar y una breve descripción de qué es lo que hace.

Si nos desplazamos a la pestaña 'Plugin File', podemos seleccionar cuantos queramos y, haciendo uso del botón '>>', se agregan al cuadro de texto de la derecha. Estos serán los plugins que usará nuestro perfil personalizado, que podemos guardar con el botón 'Save'.

Asignándole el nombre que queramos.

Podremos ver el fichero dentro de la carpeta de plugins de RegRipper.

'Plugin Browser' también permite la edición de estos ficheros de perfiles. Para ello, usamos el botón 'Open'

Para abrir el fichero de perfil que nos interese editar y, tras abrirlo

Se nos presentará su información en el cuadro de texto de la derecha.

Una vez personalizado el perfil, con los plugins que nos interese usar, podemos volver a abrir 'rr.exe' y, en esta ocasión, en el desplegable, podremos verlo y seleccionarlo. Y tras ejecutarlo con 'Rip It'

☕️Tercer café☕️

Podremos ver, al igual que antes, la ruta donde se generarán los reportes con el perfil empleado

Y si se han producido errores.

Si abrimos el reporte del '.log' generado, podremos ver sobre qué ficheros del Registro se ha usado RegRipper, el perfil empleado y los plugins usados.

De esta forma se obtiene un resultado más preciso, que depende siempre del caso que tengamos que analizar.

En este ejemplo podemos ver cómo se han reducido drásticamente el número de líneas del reporte '.txt' generado.

Hemos pasado de 14876 líneas a 4558.

Y, ¿Qué información podemos obtener? Por ejemplo, y para empezar, el Sistema Operativo con la fecha de instalación.

O información de las redes a las que ha estado conectado el Sistema, en la que se incluye, además del nombre de la red y la fecha de última conexión, la dirección MAC del punto de acceso, que podemos geolocalizar en un mapa usando, por ejemplo, el servicio online de https://wigle.net/.

Podemos ver también el software que se encuentra instalado en el Sistema

O la información de la configuración de UAC, (User Account Control), que la considero muy importante.

Bien. Hemos usado RegRipper con un perfil completo y con un perfil personalizado, para obtener un resultado más preciso en nuestro análisis. Pero, pongamos por caso que queremos usar sólo un plugin. Si tenemos que generar un perfil para usar sólo un plugin...

RegRipper permite usar sólo un plugin para parsear la información del Registro.

Para ello nos dirigimos primeramente al sitio de ActiveState porque vamos a instalar ActivePerl.

Descargamos la versión para Windows

Y procedemos a su instalación, igual que cualquier otro software.

Ahora, ejecutamos el Símbolo del sistema y escribimos

perl -h

Así de fácil hemos instalado Perl en nuestro Sistema Windows.

Ahora nos ubicamos en el directorio de RegRipper

E invocamos la ayuda de RegRipper, mediante

perl rip.pl -h

Como podemos ver, su uso es muy sencillo incluso por línea de comandos. Se invoca el programa, se le especifica el Registro que se quiere parsear y se le indica el perfil o un plugin en particular. Se pueden exportar los resultados a un fichero.

Podemos ver todos los plugins disponibles dentro de su correspondiente carpeta

Y podemos listarlos mediante

perl rip.pl -l | more

Para verlos de una manera un poco más detallada.

A día de hoy, están disponibles 346 plugins.

Y también podemos exportar la lista de plugins disponibles a un fichero '.csv' para poder tenerlo como referencia, mediante

perl rip.pl -l -c >> PluginsRegRipper.csv

Si abrimos un plugin para ver su contenido, podremos observar que hay algunos que no contienen información sobre qué es lo que hace

Y otros que sí la tienen, muy bien detallada.

Bueno, que me estoy yendo por las ramas. ¿Cómo funciona desde el Símbolo del Sistema? Por ejemplo, así

perl rip.pl -r C:\Evidences\Acer\UsrClass.dat -p shellbags >> C:\Evidences\Reports\Acer\RegRipper_UsrClass_Shellbags.txt

☕️Cuarto café☕️

¿Qué hemos obtenido usando el plugin 'Shellbags'? Hemos extraído de las claves del Registro detalles sobre las carpetas que se han visto, con sus marcas de tiempo correspondientes.

Esta forma de trabajar no está nada mal, a través de la línea de comandos. Es muy flexible. De hecho, es la que suelo usar en mi Laboratorio linux.

Pero aún podemos amoldar la herramienta a nuestras necesidades.

Para ello, Corey Harrell escribió una herramienta llamada 'Auto_Rip', que nos explica muy bien en su Blog, Journey Into Incident Response, y que la enfocó para usarla con RegRipper, dividido en categorías. 'Auto_Rip' automatiza la ejecución de los plug-ins de RegRipper, de acuerdo a una categoría seleccionada, aumentando la velocidad de la extracción de datos del Registro.

Podemos descargar 'Auto_Rip' desde su sitio oficial en Google Drive.

Tras proceder a su descompresión se nos presentan estos dos ficheros, que copiamos en el mismo directorio donde tengamos alojado RegRipper.

Le pedimos ayuda, a ver qué nos ofrece, mediante

perl auto_rip.pl

Podemos ver los parámetros que ofrece. Es muy sencillo de usar.

Podemos seleccionar uno, o varios, ficheros del Registro e indicarle algunas categorías...

perl auto_rip.pl -s C:\Evidences\Acer -s C:\Evidences\Acer -n C:\Evidences\Acer -u C:\Evidences\Acer -c network,comm,web -r C:\Evidences\Reports\

☕️Quinto café☕️

Y nos generará, primeramente, un fichero '.log' que consultaremos para ver qué claves del registro hemos analizado y qué categorías hemos empleado.

Nos informará debidamente de los errores que se hayan producido.

Podemos extraer, por ejemplo, el nombre del equipo y las tarjetas de red que han sido conectadas al Sistema

O las direcciones web que se han visitado

Datos sobre el perfil del usuario de Outlook

Búsquedas que se hayan hecho dentro de Outlook

Direcciones de email con correos electrónicos que aún no han sido leídos

También podemos ser un poco más valientes y examinar todas las categorías de todos los ficheros del Registro, mediante

perl auto_rip.pl -s C:\Evidences\Acer -a C:\Evidences\Acer -n C:\Evidences\Acer -u C:\Evidences\Acer -c all -r C:\Evidences\Reports\Acer

☕️Sexto café☕️

Una vez que ha finalizado se nos presentará toda la información extraída en una serie de ficheros, divididos por categorías.

Empezando por el fichero 'logfile' que conviene revisar

Y así podemos obtener información sobre la versión del Sistema Operativo analizado

La zona horaria, que es un factor imprescindible en cualquier análisis

La fecha del último apagado

La arquitectura del procesador del Sistema analizado

Información sobre los usuarios configurados en el Sistema

Con su correspondiente pertenencia a los grupos

Dispositivos USB conectados en el equipo, con su correspondiente número de serie y marcas de tiempo

La configuración Prefetch del Sistema

Software que se ejecute al inicio de sesión del usuario

Configuración de los Eventos de Sistema

Las rutas de acceso a las carpetas del explorador de Windows para el usuario actual del equipo

Búsquedas que se hayan realizado en el explorador de Windows

Información sobre los documentos recientes

Histórico de ficheros visitados

Localización de documentos

Documentos PDF, con su ubicación, que han sido abiertos

Hemos visto cómo parsear la información del Registro de Windows usando varias formas, exportando los resultados a un fichero de texto. Un requisito para usar los plugins de Regripper es saber qué plugin trabaja sobre cada fichero del Registro. Por esa razón conviene tener el listado de plugins como referencia. Por otro lado, la mayor parte de los ficheros contendrán información pero habrá otros que no. Vamos a ver otra manera de trabajar con RegRipper que me parece realmente muy interesante.

Se trata de 'RegripperGUI', una herramienta escrita por Phill Moore, autor de los Blogs This Week In 4n6 y ThinkDFIR. El objetivo de 'RegRipperGUI' es, precisamente, ejecutar rápidamente plugins sin tener que buscar con qué 'hives' pueden trabajar, en un entorno gráfico. Es muy sencilla de usar.

Lo descargamos de su sitio oficial en Github

Podemos ver en las primeras líneas del script que es necesario instalar unos requisitos. Como tenemos instalado ActivePerl en nuestro laboratorio, tan sólo tenemos que llamar al Símbolo del sistema y ejecutar

ppm install dmake

ppm install Parse-Win32Registry

ppm install Win32-GUI

Una vez descargado y descomprimido se nos presentan estos dos ficheros. Copiamos el script 'rr2.pl' al directorio donde tenemos alojado Regripper.

Y, para ejecutarlo, basta con escribir en la terminal

perl rr2.pl

Se nos presentará esta ventana

Si usamos el botón 'Registry'

Nos aparecerá una pequeña ventana de navegación donde tendremos que buscar el directorio que contiene los ficheros del Registro que queremos parsear. Analizará todos los Registros que se encuentren en ese directorio.

Y, ahora, tan sólo tendremos que ir haciendo 'clic' con el ratón sobre cada plugin de la lista del cuadro de texto de la izquierda para que aparezca la información extraída.

☕️Séptimo café☕️

En la consola del Sistema aparecerán los plugins que hayamos lanzado

Y nos informará de qué comando está ejecutando con cada uno de ellos y sobre qué fichero del Registro.

También nos permite guardar un fichero de texto con la información extraída, simplemente usando el botón '+', y nos dirá si se ha generado correctamente el informe o no

En la ruta que le hayamos indicado con el botón 'Report'.

Si el plugin usado trabaja sobre varios 'hives', y estos son de de gran tamaño, puede parecer que no se ejecuta, que nos informe nuestro Sistema de que 'No responde'. Lo único que tenemos que hacer es, esperar a que finalice el proceso, no tocar el Sistema. Es decir, ☕️tomar un café☕️

¿Cuántos cafés te has tomado? 😉

Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.

Marcos @_N4rr34n6_

Un comentario en “¿Registro de Windows? ¡Prepara la cafetera! Uso de #RegRipper

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *