Guides · MAEDS 2026 handout

Application, Network and Storage Controls

K-12 hardening playbook · ThreatLocker and AppLocker

Jim Tyler, K-12 Director of Technology · MAEDS 2026 · Updated 2026-10-26

A plain-language playbook for the controls that decide what runs, what it can touch, and where it can talk: application control, ringfencing, network control and storage control, for every tier of a K-12 Windows environment. It is one ordered list that covers domain controllers, member servers, workstations and operational technology, with the egress and command-and-control side included.

Each control shows how to implement it in ThreatLocker (TL), the nearest AppLocker (AL) or free Microsoft equivalent (WDAC, ASR, FW = Windows Firewall GPO, GPO), and how to verify it. Where AppLocker has no equivalent, the row says so: AppLocker blocks launches; it cannot ringfence, control network per process, or restrict storage.

Use this page as a working checklist: tick the box on each item as you finish it. Progress is saved in your browser only. 100 items.

Jim’s 10 Quick Hits

The first ten, in order. Every deny goes through Monitor first; every GPO goes through its audit event first. Then the rest of the phased rollout in order.

1. Confirm every group’s Default policy is Deny and the group is Secured

Do thisOpen each computer group (DCs, Tier 0 Hypervisors, Tier 1 Infrastructure, OT, Workstations, PAWs). Confirm the Default policy is Deny, not Monitor, and the group mode is Secured. Screenshot each.
WhyAn empty “Last Match” on an existing deny can mean the group was still in Learning or Monitor. Nothing else in this guide matters until this is true.
WhereThreatLocker portal › Computer Groups › each group › Default policy and mode
Effort30 minutes

2. Add the tier-0 deny block to the top of the DC policy list, Monitor Only

Do thisCreate the C1 denies (ntdsutil, dsdbutil, esentutl, vssadmin / diskshadow / wbadmin, ldifde / csvde / dsquery, wmic, dnscmd, WinRM hosts, mshta / certutil / bcdedit, download proxies, .NET compilers, mmc) as Add to top, policy status Monitor Only. The low-risk set (msdt, powershell_ise / pwsh, taskmgr, cmstp, at, finger, tftp) can go straight to Secured; see Phase 2.
WhyWindows Core Files sits at order 999,995 and permits every signed Microsoft binary. A deny below it never matches. Monitor first so the backup agent and RMM reveal themselves before anything is enforced.
WherePolicies › DC group › New policy › Add to top
EffortHalf a day; two to four weeks of monitoring

3. Fix any “Ringfenced” policy with empty ringfence tabs; remove browsers and Office from DCs and servers

Do thisA policy whose name says Ringfenced but whose Applications, Internet, Files and Registry tabs are empty is a plain permit; WMI, Office, Office Installer and RunDLL are the usual ones. Configure the tabs (C3) or remove the application from the DC and server groups. Uninstall browsers, Office, OneDrive, Google Updater, Windows Phone and Communication App from DCs and servers; delete their policies; any Office or browser match on a DC in Unified Audit is an incident to explain, not noise.
WhyA policy named “Ringfenced” with nothing in the ringfence tabs is a plain permit. Nothing on a DC needs a browser.
WherePolicies › filter by name; Applications on each DC
EffortHalf a day

4. Deny wsmprovhost, winrshost and winrs everywhere; disable WinRM by GPO where unused

Do thisDeny the WinRM host and client binaries on DCs, Tier 1, OT and workstations. Ringfenced permit on Hyper-V hosts only if Windows Admin Center or PowerShell remoting is used there. GPO: WinRM service Disabled on workstations and on any server nobody manages remotely.
WhyPowerShell remoting rides WinRM. An agent signed in as an admin can run commands on every server that answers.
WherePolicies (deny, Secured after the monitor period); Computer Configuration › Policies › Windows Settings › Security Settings › System Services › Windows Remote Management
EffortOne day; the monitor period finds the one host that needs it

5. Network Control: workstation to DC on AD-client ports only; workstation to workstation deny; management from the jump host only

Do thisWorkstation › DC: allow 53, 88, 123/udp (time), 389/636 plus 389/udp (CLDAP locator), 445, 464, 3268/3269, 135 + RPC dynamic; deny 5985/5986, 3389, 139. Workstation › workstation: deny inbound 445, 135, 3389, 5985, 5900. Jump host or PAW › DCs and servers: allow 3389, 5985/5986 (where kept), 135/445 from the jump host object only. Monitor two weeks, enforce one.
WhyA credential is only as dangerous as what it can reach. 445 to DCs stays open; SYSVOL and NETLOGON need it or Group Policy stops applying.
WhereThreatLocker › Network Control policies per group; free: Windows Firewall GPO inbound rules on the DC and workstation OUs scoped to source subnets
EffortTwo weeks monitor, one enforce

6. Server VLANs outbound default-deny with per-role allowlists; alert on LLM hostnames

Do thisServer and management VLANs: outbound denied except WSUS/Windows Update, Defender, NTP, KMS, CA CRL, ThreatLocker, RMM, backup cloud and named vendor FQDNs. DNS query logging from server VLANs to the SIEM; alert on any LLM-provider hostname.
WhyA domain controller has no business reaching the internet. An agent on a compromised server phones home to a legitimate AI API that every filter allows.
WherePerimeter firewall per VLAN; ThreatLocker Network Control outbound; Windows Firewall outbound default block on the server OU
EffortTwo weeks monitor, one enforce

7. Explicit denies for every RMM you don’t use, plus outbound denies to their relays

Do thisPermit one RMM by certificate and path. Explicit deny for AnyDesk, ScreenConnect, Atera, Splashtop, TeamViewer, NetSupport, Level, RustDesk, Syncro, Action1, Supremo, LogMeIn, GoTo, Zoho, VNC, Ammyy and DWAgent. Deny quickassist.exe and msra.exe for non-IT. Outbound denies to the other vendors’ relays and ports (5938, 6568/7070, 8040/8041, 5900-5910, 7000).
WhyA second RMM is the most common persistence tool in ransomware incidents, and it is signed, so default-deny alone is not enough once a permit for “Microsoft Corporation” or a broad certificate exists.
WherePolicies › deny by publisher; Network Control outbound; free: AppLocker publisher deny per vendor plus Windows Firewall outbound block
EffortHalf a day

8. DCSync rights audit and 4662 alert; dnscmd deny and DnsAdmins audit; Locksmith against the CA

Do thisOnly DCs, Administrators and one sync account hold Replicating Directory Changes All; delete stale MSOL_, ADSync and Exchange ACEs; alert on 4662 with GUID 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 from a non-DC. Deny dnscmd.exe (temporary permit on the DNS server); treat DnsAdmins as Domain Admins on any DNS server missing the October 2021 update, and audit membership everywhere. Run Locksmith monthly.
WhyEach is a one-step path from a foothold to every password in the domain.
WhereADSI Edit › domain root › Security; ThreatLocker policies; Invoke-Locksmith -Mode 1
EffortHalf a day

9. Hyper-V hosts into Tier 0: PAW-only access, vTPM on DC VMs, export and checkpoint alerting, Storage Control on VHDX paths

Do thisHyper-V Administrators = Domain Admins only; management from the PAW; BitLocker on CSVs; vTPM on DC, backup and sync VMs; Storage Control deny on *.vhdx *.vhd *.vmdk outside the VM paths; alert on the Hyper-V-VMMS Admin log events for a DC export or checkpoint (confirm the IDs on a test export before you trust the rule).
WhyWhoever can export a DC’s disk has every password without touching the DC.
WhereHyper-V Manager; ThreatLocker Storage Control; a SIEM rule on the VMMS log
EffortOne day

