Detection rules › Splunk

GPUpdate with no Command Line Arguments with Network

Author
Michael Haag, Splunk
Source
upstream

The following analytic detects the execution of gpupdate.exe without command line arguments and with an active network connection. This behavior is identified using Endpoint Detection and Response (EDR) telemetry, focusing on process execution and network traffic data. It is significant because gpupdate.exe typically runs with specific arguments, and its execution without them, especially with network activity, is often associated with malicious software like Cobalt Strike. If confirmed malicious, this activity could indicate an attacker leveraging gpupdate.exe for lateral movement, command and control, or other nefarious purposes, potentially leading to system compromise.

MITRE ATT&CK coverage

TacticTechniques
Privilege EscalationT1055 Process Injection
Defense EvasionT1055 Process Injection

Event coverage

ProviderEvent IDTitle
Sysmon1Process creation
Sysmon3Network connection

Stages and Predicates

Stage 1: tstats

tstats WHERE Processes.process_name="gpupdate.exe" BY Processes.action, Processes.dest, Processes.original_file_name, Processes.parent_process, Processes.parent_process_exec, Processes.parent_process_guid, Processes.parent_process_id, Processes.parent_process_name, Processes.parent_process_path, Processes.process, Processes.process_exec, Processes.process_guid, Processes.process_hash, Processes.process_id, Processes.process_integrity_level, Processes.process_name, Processes.process_path, Processes.user, Processes.user_id, Processes.vendor_product

Stage 2: search

search

Stage 3: search

search

Stage 4: search

search

Stage 5: regex

regex match(process, "(?i)(gpupdate\.exe.{0,4}$)")

Stage 6: join

join type=inner (...)

Stage 7: table

table C2, _time, app, dest, dest_ip, dest_port, direction, dvc, parent_process_name, process, process_id, process_name, process_path, protocol, protocol_version, src, src_ip, src_port, transport, user

Stage 8: search

search `macro`

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
All_Traffic.dest_portne
  • 0 corpus 6 (splunk 6)
Processes.process_nameeq
  • gpupdate.exe
processregex_match
  • "(?i)(gpupdate\.exe.{0,4}$)"