Connection to Internal Network via Telnet

edit

Telnet provides a command line interface for communication with a remote device or server. This rule identifies Telnet network connections to non-publicly routable IP addresses.

Rule type: eql

Rule indices:

  • auditbeat-*
  • logs-endpoint.events.*

Severity: medium

Risk score: 47

Runs every: 5 minutes

Searches indices from: now-9m (Date Math format, see also Additional look-back time)

Maximum alerts per execution: 100

References:

Tags:

  • Elastic
  • Host
  • Linux
  • Threat Detection
  • Lateral Movement

Version: 7 (version history)

Added (Elastic Stack release): 7.8.0

Last modified (Elastic Stack release): 8.4.0

Rule authors: Elastic

Rule license: Elastic License v2

Potential false positives

edit

Telnet can be used for both benign or malicious purposes. Telnet is included by default in some Linux distributions, so its presence is not inherently suspicious. The use of Telnet to manage devices remotely has declined in recent years in favor of more secure protocols such as SSH. Telnet usage by non-automated tools or frameworks may be suspicious.

Rule query

edit
sequence by process.entity_id [process where process.name ==
"telnet" and event.type == "start"] [network where process.name ==
"telnet" and cidrmatch(destination.ip, "10.0.0.0/8",
"127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12", "192.0.0.0/24",
"192.0.0.0/29", "192.0.0.8/32", "192.0.0.9/32", "192.0.0.10/32",
"192.0.0.170/32", "192.0.0.171/32",
"192.0.2.0/24", "192.31.196.0/24", "192.52.193.0/24",
"192.168.0.0/16", "192.88.99.0/24", "224.0.0.0/4", "100.64.0.0/10",
"192.175.48.0/24", "198.18.0.0/15",
"198.51.100.0/24", "203.0.113.0/24", "240.0.0.0/4", "::1",
"FE80::/10", "FF00::/8")]

Threat mapping

edit

Framework: MITRE ATT&CKTM

Rule version history

edit
Version 7 (8.4.0 release)
  • Formatting only
Version 6 (7.14.0 release)
  • Updated query, changed from:

    sequence by process.entity_id [process where process.name ==
    "telnet" and event.type == "start"] [network where process.name ==
    "telnet" and cidrmatch(destination.ip, "10.0.0.0/8",
    "172.16.0.0/12", "192.168.0.0/16", "FE80::/10") and not
    cidrmatch(destination.ip, "127.0.0.0/8", "::1/128")]
Version 5 (7.12.0 release)
  • Formatting only
Version 4 (7.10.0 release)
  • Updated query, changed from:

    event.category:network and event.type:(connection or start) and
    process.name:telnet and destination.ip:((10.0.0.0/8 or 172.16.0.0/12
    or 192.168.0.0/16 or "FE80::/10") and not (127.0.0.0/8 or "::1/128"))
Version 3 (7.9.1 release)
  • Formatting only
Version 2 (7.9.0 release)
  • Updated query, changed from:

    event.action:("connected-to" or "network_flow") and
    process.name:telnet and destination.ip:((10.0.0.0/8 or 172.16.0.0/12
    or 192.168.0.0/16 or "FE80::/10") and not (127.0.0.0/8 or "::1/128"))