En los sistemas operativos Windows, los usuarios pueden recibir permisos especiales a través de políticas de seguridad locales o de dominio. Uno de los más delicados es el SeBackupPrivilege, también conocido como Backup Privilege. Este privilegio le permite a un usuario leer cualquier archivo del sistema, incluso aquellos a los que normalmente no tendría acceso, ignorando las ACLs (Listas de Control de Acceso) del sistema operativo. 🧐
Esto, que en principio está diseñado para que los procesos de respaldo funcionen correctamente, también puede ser utilizado de forma maliciosa si cae en manos equivocadas.
Supongamos que un atacante ya ha comprometido un sistema Windows y su usuario tiene el privilegio de hacer copias de seguridad. El primer paso que puede dar es crear una carpeta en una ubicación accesible, como:
mkdir C:\temp\volcado
robocopy
o reg save
(RS) para copiar archivos críticos
Con este privilegio, el atacante puede copiar archivos que normalmente están protegidos, como:
Usando el siguiente comando:
reg save hklm\sam C:\temp\volcado\SAM
reg save hklm\system C:\temp\volcado\SYSTEM
Esto permite que esos archivos ahora estén disponibles en una carpeta accesible para el atacante. 📂
El archivo SAM contiene los hashes de las contraseñas de todos los usuarios del sistema. Pero estos hashes están cifrados. Para poder descifrarlos, se necesita el archivo SYSTEM, que contiene la clave de cifrado utilizada por Windows. Así que con ambos archivos en mano, un atacante puede extraer los hashes NTLM de las contraseñas de usuario. 🔓
Aquí entra en juego una herramienta muy popular en entornos de pentesting: Impacket. Concretamente, el script secretsdump.py
, que permite obtener los hashes de los archivos extraídos.
En un entorno atacante, como Kali Linux, se ejecuta:
secretsdump.py -system SYSTEM -sam SAM LOCAL
Esto produce una salida con los usuarios y sus hashes NTLM. Por ejemplo:
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Una vez que el atacante tiene este hash, puede realizar un ataque "Pass the Hash", sin necesidad de conocer la contraseña original.
El ataque Pass the Hash (PtH) consiste en autenticarte en un sistema usando directamente el hash NTLM de una contraseña en lugar de la contraseña en texto plano. Si un atacante tiene el hash del administrador, puede conectarse remotamente a la máquina, abrir una sesión SMB o RDP, y ejecutar comandos como si fuera el propio administrador. 🧑💻
Esto puede hacerse con herramientas como:
pth-winexe -U 'Administrador%aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0' //192.168.1.100 cmd.exe
¡Y listo! El atacante tiene una shell remota en la máquina objetivo sin conocer la contraseña real. 😨
Revisa regularmente los privilegios asignados en tus sistemas. Este tipo de privilegios debe estar limitado exclusivamente a cuentas de servicio necesarias y no a usuarios normales o administradores genéricos.
El uso de comandos como reg save
o robocopy
sobre rutas sensibles debe ser auditado y controlado.
Si un atacante obtiene el hash de una cuenta privilegiada, es vital que esa cuenta tenga una contraseña que cambie automáticamente con regularidad. Herramientas como LAPS (Local Administrator Password Solution) pueden ayudarte en esto.
Habilita el registro de eventos de seguridad y utiliza herramientas SIEM para detectar patrones sospechosos.
⚠️ Recuerda: No se necesita ser un atacante extremadamente sofisticado para explotar esta vulnerabilidad. Basta con tener acceso a una cuenta con privilegios de respaldo.
Esta vulnerabilidad no es nueva, pero sí muy subestimada. Yo personalmente me he encontrado con entornos corporativos donde usuarios con permisos de backup podían acceder sin restricciones a todo el sistema, simplemente por una mala configuración. Y en esos entornos, si alguien aprovecha esta técnica, podría tener acceso total a la red sin disparar ninguna alarma.
No esperes a que sea tarde. Haz una auditoría de tus sistemas hoy mismo y verifica quién tiene privilegios elevados. Porque una vez que el atacante tiene el hash… el juego puede estar perdido. 🕹️
Jorge García
Fullstack developer