🔑Atacando Windows Credential Manager
Administrador de credenciales y bóveda de Windows
El Administrador de Credenciales es una función integrada en Windows desde Server 2008 R2 y Windows 7. No se dispone de documentación completa sobre su funcionamiento, pero, en esencia, permite a los usuarios y aplicaciones almacenar de forma segura las credenciales relevantes para otros sistemas y sitios web. Las credenciales se almacenan en carpetas cifradas especiales en el equipo, dentro de los perfiles de usuario y sistema ( MITRE ATT&CK ).
%UserProfile%\AppData\Local\Microsoft\Vault\%UserProfile%\AppData\Local\Microsoft\Credentials\%UserProfile%\AppData\Roaming\Microsoft\Vault\%ProgramData%\Microsoft\Vault\%SystemRoot%\System32\config\systemprofile\AppData\Roaming\Microsoft\Vault\
Cada carpeta de bóveda contiene un archivo Policy.vpol con claves AES (AES-128 o AES-256) protegidas por DPAPI. Estas claves AES se utilizan para cifrar las credenciales. Las versiones más recientes de Windows utilizan Credential Guard seguridad basada en virtualización para proteger aún más las claves maestras DPAPI almacenándolas en enclaves de memoria seguros .
Microsoft suele referirse a los almacenes protegidos como Credential Lockers(anteriormente Windows Vaults). El Administrador de Credenciales es la función/API orientada al usuario, mientras que los almacenes cifrados reales son las carpetas de bóveda/bloqueo. La siguiente tabla enumera los dos tipos de almacenes de credenciales de Windows:
Nombre
Descripción
Credenciales web
Credenciales asociadas a sitios web y cuentas en línea. Este bloqueo se utiliza en Internet Explorer y versiones anteriores de Microsoft Edge.
Credenciales de Windows
Se utiliza para almacenar tokens de inicio de sesión para varios servicios, como OneDrive, y credenciales relacionadas con usuarios del dominio, recursos de red local, servicios y directorios compartidos.

Es posible exportar las Bóvedas de Windows a archivos .crd mediante el Panel de Control o con el siguiente comando. Las copias de seguridad creadas de esta manera se cifran con una contraseña proporcionada por el usuario y pueden importarse a otros sistemas Windows.

Enumeración de credenciales con cmdkey
Podemos usar cmdkey para enumerar las credenciales almacenadas en el perfil del usuario actual:
Las credenciales almacenadas se enumeran con el siguiente formato:
Llave
Valor
Objetivo
El nombre del recurso o la cuenta a la que corresponde la credencial. Puede ser una computadora, un nombre de dominio o un identificador especial.
Tipo
El tipo de credencial. Los tipos más comunes son Genericpara credenciales generales y Domain Passwordpara inicios de sesión de usuarios de dominio.
Usuario
La cuenta de usuario asociada con la credencial.
Persistencia
Algunas credenciales indican si una credencial se guarda de forma persistente en la computadora; las credenciales marcadas con Local machine persistencesobreviven a los reinicios.
La primera credencial en la salida del comando anterior, virtualapp/didlogical es una credencial genérica utilizada por la cuenta Microsoft/servicios de Windows Live. El nombre de usuario, de aspecto aleatorio, es un ID de cuenta interno. Esta entrada puede ignorarse para nuestros fines.
La segunda credencial, Domain:interactive=SRV01\mcharles, es una credencial de dominio asociada al usuario SRV01\mcharles. Esto significa que se utiliza para sesiones de inicio de sesión interactivas. Siempre que encontremos este tipo de credencial, podemos usarla runas para suplantar la identidad del usuario almacenado, como se muestra a continuación:

Extracción de credenciales con Mimikatz
Existen muchas herramientas diferentes para descifrar las credenciales almacenadas. Una de ellas es mimikatz . Incluso dentro de mimikatz, existen múltiples maneras de atacar estas credenciales: podemos volcarlas de la memoria usando el módulo sekurlsa o descifrarlas manualmente dpapi. En este ejemplo, usaremos sekurlsa como objetivo el proceso LSASS :
Caso práctico
¿Cuál es la contraseña que usa
mcharlespara OneDrive?
Nos conectamos por RDP:
Podríamos intentar exportar la bóveda de contraseñas con el siguiente comando:

Elegimos una ruta y un nombre y le ponemos la contraseña 1234:

Nos genera el archivo .crd que podríamos importar en otros sistemas Windows, pero vamos a obtener las credenciales.
Enumerar credenciales con cmdkey
Parece que no obtenemos ninguna credencial en plano pero vemos que hay credenciales guardadas en memoria del usuario mcharles.
Impersonar al usuario mcharles
Usaremos las credenciales almacenadas en memoria para impersonar al usuario mcharles:

Herramientas de interfaz gráfica como Credential Manager y keymgr.dll no mostraban las credenciales de OneDrive. Las bóvedas y el registro también estaban vacíos. En este punto, era evidente que el laboratorio necesitaba acceso de administrador para continuar.
Omitir el UAC mediante fodhelper.exe
Primero tenemos que omitir el UAC y luego obtenemos acceso de administrador.
Podemos usar dos payloads, puedes probar una carga útil que prefieras.
Usando fodhelper.exe:
Usando computerdefaults.exe:
Al abrir el CMD y escribir whoami, seguirá apareciendo que somos mcharles. Sin embargo, ahora podemos acceder a la carpeta del administrador y tener acceso completo.
Cómo nos hemos conectado por RDP compartiendo nuestra carpeta de hack-tools de nuestro Kali, enviaremos el binario de Mimikatz para extraer contraseñas.

La única ruta que tenemos accesible es la de sadams, por lo que la copiaremos en el escritorio:

Una vez que tenemos Mimikatz en el escritorio de sadams, lo copiaremos a nuestra ruta actual:
Extraer vault con mimikatz
Ahora ejecutamos Mimikatz con mimikatz.exe:
Bingo! Obtenemos la contraseña de OneDrive en plano.
Última actualización
¿Te fue útil?