Page cover

📘Otros robos de credenciales en Windows

Existen muchas otras técnicas que podemos utilizar para obtener credenciales en un sistema Windows. Esta sección no cubrirá todos los escenarios posibles, pero analizaremos los más comunes.


Credenciales guardadas de Cmdkey

Listado de credenciales guardadas

El comando cmdkeyarrow-up-right se puede utilizar para crear, enumerar y eliminar nombres de usuario y contraseñas almacenados. Es posible que los usuarios deseen almacenar credenciales para un host específico o utilizarlo para almacenar credenciales para conexiones de servicios de terminal para conectarse a un host remoto mediante Escritorio remoto sin necesidad de ingresar una contraseña. Esto puede ayudarnos a movernos lateralmente a otro sistema con un usuario diferente o a escalar privilegios en el host actual para aprovechar las credenciales almacenadas para otro usuario.

C:\htb> cmdkey /list

    Target: LegacyGeneric:target=TERMSRV/SQL01
    Type: Generic
    User: inlanefreight\bob

Cuando intentamos conectarnos mediante RDP al host, se utilizarán las credenciales guardadas.

imagen

También podemos intentar reutilizar las credenciales runas para enviarnos un reverse shell como ese usuario, ejecutar un binario o iniciar una consola PowerShell o CMD con un comando como:

Ejecutar comandos como otro usuario


Credenciales del navegador

Recuperar credenciales guardadas de Chrome

Los usuarios suelen almacenar en sus navegadores las credenciales de las aplicaciones que visitan con frecuencia. Podemos utilizar una herramienta como SharpChromearrow-up-right para recuperar las cookies y los inicios de sesión guardados de Google Chrome.

circle-exclamation

Gestores de contraseñas

Muchas empresas proporcionan administradores de contraseñas a sus usuarios. Esto puede ser en forma de una aplicación de escritorio como KeePass, una solución basada en la nube como 1Password, o una bóveda de contraseñas empresarial como Thycotic o CyberArk. Obtener acceso a un administrador de contraseñas, especialmente uno utilizado por un miembro del personal de TI o un departamento completo, puede llevar al acceso a nivel de administrador a objetivos de alto valor como dispositivos de red, servidores, bases de datos, etc.

Podemos obtener acceso a una bóveda de contraseñas mediante la reutilización de contraseñas o adivinando una contraseña débil/común. Algunos administradores de contraseñas como KeePassse almacenan localmente en el host. Si encontramos un archivo .kdbx en un servidor, estación de trabajo o recurso compartido de archivos, sabemos que estamos tratando con una base de datos KeePass que a menudo está protegida solo por una contraseña maestra. Si podemos descargar un archivo .kdbx a nuestro host atacante, podemos usar una herramienta como keepass2johnarrow-up-right para extraer el hash de la contraseña y ejecutarlo a través de una herramienta de descifrado de contraseñas como Hashcatarrow-up-right o John the Ripperarrow-up-right .

Extracción del hash de KeePass

Primero, extraemos el hash en formato Hashcat usando el script. keepass2john, onstalado por defecto

Cracking de hash sin conexión

Luego podemos enviar el hash a Hashcat, especificando el modo hasharrow-up-right 13400 para KeePass. Si tenemos éxito, podemos obtener acceso a una gran cantidad de credenciales que se pueden usar para acceder a otras aplicaciones/sistemas o incluso dispositivos de red, servidores, bases de datos, etc., si podemos obtener acceso a una base de datos de contraseñas utilizada por el personal de TI.


Correo electrónico

Si obtenemos acceso a un sistema unido a un dominio en el contexto de un usuario de dominio con una bandeja de entrada de Microsoft Exchange, podemos intentar buscar en el correo electrónico del usuario términos como "contraseña", "credenciales", "password", etc. utilizando la herramienta MailSniperarrow-up-right .


LaZagne

Cuando todo lo demás falla, podemos ejecutar la herramienta LaZagnearrow-up-right para intentar recuperar credenciales de una amplia variedad de software. Dicho software incluye navegadores web, clientes de chat, bases de datos, correo electrónico, volcados de memoria, varias herramientas de administración de sistemas y mecanismos de almacenamiento de contraseñas internas (es decir, Autologon, Credman, DPAPI, secretos LSA, etc.). La herramienta se puede utilizar para ejecutar todos los módulos, módulos específicos (como bases de datos) o contra un software en particular (es decir, OpenVPN). El resultado se puede guardar en un archivo de texto estándar o en formato JSON. Vamos a probarlo.

Podemos ver el menú de ayuda con la flag -h:

Ejecución de todos los módulos de LaZagne

Como podemos ver, hay muchos módulos disponibles. Al ejecutar la herramienta con la opción all, se buscarán aplicaciones compatibles y se devolverán las credenciales de texto sin formato que se encuentren. Como podemos ver en el ejemplo siguiente, muchas aplicaciones no almacenan las credenciales de forma segura (¡es mejor no almacenarlas nunca, punto!). Se pueden recuperar fácilmente y utilizar para escalar privilegios localmente, pasar a otro sistema o acceder a datos confidenciales:


SessionGopher

