一个内核漏洞的学习过程: 漏洞重现,漏洞分析,漏洞利用,漏洞总结
漏洞重现: 环境搭建,POC编译
漏洞分析:源码分析,反汇编分析,POC分析,补丁对比,内核调试跟踪,蓝屏分析
漏洞利用:特权提升,远程溢出,本地溢出,远程DOS,本地DOS
漏洞总结:根本原因,修补方法
编写安全驱动程序:
检查输入输出:
KPROCESSOR_MODE PreviousMode = KeGetPreviousMode()
if(PreviousMode != KernelMode)
{
ProbeForWrite(Buffer,length,1);
}
验证驱动调用者::
检查调用者进程EPROCESS,进程文件MD5,用户态程序和驱动程序的通信加密,对于解密失败或非法通信数据的情况不予处理
白名单机制的挑战
只要白名单中的驱动存在漏洞,利用漏洞进行提权等操作,同样可以实现需要的功能
解决方法是对白名单设立 “准入制度” ,定期审计,发现该驱动的漏洞或外部公布的漏洞,需要第一时间通知用户,提供补丁升级服务