What would actually have stopped this, and what the defaults already did
Midnight Blizzard's CaptiveCrunch campaign compromises captive portals at hotels and airports, redirects travellers to a ClickFix lure, and delivers ChocoShell — a PowerShell stealer that takes browser cookies, saved passwords, Microsoft 365 SSO tokens and Wi-Fi keys. This maps its real capability chain onto specific Windows, Edge and Chrome settings: 50 controls, 37 of them Group Policy. Every registry path and every quoted default below is joined from the Windows, Edge and Chrome reference data at build time, not written by hand.
Every control also carries what it costs, on two separate axes: how hard it is to deploy, and how much the user notices. They are not the same thing. 39 are broadly deployable, 7 need a project first, and 4 belong only on restricted builds — while 39 of the 50 are invisible or near-invisible to users and only 4 genuinely change how people work.
50controls
9default protects
25default enables
18in the MS baseline
19beyond the baseline
39invisible to users
Sources: static analysis of SHA256 be99857449d2856d… (sample not executed), and Microsoft Security Blog, 31 July 2026.
What the defaults already bought you
The clearest evidence that a default works is an attacker spending code to defeat it. This sample does that five times over, and the developer's own comments name the controls:
App-Bound Encryption forces SYSTEM token impersonation and NCrypt to reach the browser master key. Chromium v120+ cookie-file locking forces a VSS shadow copy. Browser auto-de-elevation forces the browser to be launched through Task Scheduler COM instead of directly. AMSI forces a reflection bypass that dodges the known [Ref].Assembly signature. Defender behaviour monitoring forces every network call through a WinHttp COM object, because Behavior:Win32/ClickFix.SZZ only fires when a PowerShell web cmdlet and ScriptBlock::Create appear in the same process.
Three of those five push the attacker into needing administrator rights. That is the whole argument for the control below.
Local admin: what dies, what survives
Users here hold local administrator rights by default. ChocoShell branches on exactly that check — IsAdmin and membership of S-1-5-32-544 — so it is the single variable that decides how much of the chain runs. Microsoft's write-up confirms the fallback: with no local admin the silent bypasses fail and it resorts to a visible RunAs prompt.
Dies without local admin
Requires elevation, so the capability is simply unavailable
Silent UAC bypass — all three paths (SilentCleanup, wsreset COM, sdclt /KickOffElev) need a split admin token
SYSTEM token impersonation — and with it Chrome/Edge App-Bound Encryption master key decryption
VSS shadow copy — the fallback for reading locked cookie databases
Elevated re-run stub — the second-stage escalated payload
Survives regardless
Runs entirely in user context — removing admin does not touch it
CDP cookie theft — --remote-debugging-port reads cookies already decrypted in memory, bypassing ABE completely
Firefox family cookies — cookies.sqlite is unencrypted, including Waterfox, LibreWolf, Floorp and Zen
Microsoft 365 SSO tokens — .tbres files in the user's own TokenBroker cache
Wi-Fi credentials — user-scope profiles need no elevation
So removing local admin is necessary and not sufficient. It halves the chain; it does not stop credential theft. The controls that answer the surviving half are RemoteDebuggingAllowed and token protection.
Checked against Microsoft’s own baseline
Of the 50 controls here, 18 are also set by the Microsoft Security Baselines for Windows 11 25H2 and Edge v139, and 19 go beyond them. Each control below shows which, with the exact value the baseline sets.
The clearest confirmation is the control this page is built around: the baseline sets ConsentPromptBehaviorAdmin = 2, which is precisely “prompt for consent on the secure desktop” — the setting that breaks all three UAC bypasses at once. It also sets EnableLUA = 1, FilterAdministratorToken = 1, ApplicationBoundEncryptionEnabled = 1 and every SmartScreen control recommended here.
The most important gap runs the other way. The Edge v139 baseline does not set RemoteDebuggingAllowed — its 20 settings do not include it. The single highest-value change on this page is therefore not something Microsoft’s baseline will do for you, and neither are the two password-reuse controls that implement Microsoft’s own written advice for this campaign.
One reading trap worth knowing: the baseline enables Defender features by setting an inverted value — DisableBehaviorMonitoring = 0 means behaviour monitoring is on. Comparing raw numbers across such a pair reads as disagreement when it is agreement, so the effect is spelled out rather than left as a bare number.
Keeping Wi-Fi, captive portals and the browser usable
None of the recommended wireless controls stop a traveller getting online, and that is a design constraint here rather than a happy accident. Checking each against its own documentation:
Captive portals keep working
Quoted from the policy definitions themselves
Hotspot authentication off — the ADMX states users then authenticate to WLAN hotspots using a web browser. That is the normal hotel and airport flow; what goes away is automated WISPr credential submission and silent reconnect on commercial roaming hotspots. It does not touch WPA2-PSK, WPA3 or 802.1X: WISPr runs at the application layer after association, so it cannot affect link-layer Wi-Fi security. Nothing in the 4,741 Windows policies configures PSK at all — that lives in Wireless Network (802.11) Policies or an Intune profile.
Minimize simultaneous connections (1) — blocks new automatic connections only. The ADMX is explicit that users can still manually connect to any network.
Prohibit non-domain when domain-connected — automatic attempts are blocked, but a manual Wi-Fi connection is still allowed and simply drops the existing one. A traveller can always get online.
No auto-connect to open hotspots — removes drive-by association only. Manual connection is untouched.
Worth testing before you ship
Interactions that are easy to miss
Always-on VPN plus non-domain blocking — if the tunnel presents as a domain-authenticated network, reconnecting Wi-Fi mid-session can behave unexpectedly. Test the sequence a traveller actually performs.
The portal sign-in happens before the tunnel — there is always a window on the untrusted network. That is why the browser controls and ASR matter rather than relying on VPN alone.
Remote debugging off — invisible to everyone except web developers. Exempt that group by OU rather than leaving it enabled estate-wide.
Sign-in risk policies — travellers legitimately look like impossible travel. Tune before enforcing, or you will lock out the people you are protecting.
Considered and rejected
Recorded so they do not get proposed again. Both look attractive against ClickFix and neither survives contact with the documentation.
Blocking the Edge clipboard site permission (DefaultClipboardSetting = 2). The obvious move, since ClickFix depends on the page putting a command on the clipboard. But Edge's own policy text says it “doesn't affect sanitized clipboard writes or trusted copy and paste operations” — which is the path a lure page uses. Real cost to legitimate web apps, no established benefit against this technique.
Disabling WISPr hotspot probing (Enable Hotspot Authentication). It looks like a captive-portal control and it is not. WISPr appears nowhere in the static analysis, nowhere in the sample and nowhere in Microsoft's write-up — and it blocks no part of the chain, because the portal redirect rides on the connectivity check rather than on WISPr probing. The lure page and the paste happen exactly as before. What it removes is automated credential submission and silent reconnect on commercial roaming hotspots: a narrow anti-credential-harvesting measure, not a defence against this campaign.
Removing Win+R for everyone. Kept in the list but marked high-assurance rather than recommended: Microsoft's write-up describes this campaign instructing users to run the script via Windows Terminal, which removing the Run box does not touch. Significant friction for technical staff, partial coverage at best.
5 controls · 4 where the default works in the attacker's favour
Initial access — T1557 Adversary-in-the-Middle
Allow Windows to automatically connect to suggested open hotspots, to networks shared by contacts, and to hotspots offering paid servicesset to Disabled
Windows ADMXDefault enables thisHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereMicrosoft baseline sets this
Left unset the user chooses, and auto-connect to open hotspots is exactly how a traveller lands on an attacker-controlled network without deciding to. Note this is one of the 33 tattooed settings: it writes outside a Policies branch, so Group Policy cannot cleanly revert it.
Counters
Automatic association with a hostile open network
Cost of deploying
Negligible. Users connect to hotspots deliberately instead of automatically.
Microsoft Security Baseline setsAutoConnectAllowedOEM = 0
Microsoft's wording for the unset stateIf this policy setting is not configured or is enabled, users can choose to enable or disable either "Connect to suggested open hotspots" or "Connect to networks shared by my contacts".
Prohibit connection to non-domain networks when connected to domain authenticated networkset to Enabled
Windows ADMXDefault enables thisHolds against a local adminBroadly deployableBarely noticeableGeneral hardening, not evidenced hereMicrosoft baseline sets this
Stops the machine bridging a hotel network and the corporate network at the same time. Automatic connections are blocked; a manual connection over Wi-Fi is still allowed and simply drops the existing one, so a traveller can always get online.
Counters
Simultaneous hostile-network and corporate-network attachment
Cost of deploying
Manual connection still works but disconnects the current network first. Test against always-on VPN, where the tunnel may present as a domain-authenticated network.
Microsoft Security Baseline setsfBlockNonDomain = 1
Microsoft's wording for the unset stateIf this policy setting is not configured or is disabled, computers are allowed to connect simultaneously to both domain and non-domain networks.
Minimize the number of simultaneous connections to the Internet or a Windows Domainset to 1
Windows ADMXDefault not statedHolds against a local adminBroadly deployableBarely noticeableGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Value 1 blocks new automatic internet connections when the machine already has one over a preferred medium, narrowing the window in which a hostile Wi-Fi network sits alongside a trusted one. The ADMX is explicit that users can still manually connect to any network, so it does not strand a traveller.
Counters
Simultaneous hostile-network attachment
Cost of deploying
Blocks automatic secondary connections only. Manual connection to any network still works.
Restrict Wi-Fi to MDM-provisioned networksset to High-assurance builds only
Not Group PolicyDefault enables thisHolds against a local adminHigh-assurance builds onlyChanges how people work
Microsoft frames this as something organisations can choose to do, not as general guidance, and the qualification matters. A device that will only associate with provisioned SSIDs cannot join a hotel, airport or conference network at all — which is precisely the situation this campaign targets, so the control removes the use case rather than protecting it. Sound for restricted builds that never need public Wi-Fi. For everyone else the cellular-first and always-on-VPN approach below addresses the same risk without grounding the traveller.
Counters
Entire captive-portal initial access vector
Cost of deploying
Grounds the traveller. A device that will only join provisioned SSIDs cannot use a hotel, airport or conference network at all.
Where
Intune Wi-Fi profile / WLAN policy
MITRE
T1557 Adversary-in-the-Middle
Always-on VPN or corporate travel routerset to Deploy - preferred control for travelling users
Not Group PolicyDefault enables thisHolds against a local adminBroadly deployableBarely noticeable
The workable answer for a general corporate estate, and the one Microsoft leads with: prefer private connectivity — mobile hotspot, eSIM or satellite — over public Wi-Fi, and where public Wi-Fi is unavoidable bring up an encrypted tunnel to trusted infrastructure before touching anything sensitive. That defeats the DNS and HTTP manipulation the compromised portal relies on while leaving the user able to work. Note the captive-portal sign-in itself happens before the tunnel comes up, so pair it with the auto-connect and hotspot-probe controls above.
Counters
DNS/HTTP redirection to the lure infrastructure
Cost of deploying
Needs capacity planning and a captive-portal sign-in window before the tunnel comes up.
Where
Intune VPN profile / hardware travel router
MITRE
T1557 Adversary-in-the-Middle
The lure and the paste
9 controls · 5 where the default works in the attacker's favour
Initial access — T1204.002 User Execution
SmartScreenEnabledset to Enabled
Edge policyDefault protectsWeakened by local adminBroadly deployableNo user-visible changeMicrosoft baseline sets this
SmartScreen is on by default, but unset it is a user preference. Setting it by policy removes the toggle so the lure page cannot be reached by a user who has previously turned it off.
Counters
Reputation check on the fake update/verification landing page
Cost of deploying
Removes the user's ability to turn SmartScreen off.
Microsoft Security Baseline setsSmartScreenEnabled = 1
Microsoft's wording for the unset stateIf you don't configure this setting, users can choose whether to use Microsoft Defender SmartScreen.
Stated defaultBy default, Microsoft Defender SmartScreen is turned on.
PreventSmartScreenPromptOverrideset to Enabled
Edge policyDefault enables thisWeakened by local adminBroadly deployableBarely noticeableMicrosoft baseline sets this
Unset, the user can click straight through a SmartScreen warning to the lure. Under pressure from a fake driver-repair prompt that is exactly what they do.
Counters
User click-through on the ClickFix landing page
Cost of deploying
Users can no longer click through a warning; expect occasional false-positive escalations.
Microsoft Security Baseline setsPreventSmartScreenPromptOverride = 1 (SmartScreenPromptOverride off)
Microsoft's wording for the unset stateIf you disable or don't configure this setting, users can ignore Microsoft Defender SmartScreen warnings and continue to the site.
PreventSmartScreenPromptOverrideForFilesset to Enabled
Edge policyDefault enables thisWeakened by local adminBroadly deployableBarely noticeableMicrosoft baseline sets this
Unset, the user can complete a download SmartScreen flagged as unverified. The campaign delivers fake utilities and updaters this way.
Counters
Download of the fake updater/driver utility
Cost of deploying
Blocks completion of downloads SmartScreen flags. Have an exception route.
Microsoft Security Baseline setsPreventSmartScreenPromptOverrideForFiles = 1 (SmartScreenPromptOverrideForFiles off)
Microsoft's wording for the unset stateIf you disable or don't configure this policy, users can ignore Microsoft Defender SmartScreen warnings and complete unverified downloads.
SmartScreenPuaEnabledset to Enabled
Edge policyDefault is neutralWeakened by local adminBroadly deployableBarely noticeableMicrosoft baseline sets this
Potentially unwanted app blocking is off by default, so this layer is simply absent until you turn it on. Catches the fake system utility class of payload.
Counters
Fake system utility and updater downloads
Cost of deploying
Occasional false positives on grey-area utilities.
Microsoft Security Baseline setsSmartScreenPuaEnabled = 1
Microsoft's wording for the unset stateIf you don't configure this setting, users can choose whether to use potentially unwanted app blocking with Microsoft Defender SmartScreen.
Stated defaultPotentially unwanted app blocking with Microsoft Defender SmartScreen is turned off by default.
DownloadRestrictionsset to 1 (2 for stricter builds)
Edge policyDefault is neutralWeakened by local adminBroadly deployableBarely noticeableBeyond the Microsoft baseline
Blocks dangerous and unwanted downloads outright rather than warning. The ADMX does not state a default, so no default claim is made.
Counters
Delivery of the executable payload variants
Cost of deploying
Level 1 blocks malicious and dangerous file types. Level 2 also blocks unwanted downloads and is noticeably stricter.
Microsoft's wording for the unset stateIf you don't configure this policy or set the 'DefaultDownloadSecurity' option, the downloads go through the usual security restrictions based on Microsoft Defender SmartScreen analysis results.
Configure Windows Defender SmartScreenset to Enabled - Warn and prevent bypass
Windows ADMXDefault enables thisWeakened by local adminBroadly deployableBarely noticeableMicrosoft baseline sets this
The shell-level check catches the downloaded binary after the browser hands it off. Unset the user is prompted and may choose to run anyway.
Counters
Execution of the downloaded Golang RAT variants
Cost of deploying
Users cannot override the shell warning; needs an exception route.
Windows Components\Windows Defender SmartScreen\Explorer
Scope
Machine
MITRE
T1204.002 User Execution
Microsoft Security Baseline setsEnableSmartScreen = 1
Microsoft's wording for the unset stateIf you do not configure this policy, SmartScreen will be enabled by default, but users may change their settings.
Prevent bypassing Windows Defender SmartScreen prompts for filesset to Enabled
Windows ADMXDefault enables thisWeakened by local adminBroadly deployableBarely noticeableBeyond the Microsoft baseline
Removes the user's ability to override the shell warning on a downloaded file.
Microsoft's wording for the unset stateIf you disable or don't configure this setting, employees can ignore Windows Defender SmartScreen warnings and continue the download process.
Remove Run menu from Start Menuset to Enabled
Windows ADMXDefault enables thisWeakened by local adminHigh-assurance builds onlyChanges how people workGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Closes the Win+R paste target used by many ClickFix lures. Weigh it carefully for this campaign specifically: Microsoft's write-up describes lures instructing users to run the verification script via Windows Terminal, which this does not touch. Meaningful against other ClickFix variants, not against the one documented here.
Counters
The paste-and-run step of the ClickFix lure
Cost of deploying
Removes Win+R for everyone, which is significant friction for technical staff, and leaves Windows Terminal and PowerShell reachable anyway.
Microsoft's wording for the unset stateIf you disable or do not configure this setting, users will be able to access the Run command in the Start menu and in Task Manager and use the Internet Explorer Address Bar.
User awareness of paste-and-run luresset to Train
Not Group PolicyDefault is neutralHolds against a local adminBroadly deployableNo user-visible change
Microsoft's guidance names this directly: teach users to treat fake verification prompts that invoke cmd.exe, PowerShell, rundll32.exe or mshta.exe as malicious. The chain requires a human to act; this is the only control at that layer.
Counters
The social engineering step itself
Cost of deploying
Ongoing programme rather than a one-off.
Where
Security awareness programme
MITRE
T1204.002 User Execution
Script execution and visibility
8 controls · 1 where the default works in the attacker's favour
Defense evasion — T1562.001 Impair Defenses
AMSI script scanningset to Built in
Not Group PolicyDefault protectsWeakened by local adminBroadly deployableNo user-visible change
AMSI is on by default and there is no policy needed to enable it. The proof it matters is that the sample spends dedicated code on defeating it, setting amsiInitFailed via reflection on [PSObject].Assembly to dodge the known [Ref].Assembly signature.
Counters
ScriptBlock scanning of the downloaded Stage 3 module
Cost of deploying
On by default; nothing to deploy.
Where
Built into Windows
MITRE
T1562.001 Impair Defenses
Turn on script scanningset to Enabled
Windows ADMXDefault protectsWeakened by local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereMicrosoft baseline sets this
Keeps Defender scanning scripts. The ADMX does not state the unset behaviour so no default claim is made.
Counters
Stage 3 tool module loaded via ScriptBlock::Create
Cost of deploying
On by default; confirm it has not been turned off.
Windows Components\Microsoft Defender Antivirus\Real-time Protection
Scope
Machine
MITRE
T1562.001 Impair Defenses
Microsoft Security Baseline setsDisableScriptScanning = 0 (ScriptScanning on)
Microsoft's wording for the unset stateIf you enable or do not configure this setting, script scanning will be enabled.
Turn on behavior monitoringset to Enabled
Windows ADMXDefault protectsWeakened by local adminBroadly deployableNo user-visible changeMicrosoft baseline sets this
Behaviour monitoring is what raises Behavior:Win32/ClickFix.SZZ. The sample's author engineered around that specific signature by routing all network calls through the WinHttp COM object instead of PowerShell web cmdlets, because the signature requires a PS web cmdlet and ScriptBlock::Create in the same process.
Counters
The ClickFix behavioural detection the actor evades
Cost of deploying
On by default; confirm it has not been turned off.
Windows Components\Microsoft Defender Antivirus\Real-time Protection
Scope
Machine
MITRE
T1562.001 Impair Defenses
Microsoft Security Baseline setsDisableBehaviorMonitoring = 0 (BehaviorMonitoring on)
Microsoft's wording for the unset stateIf you enable or do not configure this setting, behavior monitoring will be enabled.
Turn on PowerShell Script Block Loggingset to Enabled
Windows ADMXDefault not statedHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereMicrosoft baseline sets this
The AMSI bypass silences scanning but not ETW script block logging, so 4104 events still capture the deobfuscated Stage 3 module. This is the highest-value forensic control for this chain and it is off unless you turn it on.
Counters
Post-incident reconstruction of what Stage 3 did
Cost of deploying
Event volume. Size the log and forward it off-host.
Microsoft Security Baseline setsEnableScriptBlockLogging = 1
Turn on PowerShell Transcriptionset to Enabled
Windows ADMXDefault not statedHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Captures the session transcript including the pasted lure command. Send transcripts off-host: the sample deletes %TEMP%\upd.ps1 and zeroes memory during cleanup.
Counters
Anti-forensic cleanup of on-host artefacts
Cost of deploying
Produces a lot of files. Set an output path off the local disk.
Stated defaultBy default, Windows PowerShell will record transcript output to each users' My Documents directory, with a file name that includes 'PowerShell_transcript', along with the computer name and time started. If you disable this policy setting, transcripting of PowerShell-based applications is disabled by default, although transcripting can still be enabled through the Start-Transcript cmdlet.
Turn on Module Loggingset to Enabled
Windows ADMXDefault is neutralHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Records pipeline execution detail for the modules the Stage 3 tool module brings in.
Microsoft's wording for the unset stateIf this policy setting is not configured, the LogPipelineExecutionDetails property of a module or snap-in determines whether the execution events of a module or snap-in are logged.
Stated defaultBy default, the LogPipelineExecutionDetails property of all modules and snap-ins is set to False.
WDAC or AppLocker enforcing Constrained Language Modeset to Enforce
Not Group PolicyDefault enables thisHolds against a local adminNeeds a project firstUsers will notice
CLM blocks the .NET reflection the AMSI bypass depends on and blocks ScriptBlock::Create on downloaded content. This breaks the chain at Stage 2 entry rather than mitigating it later, and it is the single most effective non-default control in this theme.
Counters
AMSI bypass and Stage 3 module load together
Cost of deploying
Significant app-compat work. Audit mode first, and expect to maintain exceptions. Highest value in this theme once done.
Where
WDAC policy / AppLocker
MITRE
T1562.001 Impair Defenses
Configure Attack Surface Reduction rulesset to Enabled - Block
Windows ADMXDefault is neutralHolds against a local adminBroadly deployableBarely noticeableGeneral hardening, not evidenced hereMicrosoft baseline sets this
ASR rules are not applied until configured. Relevant rules here: block executable content from email and webmail, block JavaScript/VBScript from launching downloaded executable content, and block process creations from PSExec and WMI commands.
Counters
Payload execution and script-launched executables
Cost of deploying
Run in audit mode first; some rules have known false positives.
Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Attack Surface Reduction
Scope
Machine
MITRE
T1059.001 PowerShell
Microsoft Security Baseline setsExploitGuard_ASR_Rules = 1
Microsoft's wording for the unset stateAfter enabling this setting, you can set each rule to the following in the Options section: - Block: the rule will be applied - Audit Mode: if the rule would normally cause an event, then it will be recorded (although the rule will not actually be applied) - Off: the rule will not be applied - Not Configured: the rule is enabled with default values - Warn: the rule will be applied and the end-user will have the option to bypass the block Unless the ASR rule is disabled, a subsample of audit events are collected for ASR rules will the value of not configured. Enter each rule on a new line as a name-value pair: - Name column: Enter a valid ASR rule ID - Value column: Enter the status ID that relates to state you want to specify for the associated rule The following status IDs are permitted under the value column: - 1 (Block) - 0 (Off) - 2 (Audit) - 5 (Not Configured) - 6 (Warn) Example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 0 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 1 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 2 Disabled: No ASR rules will be configured.
Elevation - the branch point
8 controls · 3 where the default works in the attacker's favour
Privilege escalation — T1548.002 Bypass UAC
User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Modeset to Prompt for consent on the secure desktop
Security OptionDefault enables thisHolds against a local adminBroadly deployableUsers will noticeMicrosoft baseline sets this
This is the control that breaks all three UAC bypasses at once. The default auto-elevates signed Windows binaries without prompting, which is precisely what SilentCleanup, wsreset.exe and sdclt.exe /KickOffElev abuse. Requiring a prompt turns three silent escalations into three visible ones.
Counters
SilentCleanup task hijack / wsreset COM hijack / sdclt KickOffElev
Cost of deploying
More prompts for admin users, which on an estate where everyone is an admin is a visible change. That visibility is the point.
Microsoft Security Baseline setsConsentPromptBehaviorAdmin = 2
NoteThe Security Options worksheet documents no unset behaviour, so no default is quoted. The verdict here comes from the incident evidence.
User Account Control: Run all administrators in Admin Approval Modeset to Enabled
Security OptionDefault protectsHolds against a local adminBroadly deployableNo user-visible changeMicrosoft baseline sets this
On by default. If this is disabled, every admin process runs fully elevated and the bypass chain is not even needed. Verify it has not been turned off.
Counters
The split-token model the whole UAC branch depends on
NoteThe Security Options worksheet documents no unset behaviour, so no default is quoted. The verdict here comes from the incident evidence.
User Account Control: Switch to the secure desktop when prompting for elevationset to Enabled
Security OptionDefault protectsHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereBeyond the Microsoft baseline
On by default. Prevents the elevation prompt being spoofed or automated by the calling process.
NoteThe Security Options worksheet documents no unset behaviour, so no default is quoted. The verdict here comes from the incident evidence.
User Account Control: Admin Approval Mode for the Built-in Administrator accountset to Enabled
Security OptionDefault is neutralHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereMicrosoft baseline sets this
Ensures the built-in Administrator is also subject to Admin Approval Mode rather than running unrestricted.
Microsoft Security Baseline setsFilterAdministratorToken = 1
NoteThe Security Options worksheet documents no unset behaviour, so no default is quoted. The verdict here comes from the incident evidence.
User Account Control: Only elevate executables that are signed and validatedset to Enabled
Security OptionDefault is neutralWeakened by local adminNeeds a project firstUsers will noticeGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Restricts elevation to signed binaries. Note the bypasses here abuse legitimately signed Microsoft binaries, so this narrows the surface without closing this particular path.
NoteThe Security Options worksheet documents no unset behaviour, so no default is quoted. The verdict here comes from the incident evidence.
Always install with elevated privilegesset to Disabled
Windows ADMXDefault protectsHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereMicrosoft baseline sets this
Disabled by default and must stay that way. If enabled it hands any user a trivial SYSTEM escalation that makes the UAC bypass chain redundant.
Counters
An easier escalation path than the one the sample uses
Microsoft Security Baseline setsAlwaysInstallElevated = 0
Microsoft's wording for the unset stateIf you disable or do not configure this policy setting, the system applies the current user's permissions when it installs programs that a system administrator does not distribute or offer.
Remove local administrator rights from standard usersset to Enforce
Not Group PolicyDefault enables thisThis is the admin controlNeeds a project firstUsers will notice
The organising control for this incident. The sample explicitly checks IsAdmin and the S-1-5-32-544 membership and branches on the answer. Microsoft's write-up confirms it: with no local admin the silent bypasses fail and the malware falls back to a visible RunAs prompt the user cannot satisfy. Read the what-dies-what-survives split before treating this as sufficient.
Counters
Silent escalation / SYSTEM impersonation / VSS access
Cost of deploying
A programme, not a setting: app compat, install workflows and a privilege-elevation story for genuine admin tasks. Still the highest-value item here.
Where
Entra or AD group membership
MITRE
T1078.003 Valid Accounts
Windows LAPS for local administrator passwordsset to Deploy
Not Group PolicyDefault enables thisHolds against a local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced here
Where local admin must exist, unique per-device managed passwords stop one harvested credential becoming lateral movement across the estate.
Counters
Reuse of a shared local admin credential
Cost of deploying
Straightforward to deploy alongside admin-rights work.
Where
Windows LAPS
MITRE
T1078.003 Valid Accounts
Browser secret extraction
13 controls · 7 where the default works in the attacker's favour
Credential access — T1539 Steal Web Session Cookie
RemoteDebuggingAllowedset to Disabled
Edge policyDefault enables thisWeakened by local adminBroadly deployableNo user-visible changeBeyond the Microsoft baseline
The highest-value non-default change on this page. Unset, remote debugging is available, and the sample launches Edge with --remote-debugging-port via Task Scheduler COM then calls Network.getAllCookies to read cookies already decrypted in browser memory. This bypasses App-Bound Encryption entirely and needs no administrator rights, so it is the one route that removing local admin does not touch. Marked partial only because a local administrator could remove the policy key itself.
Counters
CDP cookie theft against Edge
Cost of deploying
Breaks browser remote debugging for web developers. Exempt that group by OU rather than leaving it on for everyone.
Microsoft's wording for the unset stateIf you enable or don't configure this policy, users can use remote debugging by specifying --remote-debug-port and --remote-debugging-pipe command line switches.
ApplicationBoundEncryptionEnabledset to Enabled
Edge policyDefault not statedWeakened by local adminBroadly deployableNo user-visible changeMicrosoft baseline sets this
Keep App-Bound Encryption on. The ADMX does not state its unset behaviour so no default claim is made here, but the incident evidence is unambiguous: the sample needs SYSTEM token impersonation and NCrypt to get past it, which is what makes that route admin-only.
Counters
ABE v20 master key decryption
Cost of deploying
On in practice; verify it has not been turned off.
Microsoft Security Baseline setsApplicationBoundEncryptionEnabled = 1
Microsoft's wording for the unset stateEnabling this policy or leaving it unset binds the encryption keys used for local data storage to Microsoft Edge whenever possible.
PasswordManagerEnabledset to Leave enabled unless a managed password manager exists
Edge policyDefault enables thisWeakened by local adminNeeds a project firstUsers will noticeBeyond the Microsoft baseline
Tempting, and wrong for most organisations. The Edge store is the one credential location on this list that is actually defended: it sits behind App-Bound Encryption, and the attacker needed SYSTEM token impersonation to reach it. Turning it off without a managed alternative does not remove the credentials, it moves them somewhere with no protection at all — reuse, a text file, a personal password manager outside your control. Most organisations do not have enterprise password management, so for them the correct action here is to leave this alone and take the four cheaper password controls below instead. Disable it only once a managed alternative is actually in users' hands.
Counters
Extraction of saved passwords from Login Data
Cost of deploying
If you disable it without a replacement you push credentials into stores you cannot see or defend, which is a net loss. The prerequisite is a deployed and adopted password manager, not merely a purchased one.
Microsoft's wording for the unset stateIf you enable or don't configure this policy, users can save and add their passwords in Microsoft Edge.
PasswordProtectionLoginURLsset to Your corporate sign-in URLs
Edge policyDefault is neutralWeakened by local adminBroadly deployableBarely noticeableBeyond the Microsoft baseline
Captures salted hashes of the passwords users type on your own sign-in pages, so Edge can recognise the same password being reused elsewhere. This is what turns Microsoft's advice for this campaign — do not reuse corporate credentials on hotel, conference or guest-network registration pages — from a poster into a control that actually fires. Unset, no fingerprints are captured and nothing can be detected.
Counters
Corporate password reuse on a hostile captive-portal registration page
Cost of deploying
Requires listing your sign-in URLs. No effect on users until a reuse actually happens.
Registry
Software\Policies\Microsoft\Edge!
Where
Administrative Templates / Microsoft Edge
Scope
Machine + User
MITRE
T1555.003 Credentials from Web Browsers
Microsoft's wording for the unset stateIf you disable this policy or don't configure it, no password fingerprints are captured.
PasswordProtectionWarningTriggerset to 1
Edge policyDefault is neutralWeakened by local adminBroadly deployableBarely noticeableBeyond the Microsoft baseline
The trigger half of the pair above: warns the user at the moment they reuse a protected corporate password on a suspicious site. Useless on its own — set PasswordProtectionLoginURLs as well or there are no fingerprints to match against.
Counters
Corporate password reuse on a hostile captive-portal registration page
Cost of deploying
An occasional warning at the moment of reuse. Invisible the rest of the time.
Microsoft's wording for the unset stateIf you disable or don't configure this policy, then the warning trigger isn't shown.
PasswordExportEnabledset to Disabled
Edge policyDefault enables thisWeakened by local adminBroadly deployableBarely noticeableGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Removes the Export Password button, closing the one-click bulk extraction route out of the password store. It does not stop this sample, which reads the Login Data file directly, but it costs almost nothing and closes an obvious adjacent path. Unset, any user or anyone at their unlocked machine can export the lot.
Counters
Bulk export of the saved-password store
Cost of deploying
Users cannot self-serve a password export during a browser migration; IT does it instead.
Microsoft's wording for the unset stateIf enabled or not configured, users can export saved passwords.
PasswordMonitorAllowedset to Enabled
Edge policyDefault is neutralWeakened by local adminBroadly deployableNo user-visible changeGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Does not prevent the theft; shortens the time before you learn about it. Alerts users when a stored password turns up in a known breach, which is how stolen credentials usually surface after an infostealer. Unset it is a user preference, so coverage is patchy exactly where you need it.
Counters
Post-theft detection of exposed credentials
Cost of deploying
A helpful user-facing feature. Sends password hashes to the Microsoft service - check against data-handling policy.
Microsoft's wording for the unset stateIf you don't configure the policy, users can turn this feature on or off.
BrowserSigninset to 0
Edge policyDefault enables thisWeakened by local adminHigh-assurance builds onlyChanges how people workGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Limits how much corporate session material is resident in the browser profile at all. Consider carefully against usability.
Counters
Value of the stolen browser profile
Cost of deploying
Disabling browser sign-in removes Edge profile sync and much of the managed-browser story. For most estates token protection is the better answer.
Registry
Software\Policies\Microsoft\Edge!BrowserSignin
Where
Administrative Templates / Microsoft Edge
Scope
Machine + User
MITRE
T1539 Steal Web Session Cookie
Microsoft's wording for the unset stateIf you don't configure this policy, users can decide if they want to enable the browser sign-in option and use it as they see fit.
Stated defaultSigning in to the browser doesn't mean that sync is turned on by default; the user must separately opt in to use this feature. By default, this allows the user to choose whether they want to sync to their account, unless sync is disabled by the domain admin or with the 'SyncDisabled' policy.
Browser cookie-file locking and auto-de-elevationset to Built in
Not Group PolicyDefault protectsWeakened by local adminBroadly deployableNo user-visible change
Two shipping defaults doing real work. Chromium v120+ opens the cookie database with no sharing, which forces the attacker into a VSS shadow copy (admin only). Chromium also auto-de-elevates, which is why the sample has to launch the browser through Task Scheduler COM with an interactive token rather than directly.
Counters
Direct cookie file reads and elevated browser launch
Cost of deploying
Built into current Chromium; nothing to deploy.
Where
Built into Chromium browsers
MITRE
T1555.003 Credentials from Web Browsers
RemoteDebuggingAllowedset to Disabled
Chrome policyDefault enables thisWeakened by local adminBroadly deployableNo user-visible changeBeyond the Microsoft baseline
The same gap as Edge, on the browser this sample actually goes for first. Google's own wording: set to Enabled or not set, users may use remote debugging via --remote-debugging-port. That is the CDP route to cookies already decrypted in memory, it sidesteps App-Bound Encryption completely, and it needs no administrator rights. Chrome ships the same default as Edge, so covering only Edge leaves the primary target wide open.
Counters
CDP cookie theft against Chrome
Cost of deploying
Breaks remote debugging for web developers. Exempt that group by OU.
Microsoft's wording for the unset stateIf this policy is set to Enabled or not set, users may use remote debugging by specifying --remote-debugging-port and --remote-debugging-pipe command line switches.
ApplicationBoundEncryptionEnabledset to Enabled
Chrome policyDefault protectsWeakened by local adminBroadly deployableNo user-visible changeBeyond the Microsoft baseline
Keep App-Bound Encryption on. Google documents the default plainly where the Edge ADMX is silent: Enabled or unset binds the local-storage encryption keys to Chrome. That binding is what forces the sample into SYSTEM token impersonation and NCrypt against the 'Google Chromekey1' CNG key, which is what makes that whole route admin-only.
Counters
ABE v20 master key decryption on Chrome
Cost of deploying
On by default; setting it pins the behaviour so it cannot be turned off locally.
Microsoft's wording for the unset stateSetting the policy to Enabled or leaving it unset binds encryption keys used for local data storage to Google Chrome whenever that is possible.
PasswordManagerEnabledset to Leave enabled unless a managed password manager exists
Chrome policyDefault enables thisWeakened by local adminNeeds a project firstUsers will noticeBeyond the Microsoft baseline
Same judgement as the Edge entry and for the same reason: the Chrome store is defended by App-Bound Encryption, and turning it off without a managed alternative moves credentials somewhere with no protection at all. Google's wording is that if not set, the user can turn off password saving.
Counters
Extraction of saved passwords from Chrome Login Data
Cost of deploying
Needs a deployed and adopted password manager first, not merely a purchased one.
Microsoft's wording for the unset stateIf not set, the user can turn off password saving.
BrowserSigninset to 0
Chrome policyDefault enables thisWeakened by local adminHigh-assurance builds onlyChanges how people workGeneral hardening, not evidenced hereBeyond the Microsoft baseline
Limits how much corporate session material sits in the Chrome profile at all. Same trade as Edge: for most estates token protection is the better answer than removing sign-in.
Counters
Value of the stolen Chrome profile
Cost of deploying
Removes Chrome profile sync and much of the managed-browser story.
Registry
Software\Policies\Google\Chrome!BrowserSignin
Where
Administrative Templates / Google Chrome
Scope
Machine + User
MITRE
T1539 Steal Web Session Cookie
Microsoft's wording for the unset stateIf this policy is not set then the user can decide if they want to enable browser sign-in in the Google Chrome settings and use it as they see fit.
Stated defaultHowever, it does not mean that Google Chrome Sync will be turned on by default; the user must separately opt-in to use this feature.
Identity and token theft
4 controls · 4 where the default works in the attacker's favour
Not Group PolicyDefault enables thisHolds against a local adminBroadly deployableBarely noticeable
Microsoft's guidance for this campaign states device code flow should be blocked wherever possible and only allowed where necessary. The campaign uses device code phishing to authenticate attacker sessions against legitimate Microsoft sign-in pages.
Counters
Device code phishing stage of the campaign
Cost of deploying
Allow-list the genuine device-code scenarios first, such as shared and headless devices.
Where
Entra Conditional Access
MITRE
T1550.001 Application Access Token
Token protection and continuous access evaluationset to Enable
Not Group PolicyDefault enables thisHolds against a local adminBroadly deployableBarely noticeableGeneral hardening, not evidenced here
Binds refresh tokens to the device so a stolen TokenBroker blob cannot be replayed from attacker infrastructure. This is the control that most directly answers the .tbres theft, which needs no administrator rights.
Counters
Replay of stolen M365 SSO and refresh tokens
Cost of deploying
Check client support before enforcing.
Where
Entra Conditional Access
MITRE
T1550.001 Application Access Token
Phishing-resistant MFA with passkeysset to Enforce
Not Group PolicyDefault enables thisHolds against a local adminNeeds a project firstUsers will notice
Microsoft's guidance names passkeys and phishing-resistant MFA directly. Reduces the value of stolen credentials, though note it does not by itself stop session cookie or refresh token replay.
Counters
Use of harvested credentials for sign-in
Cost of deploying
Rollout programme with a registration and fallback path.
Where
Entra ID
MITRE
T1539 Steal Web Session Cookie
Sign-in risk policyset to Enable
Not Group PolicyDefault enables thisHolds against a local adminBroadly deployableBarely noticeable
Microsoft recommends automating response to risky sign-ins. Stolen tokens replayed from the C2 range present as impossible travel or unfamiliar infrastructure.
Counters
Attacker sign-in using stolen session material
Cost of deploying
Tune to avoid locking out legitimate travellers, who by definition look like impossible travel.
Where
Entra ID Protection
MITRE
T1539 Steal Web Session Cookie
Egress and C2
3 controls · 1 where the default works in the attacker's favour
Command and control — T1071.001 Web Protocols
Prevent users and apps from accessing dangerous websitesset to Enabled - Block
Windows ADMXDefault is neutralHolds against a local adminBroadly deployableBarely noticeableMicrosoft baseline sets this
Defender network protection. Not applied until configured. Blocks the beacon and exfiltration calls to the C2 range at the network layer regardless of which process makes them, which matters because the sample deliberately uses the WinHttp COM object to avoid process-level detection.
Windows Components\Microsoft Defender Antivirus\Microsoft Defender Exploit Guard\Network Protection
Scope
Machine
MITRE
T1071.001 Web Protocols
Microsoft Security Baseline setsEnableNetworkProtection = 1
Microsoft's wording for the unset stateNot configured: Same as Disabled.
Join Microsoft MAPSset to Enabled - Advanced MAPS
Windows ADMXDefault is neutralHolds against a local adminBroadly deployableNo user-visible changeMicrosoft baseline sets this
Cloud-delivered protection improves the chance of catching a novel Stage 3 module. The sample calls Invoke-SigLock to block Defender signature updates during collection, which tells you the actor considers signature freshness a real threat.
Counters
Stage 3 tool module and payload variants
Cost of deploying
Sends telemetry to Microsoft; check against data-handling policy.
Windows Components\Microsoft Defender Antivirus\MAPS
Scope
Machine
MITRE
T1071.001 Web Protocols
Microsoft Security Baseline setsSpynetReporting = 2
Microsoft's wording for the unset stateIf you disable or do not configure this setting, you will not join Microsoft MAPS.
Egress filtering and TLS inspectionset to Deploy
Not Group PolicyDefault enables thisHolds against a local adminNeeds a project firstBarely noticeable
The sample disables TLS certificate validation via WinHttp Option(4)=13056 and posts to a hardcoded IP. Outbound control and inspection surface both the beacon pattern and the single-IP destination.
Counters
Exfiltration to 213.145.86.0/24
Cost of deploying
Egress filtering is broadly deployable. TLS inspection is invasive and has privacy and pinning implications.