x64位微软Windows内核重要的安全机制简介

Win32 Hook来Hook去很蛋疼……各种Hook 

Irp hook

ssdt hook

idt hook

sssdt hook

sysenter hook

....

还有各种DKOM摘链行为,比如人们喜闻乐见的EPROCESS摘链=。=


hook到都形成了hook链 你hook你的,我hook我的……Win32脆弱的内核安全机制使得rk大行其道,一旦加驱成功,系统基本呵呵...


自从64位出来后,微软开始强制推行两大机制:DSE(Driver Signature Enforcement)和KPP(Kernel Patch Protection),又被俗称PG(Patch Guard)。

DSE要求驱动程序提供可靠的数字签名,才能加载驱动,这也大大增加了内核的安全性——你没正规的数字签名,也没有相应正规的cat文件编录,就别想加载。

PG实际上是把windows的关键内核结构弄成一个表加密压缩后存起来然后定时检查——如果发现有关键内核结构被修改,直接报CRITICAL_STRUCTURE_CORRUPTION蓝屏。

实际上,在win7 x64中,PG只管一些关键数据结构。比如IRP HOOK 和 sssdt hook PG是不检测的——但是sssdt hook 在win8中PG会检测。


总之,正是DSE和KPP机制,使得windows整体安全性大大提升,也大幅减少了蓝屏的出现。但是这样也大幅限制了安全软件的原有技术,很多技术在x64环境下无法实现,于是许多杀软的防御倒退了好几年,如果你试试把它们的驱动拖到IDA——你都会在很多方面上看到惊人的相似之处。







你可能感兴趣的:(Windows系统)