Detection rules › Splunk

Windows AD Replication Service Traffic

Status
experimental
Severity
medium
Group by
All_Traffic.app, All_Traffic.dest, All_Traffic.src
Author
Steven Dick
Source
github.com/splunk/security_content

The following analytic identifies unexpected Active Directory replication traffic from non-domain controller sources. It leverages data from the Network Traffic datamodel, specifically looking for applications related to AD replication. This activity is significant because AD replication traffic should typically only occur between domain controllers. Detection of such traffic from other sources may indicate malicious activities like DCSync or DCShadow, which are used for credential dumping. If confirmed malicious, this could allow attackers to exfiltrate sensitive credentials, leading to unauthorized access and potential domain-wide compromise.

MITRE ATT&CK coverage

TacticTechniques
Defense ImpairmentT1207 Rogue Domain Controller
Credential AccessT1003.006 OS Credential Dumping: DCSync

Rule body splunk

name: Windows AD Replication Service Traffic
id: c6e24183-a5f4-4b2a-ad01-2eb456d09b67
version: 9
creation_date: '2023-04-11'
modification_date: '2026-05-13'
author: Steven Dick
status: experimental
type: TTP
description: The following analytic identifies unexpected Active Directory replication traffic from non-domain controller sources. It leverages data from the Network Traffic datamodel, specifically looking for applications related to AD replication. This activity is significant because AD replication traffic should typically only occur between domain controllers. Detection of such traffic from other sources may indicate malicious activities like DCSync or DCShadow, which are used for credential dumping. If confirmed malicious, this could allow attackers to exfiltrate sensitive credentials, leading to unauthorized access and potential domain-wide compromise.
data_source: []
search: |-
    | tstats `security_content_summariesonly` count values(All_Traffic.transport) as transport values(All_Traffic.user) as user values(All_Traffic.src_category) as src_category values(All_Traffic.dest_category) as dest_category min(_time) as firstTime max(_time) as lastTime FROM datamodel=Network_Traffic
      WHERE All_Traffic.app IN ("ms-dc-replication","*drsr*","ad drs")
      BY All_Traffic.src All_Traffic.dest All_Traffic.app
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `drop_dm_object_name("All_Traffic")`
    | `windows_ad_replication_service_traffic_filter`
how_to_implement: To successfully implement this search, you need to be ingesting application aware firewall or proxy logs into the Network Datamodel. Categorize all known domain controller Assets servers with an appropriate category for filtering.
known_false_positives: New domain controllers or certian scripts run by administrators.
references:
    - https://adsecurity.org/?p=1729
    - https://attack.mitre.org/techniques/T1003/006/
    - https://attack.mitre.org/techniques/T1207/
finding:
    title: Active Directory Replication Traffic from Unknown Source - $src$
    entity:
        field: dest
        type: system
        score: 50
threat_objects:
    - field: src
      type: ip_address
analytic_story:
    - Sneaky Active Directory Persistence Tricks
asset_type: Endpoint
mitre_attack_id:
    - T1003.006
    - T1207
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: network
security_domain: network

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly` count values(All_Traffic.transport) as transport values(All_Traffic.user) as user values(All_Traffic.src_category) as src_category values(All_Traffic.dest_category) as dest_category min(_time) as firstTime max(_time) as lastTime FROM datamodel=Network_Traffic
  WHERE All_Traffic.app IN ("ms-dc-replication","*drsr*","ad drs")
  BY All_Traffic.src All_Traffic.dest All_Traffic.app

Stage 2: search

| `security_content_ctime(firstTime)`

Stage 3: search

| `security_content_ctime(lastTime)`

Stage 4: search

| `drop_dm_object_name("All_Traffic")`

Stage 5: search

| `windows_ad_replication_service_traffic_filter`

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
All_Traffic.appin
  • "*drsr*"
  • "ad drs"
  • "ms-dc-replication"