Cómo crear alertas por Domain Join en Active Directory (eventos 4741‑4743)

¿Te preocupa que cualquier administrador (o atacante con privilegios) pueda unir equipos a tu dominio sin que nadie lo note? Aprende a generar alertas automáticas cada vez que se produzca un Domain Join y mantén el control total de tu infraestructura de Active Directory, sin importar cuántos bosques, sedes o husos horarios gestiones.

Índice

Contexto de seguridad

Cada estación o servidor unido al dominio hereda inmediatamente directivas, certificados y canales de autenticación Kerberos/NTLM. Un alta no autorizada abre la puerta a lateral movement, elevación de privilegios y robo de credenciales, por lo que auditar el ciclo de vida de las cuentas de equipo resulta crítico para:

  • Detectar ordenadores «fantasma» que nadie gestiona.
  • Verificar que las uniones las realizan usuarios legitimados y desde ubicaciones conocidas.
  • Cumplir requisitos de normas como ISO 27001, NIST 800‑53 o Esquema Nacional de Seguridad.

Flujo de trabajo recomendado

Activar auditoría avanzada

En un GPO de dominio (o a nivel de cada DC) habilita:

  • Audit Directory Service Changes
  • Audit Computer Account Management

Tras la política, el registro Security captura los eventos 4741, 4742 y 4743, con detalles como SamAccountName, Source Network Address y Workstation Name. Asegúrate de no filtrar por Success/Failure; necesitas ambos.

Centralizar los registros

Si posees más de un DC, habilita Windows Event Forwarding (WEF) o envía la WEL a un SIEM. Ventajas:

  • Persistencia ≥ 180 días sin saturar el disco del DC.
  • Correlaciones cruzadas entre sedes.
  • Análisis near‑real‑time y notificaciones multicanal (email, Teams, Slack, webhook).

Crear la alerta de correo

Tienes dos enfoques:

  1. Script ligero + Task Scheduler – Ideal para PYMES sin SIEM.
    # Filtro de eventos $filter = @" *[System[(EventID=4741 or EventID=4742 or EventID=4743)]] "@ XML a objetos \$events = Get-WinEvent -FilterXml \$filter -MaxEvents 50 foreach (\$evt in \$events) { \$body = \$evt | Select-Object TimeCreated, Id, @{n='Equipo';e={\$.Properties\[0].Value}}, @{n='Usuario';e={\$.Properties\[5].Value}} | Out-String Send-MailMessage -From '[ADAlertas@contoso.com](mailto:ADAlertas@contoso.com)' -To '[SecOps@contoso.com](mailto:SecOps@contoso.com)' ` -Subject \"Domain Join detectado - $($evt.Properties[0].Value)\"` -Body \$body -SmtpServer 'smtp.contoso.com' }
  2. Regla SIEM – Splunk, Sentinel, Elastic…
    // Sentinel – Kusto Query Language SecurityEvent | where EventID in (4741,4742,4743) | extend Equipo=TargetAccount, Admin=SubjectUserName | project TimeGenerated, Equipo, Admin, IpAddress=SourceIpAddress, EventID | alert

Incluir la ubicación

Source Network Address muestra la IP del cliente que ejecuta netdom join o el asistente de unión. Usa GeoIP en tu SIEM para etiquetar país, ciudad e ISP. Si detectas un 10.1.5.20 (Madrid) creado por un admin de Brasil fuera de horario laboral, genera una alerta de alta prioridad.

Comprobar Netlogon

Activa el log Microsoft‑Windows‑Netlogon/Operational (canal analítico). Eventos como 5719 o 5805 ayudan a depurar fallos de confianza (trust relationship) o intentos repetidos desde scripts mal configurados.

Resumen paso a paso

PasoQué hacerDetalles principales
Activar auditoría“Audit Directory Service Changes” y “Audit Computer Account Management” vía GPMC.Genera 4741 (alta), 4742 (cambio), 4743 (baja).
Centralizar registrosWEF o SIEM multinodo.Unifica DCs y evita SPOF.
Crear alertaTask Scheduler + PowerShell o regla SIEM.Email, Teams, Slack, Syslog… con campos SamAccountNameClientAddress, Workstation.
GeoIP y contextoEnriquece la IP de origen.Filtra por país o franja horaria.
Netlogon extraActiva canal Netlogon/Operational.Detecta rechazos o bucles de reintento.

Buenas prácticas de delegación y control

  • Principio de mínimo privilegio: elimina el derecho «Add workstations to domain» del grupo Domain Admins. Delega en cuentas de servicio gestionadas (gMSA) o administra vía Privileged Access Workstations (PAW).
  • Revisión trimestral: inventaría cuentas de equipo con LastLogonTimestamp > 90 días y deshabilita las obsoletas.
  • Retención de registros: mantén Security.evtx e índices SIEM al menos 6 meses; habilita sobreescritura circular solo tras exportar.
  • Separación de entornos: usa bosques de recursos o shadow forest para proveedores ajenos, así limitas visibilidad de objetos.

Casos especiales

Azure AD Join e híbrido

Las uniones de dispositivos Windows 10/11 a Azure AD se reflejan como DeviceRegistration en los Audit Logs de Azure. Con Azure Monitor → Activity Log Alerts puedes disparar la misma notificación y correlacionarla con eventos on‑prem.

Sistemas no Windows

Equipos Linux que se unen mediante realm join crean igualmente objetos computer. Aparecerán bajo el mismo evento 4741, así que tu alerta los cubrirá sin cambios.

Entornos desatendidos (autopilot/MDT)

Para evitar falsos positivos en instalaciones masivas, etiqueta las IP del segmento de staging (por ejemplo, 192.168.100.0/24) como «trusted» y agrega una condición NOT in trusted_subnets en la regla SIEM.

Indicadores de compromiso a vigilar

  • Rachas de eventos 4741 desde la misma IP con distintos nombres de equipo; posible script de fuerza bruta.
  • Eventos 4741 inmediatamente seguidos de 4720 (creación de usuario); instalación de jump host malicioso.
  • Total de altas fuera de horario laborable > media histórica + 3σ.

Automatización de respuesta

Más allá del correo, puedes:

  1. Crear un SOAR que deshabilite la cuenta de equipo y abra un ticket en tu ITSM.
  2. Lanzar un playbook que ejecute Get-ADComputer $Name –Properties * | Export‑Csv y adjunte la ficha completa al incidente.
  3. Enviar la IP al firewall perimetral para bloqueo inmediato.

Conclusión

Implementar alertas de Domain Join es rápido, barato y refuerza de manera drástica la higiene de tu Directorio. Con una auditoría bien configurada, registros centralizados y reglas de notificación inteligentes, sabrás en segundos quién, cuándo y desde dónde se da de alta cada equipo—y podrás reaccionar antes de que se convierta en una brecha de seguridad.

Índice