Hacker La Red OscuraHacker La Red Oscura

La seguridad de credenciales es uno de los pilares fundamentales en la protección de sistemas Windows. Sin embargo, diversas herramientas y funciones nativas del sistema pueden ser utilizadas para obtener información sensible, ya sea por administradores en auditorías autorizadas o por actores maliciosos en actividades de reconocimiento, escalado de privilegios y movimiento lateral.

A continuación se describen varias técnicas relevantes para la extracción de credenciales o información relacionada, junto con su funcionamiento, sus implicaciones y las medidas defensivas recomendadas.

1. Enumeración de servicios que usan cuentas específicas

Ejemplo:

Get-WmiObject win32_service |
    Where-Object { $_.StartName -like '*@*' } |
    Select-Object Name, StartName, DisplayName

Este comando lista los servicios de Windows que se ejecutan bajo cuentas de dominio o cuentas personalizadas (por ejemplo, usuario@dominio). En algunos casos, las credenciales quedan almacenadas junto a la configuración del servicio.

Riesgos

  • Puede revelar servicios configurados con cuentas privilegiadas.
  • Si la contraseña del servicio está débil o es reutilizada, facilita el movimiento lateral.
  • Permite identificar objetivos con permisos elevados (p. ej. cuentas de servicio de SQL, IIS, backups).

Mitigación

  • Revisar periódicamente las cuentas asignadas a servicios.
  • Usar Managed Service Accounts (gMSA) para evitar credenciales almacenadas.
  • Aplicar políticas de rotación de contraseñas en cuentas de servicio.

2. Extracción de credenciales guardadas de RDP

Ejemplo:

cmdkey /list | Select-String 'Target: TERMSRV' |
    ForEach-Object { cmdkey /delete:($_ -split ' ')[-1] }

cmdkey administra credenciales almacenadas en Windows. Este comando permite listar credenciales guardadas para conexiones RDP y eliminarlas.

Riesgos

  • Las credenciales guardadas pueden permitir acceso directo a otros equipos.
  • Usuarios suelen almacenar credenciales por comodidad.
  • Un atacante podría usarlas para escalar acceso en la red.

Mitigación

  • Prohibir almacenamiento de credenciales mediante directivas de grupo.
  • Exigir autenticación multifactor (MFA) para conexiones remotas.
  • Realizar auditorías periódicas con cmdkey /list.

3. Acceso a cookies del navegador

Ejemplo:

$env:USERPROFILE + '\AppData\Local\Google\Chrome\User Data\Default\Cookies' | Get-Item

Chrome almacena las cookies en una base de datos SQLite. Algunas pueden contener tokens de sesión que, si se obtienen, pueden permitir secuestro de sesión.

Riesgos

  • Posible acceso a cuentas web sin conocer la contraseña.
  • Las cookies persistentes de aplicaciones corporativas representan un riesgo crítico.
  • Si el atacante tiene acceso al sistema, puede copiar el archivo para análisis offline.

Mitigación

  • Usar políticas de seguridad en Chrome para cifrar cookies obligatoriamente.
  • Activar autenticación fuerte en aplicaciones corporativas.
  • Evitar accesos locales no autorizados mediante hardening del endpoint.

4. Obtención de cuentas de Application Pools en IIS

Ejemplo:

Import-Module WebAdministration
Get-IISAppPool | Select-Object Name, ProcessModel

Los Application Pools pueden utilizar cuentas personalizadas. Si están mal configuradas, pueden contener credenciales administradas manualmente.

Riesgos

  • Cuentas privilegiadas ejecutando aplicaciones web.
  • Contraseñas almacenadas en la configuración.
  • Elevación de privilegios a partir de servicios web vulnerables.

Mitigación

  • Sustituir cuentas manuales por ApplicationPoolIdentity siempre que sea posible.
  • Revisar configuraciones sensibles mediante auditorías de IIS.
  • Usar gMSA para aplicaciones que requieren cuentas específicas.

5. Búsqueda de contraseñas en archivos de configuración

Ejemplo:

Get-ChildItem -Path C:\ -Include *.config -Recurse |
    Select-String -Pattern 'password='

Archivos .config se utilizan frecuentemente en aplicaciones .NET y, en ocasiones, contienen credenciales en texto plano.

Riesgos

  • Credenciales incrustadas (hardcoded) pueden comprometer bases de datos, servicios o APIs.
  • Riesgo especialmente alto en aplicaciones legacy.
  • Facilita movimiento lateral si las credenciales son privilegiadas.

Mitigación

  • Seguridad de desarrollo: prohibir credenciales en texto plano.
  • Implementar Azure Key Vault, AWS Secrets Manager, o equivalentes on-premise.
  • Revisar y cifrar secciones sensibles mediante aspnet_regiis.

6. Extracción de credenciales desde tareas programadas

Ejemplo:

Get-ScheduledTask |
    Where-Object { $_.Principal.UserId -notlike 'S-1-5-18' } |
    Select-Object TaskName, TaskPath, Principal

Las tareas programadas pueden ejecutarse bajo cuentas personalizadas, cuyas credenciales quedan almacenadas en el sistema.

Riesgos

  • El atacante identifica tareas que usan cuentas privilegiadas.
  • Si las contraseñas se reutilizan, permite acceso a otros sistemas.
  • Cuentas de servicio débiles permiten persistencia y escalado.

Mitigación

  • Revisar tareas programadas no estándar.
  • Cambiar tareas a Service Accounts administradas.
  • Proteger el acceso al sistema donde la tarea está configurada.

Conclusión

Estas técnicas muestran cómo distintas funcionalidades legítimas del sistema pueden ser reutilizadas para obtener credenciales o información sensible. Para proteger adecuadamente un entorno Windows, es indispensable establecer prácticas sólidas de hardening y monitorización.