Advice Request Maximum Anti-Exploit protection settings for your program

  • Thread starter Thread starter ForgottenSeer 85179
  • Start date Start date
Please provide comments and solutions that are helpful to the author of this topic.
Anyone play more with settings for Chromium-Edge ?

here also another good thread about:
 
This can now be saved in a settings.xml file and then imported by this powershell command:
Which needs admin rights! Unfortunately I forgot to write that.

After some time i play again with these settings and remove "Block untrusted fonts" because Dropping the "Untrusted Font Blocking" setting - Microsoft Tech Community

I also test these settings:
# Export address filtering (EAF): Detects dangerous operations being resolved by malicious code
with and without:
optionally validate access by modules commonly used by exploits enabled

# Import address filtering (IAF): Detects dangerous operations being resolved by malicious code.

# Validate stack integrity (StackPivot): Ensures that the stack hasn't been redirected for sensitive APIs. Not compatible with ACG

# Validate API invocation (CallerCheck): Ensures that sensitive APIs are invoked by legitimate callers. Only configurable for 32-bit (x86) applications. Not compatible with ACG

# Simulate execution (SimExec): Ensures that calls to sensitive APIs return to legitimate callers. Only configurable for 32-bit (x86) applications. Not compatible with ACG

None of them are compatible with AdGuard extension and sites are broken (maybe do to extension or because of configured encrypted DNS i don't know)
So no changes are required (y)

Edit: here also the XML file for maximum Edge settings with default OS settings (from 20H2 Windows build):
XML:
<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <AppConfig Executable="ExtExport.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ie4uinit.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ieinstal.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ielowutil.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ieUnatt.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="mscorsvw.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="msedge.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="true" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <ControlFlowGuard Enable="true" SuppressExports="false" />
    <SignedBinaries MicrosoftSignedOnly="true" AllowStoreSignedBinaries="true" Audit="false" AuditStoreSigned="false" EnforceModuleDependencySigning="true" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="false" AuditUserShadowStack="false" />
  </AppConfig>
  <AppConfig Executable="msfeedssync.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="mshta.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ngen.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="ngentask.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="PresentationHost.exe">
    <DEP Enable="true" EmulateAtlThunks="false" />
    <ASLR ForceRelocateImages="true" RequireInfo="false" BottomUp="true" HighEntropy="true" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
  </AppConfig>
  <AppConfig Executable="PrintDialog.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="runtimebroker.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="SystemSettings.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="C:\Windows\System32\vmcompute.exe">
    <ControlFlowGuard Enable="true" SuppressExports="true" StrictControlFlowGuard="true" />
  </AppConfig>
  <AppConfig Executable="C:\Windows\System32\vmwp.exe">
    <ControlFlowGuard Enable="true" SuppressExports="true" StrictControlFlowGuard="true" />
  </AppConfig>
</MitigationPolicy>
 
Last edited by a moderator:
Then I doubt anyone using their 3rd party security software for exploit protections would ever bother with this.
Yes, but there are many people who did not install a dedicated anti-exploit application. Windows built-in Exploit Protection is for people who do not want to use 3rd party applications intended for exploit protection (like MBAE, HPA). Many AVs have anti-exploit prevention modules but they are not intended to protect users against in-memory exploits. If the user has one vulnerable application (like any PDF viewer) then it would be not wise to install 3rd party anti-exploit application to cover in-memory exploits. The better idea is to spend 20 minutes to find the proper combination of Windows build-in exploit protection. Usually, one does not need to understand any of several possible mitigations, but simply try one after another and see if the application still works. If the configuration is too complex, then it is possible at any time to untick all mitigations for that application.
 
Last edited:
I might be wrong but isn't the most important mitigations are already applied?

1608704162249.png
 
Last edited:
Here is it!

Maximum protection settings for:
Edge
Adobe Reader Touch (from Windows Store)
Wordpad (Windows internal)
Bandizip
Thunderbird

XML:
<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <AppConfig Executable="AcroRd32.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="false" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <DynamicCode BlockDynamicCode="true" AllowThreadsToOptOut="false" Audit="false" />
    <ControlFlowGuard Enable="true" SuppressExports="false" />
    <SignedBinaries MicrosoftSignedOnly="true" AllowStoreSignedBinaries="true" Audit="false" AuditStoreSigned="false" EnforceModuleDependencySigning="true" />
    <Fonts DisableNonSystemFonts="true" AuditOnly="false" Audit="false" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <Payload EnableExportAddressFilter="true" AuditEnableExportAddressFilter="false" EnableExportAddressFilterPlus="true" AuditEnableExportAddressFilterPlus="false" EnableImportAddressFilter="true" AuditEnableImportAddressFilter="false" EnableRopStackPivot="true" AuditEnableRopStackPivot="false" EnableRopCallerCheck="true" AuditEnableRopCallerCheck="false" EnableRopSimExec="true" AuditEnableRopSimExec="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="true" AuditUserShadowStack="false" />
  </AppConfig>
  <AppConfig Executable="Bandizip.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="false" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <ControlFlowGuard Enable="true" SuppressExports="false" />
    <SignedBinaries EnforceModuleDependencySigning="true" />
    <Fonts DisableNonSystemFonts="true" AuditOnly="false" Audit="false" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <Payload EnableExportAddressFilter="true" AuditEnableExportAddressFilter="false" EnableExportAddressFilterPlus="true" AuditEnableExportAddressFilterPlus="false" EnableImportAddressFilter="true" AuditEnableImportAddressFilter="false" EnableRopStackPivot="true" AuditEnableRopStackPivot="false" EnableRopCallerCheck="true" AuditEnableRopCallerCheck="false" EnableRopSimExec="true" AuditEnableRopSimExec="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <ChildProcess DisallowChildProcessCreation="true" Audit="false" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="true" AuditUserShadowStack="false" />
  </AppConfig>
  <AppConfig Executable="ExtExport.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ie4uinit.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ieinstal.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ielowutil.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ieUnatt.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="mscorsvw.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="msedge.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="false" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <ControlFlowGuard Enable="true" SuppressExports="false" />
    <SignedBinaries MicrosoftSignedOnly="true" AllowStoreSignedBinaries="true" Audit="false" AuditStoreSigned="false" EnforceModuleDependencySigning="true" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="false" AuditUserShadowStack="false" />
  </AppConfig>
  <AppConfig Executable="msfeedssync.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="mshta.exe">
    <ASLR ForceRelocateImages="true" RequireInfo="false" />
  </AppConfig>
  <AppConfig Executable="ngen.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="ngentask.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="PresentationHost.exe">
    <DEP Enable="true" EmulateAtlThunks="false" />
    <ASLR ForceRelocateImages="true" RequireInfo="false" BottomUp="true" HighEntropy="true" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
  </AppConfig>
  <AppConfig Executable="PrintDialog.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="runtimebroker.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="SystemSettings.exe">
    <ExtensionPoints DisableExtensionPoints="true" />
  </AppConfig>
  <AppConfig Executable="thunderbird.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="false" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <ControlFlowGuard Enable="true" SuppressExports="false" StrictControlFlowGuard="true" />
    <SignedBinaries EnforceModuleDependencySigning="true" />
    <Fonts DisableNonSystemFonts="true" AuditOnly="false" Audit="false" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <Payload EnableExportAddressFilter="true" AuditEnableExportAddressFilter="false" EnableExportAddressFilterPlus="true" AuditEnableExportAddressFilterPlus="false" EnableImportAddressFilter="true" AuditEnableImportAddressFilter="false" EnableRopStackPivot="true" AuditEnableRopStackPivot="false" EnableRopCallerCheck="true" AuditEnableRopCallerCheck="false" EnableRopSimExec="true" AuditEnableRopSimExec="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <ChildProcess DisallowChildProcessCreation="true" Audit="false" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="false" AuditUserShadowStack="false" />
  </AppConfig>
  <AppConfig Executable="C:\Windows\System32\vmcompute.exe">
    <ControlFlowGuard Enable="true" SuppressExports="true" StrictControlFlowGuard="true" />
  </AppConfig>
  <AppConfig Executable="C:\Windows\System32\vmwp.exe">
    <ControlFlowGuard Enable="true" SuppressExports="true" StrictControlFlowGuard="true" />
  </AppConfig>
  <AppConfig Executable="wordpad.exe">
    <DEP Enable="true" EmulateAtlThunks="true" />
    <ASLR ForceRelocateImages="true" RequireInfo="true" BottomUp="true" HighEntropy="false" />
    <StrictHandle Enable="true" />
    <ExtensionPoints DisableExtensionPoints="true" />
    <DynamicCode BlockDynamicCode="true" AllowThreadsToOptOut="true" Audit="false" />
    <ControlFlowGuard Enable="true" SuppressExports="false" StrictControlFlowGuard="true" />
    <SignedBinaries MicrosoftSignedOnly="true" AllowStoreSignedBinaries="false" Audit="false" AuditStoreSigned="false" EnforceModuleDependencySigning="true" />
    <Fonts DisableNonSystemFonts="true" AuditOnly="false" Audit="false" />
    <ImageLoad BlockRemoteImageLoads="true" AuditRemoteImageLoads="false" BlockLowLabelImageLoads="true" AuditLowLabelImageLoads="false" />
    <Payload EnableExportAddressFilter="true" AuditEnableExportAddressFilter="false" EnableExportAddressFilterPlus="true" AuditEnableExportAddressFilterPlus="false" EnableImportAddressFilter="true" AuditEnableImportAddressFilter="false" EnableRopStackPivot="true" AuditEnableRopStackPivot="false" EnableRopCallerCheck="true" AuditEnableRopCallerCheck="false" EnableRopSimExec="true" AuditEnableRopSimExec="false" />
    <SEHOP Enable="true" TelemetryOnly="false" />
    <Heap TerminateOnError="true" />
    <ChildProcess DisallowChildProcessCreation="true" Audit="false" />
    <UserShadowStack UserShadowStack="true" UserShadowStackStrictMode="true" AuditUserShadowStack="false" />
  </AppConfig>
</MitigationPolicy>

Change file back to xml
 

Attachments

Info about the Thunderbird config:
clicking on link inside Email doesn't work anymore because of:
XML:
<ChildProcess DisallowChildProcessCreation="true" Audit="false" />

If this is needed/ okay (e.g. in a secured setup), this line needs to be removed.
 
I might be wrong but isn't the most important mitigations are already applied?

View attachment 251701
Some Edge processes are protected (Renderer, GPU, Audio), but some are not. This means that malware (running outside Edge) can still install a malicious extension or inject the malicious DLL to Edge (edge.exe). If you will use the mitigations via Exploit Protection, then all edge.exe processes will be protected. For example, the mitigation "Do not allow child processes" (similar to BLOCK_NON_MICROSOFT_BINARIES) will prevent injecting malicious DLLs for all edge.exe processes (also not sandboxed).
 
Last edited:
Info about the Thunderbird config:
clicking on link inside Email doesn't work anymore because of:
XML:
<ChildProcess DisallowChildProcessCreation="true" Audit="false" />

If this is needed/ okay (e.g. in a secured setup), this line needs to be removed.
This need to be done for Bandizip too or the updater ("C:\Program Files\Bandizip\updater.exe) and "C:\Program Files\Bandizip\data\web32.exe" doesn't work.
 
Thunderbird wants to open the web browser, updater.exe downloads and try to run the update, etc. This Exploit Protection mitigation will prevent the protected application from running another one. It is very predictable.:)
 
I was playing a little bit with these configurations which are a modification to the following configurations jdgregson/Windows-10-Exploit-Protection-Settings as a result I have the new edge that does not open the web pages, some of the applications were tested and they work fine.
Well here is my configuration:

Edited: Fix edge and added winrar.
 

Attachments

Last edited:
Thanks to @oldschoool & @SecurityNightmares

My setup for all Microsoft Programs (Edge + Office + Explorer + Script interpreters used as Lolbin)

Block remote images - ON
Block untrusted fonts - ON
Control flow guard (CFG) - ON
Code integrity guard - ON
Block child process creation - OFF
Data execution prevention (DEP) - ON
Disable extension points - ON
Force randomization for images (Mandatory ASLR) - ON
Randomize memory allocations (Bottom-up ASLR) - ON
Validate exception chains (SEHOP) - ON
Validate handle usage - ON
Validate heap integrity - ON
Validate image dependency integrity - ON

My setup for all non-Microsoft Programs (FileZilla + SyncBack + Albelli* + WebBuilder**)
Block remote images - ON
Block untrusted fonts - ON
Control flow guard (CFG) - ON
Code integrity guard - OFF
Block child process creation - ON
Data execution prevention (DEP) - ON
Disable extension points - ON
Force randomization for images (Mandatory ASLR) - ON
Randomize memory allocations (Bottom-up ASLR) - ON
Validate exception chains (SEHOP) - ON
Validate handle usage - ON
Validate heap integrity - ON
Validate image dependency integrity - ON

* A photo book creation program my girlfriend uses which I have installed to prevent security tweaks breaking it
** A WYSIWYG html editor for simple websites I made for a few friends
 
Last edited:
  • Like
Reactions: ForgottenSeer 85179