- 2
- 0
- 约9.24千字
- 约 33页
- 2026-01-12 发布于中国
- 举报
PAGE2
PAGE1
逆向Windows8
内核安全特性
议程
目的:
逆向Windows8ReleasePreview版本
发现一些新的用于防御或缓和内核漏洞攻击的安全特性
目标:
主要关注ntoskrnl
工具:IDAPro/Hex-rays/windbg
Windows8对抗内核漏洞利用的安全特性
禁止零页内存分配
禁止Win32k系统调用
安全性故障中断
不可执行的非分页池
使用Intel?SecureKey技术
使用Intel?SMEP技术
禁止零页内存分配
禁止零页内存分配
PAGE1
PAGE1
禁止零页内存分配
PAGE1
零页内存:Windows上供16位虚拟机NTVDM使用,确保16位代码正常运行
内核漏洞攻击技巧,通过ZwAllocateVirtualMemory等系统调用可以在进程中分配出零页内存
触发未初始化对象指针/数据指针引用漏洞或辅助漏洞攻击。
案例:CVE-2010-4398
N-ProtectTKRgAc2k.syskernel0day(POC2010)
Window8上:禁止进程申请低地址内存(0x0~0x10000)
EPROCESS-Flags.VdmAllowed
Windows8上,16位虚拟机默认禁用,开启需要管理员权限
Windows8在所有可能的内存分配位置检查零页分配
MiCreatePebOrTeb:进线程启动,创建PEB或TEB时
MiMapViewOfImageSection-MiIsVaRangeAvailable:映射镜像内存区时
MiMapViewOfDataSection/MiMapViewOfPhysicalSection
映射数据内存区时
MmMapLockedPagesSpecifyCache/MmMapLockedPages-
MiMapLockedPagesInUserSpace
映射用户地址时(内核自身未这样使用,但其他驱动使用时会限制)
NtAllocateVirtualMemory:分配进程内存
禁止Win32k系统调用
禁止Win32k系统调用
PAGE1
PAGE1
禁止Win32k系统调用
PAGE1
禁止Win32k系统调用
EPROCESS-Flags2.DisallowWin32kSystemCalls
实现在:KiFastCallEntry(2)-PsConvertToGuiThread
禁用win32k系统调用的作用
Win32k.sys:Windows内核漏洞高发,调用不受进程权限限制
MS11-087Trojan.win32.Duqu字体解析漏洞
目前应用沙箱的防御策略:JobUI限制效果不佳
禁用win32k系统调用可以有效防御一切win32k.sys相关0day,无需内核驱动,配置简单
防御非0day的USER/GDI相关技巧突破沙箱
PsConvertToGuiThread:GUI线程首次调用win32ksystemcall时切换线程状态
应用DisallowWin32kSystemCalls标志后禁止切换,任何对USER32/GDI32相关调用都会失败
三种方式获得此标志:
1.IEFO注册表:
HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image
FileExecutionOptions\MitigationOptions(0
在进程创建过程NtCreateUserProcess-PspAllocateProcess-PspApplyMitigationOptions应用到标志位上
2.文档化的API:SetProcessMitigationPolicy
实际调用NtSetInformationProcess-ProcessMitigationPolicy设置标志位
3.从父进程继承
安全性故障中断
安全性故障中断
PAGE1
PAGE1
原创力文档

文档评论(0)