LinkedIn Post — 18 mei 2026

AppCompat — waar Defender stil van wordt.

Eén laag dieper dan de UAC-bypass van vorige week: het verborgen attack surface dat Microsoft zelf documenteert, dat geen admin nodig heeft, en dat in standaard-monitoring onzichtbaar blijft.

MITRE ATT&CK — T1546.011 · T1548.002
← Alle posts

Vorige week schreef ik over de UAC-bypass van drie regels: __COMPAT_LAYER=RunAsInvoker — Microsoft-gedocumenteerd, geen exploit. De reacties gingen vooral over één vraag: "En als ik die ene env-var-truc dichttimmer, ben ik dan klaar?"

Het korte antwoord: nee. Want één laag dieper zit het écht onaangename. __COMPAT_LAYER is slechts één deur van een veel groter gebouw: de AppCompat / Shim-laag.

Deze laag is door Microsoft ontworpen om door iedere user gebruikt te kunnen worden — ook zonder admin. Daarmee is hij één van de schaarse mechanismen waarmee een gewone user persistente gedragsmodificatie kan instellen op willekeurige binaries. Zonder elevation. Zonder UAC-prompt. Zonder log-trace in standaard-monitoring.

Dat is exact waar aanvallers naar op zoek zijn. Daarom mappen MITRE ATT&CK T1546.011 (Application Shimming) en T1548.002 (Bypass UAC) precies op dit gedrag.

———

Vijf testkaders — WinRunElevated v0.3.0 "Shimmer"

Onze test-binary heeft vijf concrete kaders gekregen die ieder een ander aspect van de shim-aanvalsketen aantonen. Hieronder per kader: kwetsbaarheid → mitigatie.

A1HKCU Layers — persistent shim per user

Eén registry-write op HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers met waarde RUNASINVOKER onderdrukt UAC op een willekeurige binary. Persistent. Overleeft reboot. Geen admin nodig — HKCU is per definitie schrijfbaar voor de user zelf.

Mitigatie: GPO Turn off Application Compatibility Engine + Sysmon EID 12/13 op *AppCompatFlags\Layers* doorsturen naar SIEM. Defender ATP-signaal "Suspicious AppCompat shim registration" alleen actief als ATP-EDR-sensor aan staat.

A2Per-user SDB-install via sdbinst.exe

Sinds Windows 10 1607 kan sdbinst.exe -q evil.sdb een custom Shim Database installeren in user-context, zonder elevation. Entries verschijnen in HKCU\...\AppCompatFlags\InstalledSDB en ...\Custom. Mogelijke flags: InjectDll, RedirectShortcut, VirtualRegistry, DisableNXShowUI. DLL-injectie in een legitieme proces-context — Defender ziet een normale notepad.exe.

Mitigatie: AppLocker- of WDAC-blokregel op sdbinst.exe voor alle non-admin users. WDAC-policy die alleen Microsoft-getekende SDB-bestanden toestaat. Sysmon EID 1 op sdbinst-command-lines waar parent geen legitieme installer is.

A3AppCompat flags-matrix — meer dan RunAsInvoker

RunAsInvoker is bekendst. Maar de hele matrix is een database aan gedrag-modificaties: RunAsHighest, WinXPSP3, Win7RTM, Win8RTM, Installer, Telemetry. Met __COMPAT_LAYER=WinXPSP3 kan een aanvaller exploits voor oudere Windows-versies hergebruiken op Windows 11 via OS-version-spoofing. Niet één kwetsbaarheid — een hele kwetsbaarheidsfamilie.

Mitigatie: Sysmon command-line-logging met env-var-capture (Sysmon 13+). EDR-regels die proces-starts met __COMPAT_LAYER= in command-line of process-environment markeren. Defender ATP Advanced Hunting: DeviceProcessEvents | where ProcessCommandLine contains "__COMPAT_LAYER".

A4Shim-detection inventaris — readiness-check

Geen aanval, maar een audit van de detectie-capaciteit van het endpoint zelf: Sysmon, Defender Real-Time-Protection, Behavior Monitoring, Tamper Protection, AMSI, en bovenal PowerShell ScriptBlockLogging (EID 4104) en ModuleLogging (EID 4103). Zonder deze logging is shim-misuse via PowerShell-one-liners onzichtbaar — er is geen artefact achteraf. Tamper Protection moet aan staan, anders kan Defender zelf per script worden uitgezet voorafgaand aan de aanval.