10. Honeytokens and the five never-legitimate rules with active response

Do thisA decoy SPN account, a creds.csv with a SACL in the script share, a canary document and API key, a decoy computer object. Active response (disable account, isolate host, page) on: DCSync from a non-DC; Kerberoast of the decoy SPN; any match on a Secured tripwire deny on a DC; a computer moved out of Secured mode or a Tier 0 policy edited; a privileged-group add outside a change window.
WhyAn agent enumerates everything at machine speed. Each decoy fires on exactly that, and an alert with no action at 2 AM is an audit log.
WhereThreatLocker Detect; SIEM active response; canarytokens.org
EffortOne afternoon

How to read this guide

TAGMEANING
TLThreatLocker: application control, ringfencing, Network Control, Storage Control, Elevation Control, Detect.
ALAppLocker: launch allow and deny rules by publisher, path or hash. Built into every supported Windows edition, Pro included since the October 2022 updates; enforcement needs the Application Identity service.
WDACWindows Defender Application Control / App Control for Business: kernel-enforced, stronger than AppLocker, harder to author.
ASRDefender Attack Surface Reduction rules: the behavioral half AppLocker lacks.
FWWindows Firewall, pushed by GPO.
GPOGroup Policy, nothing else needed.

★ marks the items to fix first.

Tiers used throughout. Tier 0 = domain controllers, hypervisors, the backup server, sync servers, AD CS, PAWs. Tier 1 = member servers. Tier 2 = workstations. OT = HVAC, cameras, access control.

The AppLocker ceiling. AppLocker or WDAC (launch denies) + ASR (behaviors) + Windows Firewall GPO (ports) + Defender for Endpoint if licensed (command-line detections) covers about 70% of this playbook. The missing 30% is ringfencing and per-process network control. Where a row says “no AL equivalent,” that is the 30%.

Phased rollout

PHASESCOPEDURATIONEXIT CRITERIA
0 — AuditUnified Audit (or AppLocker 8003 events) for 30–60 days: filter by the backup agent, RMM and vendor process paths, and by every binary in the controls catalog. Identify who holds DCSync rights, DnsAdmins, Hyper-V Administrators, Protected Users. Run Locksmith and PingCastle.2 weeks of readingWritten list of legitimate matches per binary
1 — Groups and defaultsBuild computer groups (Mechanics). Confirm Default = Deny and Secured per group. Remove browsers, Office, OneDrive and Google Updater from DC and server groups. Fix any “Ringfenced” policy with empty ringfence tabs. Move existing denies above any permit that could shadow them.1 weekEvery group’s Default policy verified by screenshot
2 — Low-risk denies, enforcedmsdt, powershell_ise, pwsh, Task Manager, cmstp, at, finger, tftp, tunnelers, every RMM you don’t use, interpreters on servers. Secured Mode.Same weekNo matches during Phase 0
3 — Tripwires, Monitor Onlyntdsutil, dsdbutil, esentutl, vssadmin / diskshadow / wbadmin, ldifde / csvde / dsquery, wmic, dnscmd, reg.exe, netsh, LSASS dumpers, PowerShell bypasses, rundll32 DLL blocklist, wmiprvse / dllhost no-child ringfences.2–4 weeks (4–6 on workstations)Backup jobs succeed with guest processing; RMM and monitoring still work
4 — Tripwires, enforcedFlip Phase 3 to Secured (or Inherit for backup-adjacent). Carve permits by parent process or certificate for backup and RMM.1 week24 h clean on DCs, then servers, then workstations
5 — Network ControlInbound per role from the jump host; workstation › DC on AD-client ports only; workstation › workstation deny; server VLAN outbound default-deny; DNS egress lockdown. Monitor first.2 weeks monitor + 1 enforceWSUS, KMS, NTP, CRL and vendor FQDNs allowlisted; GPO still applies; the backup server still reaches hosts
6 — Identity and protocol GPOsOne at a time, each with its audit event enabled first: NTLM audit (8004) › LmCompatibilityLevel 5; LDAP 2889 audit › signing + channel binding required; SMB signing; Protected Users one admin per day; deny-logon GPOs on the correct OUs; krbtgt rotation; DSRM.1 control per weekZero audit hits for 2 weeks before each enforce
7 — Detect, deception, responseAlert rules, honeytokens, active response on the never-legitimate rules, IR runbook, restore rehearsal.OngoingEach rule has an owner and a documented response

Mechanics: ThreatLocker behavior that decides whether a policy works

