ESXi Bulk VM Termination

Original Source: [splunk source]
Name:ESXi Bulk VM Termination
id:cfe094b4-0737-4a33-9d63-e0562ce2b883
version:1
date:2025-05-12
author:Raven Tait, Splunk
status:production
type:TTP
Description:This detection identifies when all virtual machines on an ESXi host are abruptly terminated, which may indicate malicious activity such as a deliberate denial-of-service, ransomware staging, or an attempt to destroy critical workloads.
Data_source:
  • -VMWare ESXi Syslog
search:`esxi_syslog`
| rex field=_raw "\s\[(?<user>[^\]]+)\]:\s(?<shell_command>.+)$"
| rex field=_raw "Z (?<dest>[\w\.]+)\s.*:\s(?<esxicli_Command>esxcli\s.+)"
| eval command=mvappend(esxicli_Command, shell_Command)
| where isnotnull(command)
| search (command="pkill -9 vmx-*") OR ( command="*esxcli*" AND command="*--format-param*" AND command="*vm process list*" AND command="*awk*" AND command="*esxcli vm process kill*")
| stats min(_time) as firstTime max(_time) as lastTime values(_time) as timeStamp values(command) as commands values(user) as user by dest
| `security_content_ctime(firstTime)`
| `security_content_ctime(lastTime)`
| `esxi_bulk_vm_termination_filter`


how_to_implement:This is based on syslog data generated by VMware ESXi hosts. To implement this search, you must configure your ESXi systems to forward syslog output to your Splunk deployment. These logs must be ingested with the appropriate Splunk Technology Add-on for VMware ESXi Logs, which provides field extractions and CIM compatibility.
known_false_positives:Limited false positives in most environments, however tune as needed.
References:
drilldown_searches:
name:'View the detection results for - "$dest$"'
search:'%original_detection_search% | search dest = "$dest$"'
earliest_offset:'$info_min_time$'
latest_offset:'$info_max_time$'
name:'View risk events for the last 7 days for - "$dest$"'
search:'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$dest$") starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
earliest_offset:'$info_min_time$'
latest_offset:'$info_max_time$'
tags:
  analytic_story:
    - 'ESXi Post Compromise'
    - 'Black Basta Ransomware'
  asset_type:Infrastructure
  mitre_attack_id:
    - 'T1673'
    - 'T1529'
    - 'T1499'
  product:
    - 'Splunk Enterprise'
    - 'Splunk Enterprise Security'
    - 'Splunk Cloud'
  security_domain:endpoint

tests:
name:'True Positive Test'
 attack_data:
  data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/attack_techniques/T1529/esxi_bulk_vm_termination/esxi_bulk_vm_termination.log
  source: vmware:esxlog
  sourcetype: vmw-syslog
manual_test:None