我们可以使用Get-ProcessMitigation来查询某一进程所开启的保护:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
PS C:\Users\air\Desktop> Get-ProcessMitigation 12092

ProcessName : msedge
Source : Running Process
Id : 12092

DEP:
Enable : ON
EmulateAtlThunks : ON

ASLR:
BottomUp : ON
ForceRelocateImages : OFF
RequireInfo : OFF
HighEntropy : ON

StrictHandle:
Enable : OFF

System Call:
DisableWin32kSystemCalls : ON
Audit : OFF

ExtensionPoint:
DisableExtensionPoints : ON

DynamicCode:
BlockDynamicCode : OFF
AllowThreadsToOptOut : OFF
Audit : OFF

CFG:
Enable : ON
SuppressExports : OFF
StrictControlFlowGuard : OFF

BinarySignature:
MicrosoftSignedOnly : ON
AllowStoreSignedBinaries : OFF
AuditMicrosoftSignedOnly : OFF
AuditStoreSigned : OFF

FontDisable:
DisableNonSystemFonts : ON
Audit : OFF

ImageLoad:
BlockRemoteImageLoads : ON
AuditRemoteImageLoads : OFF
BlockLowLabelImageLoads : ON
AuditLowLabelImageLoads : OFF
PreferSystem32 : OFF
AuditPreferSystem32 : OFF

Payload:
EnableExportAddressFilter : OFF
AuditEnableExportAddressFilter : OFF
EnableExportAddressFilterPlus : OFF
AuditEnableExportAddressFilterPlus : OFF
EnableImportAddressFilter : OFF
AuditEnableImportAddressFilter : OFF
EnableRopStackPivot : OFF
AuditEnableRopStackPivot : OFF
EnableRopCallerCheck : OFF
AuditEnableRopCallerCheck : OFF
EnableRopSimExec : OFF
AuditEnableRopCallerCheck : OFF

Child Process:
DisallowChildProcessCreation : ON
Audit : OFF

User Shadow Stack:
UserShadowStack : OFF
UserShadowStackStrictMode : OFF
AuditUserShadowStack : OFF
SetContextIpValidation : OFF
AuditSetContextIpValidation : OFF
BlockNonCetBinaries : OFF
BlockNonCetBinariesNonEhcont : OFF
AuditBlockNonCetBinaries : OFF

其功能介绍如下:

Mitigation Description Default Level
Control flow guard (CFG) CFG通过在编译和链接期间,记录下所有的间接调用信息,并把他们记录在最终的可执行文件中,并且在所有的间接调用之前插入额外的校验,当间接调用的地址被篡改时,会触发一个异常,操作系统介入处理。 On System & app
Data Execution Prevention (DEP) 数据执行保护,和 LINUX 下的 NX 保护比较类似,堆栈只有读写权限,没有执行权限,主要用途是限制以写 shellcode 为主的攻击手段 On System & app
Force randomization for images (Mandatory ASLR) 强制重定位未使用/DYNAMICBASE 编译的映像 Off System & app
Randomize memory allocations (Bottom-Up ASLR) 虚拟内存地址分配随机化 On System & app
Validate exception chains (SEHOP) 在程序转入异常处理前,SEHOP会检查SEH链,特别是最后一个异常处理函数是否为系统固定的终极异常处理函数,确保其完整性 On System & app
Validate heap integrity 当检测到堆损坏时,终止进程 On System & app
Arbitrary code guard (ACG) 阻止未(经过微软)签名的模块加载,禁止创建未签名的可执行页,保护签名过的代码页使其不能被修改 N/a App
Block low integrity images 防止加载标记为低完整性的图像 N/a App
Block remote images 防止从远程设备加载图像 N/a App
Block untrusted fonts 防止加载任何未安装在系统字体目录中的基于GDI的字体,特别是来自web的字体 N/a App
Code integrity guard 限制加载Microsoft,WHQL或更高版本签名的图像 N/a App
Disable extension points 禁用允许将 DLL 注入所有进程的各种可扩展性机制 N/a App
Disable Win32k system calls 防止应用程序使用Win32k系统调用表 N/a App
Don’t allow child processes 防止应用程序创建子进程 N/a App
Export address filtering (EAF) This mitigation detects dangerous operations being resolved by malicious code. N/a App
Import address filtering (IAF) This mitigation detects dangerous operations being resolved by malicious code. N/a App
Simulate execution (SimExec) 确保敏感 api 的调用返回给合法调用者 N/a App
Validate API invocation (CallerCheck) 确保调用敏感API的调用者是合法的 N/a App
Validate handle usage 无效句柄引用后引发异常 N/a App
Validate image dependency integrity 强制对Windows映像依赖项加载执行代码签名 N/a App
Validate stack integrity (StackPivot) 确保堆栈不会被重定向到敏感API N/a App