Qué es un ataque DCShadow y cómo defenderse de él
Sep 28, 2022
DCShadow es un ataque de etapa avanzada de la cadena de eliminación que permite a un adversario con credenciales privilegiadas comprometidas registrar un controlador de dominio (DC) falso de Active Directory y replicar cambios maliciosos, como modificaciones que les ayudan a establecer persistencia. Más específicamente, DCShadow es un comando en el módulo lsadump de la herramienta de hacking de código abierto Mimikatz. Introducido a principios de 2018, utiliza instrucciones específicas en el protocolo Microsoft Directory Replication Service Remote (MS-DRSR) protocolo.
Contenido relacionado seleccionado:
Los ataques DCShadow son difíciles de prevenir. Al igual que DCSync, no abusa de una vulnerabilidad que pueda ser parcheada; explota funciones válidas y necesarias del proceso de replicación, las cuales no pueden ser desactivadas o inhabilitadas. Los ataques DCShadow también son difíciles de detectar, ya que los cambios que el adversario solicita se registran, procesan y confirman como replicación de dominio legítima.
Descripción general de un ataque DCShadow
Aquí hay un resumen de los pasos en un ataque DCShadow:
- Un atacante obtiene permisos de Domain Admin o Enterprise Admin, por ejemplo, al comprometer una cuenta de servicio administrada por grupo con poca seguridad.
- The attacker uses DCShadow to register a computer object (such as a workstation) as a domain controller by making changes to the AD configuration schema and the workstation’s SPN. Now, AD thinks the workstation is a DC so it’s trusted to replicate changes.
- El atacante envía cambios para la replicación, como cambios en los datos de contraseña, detalles de la cuenta o membresía de grupo de seguridad. Una vez que se activa la replicación, los cambios se publican y confirman por los demás DCs.
- El atacante usa DCShadow para eliminar el controlador de dominio fraudulento de la base de datos de AD para ocultar su actividad.
Un Ejemplo Sencillo: Replicando un Cambio Menor Usando DCShadow
Supongamos que eres un atacante que ha registrado un DC malicioso utilizando DCShadow. Estos son los pasos que podrías seguir para replicar un cambio sencillo en todos los DCs del dominio.
Paso 1. Cambie al uso de la cuenta SYSTEM.
El proceso que crea el cambio que se va a replicar debe ejecutarse como la cuenta SYSTEM, en lugar de una cuenta de usuario de dominio, ya que solo se replicarán los cambios de los DCs registrados. Si no lo hace, podría ver este código de error:
ERROR kuhl_m_lsadump_dcshadow_force_sync_partition ; IDL_DRSReplicaAdd DC=JEFFLAB,DC=local 0x80090322 (2148074274)
Una forma de ejecutar un proceso como SYSTEM en Mimikatz es usar PSExec:
PsExec.exe –i –s cmd.exe
Para confirmar que ahora está ejecutando bajo SYSTEM, use el comando whoami .
Luego use token::elevate para asegurarse de que todos los hilos se ejecuten como SYSTEM.
Paso 2. Aplique el cambio deseado.
Ahora podrás realizar un cambio. Para este ejemplo sencillo, cambiemos la descripción de la cuenta de Administrador:
lsadump::dcshadow /object:CN=Administrator,CN=Users,DC=JEFFLAB,DC=local /attribute:description /value:”DCShadow was here!”
Paso 3. Activar la replicación.
Para activar la replicación, abra otra ventana y ejecute el siguiente comando como la cuenta de Domain Admin comprometida (no como SYSTEM):
lsadump::dcshadow /push
La ventana original mostrará los eventos resultantes:
Paso 4. Confirme el cambio.
Vaya al controlador de dominio y revise el campo de descripción:
Un ataque del mundo real: Usando DCShadow para lograr persistencia
Ahora veamos cómo un adversario usaría DCShadow en un ataque real. Para ejecutar DCShadow, ya deben tener derechos de Domain Admin o Enterprise Admin, entonces, ¿por qué necesitarían usar DCShadow?
Una razón es que pueden no querer usar una cuenta de Domain Admin para la exfiltración de datos, ya que esas cuentas a menudo son monitoreadas de cerca y activan alarmas más fácilmente. Otra razón es para obtener derechos administrativos en otros bosques.
Pero una de las razones más comunes es crear persistencia — de modo que incluso si pierden acceso a la cuenta de administrador que comprometieron, mantendrán un punto de apoyo en el dominio. Vamos a revisar una forma en que podríamos usar DCShadow para lograr persistencia.
El flujo de trabajo básico es el siguiente:
- Revise el objeto AdminSDHolder, que proporciona permisos de plantilla para las cuentas y grupos protegidos en el dominio.
- Agregue una nueva cuenta con permisos de Control total a AdminSDHolder.
- Replicar el cambio utilizando DCShadow.
Paso 1. Revise el objeto AdminSDHolder.
Para revisar el objeto AdminSDHolder, utilizaremos algunos comandos básicos de PowerShell:
$AdminSDHolder = [adsi]'LDAP://CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local'
$SDDL = $AdminSDHolder.ObjectSecurity.Sddl
Podemos usar el comando ConvertFrom-SDDLString para convertir el resultado a un formato más legible:
Paso 2. Agregar una cuenta al contenedor AdminSDHolder.
Para crear persistencia, debemos agregar una cuenta a AdminSDHolder utilizando su SID. Todo lo que necesitamos saber es el nombre distinguido del objeto, y el siguiente comando almacenará su SID en la variable $UserSid:
$UserToAdd = [adsi]'LDAP://CN=Bob Loblaw,OU=Business,OU=Users,OU=JEFFLAB,DC=JEFFLAB,DC=local'
$UserSid = New-Object System.Security.Principal.SecurityIdentifier($UserToAdd.objectSid[0], 0)
Ahora podemos usar esa variable para agregar la cuenta a AdminSDHolder, otorgándole permisos de Control Total. Utilizaremos el siguiente comando de PowerShell:
$NewSDDL = $SDDL + "(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;" + $UserSid.Value + ")"
Si echamos otro vistazo a AdminSDHolder, ahora vemos al usuario como la última entrada:
Paso 3. Replicar el cambio utilizando DCShadow.
Ahora que tenemos los nuevos permisos en forma de un valor de atributo, es fácil aplicarlos con DCShadow. Ejecutando como SYSTEM, podemos usar el siguiente comando para realizar el cambio deseado:
mimikatz.exe "lsadump::dcshadow /object:CN=AdminSDHolder,CN=System,DC=JEFFLAB,DC=local /attribute:ntsecuritydescriptor /value:[output from the previous command]”
Aquí, puedes ver que el cambio está listo para ser replicado:
Luego utilizamos el comando lsadump::dcshadow/push para activar la replicación. Aquí puedes ver el objeto AdminSDHolder actualizado con nuestro usuario añadido; pronto esto estará en todos los grupos protegidos del dominio.
Prevención de ataques DCShadow
Esta es solo una forma en que DCShadow puede usarse para establecer persistencia o socavar de otro modo la seguridad de Active Directory. Es desafiante prevenir estos ataques porque aprovechan características nativas de Active Directory, no fallos que se puedan corregir con parches.
La clave principal para la defensa radica en el hecho de que un atacante debe tener derechos de Domain Admin o Enterprise Admin para realizar el ataque DCShadow. Por lo tanto, la estrategia más efectiva para bloquear este ataque es evitar que alguien obtenga una membresía no autorizada en estos poderosos grupos de seguridad.
Detección de ataques DCShadow
Una ventaja clave de usar DCShadow es que un atacante puede realizar cambios que no serán registrados por los registros de eventos — ya que los cambios se realizan a través de la replicación, se consideran legítimos. Sin embargo, puedes encontrar señales de que un ataque está sucediendo utilizando los registros de eventos. Aquí están los eventos clave que debes buscar.
Cambios a los SPN de Computadora
Para que DCShadow funcione, se deben agregar dos valores de nombre de entidad de servicio (SPN) particulares al equipo que se hará pasar por el controlador de dominio (el equipo desde el cual el atacante está ejecutando DCShadow). Esto puede ser cualquier computadora unida al dominio.
Esos dos SPNS son:
- Servidor de Catálogo Global SPN — Este tiene el formato GC/<DNS hostname>/<DNS forest name>.
- Directory Replication Service (DRS) SPN — Este tiene el formato <DRS interface GUID>/<DSA GUID>/<nombre de dominio DNS>, donde <DRS interface GUID> es siempre E3514235–4B06–11D1-AB04–00C04FC2DCD2.
Podemos detectar señales de ataques DCShadow al buscar la adición de estos SPN a un ordenador que no es un controlador de dominio, seguido por la eliminación de esos SPN. (Cabe destacar que en nuestro laboratorio, DCShadow elimina solo el SPN del servidor Global Catalog; deja el SPN de DRS.)
Podemos usar el Event ID 4742 para monitorear estos cambios. Este evento muestra qué usuario inició el cambio, así que sabes qué cuenta de Domain Admin se está utilizando para realizar el ataque.
Creación y eliminación de un DC
Otro paso en el ataque DCShadow es crear un DC en el contenedor de Sitios del Espacio de Nombres de Configuración. Esto se realiza creando un servidor y configuraciones NTDS para ese servidor. Puedes ver estos objetos para nuestro controlador de dominio legítimo a continuación:
DCShadow creará un DC y sus configuraciones y luego, una vez replicado el cambio, eliminará inmediatamente las entradas para encubrir sus rastros. Esto dejará una secuencia extraña de eventos de un nuevo DC siendo agregado y luego eliminado.
La adición se puede rastrear con el Event ID 5137, que contiene el nombre del DC no autorizado, su GUID y clase de objeto, y la cuenta responsable de crearlo:
El ID de evento 5141 mostrará la misma información para la eliminación del DC:
Unusual Replication Event
También es posible detectar ataques DCShadow mediante el monitoreo de la replicación. Sin embargo, los eventos de replicación que se activan pueden ser difíciles de diferenciar de los eventos de replicación genuinos.
Sin embargo, el Event ID 4929 puede ser una pista útil, ya que indica que se ha eliminado un contexto de nomenclatura de origen y señalará al DC problemático como la fuente. Ver este evento para una computadora que no es un controlador de dominio reconocido debería levantar una señal de alerta.
Fallo de replicación
Además, el par de eventos 4935 y 4936 indican un fallo de replicación que a menudo se puede asociar con DCShadow.
Cómo Netwrix puede ayudar
Netwrix StealthDEFEND es una solución líder en su clase para detectar y responder a ataques DCShadow:
Detección
Netwrix StealthDEFEND ofrece detección de amenazas DCShadow integrada. Monitorea todos los eventos de replicación y cambios de dominio en tiempo real para comportamientos indicativos de ataques DCShadow. En particular, está atento a la adición y eliminación de DCs y monitorea el tráfico de replicación.
A continuación se muestra un ejemplo en el que Netwrix StealthDEFEND ha detectado la adición de un nuevo controlador de dominio:
La adición de un DC ya es suficientemente sospechosa, pero el informe también resalta que la máquina está ejecutando Windows 10, el cual no soporta el rol de controlador de dominio. Al expandir los detalles del evento, podemos ver los cambios específicos que se realizaron como parte del ataque DCShadow:
Respuesta
Aunque la detección rápida de los ataques DCShadow es crítica, no es suficiente, especialmente porque significa que un adversario ha comprometido una cuenta altamente privilegiada. Pero simplemente deshabilitar esa cuenta puede ser insuficiente, porque para cuando detectes un ataque DCShadow, es probable que el adversario ya tenga una serie de otros recursos y opciones de red disponibles y en uso.
Netwrix StealthDEFEND ofrece una gran cantidad de opciones de respuesta automatizadas que le permiten construir fácilmente un playbook efectivo para cada amenaza o vulnerabilidad anticipada. En el caso de un ataque DCShadow, el playbook debe incluir los siguientes pasos:
- Notifique a las personas adecuadas en la organización de que ha ocurrido un ataque y proporcione la información necesaria para responder de manera efectiva. Netwrix StealthDEFEND proporciona todos los detalles críticos del ataque, incluyendo el perpetrador, origen y objetivo. Además, facilita la comunicación rápida a través de la fácil integración con Slack, Microsoft Teams, ServiceNow y otros sistemas utilizando PowerShell o facilidades de webhook.
- Bloquee la cuenta o estación de trabajo perpetradora para evitar que ejecute replicaciones adicionales, autenticaciones u otras acciones:
Preguntas frecuentes
¿Qué es DCShadow?
DCShadow es un comando en la herramienta Mimikatz que permite a un adversario registrar un controlador de dominio falso y replicar cambios maliciosos en todo el dominio.
¿Cómo funciona un ataque DCShadow?
Un atacante registra su computadora como un controlador de dominio realizando cambios en el esquema de configuración de AD y en el valor SPN de la estación de trabajo. Luego pueden replicar cambios, incluyendo cambios para asegurar su persistencia en el dominio.
¿Cómo se pueden detectar los ataques DCShadow?
La mejor manera de detectar ataques DCShadow es utilizar una solución automatizada que vigile continuamente la adición sospechosa de controladores de dominio y monitoree el tráfico de replicación en busca de actividad anormal.
¿Cuál es la mejor manera de responder a un ataque DCShadow?
Cuando se detecta un ataque DCShadow, el tiempo es esencial. Por lo tanto, es mejor tener un flujo de trabajo automatizado que informe inmediatamente del evento al equipo de seguridad y bloquee la cuenta para evitar que realice más cambios en el dominio.
Compartir en
Aprende más
Acerca del autor
Jeff Warren
Director de Producto
Jeff Warren supervisa el portafolio de productos de Netwrix, aportando más de una década de experiencia en gestión y desarrollo de productos enfocados en la seguridad. Antes de unirse a Netwrix, Jeff lideró la organización de productos en Stealthbits Technologies, donde utilizó su experiencia como ingeniero de software para desarrollar soluciones de seguridad innovadoras y escalables para empresas. Con un enfoque práctico y un talento para resolver desafíos de seguridad complejos, Jeff se centra en construir soluciones prácticas que funcionen. Tiene un BS en Sistemas de Información de la Universidad de Delaware.
Aprende más sobre este tema
Leyes de Privacidad de Datos por Estado: Diferentes Enfoques para la Protección de la Privacidad
Ejemplo de Análisis de Riesgos: Cómo Evaluar los Riesgos
El Triángulo de la CIA y su Aplicación en el Mundo Real
¿Qué es la gestión de registros electrónicos?
Análisis Cuantitativo de Riesgo: Expectativa de Pérdida Anual