Mitigatie: 7-punts defensie-checklist: Sysmon-baseline (SwiftOnSecurity of Olaf Hartong), RTP actief, Tamper Protection aan, AMSI-EDR-integratie, ScriptBlockLogging via GPO, Windows Event Forwarding naar SIEM, complete audit-policy op registry-writes en process-creation.

A5Layers-residue enum — forensisch onderzoek

Audit-mechanisme dat bestaande entries in HKCU/HKLM Layers, InstalledSDB en Custom dumpt. Doel: vinden of er ooit een shim-aanval heeft plaatsgevonden waarvan de artefacten nog steeds aanwezig zijn. Een succesvolle shim-attack van 6 maanden terug zit nog steeds in de user-registry. De aanvaller is allang weg, maar de RUNASINVOKER-flag op %LOCALAPPDATA%\foo.exe is nooit opgeruimd. De persistence is nog intact — de aanvaller hoeft alleen terug te komen.

Mitigatie: Baseline-snapshot van Layers, InstalledSDB en Custom per endpoint na uitrol. Scheduled task die wekelijks de huidige state vergelijkt met baseline en delta's rapporteert. Forensische sweep bij elke profile-migratie of eigenaarswisseling.
———

Wat IT-managers vaak aannemen — en wat er feitelijk is

De aannames waarop veel endpoint-strategieën rusten, zijn precies de plekken waar deze aanvalsketen door heen glipt.

AannameWerkelijkheid
"Zonder admin kan een user niet aan UAC-gedrag komen."Via HKCU Layers + RUNASINVOKER onderdrukt een user UAC-prompts op willekeurige binaries — persistent.
"Shim Databases vereisen admin om te installeren."Per-user-route via sdbinst.exe werkt sinds Windows 10 1607 zonder elevation.
"Defender vangt dit wel."Alleen als ATP-EDR-sensor + Tamper Protection + Behavior Monitoring + ScriptBlockLogging allemaal actief zijn.
"Onze AppLocker-policy dekt dit."Alleen als sdbinst.exe expliciet geblokt is — standaard-policies missen het.
"In de logs zien we het later wel terug."Alleen als Sysmon, registry-auditing en command-line-logging uren vóór het incident al actief waren.
"OS-versie-spoofing is een legacy-probleem."Met __COMPAT_LAYER=WinXPSP3 kunnen aanvallers exploits voor oudere Windows-versies hergebruiken op Windows 11.
———

Drie fasen — consistent met vorige week

Dezelfde driedeling die we vorige week introduceerden, want zonder dat raamwerk blijft elke maatregel een losse tool en elke audit een momentopname:

1
TESTEN

A1 t/m A5 op uw werkplek draaien. Evidence-based vaststellen: wat slaagt, wat faalt? Welke endpoints zijn kwetsbaar, welke detectie ontbreekt? Geen aannames, alleen feiten.

2
MITIGEREN

GPO Turn off Application Compatibility Engine waar mogelijk. AppLocker- of WDAC-blok op sdbinst.exe. Sysmon EID 12/13 op AppCompatFlags\Layers doorsturen naar SIEM. PowerShell ScriptBlockLogging via GPO afdwingen.

3
VOORKOMEN

Endpoint-baseline met scheduled audit op Layers / InstalledSDB / Custom. Just-In-Time admin-model. Governance-mapping op NEN 7510, ISO 27001 (A.8.2 Privileged Access, A.8.16 Monitoring) en NIS2 (Art. 21 risk-management measures).

De aanvaller hoeft alleen de zwakste schakel te kennen. U moet ze allemaal kennen — voordat de aanvaller dat doet.

———

iCt Horse helpt op alle drie de fasen. We zijn geen toolboer.

We tonen u eerst wát er kapot is, fixen het, en bouwen het zo dat het kapot-zijn structureel niet meer terugkomt — gemapped op de normen waarop u toch al wordt afgerekend.

Het verschil tussen een endpoint dat veilig is en een endpoint dat veilig lijkt is niet de aanwezigheid van Defender.

Het is de combinatie van testen, mitigeren en voorkomen — in die volgorde.

Christian Glebbeek — iCt Horse | Connecting the dots

#cybersecurity #endpointsecurity #shimattack #UAC #AppCompat #NEN7510 #NIS2 #ISO27001 #icthorse