4. 浏览器防护措施¶
4.1. Edge¶
4.1.1. ACG (Arbitrary Code Guard)¶
ACG防止进程生成动态代码或者修改已经存在的可执行文件。这个是用ProcessDynamicCodePolicy来配置的。
- 有两个 W^X 策略
存在的代码页不可写
没有签名的代码页不能被创建
- 使用内存保护的手段来加固内核函数
NtProtectVirtualMemory
NtAllocateVirtualMemory
NtMapViewOfSection
其他
4.1.2. CIG (Code Integrity Guard)¶
CIG禁止进程载入没有签名的镜像,使用ProcessSignaturePolicy来配置
在创建section的内核函数NtCreateSection中强制
使用ProcessImageLoadPolicy防止载入不受信任的镜像
4.1.3. CFG (Control Flow Guard) 强制控制流完整性¶
CFG防止程序的控制流被劫持,使用ProcessControlFlowGuardPolicy来配置。
每次跳转的目标都是受控的,检查写在ntdll.dll的LdrpValidateUserCallTarget / LdrpDispatchUserCallTarget等函数
CFG不能保护基于ret的跳转