Webshell Detection: Script Process Child of Common Web Processesedit

Identifies suspicious commands executed via a web server, which may suggest a vulnerability and remote shell access.

Rule type: eql

Rule indices:

  • winlogbeat-*
  • logs-endpoint.events.*
  • logs-windows.*

Severity: high

Risk score: 73

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
  • Windows
  • Threat Detection
  • Persistence

Version: 4 (version history)

Added (Elastic Stack release): 7.15.0

Last modified (Elastic Stack release): 8.2.0

Rule authors: Elastic

Rule license: Elastic License v2

Potential false positivesedit

Security audits, maintenance, and network administrative scripts may trigger this alert when run under web processes.

Investigation guideedit

## Triage and analysis

Detections should be investigated to identify if the activity corresponds to legitimate activity. As this rule detects post-exploitation process activity, investigations into this should be prioritized.

## Config

If enabling an EQL rule on a non-elastic-agent index (such as beats) for versions <8.2, events will not define `event.ingested` and default fallback for EQL rules was not added until 8.2, so you will need to add a custom pipeline to populate `event.ingested` to @timestamp for this rule to work.

Rule queryedit

process where event.type == "start" and process.parent.name :
("w3wp.exe", "httpd.exe", "nginx.exe", "php.exe", "php-cgi.exe",
"tomcat.exe") and process.name : ("cmd.exe", "cscript.exe",
"powershell.exe", "pwsh.exe", "powershell_ise.exe", "wmic.exe",
"wscript.exe")

Threat mappingedit

Framework: MITRE ATT&CKTM

Rule version historyedit

Version 4 (8.2.0 release)
  • Formatting only
Version 3 (7.16.0 release)
  • Updated query, changed from:

    process where event.type == "start" and process.parent.name :
    ("w3wp.exe", "httpd.exe", "nginx.exe", "php.exe", "php-cgi.exe",
    "tomcat.exe") and process.name : ("cmd.exe", "cscript.exe",
    "powershell.exe", "pwsh.exe", "wmic.exe", "wscript.exe")