Vier persistence-vectoren op moderne Windows-werkplekken zonder admin-rechten — inclusief de AI-database waar elke 5 seconden een screenshot in belandt.
Uw IT-afdeling weet niet dat Microsoft elke 5 seconden een screenshot maakt van wat uw medewerker doet. En een non-admin .exe kan die screenshots lezen. Inclusief de OCR-tekst die Windows er zelf overheen heeft gelegd: wachtwoorden, e-mails, MFA-codes — alles wat ooit op het scherm gestaan heeft.
Locatie: %LOCALAPPDATA%\CoreAIPlatform.00\UKP\. Geen admin nodig. Geen UAC-prompt. Geen Defender-melding op de meeste werkplekken. Dit is Windows Recall op Copilot+ PC's, en het is één van vier persistence-vectoren uit deel F van WinRunElevated v0.3.0 "Shimmer" die wij hebben getest op realistische werkplekken.
Dit is de derde post in onze reeks over werkplek-beveiliging. Eerder behandelden we klassieke UAC-bypass en AppCompat-misbruik. Nu: persistence zonder admin — want dat is de aanvalsroute die het meest onderschat wordt door beheerders die "admin op rij hebben".
De WPB-test draait deel F in een gecontroleerde sandbox. Geen exploit-code, geen exfiltratie — alleen het bewijs of de techniek bij úw werkplek-policy doorheen komt. Per vector: wat het is, schade-scenario, mitigatie.
Één registry-write + sandbox-binary kaapt elke toekomstige cmd-sessie van die user
Schrijf naar HKCU\Environment → "Path", prepend een eigen directory met dummy ipconfig.exe, whoami.exe, git.exe, npm.exe. Vanaf de volgende cmd-sessie wordt de aanvaller-binary eerst geresolved, niet die uit System32.
Persistent over herstart. Geen admin. Elke diagnose-aanroep wordt gekaapt: het echte commando draait door (geen verdenking), maar parameters worden gelogd, output gemanipuleerd, side-payloads geïnjecteerd.
GPO "Disable changing environment variables" voor users. Sysmon EID 13 met filter op HKCU\Environment. Wekelijkse PowerShell-baseline: Get-ItemProperty HKCU:\Environment vergelijken met golden image.
SQLite-DB met ALLE OCR'd screenshots van de afgelopen 30 dagen — in user-context leesbaar
Op Copilot+ PC's maakt Windows Recall elke ~5 seconden een screenshot, voert OCR uit en bewaart alles in ukp.db + ImageStore\*.png. Sinds Recall v2 (november 2024) EFS-encrypted — maar de sleutel zit in user-DPAPI, dus toegankelijk voor elk proces dat in user-context draait.
Een info-stealer (geen admin, geen installer, geen UAC) leest de complete schermgeschiedenis. Wachtwoorden uit password-manager auto-fill, MFA-codes die kort zichtbaar waren, banking-pagina's, mail-content, Teams-chats — alles wat het oog ooit zag, is nu structured data.
GPO DisableAIDataAnalysis in Computer Configuration → Windows AI. Conditional Access in Entra ID: Copilot+ endpoints alleen managed-met-deze-GPO. Defender for Endpoint sensor "Recall data access by non-Recall process" (sinds Q1 2026).
HKCU-key + manifest = permanente browser↔OS C2-bridge, geen Web Store-review
Native Messaging Hosts (NMH) zijn een legitieme Chrome/Edge-feature: een extensie kan via stdin/stdout met een lokale .exe praten. Registratie via HKCU\Software\Google\Chrome\NativeMessagingHosts\<name> + manifest in user-folder. Geen admin, geen UAC, geen Store-review.
Gecombineerd met een sideloaded "developer mode" extensie ontstaat een permanente bidirectionele bridge: cookies, page-content, lokale bestanden, geheugen-strings — alles uitwisselbaar. Geen Web Store dus geen takedown-mechanisme. HKCU-only dus onzichtbaar voor admin-scoped scans.
ExtensionInstallBlocklist=* + ExtensionInstallAllowlist met expliciete whitelist. DeveloperToolsAvailability=disabled. NativeMessagingBlocklist/NativeMessagingAllowlist (Chrome/Edge 84+). Sysmon EID 13 op de NMH-keys.
IT-admin opent PowerShell voor troubleshooting — en krijgt een achterdeur cadeau
Append een regel aan $HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 (PS 7) of WindowsPowerShell\ (PS 5.1). PowerShell laadt dit bestand bij elke nieuwe sessie — vóór de prompt verschijnt, zonder waarschuwing. Geen admin: het is de user-eigen Documents-folder.
Aanvaller compromiteert ontwikkelaar-account (doelgroep die het meeste PowerShell gebruikt). Injecteert één regel: . \\share\helper.ps1. Vervolgens opent IT-admin op datzelfde endpoint PowerShell voor troubleshooting — achterdeur actief. Variant: function-override van Get-Credential die wachtwoorden exfiltreert vóór teruggave.
ConstrainedLanguage mode via AppLocker/WDAC. Set-ExecutionPolicy AllSigned via Computer Configuration. Event 4104 (ScriptBlockLogging) met SIEM-alert op profile-paden. Dagelijkse baseline van profile.ps1 mtime + hash via Intune.
F3 verdient een aparte plek. Niet omdat de techniek bijzonder ingewikkeld is, maar omdat de attack surface nieuw, onbekend en groot is. Veel IT-managers hebben Copilot+ PC's in hun fleet zonder zich te realiseren wat er continu wordt vastgelegd.
Microsoft kondigt Recall aan voor Copilot+ PC's. Kevin Beaumont en Alex Hagenah tonen aan dat de SQLite-database onversleuteld is en met één SQL-query gedumpt kan worden (TotalRecall PoC). Publieke verontwaardiging.
Microsoft trekt de release in. Belofte: opt-in, Windows Hello-vereist, EFS-encryptie voor de database.
Recall v2 in Insider-channel. Data nu EFS-encrypted — maar de sleutel zit in user-DPAPI en is daarmee toegankelijk voor elk proces in user-context. Hagenah toont aan dat exfiltratie nog steeds triviaal is.
Recall is GA voor consumenten Copilot+ PC's. Voor Enterprise standaard uit, máár GPO-opt-in mogelijk en het gebeurt onbewust. Onderzoeksgemeenschap waarschuwt nog steeds. Onze WPB-test detecteert de leesbaarheid in seconden.
Dit is geen anti-Microsoft-verhaal. Recall is een legitieme feature met legitieme use-cases. Het probleem is dat de feature beschikbaar wordt op zakelijke endpoints vóórdat de enterprise-controls volwassen zijn. Dat is een governance-gat, geen vendor-fout. Maar dat gat bestaat — en het is úw gat zolang u Copilot+ hardware in uw fleet heeft zonder DisableAIDataAnalysis-GPO.
| Vector | Admin? | Persistent? | Standaard EDR-detectie? |
|---|---|---|---|
| F2 — PATH-hijack | Nee | Ja, over reboot | Beperkt — baseline-vergelijking nodig |
| F3 — Recall AI-data | Nee | Data is al statisch | Nieuw — Defender for Endpoint sinds Q1 2026 |
| F4 — Native Messaging Host | Nee | Ja, tot extensie weg | Zelden — legitieme feature |
| F5 — $PROFILE injection | Nee | Ja, elke PS-sessie | Goed — mits ScriptBlockLogging aanstaat |
Net als bij de eerdere posts in deze reeks blijft de aanpak hetzelfde — alleen de attack surface verandert.
WPB-test draait deel F op de werkplek. Per vector een groen/oranje/rood resultaat. Geen aannames over wat de GPO's zóuden moeten doen — bewijs wat ze daadwerkelijk afdwingen. Inclusief Recall-leesbaarheid op Copilot+ endpoints.
Negen tegenmaatregelen die samen alle vier de vectoren afdekken: GPO PowerShell-policy (ConstrainedLanguage + AllSigned), GPO DisableAIDataAnalysis, ExtensionInstallBlocklist, NativeMessagingBlocklist, "Disable changing environment variables", Sysmon EID 13 baselining, ScriptBlockLogging, Conditional Access voor Copilot+, periodieke endpoint-baseline rapportage.
Governance die zorgt dat nieuwe Copilot+ hardware niet langer een blinde vlek is in de asset-inventory. Procurement-policy die AI-features expliciet als risico-categorie classificeert. Mapping naar NEN 7510 (6.10), ISO 27001 A.8 (Asset Management) en NIS2 art. 21 (Cybersecurity Risk-Management). En AVG-toets: Recall slaat persoonsgegevens op die u niet onder controle heeft.
Geen volgordedwang. Begin bij de maatregel met de minste impact op uw productie-omgeving en bouw op.
De stelling:
Drie controles die elke IT-manager binnen twee weken kan doen:
DisableAIDataAnalysis actief?Als alle drie groen zijn, bent u vóór op het gros van de Nederlandse zakelijke werkplekken. Zo niet — dan kennen we elkaars werkagenda voor de komende sprint.
Wachtwoorden, MFA-codes en e-mails die ooit op het scherm gestaan hebben, zijn op een Copilot+ PC zonder de juiste GPO geen vluchtige beelden meer.
Het zijn doorzoekbare data — toegankelijk voor elk proces in user-context.
Christian Glebbeek — iCt Horse
Connecting the dots — testen, mitigeren, voorkomen