📘Búsqueda de credenciales en Windows
Las credenciales pueden abrirnos muchas puertas durante nuestras evaluaciones. Podemos encontrar credenciales durante nuestra enumeración de escalada de privilegios que pueden conducirnos directamente al acceso de administrador local, otorgarnos un punto de apoyo en el entorno de dominio de Active Directory o incluso usarse para escalar privilegios dentro del dominio. Hay muchos lugares en los que podemos encontrar credenciales en un sistema, algunas más obvias que otras.
Archivos de configuración
Buscando archivos
En contra de las mejores prácticas, las aplicaciones suelen almacenar contraseñas en archivos de configuración de texto sin formato. Supongamos que obtenemos la ejecución de un comando en el contexto de una cuenta de usuario sin privilegios. En ese caso, es posible que podamos encontrar las credenciales para su cuenta de administrador u otra cuenta local o de dominio con privilegios. Podemos usar la utilidad findstr para buscar esta información confidencial.
La información confidencial de IIS, como las credenciales, se puede almacenar en un archivo web.config
. En el caso del sitio web predeterminado de IIS, este archivo podría estar ubicado en C:\inetpub\wwwroot\web.config
, pero puede haber varias versiones de este archivo en diferentes ubicaciones, que podemos buscar de forma recursiva.
Archivos de diccionario
Archivos del diccionario de Chrome
Otro caso interesante son los archivos de diccionario. Por ejemplo, se puede introducir información confidencial, como contraseñas, en un cliente de correo electrónico o en una aplicación basada en navegador, que subraya las palabras que no reconoce. El usuario puede añadir estas palabras a su diccionario para evitar el subrayado rojo que distrae.
Archivos de instalación desatendida
Los archivos de instalación desatendida pueden definir configuraciones de inicio de sesión automático o cuentas adicionales que se crearán como parte de la instalación. Las contraseñas en unattend.xml
se almacenan en texto simple o codificadas en base64.
Unattend.xml
Aunque estos archivos deberían eliminarse automáticamente como parte de la instalación, es posible que los administradores de sistemas hayan creado copias del archivo en otras carpetas durante el desarrollo de la imagen y el archivo de respuesta.
Archivo de historial de PowerShell
A partir de PowerShell 5.0 en Windows 10, PowerShell almacena el historial de comandos en el archivo:
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
.
Confirmación de la ruta de guardado del historial de PowerShell
Como se ve en el PDF de comandos de Windows (útil), publicado por Microsoft aquí , hay muchos comandos que pueden pasar credenciales en la línea de comandos. Podemos ver en el ejemplo a continuación que las credenciales administrativas locales especificadas por el usuario para consultar el registro de eventos de la aplicación utilizando wevutil .
Lectura del archivo de historial de PowerShell
Una vez que conocemos la ubicación del archivo (la ruta predeterminada está arriba), podemos intentar leer su contenido usando gc
.
También podemos usar esta línea para recuperar el contenido de todos los archivos del historial de PowerShell a los que podemos acceder como nuestro usuario actual. Esto también puede ser extremadamente útil como paso posterior a la explotación. Siempre debemos volver a verificar estos archivos una vez que tengamos un administrador local si nuestro acceso anterior no nos permitió leer los archivos de algunos usuarios. Este comando supone que se está utilizando la ruta de guardado predeterminada.
Relacionado
Podemos ver más técnicas de Credential Hunting en Windows en las siguientes secciones:
🔑Credential Hunting - Windows📘Otros robos de credenciales en WindowsCredenciales de PowerShell
Las credenciales de PowerShell suelen utilizarse para tareas de automatización y creación de scripts como una forma de almacenar credenciales cifradas de forma cómoda. Las credenciales están protegidas mediante DPAPI , lo que normalmente significa que solo el mismo usuario puede descifrarlas en la misma computadora en la que se crearon.
Tomemos, por ejemplo, el siguiente script Connect-VC.ps1
, que un administrador de sistemas ha creado para conectarse a un servidor vCenter fácilmente.
Descifrado de credenciales de PowerShell
Si hemos obtenido la ejecución de comandos en el contexto de este usuario o podemos abusar de DPAPI, entonces podemos recuperar las credenciales de texto sin formato de encrypted.xml
. El siguiente ejemplo supone lo primero.
Caso práctico
Pregunta 1
Busque en el sistema de archivos un archivo que contenga una contraseña. Envíe la contraseña como respuesta.
Pregunta 2
Conéctese como usuario bob y practique la descodificación de las credenciales en el archivo pass.xml. Envíe el contenido del archivo flag.txt al escritorio una vez que haya terminado.
Última actualización
¿Te fue útil?