Detection rules › Splunk

Detect Remote Access Software Usage Traffic

Status
production
Severity
low
Group by
All_Traffic.action, All_Traffic.app, All_Traffic.bytes, All_Traffic.bytes_in, All_Traffic.bytes_out, All_Traffic.dest, All_Traffic.dvc, All_Traffic.protocol, All_Traffic.protocol_version, All_Traffic.src, All_Traffic.src_port, All_Traffic.transport, All_Traffic.user, All_Traffic.vendor_product, dest_ip, destination_port, src_ip
Author
Steven Dick
Source
github.com/splunk/security_content

The following analytic detects network traffic associated with known remote access software applications, such as AnyDesk, GoToMyPC, LogMeIn, and TeamViewer. It leverages Palo Alto traffic logs mapped to the Network_Traffic data model in Splunk. This activity is significant because adversaries often use remote access tools to maintain unauthorized access to compromised environments. If confirmed malicious, this activity could allow attackers to control systems remotely, exfiltrate data, or deploy additional malware, posing a severe threat to the organization's security.

Known false positives

  • It is possible that legitimate remote access software is used within the environment. Ensure that the lookup is reviewed and updated with any additional remote access software that is used within the environment. Known false positives can be added to the remote_access_software_usage_exception.csv lookup to globally suppress these situations across all remote access content

MITRE ATT&CK coverage

TacticTechniques
Command & Control

Rule body

name: Detect Remote Access Software Usage Traffic
id: 885ea672-07ee-475a-879e-60d28aa5dd42
version: 16
creation_date: '2024-03-06'
modification_date: '2026-05-13'
author: Steven Dick
status: production
type: Anomaly
description: |
    The following analytic detects network traffic associated with known remote access software applications, such as AnyDesk, GoToMyPC, LogMeIn, and TeamViewer.
    It leverages Palo Alto traffic logs mapped to the Network_Traffic data model in Splunk. This activity is significant because adversaries often use remote access tools to maintain unauthorized access to compromised environments.
    If confirmed malicious, this activity could allow attackers to control systems remotely, exfiltrate data, or deploy additional malware, posing a severe threat to the organization's security.
data_source:
    - Palo Alto Network Traffic
search: |
    | tstats `security_content_summariesonly`
      count min(_time) as firstTime
            max(_time) as lastTime
            values(All_Traffic.dest_port) as dest_port
            latest(All_Traffic.user) as user
    from datamodel=Network_Traffic where
    All_Traffic.app=*
    NOT All_Traffic.app IN ("-", "unknown")
    by All_Traffic.action All_Traffic.app All_Traffic.bytes All_Traffic.bytes_in
       All_Traffic.bytes_out All_Traffic.dest All_Traffic.dest_ip
       All_Traffic.dest_port All_Traffic.dvc All_Traffic.protocol
       All_Traffic.protocol_version All_Traffic.src All_Traffic.src_ip
       All_Traffic.src_port All_Traffic.transport All_Traffic.user
       All_Traffic.vendor_product
    | `drop_dm_object_name("All_Traffic")`
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | lookup remote_access_software remote_appid AS app OUTPUT isutility, description as signature, comment_reference as desc, category
    | search isutility = True
    | `remote_access_software_usage_exceptions`
    | `detect_remote_access_software_usage_traffic_filter`
how_to_implement: The following analytic was developed with Palo Alto traffic logs. Ensure that the logs are being ingested into Splunk and mapped to the Network_Traffic data model. Use the Splunk Common Information Model (CIM) to normalize the field names and speed up the data modeling process. The "exceptions" macro leverages both an Assets and Identities lookup, as well as a KVStore collection called "remote_software_exceptions" that lets you track and maintain device- based exceptions for this set of detections.
known_false_positives: It is possible that legitimate remote access software is used within the environment. Ensure that the lookup is reviewed and updated with any additional remote access software that is used within the environment. Known false positives can be added to the remote_access_software_usage_exception.csv lookup to globally suppress these situations across all remote access content
references:
    - https://attack.mitre.org/techniques/T1219/
    - https://thedfirreport.com/2022/08/08/bumblebee-roasts-its-way-to-domain-admin/
    - https://thedfirreport.com/2022/11/28/emotet-strikes-again-lnk-file-leads-to-domain-wide-ransomware/
    - https://applipedia.paloaltonetworks.com/
intermediate_findings:
    entities:
        - field: src
          type: system
          score: 20
          message: Application traffic for a known remote access software [$signature$] was detected from $src$.
        - field: user
          type: user
          score: 20
          message: Application traffic for a known remote access software [$signature$] was detected from $src$.
threat_objects:
    - field: signature
      type: signature
analytic_story:
    - Insider Threat
    - Command And Control
    - Ransomware
    - Remote Monitoring and Management Software
    - Scattered Spider
    - Interlock Ransomware
    - Scattered Lapsus$ Hunters
asset_type: Network
mitre_attack_id:
    - T1219
product:
    - Splunk Enterprise
    - Splunk Enterprise Security
    - Splunk Cloud
category: network
security_domain: network

Stages and Predicates

Stage 1: tstats

| tstats `security_content_summariesonly`
  count min(_time) as firstTime
        max(_time) as lastTime
        values(All_Traffic.dest_port) as dest_port
        latest(All_Traffic.user) as user
from datamodel=Network_Traffic where
All_Traffic.app=*
NOT All_Traffic.app IN ("-", "unknown")
by All_Traffic.action All_Traffic.app All_Traffic.bytes All_Traffic.bytes_in
   All_Traffic.bytes_out All_Traffic.dest All_Traffic.dest_ip
   All_Traffic.dest_port All_Traffic.dvc All_Traffic.protocol
   All_Traffic.protocol_version All_Traffic.src All_Traffic.src_ip
   All_Traffic.src_port All_Traffic.transport All_Traffic.user
   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: lookup

| lookup remote_access_software remote_appid AS app OUTPUT isutility, description as signature, comment_reference as desc, category
Lookup table
remote_access_software
Key field
remote_appid as app
Output columns
['isutility', 'isutility'], ['description', 'signature'], ['comment_reference', 'desc'], ['category', 'category']

Stage 6: search

| search isutility = True

Stage 7: search

| `remote_access_software_usage_exceptions`

Stage 8: search

| `detect_remote_access_software_usage_traffic_filter`

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
All_Traffic.appin"-", "unknown"excludes:All_Traffic.app
rmm_exceptioneqTRUEexcludes:rmm_exception field:"rmm_exception" value:"TRUE"
rmm_exception_endin"FALSE", "UNLIMITED"excludes:rmm_exception_end

Indicators

These rows show field, operator, and value matches.