Skip to content

AppCertDlls

DLLs loaded into every process that calls CreateProcess and related functions.

Use it to find a DLL set to load into every process that starts programs, in a key Windows does not create.

  • SYSTEM
  • Persistence

What It Proves

A DLL listed here is loaded into every process that calls CreateProcess, CreateProcessAsUser, WinExec or a related function. That gives broad code execution inside the many processes that start others.

What It Does Not Prove

The key does not exist by default, so its mere presence is notable. It shows what is set, not whether a given process loaded the DLL.

Where It Lives

AppCertDlls lives in the SYSTEM hive, which holds settings for the whole machine. Offline Hive shows the path inside the hive file, as Registry Explorer opens it, and Live System shows the same key as regedit shows it on a running machine. The line under the path is where the hive file sits on disk.

SYSTEM\ControlSet001\Control\Session Manager\AppCertDlls
Hive file: C:\Windows\System32\config\SYSTEM

What It Looks Like

These are two values from this key on ws-042, the fictional machine the wiki follows, decoded into plain English. Each row shows the value as Windows stores it, its name, type and data, then what it tells you.

Values in AppCertDlls, each with what it tells you
Registry ValueWhat It Tells You

AppCertDlls

SubkeyKey not present

No AppCertDlls key exists, the default, so no DLL loads into processes that start others. Check any Defender or Sysmon data for one created and later removed.

Select\Current

REG_DWORD0x00000001 (1)

Windows booted with ControlSet001, so the absent key reflects the settings in use. Read the same path in any other ControlSet00x as well.

How to Read It

Check whether the AppCertDlls key exists under Session Manager at all. Read each value, whose data is a DLL path loaded into processes that start programs. Any entry here deserves scrutiny, since legitimate software rarely uses it.

When Windows Writes It
When the key or a value is created, usually by an attacker with admin rights.
Which Windows Versions
Windows XP to 11
Tools That Parse It
Autoruns, Registry Explorer, RECmd

Hunt It

Defender records these writes within retention. The key is absent by default, so any write is a strong signal, though not proof that a process loaded the DLL.

KQLDefender XDR, Advanced hunting
// Creation of or writes to the AppCertDlls keyDeviceRegistryEvents| where Timestamp > ago(30d)| where DeviceName startswith "ws-042"| where RegistryKey has "AppCertDlls"| project Timestamp, ActionType, RegistryKey, RegistryValueName, RegistryValueData, InitiatingProcessCommandLine| order by Timestamp desc

Confirm It With

One artefact can mislead on its own. These other records show the same activity, or pin down when it happened, so use them to back up what AppCertDlls shows.

  • DLL Load, Sysmon Event 7Not in the RegistryShows the DLL loading into processes that start others, which the key alone does not.

Sources