← All posts

Rogue Root CAs: Auditing the Windows Certificate Trust Store

Attackers plant trusted root certificates to silently intercept TLS and sign malware. Here is how to audit the Windows certificate store and what WinSentinel flags.

Almost every security control on a Windows endpoint ultimately rests on one quiet assumption: that the machine's list of trusted root certificate authorities is honest. TLS validation, code-signing verification, Authenticode, driver signing, and even Windows Update all defer to the Trusted Root Certification Authorities store. If an attacker can slip one certificate into that store, they own the trust decision for the entire box — and almost nothing on the screen will look wrong.

Why a rogue root CA is such a powerful foothold

A root CA certificate is a self-signed anchor. Windows trusts anything chaining up to it. Once an attacker installs their own root, they can do several dangerous things at once:

This is not theoretical. Superfish (Lenovo) and eDellRoot shipped rogue roots from the factory. Red teams routinely add a root to enable Evilginx-style proxying, and several banking trojans have installed roots to strip TLS on the endpoint. The technique maps to MITRE ATT&CK T1553.004 — Subvert Trust Controls: Install Root Certificate.

Where the trust actually lives

Windows keeps certificates in several logical stores across two scopes — LocalMachine (machine-wide) and CurrentUser (per profile). The ones that matter most for trust subversion are:

The critical nuance most audits miss: a legitimate Windows box ships with a well-known set of Microsoft and public-CA roots, and the rest are pulled on demand through the Automatic Root Update mechanism (CTL). Anything in Root that is not part of Microsoft's Certificate Trust List and was not deployed by your own GPO/PKI is suspect by definition.

Auditing the store by hand

PowerShell can enumerate the machine root store and surface the outliers. Start by listing everything and looking for self-signed roots with recent install dates, odd issuers, or missing OS provenance:

Get-ChildItem Cert:\LocalMachine\Root |
  Select-Object Subject, Issuer, NotAfter, Thumbprint |
  Sort-Object Subject

# Roots that are self-signed (Subject == Issuer) and NOT on Microsoft's CTL
Get-ChildItem Cert:\LocalMachine\Root |
  Where-Object { $_.Subject -eq $_.Issuer } |
  Select-Object Subject, NotBefore, Thumbprint

Two red flags to prioritize: a NotBefore date that lines up with a suspected compromise window, and a subject that impersonates a real CA name but with a slightly-off thumbprint. Cross-reference against Microsoft's authroot list — a genuine DigiCert or Sectigo root has a publicly documented thumbprint; a look-alike will not match.

Rule of thumb: on a standard workstation you did not deploy PKI to, every non-Microsoft, non-public root is a finding until proven otherwise.

Detecting installation, not just presence

Catching the root after the fact is good; catching the install is better. Root additions leave traces you can monitor:

How WinSentinel handles it

WinSentinel's certificate-trust audit is one of its 33 built-in modules, and it runs at full depth on the free single-machine tier — no limits, no gated checks. On each scan it enumerates the machine and user root, intermediate, and trusted-publisher stores, compares them against Microsoft's known-good root inventory, and flags:

Every finding lands in the security-score narrative with a remediation step — typically confirming provenance and, if rogue, removing it with certutil -delstore Root <thumbprint> and rotating any secrets that may have transited an intercepted channel.

For teams running more than one box, WinSentinel Pro rolls these per-machine certificate findings up across the whole fleet from a central node: it shows which endpoints carry an unexpected root, alerts on drift when a new untrusted root appears anywhere in the fleet, and lets you dispatch the remediation to the affected agents — turning a needle-in-a-haystack hunt into a single ranked view. The audit depth is identical everywhere; Pro simply orchestrates it at scale.

The takeaway

The certificate trust store is the substrate every other trust decision on Windows sits on, and it is quiet by design — a rogue root produces no error dialogs and no broken padlocks. Audit it deliberately: enumerate the roots, verify provenance against Microsoft's baseline, watch for installation events, and remove anything you cannot account for. Do it on every machine, on a schedule, not just after an incident.