Detection rules › Splunk

Remote Desktop Network Traffic

Status
production
Severity
low
Group by
All_Traffic.dest, All_Traffic.dvc, All_Traffic.src, All_Traffic.src_port, All_Traffic.vendor_product, dest_ip, destination_port, src_ip
Author
David Dorsey, Splunk
Source
github.com/splunk/security_content

The following analytic detects unusual Remote Desktop Protocol (RDP) traffic on TCP/3389 by filtering out known RDP sources and destinations, focusing on atypical connections within the network. This detection leverages network traffic data to identify potentially unauthorized RDP access. Monitoring this activity is crucial for a SOC as unauthorized RDP access can indicate an attacker's attempt to control networked systems, leading to data theft, ransomware deployment, or further network compromise. If confirmed malicious, this activity could result in significant data breaches or complete system and network control loss.

Known false positives

  • Remote Desktop may be used legitimately by users on the network.

MITRE ATT&CK coverage

Rule body

name: Remote Desktop Network Traffic
id: 272b8407-842d-4b3d-bead-a704584003d3
version: 17
creation_date: '2019-10-16'
modification_date: '2026-05-13'
author: David Dorsey, Splunk
status: production
type: Anomaly
description: The following analytic detects unusual Remote Desktop Protocol (RDP) traffic on TCP/3389 by filtering out known RDP sources and destinations, focusing on atypical connections within the network. This detection leverages network traffic data to identify potentially unauthorized RDP access. Monitoring this activity is crucial for a SOC as unauthorized RDP access can indicate an attacker's attempt to control networked systems, leading to data theft, ransomware deployment, or further network compromise. If confirmed malicious, this activity could result in significant data breaches or complete system and network control loss.
data_source:
    - Zeek Conn
search: |-
    | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Network_Traffic
      WHERE All_Traffic.dest_port=3389
        AND
        All_Traffic.dest_category!=common_rdp_destination
        AND
        All_Traffic.src_category!=common_rdp_source
        AND
        All_Traffic.action="allowed"
      BY All_Traffic.src All_Traffic.dest All_Traffic.dest_port
         All_Traffic.dest_ip All_Traffic.dvc All_Traffic.src_ip
         All_Traffic.src_port All_Traffic.vendor_product
    | `drop_dm_object_name("All_Traffic")`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `remote_desktop_network_traffic_filter`
how_to_implement: To successfully implement this search you need to identify systems that commonly originate remote desktop traffic and that commonly receive remote desktop traffic. You can use the included support search "Identify Systems Creating Remote Desktop Traffic" to identify systems that originate the traffic and the search "Identify Systems Receiving Remote Desktop Traffic" to identify systems that receive a lot of remote desktop traffic. After identifying these systems, you will need to add the "common_rdp_source" or "common_rdp_destination" category to that system depending on the usage, using the Enterprise Security Assets and Identities framework.  This can be done by adding an entry in the assets.csv file located in SA-IdentityManagement/lookups.
known_false_positives: Remote Desktop may be used legitimately by users on the network.
references: []
intermediate_findings:
    entities:
        - field: src
          type: system
          score: 20
          message: Remote Desktop Network Traffic Anomaly Detected from $src$ to $dest$
threat_objects:
    - field: dest
      type: ip_address
analytic_story:
    - SamSam Ransomware
    - Ryuk Ransomware
    - Hidden Cobra Malware
    - Active Directory Lateral Movement
    - Windows RDP Artifacts and Defense Evasion
asset_type: Endpoint
mitre_attack_id:
    - T1021.001
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: network
security_domain: network
baselines:
    - Identify Systems Receiving Remote Desktop Traffic
    - Identify Systems Using Remote Desktop
    - Identify Systems Creating Remote Desktop Traffic

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Network_Traffic
  WHERE All_Traffic.dest_port=3389
    AND
    All_Traffic.dest_category!=common_rdp_destination
    AND
    All_Traffic.src_category!=common_rdp_source
    AND
    All_Traffic.action="allowed"
  BY All_Traffic.src All_Traffic.dest All_Traffic.dest_port
     All_Traffic.dest_ip All_Traffic.dvc All_Traffic.src_ip
     All_Traffic.src_port All_Traffic.vendor_product

Stage 2: search

| `drop_dm_object_name("All_Traffic")`

Stage 3: search

| `security_content_ctime(firstTime)`

Stage 4: search

| `security_content_ctime(lastTime)`

Stage 5: search

| `remote_desktop_network_traffic_filter`

Indicators

These rows show field, operator, and value matches.