Advice Request Maximum Anti-Exploit protection settings for your program

  • Thread starter ForgottenSeer 85179
  • Start date

Please provide comments and solutions that are helpful to the author of this topic.

F

ForgottenSeer 85179

Thread author
Anyone play more with settings for Chromium-Edge ?

here also another good thread about:
 
F

ForgottenSeer 85179

Thread author
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:

Andy Ful

From Hard_Configurator Tools
Verified
Honorary Member
Top Poster
Developer
Well-known
Dec 23, 2014
8,592
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:

Nagisa

Level 7
Verified
Jul 19, 2018
342
I might be wrong but isn't the most important mitigations are already applied?

1608704162249.png
 

Andy Ful

From Hard_Configurator Tools
Verified
Honorary Member
Top Poster
Developer
Well-known
Dec 23, 2014
8,592
Last edited:
F

ForgottenSeer 85179

Thread author
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

  • Edge+AdobeTouch+Wordpad+Bandizip+Thunderbird.txt
    8.5 KB · Views: 579
F

ForgottenSeer 85179

Thread author
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.
 

Andy Ful

From Hard_Configurator Tools
Verified
Honorary Member
Top Poster
Developer
Well-known
Dec 23, 2014
8,592
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:
F

ForgottenSeer 85179

Thread author
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.
 

Andy Ful

From Hard_Configurator Tools
Verified
Honorary Member
Top Poster
Developer
Well-known
Dec 23, 2014
8,592
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.:)
 

eonline

Level 21
Verified
Well-known
Nov 15, 2017
1,083
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

  • Settings.xml.txt
    51.4 KB · Views: 529
Last edited:

eonline

Level 21
Verified
Well-known
Nov 15, 2017
1,083
No wonder. the repository has not been updated for 13 months.
Look at my Edge configuration above which works
I have modified some settings and added others.

Edit: I don't know why Edge doesn't load pages well with ublock origin enabled, with adguard it goes great.
 
Last edited:

Lenny_Fox

Level 22
Verified
Top Poster
Well-known
Oct 1, 2019
1,120
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

About us

  • MalwareTips is a community-driven platform providing the latest information and resources on malware and cyber threats. Our team of experienced professionals and passionate volunteers work to keep the internet safe and secure. We provide accurate, up-to-date information and strive to build a strong and supportive community dedicated to cybersecurity.

User Menu

Follow us

Follow us on Facebook or Twitter to know first about the latest cybersecurity incidents and malware threats.

Top