Podemos utilizar SessionGopherarrow-up-right para extraer credenciales de PuTTY, WinSCP, FileZilla, SuperPuTTY y RDP guardadas. La herramienta está escrita en PowerShell y busca y descifra información de inicio de sesión guardada para herramientas de acceso remoto. Se puede ejecutar de forma local o remota. Busca en la HKEY_USERScolmena a todos los usuarios que hayan iniciado sesión en un host unido a un dominio (o independiente) y busca y descifra cualquier información de sesión guardada que pueda encontrar. También se puede ejecutar para buscar archivos de clave privada de PuTTY (.ppk), escritorio remoto (.rdp) y archivos RSA (.sdtid) en las unidades.

Ejecutar SessionGopher como usuario actual

Necesitamos acceso de administrador local para recuperar información de sesión almacenada para cada usuario en HKEY_USERS, pero siempre vale la pena ejecutar como nuestro usuario actual para ver si podemos encontrar credenciales útiles.


Almacenamiento de contraseñas en texto sin formato en el Registro

Ciertos programas y configuraciones de Windows pueden provocar que se almacenen contraseñas en texto sin formato u otros datos en el registro. Si bien herramientas como Lazagney SessionGopherson una excelente manera de extraer credenciales, como evaluadores de penetración también deberíamos estar familiarizados y cómodos con la enumeración manual de las mismas.

Inicio de sesión automático de Windows

El inicio de sesión automáticoarrow-up-right de Windows es una función que permite al usuario configurar su sistema operativo Windows para iniciar sesión automáticamente en una cuenta de usuario específica, sin necesidad de introducir manualmente el nombre de usuario y la contraseña cada vez que se inicia el sistema. Sin embargo, una vez configurado, el nombre de usuario y la contraseña se almacenan en el registro, en texto sin formato. Esta función se utiliza habitualmente en sistemas de un solo usuario o en situaciones en las que la comodidad supera la necesidad de una mayor seguridad.

Las claves de registro asociadas con Autologon se pueden encontrar en la siguiente sección en HKEY_LOCAL_MACHINE y los usuarios estándar pueden acceder a ellas:

La configuración típica de una cuenta de Autologon implica la configuración manual de las siguientes claves de registro:

  • AdminAutoLogon- Determina si el inicio de sesión automático está habilitado o deshabilitado. Un valor de "1" significa que está habilitado.

  • DefaultUserName- Contiene el valor del nombre de usuario de la cuenta que iniciará sesión automáticamente.

  • DefaultPassword- Contiene el valor de la contraseña de la cuenta de usuario especificada previamente.

Enumeración del inicio de sesión automático con reg.exe

circle-exclamation

Putty

Para las sesiones de Putty que utilizan una conexión proxy, cuando se guarda la sesión, las credenciales se almacenan en el registro en texto sin formato.

Tenga en cuenta que los controles de acceso para esta clave de registro específica están vinculados a la cuenta de usuario que configuró y guardó la sesión. Por lo tanto, para poder verla, tendríamos que iniciar sesión como ese usuario y buscar en la HKEY_CURRENT_USERcolmena. Posteriormente, si tuviéramos privilegios de administrador, podríamos encontrarla en la colmena del usuario correspondiente en HKEY_USERS.

Enumeración de sesiones y búsqueda de credenciales

Primero, necesitamos enumerar las sesiones guardadas disponibles:

A continuación, observamos las claves y valores de la sesión descubierta " kali%20ssh":

En este ejemplo, podemos imaginar el escenario en el que el administrador de TI ha configurado Putty para un usuario en su entorno, pero lamentablemente utilizó sus credenciales de administrador en la conexión proxy. La contraseña podría extraerse y potencialmente reutilizarse en la red.

Para obtener información adicional sobre reg.exeel registro y cómo trabajar con él, asegúrese de consultar el módulo Introducción a la línea de comandos de Windows .arrow-up-right


Contraseñas Wifi

Ver redes inalámbricas guardadas

Si obtenemos acceso de administrador local a la estación de trabajo de un usuario con una tarjeta inalámbrica, podemos enumerar todas las redes inalámbricas a las que se han conectado recientemente.

Recuperar contraseñas inalámbricas guardadas

Según la configuración de la red, podemos recuperar la clave compartida previamente ( Key Content a continuación) y potencialmente acceder a la red de destino. Si bien es poco frecuente, podemos encontrarnos con esto durante una interacción y usar este acceso para saltar a una red inalámbrica separada y obtener acceso a recursos adicionales.


Caso práctico

Herramientas

Pregunta 1

Utilizando las técnicas cubiertas en esta sección, recupere la contraseña system admin para la cuenta de usuario SQL01.inlanefreight.local.

Vamos a usar Lazagne como primera opción para encontrar contraseñas de usuarios del sistema:

Bingo! Tenemos la contraseña de SQL01.inlanefreight.local

Pregunta 2

¿Qué usuario tiene credenciales almacenadas para el acceso RDP al host WEB01?

El usuario amanda tiene las credenciales guardadas de cmdkey. Con esto podríamos ejecutar comandos en su nombre sin saber la contraseña en plano

Ejecutar comandos como otro usuario

circle-exclamation

Pregunta 3

Busque y envíe la contraseña para que el usuario root acceda a https://vc01.inlanefreight.local/ui/login

Al inspeccionar las credenciales guardadas en Chrome con SharpChrome.exe encontramos la contraseña:

La máquina no tiene conectividad con internet, por lo que no podemos acceder para comprobar el acceso.

Pregunta 4

Enumere el host y busque la contraseña para ftp.ilfreight.local

Enumerando el objetivo con SessionGopher encontramos las credenciales:

Última actualización