File Transfer or Listener Established via Netcat

edit

File Transfer or Listener Established via Netcat

edit

A netcat process is engaging in network activity on a Linux host. Netcat is often used as a persistence mechanism by exporting a reverse shell or by serving a shell on a listening port. Netcat is also sometimes used for data exfiltration.

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
  • Execution
  • Investigation Guide

Version: 102 (version history)

Added (Elastic Stack release): 7.6.0

Last modified (Elastic Stack release): 8.6.0

Rule authors: Elastic

Rule license: Elastic License v2

Potential false positives

edit

Netcat is a dual-use tool that can be used for benign or malicious activity. Netcat is included in some Linux distributions so its presence is not necessarily suspicious. Some normal use of this program, while uncommon, may originate from scripts, automation tools, and frameworks.

Investigation guide

edit
## Triage and analysis

### Investigating Netcat Network Activity

Netcat is a dual-use command line tool that can be used for various purposes, such as port scanning, file transfers, and
connection tests. Attackers can abuse its functionality for malicious purposes such creating bind shells or reverse
shells to gain access to the target system.

A reverse shell is a mechanism that's abused to connect back to an attacker-controlled system. It effectively redirects
the system's input and output and delivers a fully functional remote shell to the attacker. Even private systems are
vulnerable since the connection is outgoing.

A bind shell is a type of backdoor that attackers set up on the target host and binds to a specific port to listen for
an incoming connection from the attacker.

This rule identifies potential reverse shell or bind shell activity using Netcat by checking for the execution of Netcat
followed by a network connection.

#### Possible investigation steps

- Examine the command line to identify if the command is suspicious.
- Extract and examine the target domain or IP address.
  - Check if the domain is newly registered or unexpected.
  - Check the reputation of the domain or IP address.
  - Scope other potentially compromised hosts in your environment by mapping hosts that also communicated with the
  domain or IP address.
- Investigate other alerts associated with the user/host during the past 48 hours.
- Investigate any abnormal account behavior, such as command executions, file creations or modifications, and network
connections.
- Investigate any abnormal behavior by the subject process such as network connections, file modifications, and any
spawned child processes.

### False positive analysis

- Netcat is a dual-use tool that can be used for benign or malicious activity. It is included in some Linux
distributions, so its presence is not necessarily suspicious. Some normal use of this program, while uncommon, may
originate from scripts, automation tools, and frameworks.

### Response and remediation

- Initiate the incident response process based on the outcome of the triage.
- Isolate the involved host to prevent further post-compromise behavior.
- Investigate credential exposure on systems compromised or used by the attacker to ensure all compromised accounts are
identified. Reset passwords for these accounts and other potentially compromised credentials, such as email, business
systems, and web services.
- Block the identified indicators of compromise (IoCs).
- Take actions to terminate processes and connections used by the attacker.
- Run a full antimalware scan. This may reveal additional artifacts left in the system, persistence mechanisms, and
malware components.
- Determine the initial vector abused by the attacker and take action to prevent reinfection through the same vector.
- Using the incident response data, update logging and audit policies to improve the mean time to detect (MTTD) and the
mean time to respond (MTTR).

Rule query

edit
sequence by process.entity_id [process where process.name:("nc","nca
t","netcat","netcat.openbsd","netcat.traditional") and ( /*
bind shell to echo for command execution */
(process.args:("-l","-p") and process.args:("-c","echo","$*"))
/* bind shell to specific port */ or
process.args:("-l","-p","-lp") /* reverse shell to command-
line interpreter used for command execution */ or
(process.args:("-e") and process.args:("/bin/bash","/bin/sh"))
/* file transfer via stdout */ or process.args:(">","<")
/* file transfer via pipe */ or (process.args:("|") and
process.args:("nc","ncat")) )] [network where (process.name ==
"nc" or process.name == "ncat" or process.name == "netcat" or
process.name == "netcat.openbsd" or process.name ==
"netcat.traditional")]

Threat mapping

edit

Framework: MITRE ATT&CKTM

Rule version history

edit
Version 102 (8.6.0 release)
  • Rule name changed from: Netcat Network Activity
  • Updated query, changed from:

    sequence by process.entity_id [process where (process.name == "nc"
    or process.name == "ncat" or process.name == "netcat" or
    process.name == "netcat.openbsd" or process.name ==
    "netcat.traditional") and event.type == "start"] [network where
    (process.name == "nc" or process.name == "ncat" or process.name ==
    "netcat" or process.name == "netcat.openbsd" or
    process.name == "netcat.traditional")]
Version 101 (8.5.0 release)
  • Formatting only
Version 8 (8.4.0 release)
  • Formatting only
Version 6 (7.12.0 release)
  • Formatting only
Version 5 (7.10.0 release)
  • Updated query, changed from:

    event.category:network and event.type:(access or connection or start)
    and process.name:(nc or ncat or netcat or netcat.openbsd or
    netcat.traditional)
Version 4 (7.9.1 release)
  • Formatting only
Version 3 (7.9.0 release)
  • Updated query, changed from:

    process.name:(nc or ncat or netcat or netcat.openbsd or
    netcat.traditional) and event.action:(bound-socket or connected-to or
    socket_opened)
Version 2 (7.7.0 release)
  • Updated query, changed from:

    process.name: (nc or ncat or netcat or netcat.openbsd or
    netcat.traditional) and event.action: (connected-to or bound-socket or
    socket_opened)