Detection rules › Splunk

wuauclt.exe Network Connection (Sysmon)

Group by
_time, host
Source
github.com/anvilogic-forge/armory

wuauclt.exe is the Windows Update client. It can be abused to proxy execution of malicious code as documented in the LOLBAS project. This use case detects network connection events with wuauclt.exe. Connections to Microsoft-owned IPs are expected behavior and have been filtered out

MITRE ATT&CK coverage

References

Event coverage

ProviderEventTitle
SysmonEvent ID 3Network connection

Rule body yaml

id: '25039.46452'
title: wuauclt.exe Network Connection
description: wuauclt.exe is the Windows Update client. It can be abused to proxy execution
  of malicious code as documented in the LOLBAS project. This use case detects network
  connection events with wuauclt.exe. Connections to Microsoft-owned IPs are expected
  behavior and have been filtered out. Living Off the Land Binary and Scripts (LOLBAS)
  (LOLBIN)
logic_format: Splunk
logic: '`get_endpoint_data` `get_endpoint_data_sysmon` (TERM(EventCode=3) OR "<EventID>3<")
  "wuauclt" | where not match(dest_ip, "^(20\.18[4-9]\.|20\.19[0-1]\.|23\.79\.|51\.10[3-5]\.|52\.239\.)")
  and match(process_name, "(?i)wuauclt\.exe") | table _time, host, user, signature_id,
  process, process_name, parent_process_path, parent_process_name, src_ip, dest_ip
  `group_events("host,1)` '
techniques:
- defense-evasion:system binary proxy execution
technique_id: 
- T1218
data_category:
- Windows Sysmon
references:
- https://lolbas-project.github.io/lolbas/Binaries/Wuauclt/

Stages and Predicates

Stage 1: search

search EventCode=3 source="*" source IN ("WinEventLog:Microsoft-Windows-Sysmon/Operational", "XmlWinEventLog:Microsoft-Windows-Sysmon/Operational")

Stage 2: where

where NOT dest_ip="*^(20\\.18[4-9]\\.|20\\.19[0-1]\\.|23\\.79\\.|51\\.10[3-5]\\.|52\\.239\\.)*" process_name="*(?i)wuauclt\\.exe*"

Stage 3: table

table _time, dest_ip, host, parent_process_name, parent_process_path, process, process_name, signature_id, src_ip, user

Stage 4: bucket

bucket _time

Stage 5: stats

stats BY host, _time

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
dest_ipmatch"^(20\.18[4-9]\.|20\.19[0-1]\.|23\.79\.|51\.10[3-5]\.|52\.239\.)"

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
EventCodeeq
  • 3 corpus 21 (splunk 14, kusto 5, chronicle 2)
process_namematch
  • "(?i)wuauclt\.exe" corpus 2 (splunk 2)

Search terms

Bare-string tokens in the SPL search body. Splunk matches each token against _raw (the untyped raw event text) anywhere it appears, not against a specific field. These don't surface in the Indicators table because they aren't predicates on a known field.

StageTerm
1TERM
1"<EventID>3<"
1"wuauclt"