Zeek smb.log DCSync-like traffic
Zeek script: event dce_rpc::log_dce_rpc (rec: dce_rpc::Info) { if (rec?$endpoint && rec$endpoint == "DRSUAPI") print fmt("%s %s %s", rec$id$orig_h, rec$operation, rec$id$resp_h); }
Script de Zeek que monitoriza las llamadas DCE/RPC al endpoint DRSUAPI, la firma de red del DCSync y de la replicación anómala del directorio.
Despliega este script en tu sensor Zeek cuando quieras la vista de red del DCSync: el ataque usa DRSUAPI (el protocolo de replicación del directorio) sobre DCE/RPC, normalmente encapsulado en SMB. Zeek parsea esas llamadas en dce_rpc.log con el endpoint DRSUAPI y la operación concreta (DsGetNCChanges es la que replica los hashes). El script te deja un log propio con origen, operación y destino — la base para detectar qué host pide replicación sin ser un DC. Es la detección que funciona aunque el audit del DC esté apagado y es la favorita de los blue teams que ya tienen Zeek en el segmento de dominio.
No la uses como única detección de DCSync: las llamadas DRSUAPI legítimas entre DCs generan el mismo tráfico — el script sin filtro te da ruido de fondo constante en dominios con varios DCs. Necesitas la lógica de excepción: solo los orígenes que no son DCs y las operaciones DsGetNCChanges hacia el DC. Tampoco la uses si tu sensor no ve el segmento de los DCs (el tráfico de replicación no pasa por el span): el log saldrá vacío. Y ojo: los ataques modernos pueden ir por RPC sobre TCP directo (no SMB) — asegúrate de que tu Zeek parsea dce_rpc sobre ambos transportes.