Control panel applet from user path

Severity highWindowsSingle eventstablewindows.execution.control_panel_applet_from_user_path · v1.0.0

A Control Panel applet (.cpl) executed from a user-writable directory.

What it detects

A Control Panel applet (.cpl) executed from a user-writable directory. A .cpl is simply a DLL with a CPlApplet export, and both control.exe and rundll32 shell32.dll,Control_RunDLL will load one from any path. Because the extension is not .dll or .exe it slips past naive extension filtering, and mail gateways have historically treated it as inert — which is why commodity loaders ship .cpl payloads inside archives.

Genuine applets ship in C:\Windows\System32. This rule requires the path to be somewhere a user can write, which is what separates an attack from opening a system settings page.

MITRE ATT&CK mapping

  • T1218.002System Binary Proxy Execution: Control Panel· Defense Evasion

False positives and triage

Rare. Some third-party drivers and vendor utilities install a .cpl outside System32, though usually under Program Files, which is not matched here.

To confirm: the .cpl is a DLL — hash it and treat it as a suspicious binary, not as a settings file. Check how it arrived (a browser download, an archive extracted from mail) and what the loading process did next. A .cpl in a Downloads folder with an invoice-style name is a commodity phishing payload.

The rule

Declarative YAML read by the detection engine — data, never executed. Confidence 80%. Source: rules/windows/control_panel_applet_from_user_path.yaml, licensed under the Apache License 2.0.

id: windows.execution.control_panel_applet_from_user_path
version: 1.0.0
status: stable
severity: high
confidence: 0.8
platforms: [windows]
mitre_techniques: [T1218.002]
description: |
  A Control Panel applet (`.cpl`) executed from a user-writable directory. A .cpl is
  simply a DLL with a `CPlApplet` export, and both `control.exe` and
  `rundll32 shell32.dll,Control_RunDLL` will load one from any path. Because the
  extension is not `.dll` or `.exe` it slips past naive extension filtering, and mail
  gateways have historically treated it as inert — which is why commodity loaders
  ship .cpl payloads inside archives.

  Genuine applets ship in `C:\Windows\System32`. This rule requires the path to be
  somewhere a user can write, which is what separates an attack from opening a
  system settings page.
match:
  command_line_regex: '(?i)[a-z]:\\(users|programdata|windows\\temp|temp|perflogs)\\[^"]*\.cpl'
correlation_keys: [hostname, user_name]
false_positive_guidance: |
  Rare. Some third-party drivers and vendor utilities install a .cpl outside
  System32, though usually under `Program Files`, which is not matched here.

  To confirm: the .cpl is a DLL — hash it and treat it as a suspicious binary, not
  as a settings file. Check how it arrived (a browser download, an archive extracted
  from mail) and what the loading process did next. A .cpl in a Downloads folder
  with an invoice-style name is a commodity phishing payload.

Related detections

Run this rule on your own logs — offline

KIROSEC runs this rule and the rest of the library over Windows, Linux, macOS and cloud audit logs on the analyst's own machine. Every alert links to the events that raised it, and nothing leaves the device.

Browse all detections