MECHANICRULE
Evaluation orderLowest order number first; first match wins. Windows Core Files sits at 999,995 and permits every signed Microsoft binary. A deny below it never matches.
Add to top vs bottomDenies › Add to top. Ringfence permits › add to top. Temporary permits › top (above the matching deny), with an expiry.
Policy statusInherit Status From Computer = follows the computer’s mode. Secured Mode = enforced regardless of computer mode. Monitor Only Mode = logs regardless.
Which status for whatTripwire denies (ntdsutil, WinRM hosts, mshta, certutil, dnscmd, LSASS dumpers) › Secured after the monitor period, so Learning mode on a box cannot reope them. Backup-adjacent denies (vssadmin, wbadmin, esentutl, reg.exe) › Inherit. Everything new › Monitor Only first.
Kill Running ProcessesOn for deny policies. Off for ringfence permits.
Show Notification / Allow RequestOff on servers and DCs. On for workstations (the request workflow is the user experience).
Selected Users & GroupsOne deny for everyone, a permit scoped to the IT group above it. Shrink the IT group’s workstation footprint to a PAW over time.
Custom applications tttracer …) › Applications › New Application › Path + Certificate (Microsoft Windows publisher), both System32 and SysWOW64 paths. Never hash-only; updates breaBinaries not in the built-in catalog (wsmprovhost, ntdsutil, esentutl, diskshadow, ldifde, csvde, dsquery, cmstp, at, finger, tftp, dsdbutil, hash rules.
Ringfence tabsAPPLICATIONS (what it can launch or interact with; empty exception list = no child processes), INTERNET, FILES, REGISTRY. Each has its own Monitor Only toggl
Parent process restrictionsAgent 10.6.2+. Use to permit a binary only under a backup agent or RMM parent instead of permitting it broadly.
DLL and script controlConfirm DLL tracking is on for the DC and server groups; confirm script control is on so unknown .ps1, .vbs and .bat are denied even where the interpreter is permitted.
Computer groupsDCs · Tier 0 Hypervisors · Tier 1 Infrastructure · OT · Workstations · PAWs. Policies are per group; confirm each group’s Default policy is Deny and the group is Secured.
Unified AuditThe ground truth. Filter by group, action, date, process path. Use it before every enforce decision and first in every incident.

Mechanics: AppLocker behavior and limits

MECHANICRULE
Rule collectionsExecutable, Windows Installer, Script, Packaged app, DLL (off by default; turning it on is noisy but required to stop sideloading).
Rule typesPublisher (preferred; survives updates), Path (bypassable via user-writable paths), Hash (brittle).
EnforcementRequires the Application Identity service running; an admin can stop it. Set the service to Automatic via GPO and alert on it stopping (Event 7036).
Audit modeEnforcement = Audit only per collection. Event log AppLocker/EXE and DLL: 8003 = would have blocked, 8004 = blocked; AppLocker/MSI and Script: 8006 / 8007; AppLocker/Packaged app-Execution: 8022 / 8025.
Default rulesCreate default rules first (allow C:\Windows\* and C:\Program Files\* for Everyone, allow all for Administrators), then layer deny rules above. Deny always wins over allow in AppLocker.
Known gapsPath rules allow user-writable folders under C:\Windows (Tasks, Temp, tracing, System32\spool\drivers\color, others): add explicit deny path rules. LOLBins that execute code without a new EXE (msbuild, installutil, regasm, mshta, rundll32, regsvr32) need their own deny rules. No ringfencing, no network control, no storage control.
WDAC insteadFor servers and DCs, WDAC / App Control for Business with the Microsoft Recommended Block Rules XML is stronger: kernel-enforced, covers most LOLBAS binaries and the vulnerable-driver blocklist. Harder to author; deploy via Intune or ConvertFrom-CIPolicy + GPO; run in audit first.
ASR rulesDefender Attack Surface Reduction gives the behavioral half AppLocker lacks: Office child processes, LSASS credential theft, PsExec/WMI process creation, script-launched downloaded content, USB unsigned executables. Enable in audit, then block.
Minimum free stackAppLocker or WDAC (launch denies) + ASR (behaviors) + Windows Firewall GPO (ports) + Defender for Endpoint if licensed (command-line detections). Covers about 70% of this playbook; the missing 30% is ringfencing and per-process network control.

AppLocker quick deny set (PowerShell). Build publisher deny rules for the tier-0 LOLBin set from reference files on a DC:

$bins = 'ntdsutil','esentutl','vssadmin','diskshadow','wbadmin','ldifde','csvde','dsquery',
        'wmic','dnscmd','mshta','certutil','bcdedit','msdt','bitsadmin','cmstp','wsmprovhost','winrshost','winrs'
$files = $bins | % { Get-ChildItem "C:\Windows\System32\$_.exe","C:\Windows\SysWOW64\$_.exe" -ErrorAction SilentlyContinue }
$info  = $files | Get-AppLockerFileInformation
$pol   = New-AppLockerPolicy -FileInformation $info -RuleType Publisher -User Everyone -RuleNamePrefix 'Deny-LOLBin'
# No -Optimize: every file shares one publisher and product, so -Optimize collapses them into a
# single BinaryName="*" rule, which as a Deny would block every Windows binary.
# Edit the XML: set Action="Deny" (New-AppLockerPolicy creates Allow rules), confirm each rule keeps its
# BinaryName, and set BinaryVersionRange LowSection="*" so older file versions are denied too. Then:
# Set-AppLockerPolicy -XmlPolicy .\deny-lolbins.xml -Merge -Ldap "LDAP://CN={GPO-GUID},CN=Policies,CN=System,DC=domain,DC=local"

C1 · Tier-0 LOLBin denies

Apply to DCs, servers and workstations unless the row says otherwise.

BINARYWHAT IT DOES FOR AN ATTACKERTHREATLOCKERAPPLOCKER / FREE
ntdsutil.exeDumps NTDS.dit + SYSTEM via IFMDeny, Secured; pre-built temporary permit for recoveryAL publisher deny; WDAC block rule
dsdbutil.exeAD LDS twin of ntdsutilDeny, SecuredAL deny
esentutl.exeCopies locked files (NTDS.dit, SAM)Deny, Monitor › SecuredAL deny
vssadmin.exe diskshadow.exe wbadmin.exeShadow-copy NTDS.dit; delete recovery pointsDeny, Monitor › Inherit; permit the backup agent by parent or certificateAL deny for Everyone, allow for the backup service account
ldifde.exe csvde.exe dsquery.exe dsget.exe dsacls.exe adfind.exeBulk AD export and reconDeny; temporary permit for schema workAL deny
wmic.exeRemote process creation, AV enumeration, XSL bypassDeny (Monitor first for old RMM)AL deny; ASR “Block process creations from PsExec and WMI”
dnscmd.exeserverlevelplugindll = SYSTEM code execution on DNS for any DnsAdmins member on servers missing the October 2021 fix (CVE-2021-40469); still the tool for remote zone and forwarder changesDeny; temporary permit on the DNS serverAL deny
wsmprovhost.exe winrshost.exe winrs.exe winrm.cmd WinRM / PSRemoting host and client winrm.vbsDeny on DCs, Tier 1, OT, workstations; ringfenced permit on Hyper-V hosts only if WAC or PowerShell is usedAL deny; GPO disable the WinRM service
mshta.exe certutil.exe bcdedit.exe signtool.exeHTA execution, download and decode, boot tamperDeny; keep it in the top deny block, above every permitAL deny; WDAC block rules
msdt.exeFollinaDeny (change from ringfence)AL deny
powershell_ise.exe pwsh.exeAlternate PowerShell hostsDenyAL deny
taskmgr.exeOne-click LSASS dumpDeny; permit the IT group on workstationsAL deny for non-admins; ASR LSASS rule
bitsadmin.exe cmstp.exe ftp.exe tftp.exe finger.exe at.exeDownload and execution proxiesDenyAL deny
msbuild.exe installutil.exe regasm.exe regsvcs.exe csc.exe vbc.exe aspnet_compiler.exe ilasm.exe jsc.exe microsoft.workflow.compiler.exe wfc.exe dotnet.exe.NET compile and execute allowlist bypassDeny (dotnet.exe deny on servers; workstations only if no app needs it)AL deny; WDAC block rules
mmc.exeUAC bypass, snap-in accessDeny on DCs, OT, Hyper-V; ringfence on Tier 1; deny for users on workstationsAL deny for non-admins
regsvr32.exe ★Squiblydoo: /i:http://… scrobj.dll runs a scriptlet; it works offline too, so blocking the DLL alone is not enough.Deny for users; permit by parent (msiexec, your installers)AL deny; WDAC block rule
wevtutil.exe auditpol.exe ★Log clearing and audit disable, the first step of the standard pre-encryption scriptDeny, Secured on DCs; never legitimate from a non-admin hostAL deny
manage-bde.exe repair-bde.exe ★BitLocker as ransomware, used repeatedly in 2024– 25. The .wsf is in the scripts row; the EXE needs its own denyDeny; permit the IT group where BitLocker is managedAL deny
diskpart.exe format.com reagentc.exe vshadow.exeWipe, format, disable WinRE; vshadow is a Microsoft-signed SDK shadow-copy tool that bypasses the vssadmin denyDenyAL deny
icacls.exe takeown.exe cacls.exe attrib.exe taskkill.exePermission and attribute tampering and process killing ahead of encryptionRingfence no-child; deny for users on workstations; Monitor first (logon scripts)AL deny for users

C2 · LOLBAS additions

GROUPBINARIESTHREATLOCKERAPPLOCKER
LSASS / NTDS tttracer.exe ttdinject.exe rdrleakdiag.exe createdump.exe dumpsqldumper.exe dump64.exe adplus.exe cdb.exe ntsd.exe procdump.exeDeny, SecuredAL deny; ASR LSASS
PowerShell bypassesrunscripthelper.exe syncappvpublishingserver.exe syncappvpublishingserver.vbs sqlps.exe sqltoolsps.exe wt.exe openconsole.exeDeny (permit wt.exe for IT on workstations)AL deny
Forced auth / sniffing / screen capturerpcping.exe pktmon.exe nmcap.exe psr.exe (Steps Recorder: silent screenshots, not sniffing)DenyAL deny
Remote exec / transferssh.exe scp.exe sftp.exe bash.exe wsl.exe wbemtest.exe devtunnel.exeDeny (permit ssh for IT)AL deny
Execution proxiesatbroker change query reset customshellhost runexehelper provlaunch setres stordiag sigverif unregmp2 wlrmdr workfolders write setupugc ie4uinit iediagcmd ieexec infdefaultinstall register-cimprovider rasautou extexport wab verclsid pcwrun presentationhost applaunch dfsvc addinutil appinstaller cmdl32 replace diantz print hh forfiles pcalua scriptrunner odbcconf mavinject msxsl xwizard certoc desktopimgdownldr wingetDeny (dfsvc and applaunch break ClickOnce; customshellhost breaks kiosk mode; check)AL deny
Staging / compressionmakecab expand extrac32 tar compactDeny on servers; ringfence on workstationsAL deny
UAC bypass (workstations)computerdefaults eudcedit iscsicpl wsreset odbcad32DenyAL deny
Tamperfltmc.exe cipher.exe pnputil.exeDeny (pnputil permit IT)AL deny
Printprintbrm.exe pubprn.vbsDeny except print-server IT during migrationsAL deny
Scriptscl_loadassembly.ps1 cl_mutexverifiers.ps1 cl_invocation.ps1 utilityfunctions.ps1 pester.bat launch-vsdevshell.ps1 manage-bde.wsf (ringfence if BitLocker)Deny by hash (script control on)AL Script collection deny
Only if installedVS, SQL and debugger tools (csi rcsi tracker vstest.console dbgsrv windbg remote bginfo msdeploy te coregen acccheckconsole)Default deny covers; audit for any bare “Microsoft Corporation” certificate permit—
UAC bypass (most used)fodhelper eventvwr sdclt slui dccw perfmonRingfence “no child processes” rather than denyNo AL equivalent for no-child; a deny breaks the tools
Accessibility backdoorssethc utilman osk narrator magnify displayswitchRingfence winlogon.exe to its normal children (see C3) plus those tools, nothing else; Registry ringfence on Image File Execution OptionsFIM on IFEO; no AL equivalent
Persistence and sdbinst.exe (shim persistence) runonce.exe gpscript.exe wuauclt.exe Deny sdbinst and sdiagnhost; ringfence no-execution(/UpdateDeploymentProvider DLL load) conhost.exe --headless sdiagnhost.exe (diagcab packages run PowerShell even with msdt denied)child on runonce gpscript wuauclt conhostAL deny; WDAC block rules
Signed downloaders and execution proxiesDownloaders: ConfigSecurityPolicy.exe (Defender; MpCmdRun -DownloadFile was removed in 2020) OneDriveStandaloneUpdater.exe GfxDownloadWrapper.exe (Intel) Msohtmed.exe ProtocolHandler.exe AppVLP.exe (Office). Execution proxies: fsi.exe mftrace.exe OfflineScannerShell.exe vsdiagnostics.exe dxcap.exe (if VS or SDKs exist)Downloaders: ringfence Internet blocked except the vendor’s update FQDNs; no child processes. Proxies: deny unless the SDK is in use. All are Microsoft- or OEM-signed, so a certificate-based permit passes themAL deny where unused; no network equivalent
AD recon and lateral movement (workstations)setspn.exe klist.exe repadmin.exe dcdiag.exe ldp.exe adsiedit.msc tasklist systeminfo tscon.exe (RDP session hijack as SYSTEM) mstsc.exe (non-IT) telnet.exe sshd.exe ssh-agent.exe (OpenSSH Server enabled as a backdoor)Deny for users on workstations alongside dsquery; tscon deny everywhere; permit mstsc for ITAL deny for users
Sandboxes and WindowsSandbox.exe and .wsb files, Docker Desktop, WSL (wsl.exe plus control escapedism.exe dismhost.exe enabling the features)Deny; code running inside these is outside the agentAL deny; GPO Windows features
VS Code tunnels ★code.exe tunnel code-tunnel.exeDeny code-tunnel.exe; ringfence code.exe Internet to the Marketplace; outbound deny *.tunnels.api.visualstudio.com *.devtunnels.msAL deny code-tunnel.exe; hostname block on the DNS filter or perimeter firewall (Windows Firewall cannot match hostnames)
AI coding agents on serversClaude Code, Codex, Gemini CLI, Cursor, Copilot CLIDeny on Tier 0 and Tier 1: these are shells with outbound network, the LLM-hostname concern in process formAL deny by publisher
Sysinternalslivekd (dumps kernel memory including LSASS) procexp and its driver (kills EDR via BYOVD; the driver is Microsoft-signed and not on the vulnerable-driver blocklist, so the deny has to come from policy) sdelete psloggedon pskill psservice adexplorer handleDeny for all but the IT PAW. The Store-packaged Sysinternals Suite installs under WindowsAppsAL: add a Packaged-app deny; the default Packaged-app rule allows it
Archivers and sync toolsrclone 7z.exe rar.exe WinSCP MEGAsyncUnsigned or third-party, so default deny catches them. If 7-Zip is permitted org-wide, ringfence it: no internet, no reads of Documents or sharesAL deny
Scripts, addition slmgr.vbs (the same scrobj COM hijack as winrm.vbs)Deny by hashAL Script collection deny

C3 · Ringfences

ThreatLocker only. AppLocker has no equivalent; ASR is noted where it overlaps. Each ringfence tab has its own Monitor Only toggle.

rundll32.exe

ApplicationsNo child processes
InternetBlocked
Files / registryFiles: deny reads of comsvcs.dll advpack.dll ieadvpack.dll syssetup.dll setupapi.dll url.dll mshtml.dll scrobj.dll zipfldr.dll pcwutl.dll shdocvw.dll ieframe.dll desk.cpl dfshim.dll davclnt.dll (WebDAV DavSetCookie) keymgr.dll; leave shell32.dll
Notes / free overlapA RunDLL policy with no ringfence configured is a plain permit; configure all three tabs. ASR LSASS rule covers the comsvcs case.

wmiprvse.exe

ApplicationsNo child processes
InternetBlocked
Files / registryOff
Notes / free overlapMonitor: virtualization management, RMM and backup-agent steps use it. ASR “PsExec and WMI” overlaps.

dllhost.exe

ApplicationsNo child processes
InternetBlocked
Files / registryOff
Notes / free overlap—

reg.exe

ApplicationsNo child processes
InternetBlocked
Files / registryDeny reads of HKLM\SAM, HKLM\SECURITY, HKLM\SYSTEM (the attack is reg save, not reg export)
Notes / free overlapLogon scripts and RMM use it; Monitor first.

net.exe net1.exe nltest.exe

ApplicationsNo child processes
InternetBlocked
Files / registry—
Notes / free overlapnet use in logon scripts.

sc.exe schtasks.exe

ApplicationsNo child processes
InternetBlocked
Files / registry—
Notes / free overlapRingfencing schtasks.exe does not stop task execution: tasks run under svchost (Schedule). Pair with 4698/4702 alerting.

netsh.exe

ApplicationsNo child processes
InternetBlocked
Files / registry—
Notes / free overlapPermit on the DHCP server and Hyper-V hosts; deny elsewhere.

msiexec.exe

ApplicationsChild processes limited to known installers
InternetBlocked
Files / registry—
Notes / free overlapPair with Elevation Control.

mofcomp.exe fsutil.exe regedit.exe regini.exe certreq.exe control.exe msconfig.exe colorcp

ApplicationsNo child processes
InternetBlocked (certreq: CA only)
Files / registry—
Notes / free overlapDeny for non-admin users on workstations via Selected Users & Groups.

cmd.exe wscript.exe cscript.exe

ApplicationsNo child processes except the interpreters a script legitimately calls; permit by parent for logon scripts
InternetBlocked
Files / registry—
Notes / free overlapConsider denying Windows Script Host for non-admins.

PowerShell

ApplicationsConstrained Mode; child processes per script need
InternetBlocked
Files / registry—
Notes / free overlapRemove the PowerShell 2.0 engine. Module, script-block and transcript logging where permitted. Review any Add-Type or Windows Assembly .NET permit; with Constrained Mode it is usually unnecessary.

curl.exe certreq.exe

ApplicationsNo child processes
InternetApproved domains only, or blocked
Files / registry—
Notes / free overlap—

Microsoft Office (workstations)

ApplicationsNo cmd powershell wscript cscript mshta regsvr32 certutil rundll32
InternetUpdate and authentication endpoints only
Files / registryNo writes to the Startup folder
Notes / free overlapASR “Block Office child processes”, “Block Office from creating executable content”; MOTW macro block GPO.

Browsers

ApplicationsOwn helpers only
Internet—
Files / registryNo reads of other browsers’ profile directories
Notes / free overlapExtension allowlist by GPO (ThreatLocker cannot see extensions).

PDF readers, Teams, Zoom, Outlook, msedgewebview2 msedge_proxy squirrel.exe update.exe

ApplicationsNo child processes
Internet—
Files / registry—
Notes / free overlapASR “Block executable content from email client”.

explorer.exe

Applications—
Internet—
Files / registryBlock launches from %TEMP%, Downloads, AppData
Notes / free overlapStorage Control plus ringfence.

spoolsv.exe (print server only)

ApplicationsPrintIsolationHost splwow64 printfilterpipelinesvc and the print vendor only
InternetBlocked
Files / registryDeny writes to spool\drivers by anything else
Notes / free overlapDisable the service everywhere else.

wsmprovhost.exe (Hyper-V hosts only)

ApplicationsNo child processes except what Monitor shows (the remote runspace runs inside wsmprovhost itself and never spawns powershell.exe; children are whatever remote commands call, such as netsh or dism)
InternetBlocked
Files / registry—
Notes / free overlapDeny elsewhere.

w3wp.exe ★ (IIS, Exchange, SharePoint)

ApplicationsNo child processes: a webshell spawns cmd or powershell under the worker
Internet—
Files / registry—
Notes / free overlapServer-side code hosts need the no-child ringfence the interpreter row gives java. Monitor first for app pools that legitimately spawn helpers.

sqlservr.exe

ApplicationsNo child processes (xp_cmdshell)
InternetBlocked
Files / registry—
Notes / free overlapAlso disable xp_cmdshell and Ole Automation in SQL; the ringfence is the backstop.

services.exe

ApplicationsChildren limited to known service binaries (smbexec-style service › cmd)
InternetBlocked
Files / registry—
Notes / free overlapMonitor 2–4 weeks; pair with 7045 alerting on a new service whose ImagePath contains cmd or powershell.

Backup service binaries

ApplicationsNo child processes except the backup product’s own components
InternetVendor FQDNs only
Files / registry—
Notes / free overlapA backup server runs as the most privileged account in the domain; its services should never spawn a shell.

winlogon.exe

ApplicationsChildren limited to userinit LogonUI dwm fontdrvhost mpnotify wlrmdr rdpclip (RDP sessions) and the accessibility tools sethc utilman osk narrator magnify displayswitch, nothing else; confirm the list against two weeks of Monitor before enforcing
InternetBlocked
Files / registryRegistry ringfence: deny writes under Image File Execution Options
Notes / free overlapCloses the sticky-keys family of backdoors. Free: FIM on IFEO.

vmwp.exe (Hyper-V)

Applications—
InternetBlocked
Files / registryNever add a Files or Registry ringfence to vmms vmwp vmcompute clussvc
Notes / free overlap—

Vendor suites (HVAC, VMS, print management)

ApplicationsOwn processes only
InternetVendor license and update FQDNs only
Files / registryDeny reads outside install, data and recording paths
Notes / free overlapMonitor 3–4 weeks; the noisiest ringfences you will build.

Interpreters where required ( java python node)

ApplicationsNo child processes except the vendor’s
InternetBlocked
Files / registryDeny %TEMP% and Downloads
Notes / free overlapPermit by path + certificate of the vendor’s bundled runtime, never system-wide.

C4 · Fixes to an inherited policy set

Most ThreatLocker tenants were built over years by more than one admin. These are the patterns to look for before adding anything new.

PATTERNACTION
Policies named “Ringfenced” with empty ringfence tabs (WMI, Office, Office Installer, RunDLL are the usual ones)Configure the tabs, or remove the application from DC and server groups
Each group’s Default policyConfirm Deny, not Monitor
Time-windowed deny policies (nights-and-weekends style)Retire; make the deny permanent (Task Manager and the like)
An MMC block policy on DCsKeep; remove redundant per-snap-in entries such as dsa.msc
Denies that sit below a broad permit (certutil signtool mshta bcdedit at a higher order number than a Microsoft-signed permit)Move them into the top deny block
Browsers, Office, OneDrive, Google Updater, Windows Phone, Communication App on DCs and serversUninstall; delete the policies; explain any historical match in Unified Audit
spoolsv.exe on DCsRingfence until print is off the DC, then disable the service + Deny. Print belongs on a member server
Add-Type .NET / Windows Assembly .NET permitsReview any historical match; usually unnecessary with Constrained Mode

C5 · Workstation-specific

Deny remote execution and admin tools for users

ThreatLockerwinrs wsmprovhost winrshost psexec paexec wmic schtasks at dsquery dsget ldifde csvde adfind nltest dsacls, RSAT, SharpHound / BloodHound / AD Explorer / PingCastle / PowerView, mmc
AppLocker / freeAL deny; Everyone deny + IT allow

Recon tools

ThreatLockerwhoami quser qwinsta nbtstat arp route netstat: deny or ringfence (Monitor; logon scripts)
AppLocker / freeAL deny for users

Credential CLIs

ThreatLockercmdkey vaultcmd ringfence; Storage Control on browser Login Data and System32\config
AppLocker / freeASR LSASS; no AL equivalent for storage

Elevation Control

ThreatLockerNo local admins; installers elevated by policy; alert on the first-ever elevation request
AppLocker / freeLAPS + no local admin; no equivalent for just-in-time elevation

Admin hygiene

ThreatLockerNo admin, especially a Domain Admin, types a password on a workstation; Protected Users + deny interactive logon for DA on the workstation OU
AppLocker / freeGPO

Interpreters

ThreatLockerpython node java autoit3 AutoHotkey: deny unless needed; ringfence where needed
AppLocker / freeAL deny

File associations

ThreatLocker.js .jse .vbs .vbe .wsf .wsh › Notepad; also .hta .msc (GrimResource) .chm .scr .pif .cpl .reg .scf .xll .rdp (rogue-RDP phishing) .library-ms .search-ms .vhd .vhdx .application; .iso / .img mount handler removed or Storage Control deny; disable the search-ms: and ms-appinstaller: protocol handlers (EnableMSAppInstallerProtocol = 0); remove ms-msdt:
AppLocker / freeGPO

Browser extensions

ThreatLockerAllowlist by ID (Chrome / Edge GPO or Google Admin); Chrome Remote Desktop off
AppLocker / freeGPO / Admin console

Storage Control

ThreatLockerDeny execution from %TEMP%, Downloads, AppData\Local\Temp, C:\Users\Public, unowned ProgramData, removable media
AppLocker / freeAL path deny rules (partial)

Rollout

ThreatLockerMonitor 4–6 weeks; carve permits by parent for logon scripts and RMM
AppLocker / freeAL audit mode

C6 · Servers by role

Role-by-role summary.

ROLETIERKEY PERMITSKEY DENIES / NOTESINBOUNDOUTBOUND
DHCP1netsh ringfenced, mmc ringfencedNothing third-party; dedicated DNS update credential; DHCP snooping on switches; no Option 252UDP 67 from clients and relays; 647 failover; 135 + RPC from the jump host68; 53/88/389/445 to DCs; 647
Print1spoolsv ringfenced to its helpers + the print-management suite by certificateprintbrm IT only; Point-and-Print restrictions; RestrictDriverInstallationToAdministrators = 1; RpcAuthnLevelPrivacyEnabled = 1; v4 drivers445, 135 + RPC, 9191/9192 from client VLANs9100/515/631/161 to the printer VLAN; DCs; vendor license
HVAC / BASOTVendor suite + bundled JRE by path + certificate, ringfencedNot domain-joined if possible; vendor RMM denied; vendor access time-boxed via ZTNA or jump host; controllers inbound only from this server80/443 from the facilities VLAN or jump host; 47808/1911/502 from the controller VLANController VLAN; vendor FQDNs; SMTP relay; NTP
Hyper-V0Core Files; backup transport components by certificate; wsmprovhost ringfenced only if WAC or PowerShell is usedNo Files ringfence on vmms vmwp vmcompute clussvc; netsh ringfenced; BitLocker CSVs; vTPM on DC, backup and sync VMs; Storage Control on *.vhdx outside VM paths; alert on DC export or checkpoint; Hyper-V Administrators = DA3389/5985/135 from the PAW; 445/6600/3343 between nodes; the backup serverNodes, storage (3260/445), DCs, WSUS; no internet
Camera / VMSOTVendor suite + SQL Express by certificate, ringfencedCameras inbound only from the VMS, no internet; recording path under Storage Control; footage not in the primary backupVendor client ports from the security-staff VLAN; 3389 from the jump host554/80/443 to the camera VLAN; vendor FQDNs; SMTP; NTP
ESXi (if any)0—ThreatLocker does not run here: lockdown mode, SSH off, vCenter MFA, management VLAN from the PAW only, vCenter export and snapshot alerting——

C7 · Network Control and Windows Firewall GPO

Workstation › DC

RuleAllow 53, 88, 123/udp (w32time; without it clock skew breaks Kerberos within weeks), 389/636 plus 389/udp (CLDAP, used by the DC locator), 445 (SYSVOL and NETLOGON; required for GPO), 464, 3268/3269, 135 + RPC dynamic (test before cutting). Deny 5985/5986, 3389, 139/NetBIOS
Free equivalentWindows Firewall inbound rules on the DC OU scoped to source subnets

Jump host / PAW › DCs and servers

RuleAllow 3389, 5985/5986 (where WinRM is kept), 135/445 admin from the jump host object only
Free equivalentFirewall rule with remote IP = jump host

Workstation › workstation

RuleDeny all inbound on 445, 135, 3389, 5985, 5900
Free equivalentFirewall inbound block on the workstation OU

Workstation › internet

RuleDeny 445/139/137-138 (NTLM leak), 25, 1433, 3389, 5985, 22 (except IT), 4443/8443/9001; 53/853 only to internal DNS; DoH hostnames denied
Free equivalentFirewall outbound block rules

Servers › internet

RuleDefault deny. Allow WSUS / Windows Update, Defender, NTP, KMS, CA CRL, ThreatLocker, RMM, backup cloud, named vendor FQDNs. Alert on any LLM-provider hostname
Free equivalentPerimeter firewall per VLAN; Windows Firewall outbound default block on the server OU

Printer, camera and controller VLANs

RuleInbound only from their server; no internet
Free equivalentPerimeter firewall

Guest and BYOD

RuleInternet only; no route to server or management subnets; logged deny
Free equivalentPerimeter firewall

RDP schedule

RuleServer RDP restricted to business hours; break-glass via the jump host
Free equivalentPerimeter firewall schedule

WinRM

RuleService disabled by GPO on workstations and on servers nobody manages remotely; 5985/5986 open only from the management subnet where kept; HTTPS + JEA where used
Free equivalentGPO + firewall

QUIC and Encrypted Client Hello ★

RuleBlock UDP 443 (QUIC) at the perimeter and in Network Control, or TLS inspection is bypassed entirely. Disable Encrypted Client Hello in browsers by GPO: SNI filtering is blind to it
Free equivalentFirewall outbound block UDP 443; Chrome and Edge EncryptedClientHelloEnabled = 0

WebClient service ★

RuleDisable the WebClient service by GPO. The 445 egress deny does nothing against WebDAV over 80/443 (\\host@80\, .library-ms, search-ms NTLM leaks)
Free equivalentGPO System Services › WebClient = Disabled

DNS resolver side ★

Rule“53 only to internal DNS” does not stop tunneling: the DC resolves recursively for the attacker. Forward the DCs to a filtering resolver that logs, rate-limits and blocks DGA and tunnel patterns. Prohibit Windows 11 native DoH by GPO (separate from the browser setting). Block known DoH resolvers: by IP in Windows Firewall (1.1.1.1, 8.8.8.8, 9.9.9.9 and the published ranges for NextDNS, AdGuard, Mullvad and Control D) and by hostname on the DNS filter (dns.nextdns.io dns.adguard.com dns.mullvad.net dns.controld.com)
Free equivalentDNS Server forwarders; GPO Network › DNS Client › Configure DNS over HTTPS = Prohibit; firewall IP block

IPv6 tunnels, WPAD, STUN, SSDP

RuleDisable Teredo, 6to4 and ISATAP; block protocol 41 and UDP 3544; prefer IPv4 to defang mitm6. Disable WPAD auto-proxy and block the wpad name. STUN (UDP 3478; TLS variant on TCP 5349): most P2P remote tools and WebRTC C2 need it; allow only to Teams and Zoom ranges. Disable SSDP/UPnP
Free equivalentGPO TCPIP settings and netsh interface teredo set state disabled; DNS block on wpad; firewall

Workstation egress default-deny with an explicit proxy

RuleInstead of listing bad ports, make workstation egress default-deny through an explicit proxy. That collapses the port list (plus 1080, 4444, 50050, 6667/6697, 5222, 1883, 9001, 1194, 51820) into one rule
Free equivalentFirewall outbound default block on the workstation OU; proxy by GPO

Registry and file ringfences on proxy and host pivots

RuleFIM or Registry ringfence on PortProxy (netsh portproxy SOCKS pivots), Internet Settings\ProxyServer and AutoConfigURL, drivers\etc\hosts, and Outlook WebView\Inbox\URL (Specula home-page C2)
Free equivalentFile-integrity monitoring and registry auditing to the SIEM

C8 · Egress and command-and-control

RMM abuse

ControlPermit one RMM by certificate + path; explicit deny every other (AnyDesk, ScreenConnect, Atera, Splashtop, TeamViewer, NetSupport, Level, RustDesk, Syncro, Action1, Supremo, LogMeIn, GoTo, Zoho, VNC, Ammyy, DWAgent); deny quickassist.exe and msra.exe for non-IT; outbound denies to other vendors’ relays and ports (5938, 6568/7070, 8040/8041, 5900-5910, 7000). Also deny the ones leading recent intrusion statistics: SimpleHelp, Kaseya VSA, NinjaOne, Datto RMM (CagService), N-able Take Control (BASupSrvc), Pulseway, ManageEngine / Zoho Assist, BeyondTrust / Bomgar, MeshAgent / Tactical RMM, Remote Utilities (rutserv.exe), UltraViewer, AeroAdmin, Radmin (4899), Iperius, RemotePC, Parsec, NoMachine (4000), DameWare (6129), Getscreen, ISL Online, Chrome Remote Desktop host (remoting_host.exe); ports RustDesk 21115–21119, NetSupport 5405, Splashtop 6783–6785, Kaseya 5721, Remote Utilities 5650
Free equivalentAL publisher deny per vendor; firewall outbound block

Tunnelers

ControlDeny cloudflared ngrok tailscale chisel ligolo frp plink socat devtunnel; netsh ringfenced; deny outbound to *.ngrok.io *.ngrok-free.app *.trycloudflare.com *.argotunnel.com *.tailscale.com *.zerotier.com *.localtonet.com. Also: *.ngrok.app *.ngrok.dev connect.ngrok-agent.com *.cfargotunnel.com localhost.run serveo.net pinggy.io *.loclx.io (LocalXpose) zrok.io playit.gg bore.pub pagekite.net *.ts.net (Tailscale Funnel) *.netbird.io, Hamachi, Cloudflare WARP (warp-svc.exe, *.cloudflareclient.com), commercial VPN clients (Proton, Mullvad, Nord), Tor (tor.exe, directory-authority IPs, the Snowflake broker; Brave bundles Tor, set TorDisabled), I2P (7657), Psiphon, v2ray / Xray, gost, rathole, revsocks; Edge Secure Network, Opera VPN and iCloud Private Relay (mask.icloud.com) off via GPO
Free equivalentAL deny (mostly unsigned, so default deny catches them); proxy or firewall hostname block

Cloud-service C2 and exfiltration

ControlDeny Discord CDN and webhooks, api.telegram.org, WhatsApp Web, Pastebin, transfer.sh, file.io, anonfiles, gofile, mega.nz, ShareFile / Dropbox / Box / WeTransfer unless used; tenant restrictions for M365 and Google at the proxy; deny workstation 80/443 to raw cloud-compute IP ranges unless allowlisted; NRD and uncategorized blocked. Dead-drop, webhook and storage C2: Slack (hooks.slack.com, files.slack.com), Teams incoming webhooks (*.webhook.office.com), Power Automate (*.logic.azure.com), Zapier and IFTTT hooks, t.me and telegra.ph, Trello, Notion and Airtable APIs, steamcommunity.com/profiles (Vidar’s resolver), api.github.com, gists and raw.githubusercontent.com, GitLab, Imgur, Dropbox and Box API hosts, *.blob.core.windows.net *.s3.amazonaws.com storage.googleapis.com firebaseio.com, Backblaze, Wasabi, *.r2.dev. Free hosting as C2: *.workers.dev *.pages.dev *.vercel.app *.netlify.app *.herokuapp.com *.onrender.com *.fly.dev *.glitch.me *.replit.app *.hf.space *.github.io *.azurewebsites.net *.cloudfunctions.net *.run.app script.google.com. Pastes: paste.ee rentry.co hastebin, privatebin, controlc.com termbin.com 0x0.st catbox.moe pixeldrain, bashupload, temp.sh filebin.net ufile.io
Free equivalentProxy or SWG only; a classroom web filter covers domain blocklists but not IP, port, process or tenant restrictions

Dynamic DNS ★

ControlAsyncRAT, XWorm, Remcos, DcRAT and Quasar almost all use *.duckdns.org, No-IP (*.ddns.net *.hopto.org *.zapto.org *.sytes.net *.myftp.org *.redirectme.net *.servehttp.com), *.dyndns.org *.dynu.net, afraid.org domains (*.mooo.com *.chickenkiller.com), *.cloudns.*. NRD blocking does not catch these; the parent domains are old. Block the Dynamic-DNS category at the proxy and alert on any hit
Free equivalentProxy or SWG category block; DNS log alert

SMTP and FTP exfiltration ★

ControlDenying 25 alone is not enough: Agent Tesla, Snake Keylogger and most stealers exfiltrate over 587/465/2525 to smtp.gmail.com, smtp.office365.com, SendGrid, Mailgun and Brevo. Deny 25/465/587/2525 from everything except the mail relay. Same for 21/FTP
Free equivalentFirewall outbound block with the relay as the only exception

Never-legitimate tripwires

ControlCheap, high-signal, no false positives: OAST and collaborator domains (*.oast.* *.oastify.com *.burpcollaborator.net interact.sh dnslog.cn webhook.site requestbin, pipedream, ntfy.sh); external-IP checks from a non-browser process (api.ipify.org ifconfig.me icanhazip.com ipinfo.io ip-api.com checkip.amazonaws.com); any process other than Office, Teams, OneDrive and browsers reaching graph.microsoft.com login.microsoftonline.com *.sharepoint.com docs.google.com www.googleapis.com. That per-process rule is the only practical defense against OneDrive or Google-Docs C2 in a tenant that must allow those hosts
Free equivalentProxy and DNS log alerts; no free per-process equivalent

DNS tunneling

Control53/853 only to internal DNS; DoH endpoints denied; browser DoH off by GPO; public resolvers blocked by IP; DNS query logging with TXT-volume and entropy alerts
Free equivalentFirewall + GPO + DNS logs to the SIEM

ICMP and protocol

ControlDeny outbound ICMP from workstations except monitoring
Free equivalentFirewall

Loaders

ControlInterpreters denied or ringfenced; Electron and WebView no child processes; WSH off for users; file associations remapped; ISO mount handler removed; extension allowlist; MOTW macro block; HVCI + vulnerable-driver blocklist; mavinject deny + rundll32 DLL blocklist
Free equivalentASR + GPO + WDAC driver blocklist

Segmentation

ControlEndpoint inbound default-deny; servers reachable only on service ports; Tier 0 on its own VLAN from PAWs only; IoT, printer and camera VLANs isolated; a micro-segmentation product where budget allows
Free equivalentPerimeter firewall VLAN ACLs + firewall GPO

Egress architecture

ControlBoth ThreatLocker Network Control (per process) and the perimeter firewall (catches what the agent missed); a proxy with TLS inspection, category and reputation, NRD, tenant restrictions
Free equivalent—

C9 · Identity and protocol

GPO; the same for ThreatLocker and AppLocker environments.

DCSync rights

ImplementationOnly DCs, Administrators and one sync account hold Replicating Directory Changes All; delete stale MSOL_, ADSync and Exchange ACEs
Audit firstEvent 4662 with GUID 1131f6ad-9c07-11d1-f79f-00c04fc2dcd2 from a non-DC › alert

krbtgt

ImplementationRotate twice, 24 h apart; after any compromise
Audit first—

Protected Users

ImplementationEvery human admin and -adm account, one per day; break-glass excluded; deny-logon GPO on the workstation OU for DA
Audit firstTest one account; watch 4625 and 4771

NTLMv1

ImplementationLmCompatibilityLevel = 5, DCs first, then all; no LM hash storage
Audit firstNTLM audit 8004 / 4624 LmPackageName = NTLM V1 for 2 weeks; copiers are the holdout

LDAP signing and channel binding

ImplementationRequired
Audit firstEvent 2889 on DCs for 2 weeks; fix the web filter, print-management, VPN and RADIUS binds first

SMB signing

ImplementationRequired on all
Audit first—

AD CS

ImplementationLocksmith monthly; no enrollee-supplied subject with client auth for broad groups; manager approval; lock template ACLs (ESC4 › ESC1); AD CS not on a DC
Audit firstLocksmith report

DnsAdmins

ImplementationTreat as Domain Admins on any DNS server missing the October 2021 update; audit membership everywhere; pair with the dnscmd deny
Audit first—

DSRM

ImplementationRotate; DsrmAdminLogonBehavior = 0
Audit first—

Logon rights

ImplementationDefault Domain Controllers Policy: deny network, batch, service and RDP logon for all non-tier-0, including service and automation accounts; smart card or Windows Hello for Business for DA
Audit firstgpresult; scope to the DC OU only

Hypervisor admins

ImplementationTier 0; PAW only; vTPM + BitLocker on DC VMs; snapshot and export alerting
Audit first—

Backup and VM export hygiene

ImplementationNever land a DC VMDK, VHDX, IFM or system-state on a general share; Storage Control on *.vmdk *.vhdx *.vhd *.bak *.dit outside the repository; backup server off-domain or Tier 0; immutable repository; backup admins not DA; alert on retention change
Audit first—

BYOVD

ImplementationHVCI / Memory Integrity + the Microsoft vulnerable-driver blocklist on DCs, servers and workstations; alert on new driver loads
Audit firstWDAC driver blocklist

LDAP enumeration

ImplementationEvent 1644 expensive-query logging; alert on one host issuing thousands of queries in minutes
Audit first—

LLMNR, NBT-NS and mDNS

ImplementationOff by GPO; NetBIOS off via DHCP; EnableMDNS = 0
Audit first—

Spooler on DCs and hypervisors

ImplementationDisabled
Audit firstGet-Service Spooler

LAPS

ImplementationWindows LAPS; 30-day + on-use rotation; audit reads
Audit first—

Password policy

ImplementationLength over rotation; fine-grained policy for admins and service accounts
Audit first—

LSASS hardening

ImplementationRunAsPPL with the UEFI lock; Credential Guard (Enterprise and Education SKUs since Windows 10, Server 2016+; on by default from Windows 11 22H2 Enterprise); WDigest UseLogonCredential = 0; Remote Credential Guard or Restricted Admin for RDP; reduced CachedLogonsCount on servers. Every LSASS-dumper deny in C2 is a tripwire; these make the dump worthless even when a new tool slips past
Audit firstCredential Guard readiness tool; check LSA protection events 12 and 3065/3066 before enabling the UEFI lock

Automation and agent accounts

ImplementationDedicated scoped account; denied all logon types to DCs; no portal access; rotate any credential an AI agent was run with
Audit first—

C11 · ThreatLocker portal and agent protection

Portal

ControlMFA enforced; no shared admin accounts; IP allowlist; alert on any computer moved out of Secured mode and any policy edit in the DC and Tier 0 groups

Agent

ControlUninstall password set; tamper protection on

AppLocker equivalent

ControlApplication Identity service Automatic + alert on stop; GPO permissions audited (who can edit the AppLocker GPO = who can disable it)

C12 · Verification and troubleshooting

SYMPTOM / CHECKWHERE TO LOOK
Did a policy block something?Unified Audit › group › Action Deny › date › group by application. AppLocker: Event 8004 (8003 in audit) for EXE and DLL; 8007 (8006) for scripts and MSI
Are DCs actually enforcing?Group mode = Secured; Default = Deny; an empty “Last Match” on existing denies can mean the group was still in Learning or Monitor
“Users can’t sign in, a password reset fixes it”Not an application-control symptom. Check 4740 lockouts (caller computer › the retrying ringfenced app); unlock without reset to confirm; 4723 vs 4724 for expired or must-change; 4768/4771 0xE / 0x18 for RC4 and AES key issues (Protected Users or the encryption GPO). Bulk unlock: Search-ADAccount -LockedOut \| Unlock-ADAccount
GPO not applying after Network Control445 to DCs blocked; Event 1058/1030 on clients
Backups “succeed” but no guest processingbackup job warnings; ThreatLocker deny on the backup agent runtime
Which clients would break on LDAP signingEvent 2889
Which devices still use NTLMv1NTLM/Operational 8004; 4624 LmPackageName
Who can DCSync(Get-Acl "AD:\DC=domain,DC=local").Access \| ? {$_.ObjectType -eq '1131f6ad-9c07-11d1-f79f-00c04fc2dcd2'}
Can a workstation reach Test-NetConnection dc01 -Port 5985 from a workstation; must fail a DC on admin ports
Does DNS leave another wayFrom a workstation, nslookup example.com 8.8.8.8; must fail
Hyper-V DC exportHyper-V-VMMS Admin log export and checkpoint events (confirm the IDs on a test export); file-integrity monitoring on the export path

C13 · Detect: alert rules

ThreatLocker Detect plus your SIEM. “Yes” means the event is never legitimate and gets an automated response.

RULENEVER LEGITIMATE? › ACTIVE RESPONSE
DCSync (4662) from a non-DCYes › disable account, isolate host
Kerberoast (4769) for the decoy SPNYes › disable account
Any match on a Secured tripwire deny on a DC (ntdsutil wsmprovhost dnscmd esentutl LSASS dumpers)Yes › isolate host
Computer moved out of Secured mode; DC or Tier 0 policy editedYes › page
Privileged-group add (4728/4732/4756) outside a change window; new account (4720)Yes › page
New external forwarding rule; Vault export outside the records roleYes › suspend user
Logon type 3 to a DC from a workstation subnet by a non-computer, non-tier-0 accountReview
WinRM operational log on any DC or Tier 1 hostReview
Script-block 4104 outside admin hostsReview
Network Control denies from a process with no prior network history; one host hitting 3+ C2-related denies in 10 minutesReview
Process launch from Downloads or Temp; any RMM binary; any interpreter on a server; first-ever elevation requestReview
New driver load on any host; retention change or job deletion in the backup productsReview
Server VLAN DNS query for any LLM-provider hostnameReview
DNS: TXT or NULL volume, labels over 50 characters, high entropyReview
Weekly directory diff: users, privileged groups, domain and OU ACEs, GPO links, trustsReview
Scheduled task created or updated (4698/4702) outside admin hosts; the schtasks ringfence does not stop executionReview
Beacon periodicity (RITA / Zeek); JA4 fingerprints; TLS to a raw IP with no SNI; HTTP to a raw IPReview
Scripting user-agents (python-requests curl WindowsPowerShell); long-lived outbound TCPReview
NXDOMAIN bursts (DGA); BITS-Client 59/60 events with external URLsReview
7045 new service with cmd or powershell in ImagePath; System.Management.Automation.dll loaded by a non-PowerShell process (Sysmon 7)Review
Any hit on a Dynamic-DNS, OAST or external-IP-check domain from a non-browser processYes › isolate host
Workspace and Entra logs exported to the SIEM; 18 months or more of retention—

C14 · Deception

Service account with an SPN nobody uses

Alert onAny 4769 for it

creds.csv in the script share with a SACL

Alert on4663 read

Canary document and API key (canarytokens.org)

Alert onAny access

Decoy computer object; honeypot host on the client VLAN answering 445/3389/5985

Alert onAny connection

Canary DC name in DNS; fake RMM shortcut; fake ngrok.exe permit request

Alert onAny touch

Gate: every deny has been through Monitor first; every GPO has been through its audit event first; each alert rule has an owner and a documented response.

Jim Tyler · MAEDS 2026 · An independent project, written and published on my own time. Free to use and share. Admin console paths, Group Policy paths and scanner rule names move between releases; if one is wrong, tell me.