Uno de los elementos más importantes en un sistema Windows es el registro, de hecho, es probablemente el más importante. En él se almacena información que utiliza el sistema operativo para garantizar su correcto funcionamiento, además suele ser empleado también por parte de aplicaciones que necesitan acceder a información de todo tipo durante su ejecución. Desde el punto de vista del pentesting/hacking hay algunas subclaves que son importantes y que merece la pena conocer ya que pueden ser vitales en un proceso de post-explotación. En este post se listarán solamente algunas dichas claves y su utilidad.

  1. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS NT\CURRENTVERSION\WINLOGON
    Se trata de una conocida subclave que almacena información sobre el proceso de login para cada usuario en el sistema. Es especialmente útil a la hora de establecer mecanismos de persistencia pero también es posible consultar  las credenciales que se encuentran cacheadas (en el caso de que haya alguna, obviamente).
  2. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM\
    En esta subclave se almacenan valores relacionados con las configuraciones y políticas definidas en el sistema. Puede resultar especialmente interesante saber si el mecanismo UAC se encuentra habilitado en el sistema o no. Para ello se consulta el valor de EnableLUA y en el caso de que sea 0x1 indica que se encuentra activo y se solicita usuario y contraseña para ejecutar el binario con privilegios altos y si es 0x0 significa que no lo está. No obstante, también puede ser 0x2 (Always notify me), 0x3 (igual que 0x1 pero no necesita Secure Desktop), 0x4 (igual que 0x2 pero no necesita Secure Desktop), 0x05 (pide confirmación al administrador para ejecutar). Otros valores que resultan interesantes con el objetivo de entender la política de seguridad definida en el sistema son EnableInstallerDetection, ValidateAdminCodeSignatures y PromptOnSecureDesktop. Como siempre, la documentación de Microsoft ayuda a entender el funcionamiento de estas y otras claves del registro: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-gpsb/958053ae-5397-4f96-977f-b7700ee461ec
  3. HKLM\SYSTEM\CURRENTCONTROLSET\SERVICES
    En esta subclave se almacena información sobre servicios que se encuentran registrados en el sistema. La lista de subclaves y valores que cuelgan de esta puede es bastante extensa, por ese motivo conviene filtrar por aquellos elementos sensibles, como por ejemplo los servicios cuyas subclaves pueden ser manipuladas directamente, lo que permitiría hacer cosas como modificar el binario que ejecutan (ImagePath). Por ejemplo, el siguiente comando intenta guardar cada subclave en un fichero y a continuación intenta restaurar dicho fichero. Si la operación se lleva a cabo sin errores de permisos en alguna de dichas subclaves, indica que para esas subclaves concretamente se podrá manipular su configuración.
    for /f %a in (‘reg query hklm\system\currentcontrolset\services’) do del %temp%\reg.hiv 2>nul & reg save %a %temp%\reg.hiv 2>nul && reg restore %a %temp%\reg.hiv 2>nul && echo La subclave %a se puede manipular
  4. HKEY_LOCAL_MACHINE\SOFTWARE
    En esta subclave queda registro de los programas instalados en el sistema y una de las actividades típicas en post-explotación es la de verificar los permisos sobre los directorios en donde se encuentran los binarios o librerías DLL con el objetivo de o bien, sustituir un binario legitimo por otro malicioso o sustituir alguna DLL, lo que también se conoce como “DLL Hijaking”.  Una forma rápida y cómoda de hacer esta consulta se encuentra en el comando icacls

  5. HKCU\SOFTWARE\MICROSOFT\TERMINAL SERVER CLIENT\SERVERS
    Se trata de una clave en la que se pueden consultar las conexiones RDP que se han guardado previamente. Esta información también puede quedar almacenada en HKEY_USERS\<SID>\Software\Microsoft\Terminal Server Client\Servers\  evidentemente es algo que se debe consultar en post-explotación ya que puede ser interesante de cara a comprometer otros sistemas en el entorno de red u obtener información sensible.
  6. HKCU\SOFTWARE\SIMONTATHAM\PUTTY
    Si en el sistema comprometido se encuentra instalado PuTTY es una buena idea explorar algunas de las subclaves que este software suele instalar en el registro. Concretamente es conveniente ver HKCU\Software\SimonTatham\PuTTY\Sessions y HKCU\Software\SimonTatham\PuTTY\SshHostKeys para verificar las conexiones que se han establecido anteriormente y a lo mejor, usuarios y contraseñas/claves que se han utilizado para el proceso de autenticación.
  7. HKCU\Software\OpenSSH\Agent
    En Windows 10 ya es posible tener un servidor OpenSSH que se encontrará integrado en el sistema operativo como cualquier otro servicio y que será útil para acceder de forma remota via SSH, esto es posible gracias a las “Windows Capabilities” de “OpenSSH Server” y “OpenSSH Client”. Del mismo modo que ocurre en sistemas Linux, en sistemas Windows se almacena información sobre dicho servicio y las conexiones que se han establecido anteriormente y que puede ser sensible, solamente que en el caso de Linux dicha información queda guardada en <USER>/.ssh y en el caso de Windows queda en esta subclave del registro. Si se cuenta con privilegios sobre el sistema se puede acceder a “HKLM” en lugar de “HKCU” en donde posiblemente se podrá acceder a más información almacenada.
  8. HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA
    Desde la versión 8.1 de Windows se han implementado algunas mejoras que impiden que un atacante pueda leer información sensible del LSASS o incluso inyectar código. En esta subclave se encuentran algunos valores interesantes de cara a proteger el LSASS principalmente diseñados para evitar que cualquier proceso malicioso o no confiable pueda leer valores sensibles que se encuentran almacenados en dicho proceso, como pueden ser credenciales cacheadas. En este sentido hay dos que resultan especialmente interesantes: RunAsPPL y LsaCfgFlags. La primera habilita la protección LSA como proceso protegido en un único equipo, si se desea hacerlo a nivel de directiva de grupo se debe abrir la consola GPMC. La segunda es una característica introducida en Windows 10 que se encarga de proteger las credenciales en la máquina local e imposibilitar la aplicación de técnicas PTH (Pass The Hash).

  9. HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\SECURITYPROVIDERS\WDIGEST
    WDigest es un protocolo que ha estado presente en Windows desde hace más de una década y ha sido utilizado para realizar el proceso de autenticación de usuarios vía HTTP, almacenando en texto plano las credenciales de los usuarios en el LSASS (Local Security Authority Subsystem Service). Esta “característica” ha sido explotada durante años con herramientas como Mimikatz o Lazagne aunque en versiones recientes de Windows (a partir de Windows 8.1) se trata de un comportamiento que viene desactivado por defecto, es decir, que las credenciales ya no se guardan en texto plano en en el LSASS. No obstante, la subclave indicada en este punto tiene un par de valores que permiten activar o desactivar esta característica. Si tienen el valor 0x0 indicará que no se almacenará dicha información sensible en el LSASS, por lo tanto en post-explotación se puede editar estas claves (con los privilegios adecuados) y después de reiniciar el sistema se activará nuevamente esta característica.
  10. HKCU\SOFTWARE\POLICIES\MICROSOFT\WINDOWS\INSTALLER
    En esta clave se encuentra un valor llamado AlwaysInstallElevated que resulta interesante para la elevación de privilegios, ya que cuando se encuentra activado (valor 0x01) indica que cualquier usuario sin importar sus privilegios en el sistema, puede ejecutar binarios msi como NT AUTHORITY\SYSTEM. Por lo tanto, si al consultar este valor resulta que se encuentra activo, sería posible crear un binario msi malicioso y a continuación, ejecutarlo en dicho sistema sabiendo que las instrucciones de ese binario se lanzarán con privilegios de administrador.

Como se puede ver en este corto listado de subclaves, la importancia que tiene el registro de Windows es evidente y no solamente para llevar a cabo procesos de post-explotación del sistema sino también para gestionar algunas de sus características vitales. No obstante, hay que saber qué tocar ya que editar algunos valores del registro pueden hacer que el sistema deje de funcionar correctamente. Aquí se han listado solamente 10 subclaves que son importantes o relevantes para post-explotación, pero hay muchas más, así que si conoces alguna otra que merezca la pena incluir, comparte y deja un comentario en este post. 🙂

Un saludo y Happy Hack.

Adastra.