逆向Windows8内核安全特性.docVIP

  • 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)

1亿VIP精品文档

相关文档