Detection rules › Splunk

Protocols passing authentication in cleartext

Status
production
Severity
low
Group by
All_Traffic.dest, All_Traffic.rule, All_Traffic.user, destination_port, src_ip
Author
Rico Valdez, Splunk
Source
github.com/splunk/security_content

The following analytic identifies the use of cleartext protocols that risk leaking sensitive information. It detects network traffic on legacy protocols such as Telnet (port 23), POP3 (port 110), IMAP (port 143), and non-anonymous FTP (port 21). The detection leverages the Network_Traffic data model to identify TCP traffic on these ports. Monitoring this activity is crucial as it can expose credentials and other sensitive data to interception. If confirmed malicious, attackers could capture authentication details, leading to unauthorized access and potential data breaches.

Known false positives

  • Some networks may use leverage clear text protocols such as kerberos, FTP or telnet servers. Apply the necessary exclusions where needed.

Rule body

name: Protocols passing authentication in cleartext
id: 6923cd64-17a0-453c-b945-81ac2d8c6db9
version: 13
creation_date: '2020-04-29'
modification_date: '2026-05-13'
author: Rico Valdez, Splunk
status: production
type: Anomaly
description: The following analytic identifies the use of cleartext protocols that risk leaking sensitive information. It detects network traffic on legacy protocols such as Telnet (port 23), POP3 (port 110), IMAP (port 143), and non-anonymous FTP (port 21). The detection leverages the Network_Traffic data model to identify TCP traffic on these ports. Monitoring this activity is crucial as it can expose credentials and other sensitive data to interception. If confirmed malicious, attackers could capture authentication details, leading to unauthorized access and potential data breaches.
data_source:
    - Cisco Secure Firewall Threat Defense Connection Event
search: |-
    | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Network_Traffic
      WHERE NOT All_Traffic.action IN ("blocked", "block")
        AND
        All_Traffic.transport="tcp"
        AND
        (All_Traffic.dest_port="23"
        OR
        All_Traffic.dest_port="143"
        OR
        All_Traffic.dest_port="110"
        OR
        (All_Traffic.dest_port="21"
        AND
        All_Traffic.user != "anonymous"))
      BY All_Traffic.user All_Traffic.src_ip All_Traffic.dest
         All_Traffic.dest_port All_Traffic.rule
    | `security_content_ctime(firstTime)`
    | `security_content_ctime(lastTime)`
    | `drop_dm_object_name("All_Traffic")`
    | `protocols_passing_authentication_in_cleartext_filter`
how_to_implement: This search requires you to be ingesting your network traffic, and populating the Network_Traffic data model. For more accurate result it's better to limit destination to organization private and public IP range, like All_Traffic.dest IN(192.168.0.0/16,172.16.0.0/12,10.0.0.0/8, x.x.x.x/22)
known_false_positives: Some networks may use leverage clear text protocols such as kerberos, FTP or telnet servers. Apply the necessary exclusions where needed.
references:
    - https://www.rackaid.com/blog/secure-your-email-and-file-transfers/
    - https://www.infosecmatter.com/capture-passwords-using-wireshark/
intermediate_findings:
    entities:
        - field: user
          type: user
          score: 20
          message: Allowed Traffic from $src_ip$ to $dest$ over port $dest_port$. Which might indicate a potential authentication attempts over a  cleartext protocol.
        - field: dest
          type: system
          score: 20
          message: Allowed Traffic from $src_ip$ to $dest$ over port $dest_port$. Which might indicate a potential authentication attempts over a  cleartext protocol.
threat_objects:
    - field: dest
      type: ip_address
analytic_story:
    - Use of Cleartext Protocols
    - Cisco Secure Firewall Threat Defense Analytics
    - Scattered Lapsus$ Hunters
asset_type: Endpoint
mitre_attack_id: []
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 FROM datamodel=Network_Traffic
  WHERE NOT All_Traffic.action IN ("blocked", "block")
    AND
    All_Traffic.transport="tcp"
    AND
    (All_Traffic.dest_port="23"
    OR
    All_Traffic.dest_port="143"
    OR
    All_Traffic.dest_port="110"
    OR
    (All_Traffic.dest_port="21"
    AND
    All_Traffic.user != "anonymous"))
  BY All_Traffic.user All_Traffic.src_ip All_Traffic.dest
     All_Traffic.dest_port All_Traffic.rule

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

| `protocols_passing_authentication_in_cleartext_filter`

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
All_Traffic.actionin"block", "blocked"excludes:All_Traffic.action

Indicators

These rows show field, operator, and value matches.