Timestomping using Touch Commandedit

Timestomping is an anti-forensics technique which is used to modify the timestamps of a file, often to mimic files that are in the same folder.

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: 33

Tags:

  • Elastic
  • Host
  • Linux
  • macOS
  • Threat Detection
  • Defense Evasion

Version: 5 (version history)

Added (Elastic Stack release): 7.11.0

Last modified (Elastic Stack release): 8.2.0

Rule authors: Elastic

Rule license: Elastic License v2

Investigation guideedit

## 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.name : "touch" and
user.id != "0" and process.args : ("-r", "-t", "-a*","-m*") and not
process.args : ("/usr/lib/go-*/bin/go", "/usr/lib/dracut/dracut-
functions.sh", "/tmp/KSInstallAction.*/m/.patch/*")

Threat mappingedit

Framework: MITRE ATT&CKTM

Rule version historyedit

Version 5 (8.2.0 release)
  • Formatting only
Version 4 (7.13.0 release)
  • Updated query, changed from:

    process where event.type in ("start", "process_started") and
    process.name : "touch" and process.args : ("-r", "-t", "-a*","-m*")
Version 3 (7.12.0 release)
  • Updated query, changed from:

    process where event.type in ("start", "process_started") and
    process.name == "touch" and wildcard(process.args, "-r", "-t",
    "-a*","-m*")
Version 2 (7.11.2 release)
  • Formatting only