作者:huity
出处:https://www.cnblogs.com/huity35/p/11203303.html
版权:本文版权归作者所有。文章在看雪、博客园、个人博客同时发布。
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任。
0x00 前言
近期开始学习Windows内核漏洞,参考了很多博客和其他资料,决定还是边学习边分享整个分析的过程。新手上路,如有错误,欢迎指正。
整个学习主要以HEVD(HackSysExtremeVulnerableDriver)这个项目为主,它一个存在漏洞的内核的驱动,里面存在多个漏洞,通过ControlCode控制漏洞类型,这个项目的驱动里几乎涵盖了内核可能存在的所有漏洞,从最基础的栈溢出,到池溢出,释放后重用等等类型,是一个非常好的项目。
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717194851285-717181081.jpg)
![](index_files/087b828b-8496-4847-a898-68b3f4a67b97.png)
实验环境:Win10专业版+VMware Workstation 15 Pro+Win7 x86 sp1
实验工具:VS2015+Windbg+KmdManager+DbgViewer
0x01 搭建双机调试环境
配环境是真的辛苦,不过丝毫马虎不得,不然影响后面的工作呀。
VMware+win7
![](index_files/028a82b2-9eea-47cd-b77e-156cb3910009.png)
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717205324185-996532019.png)
完成后,双击打开,是这样的:
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195004564-2024907085.jpg)
![](index_files/2fab7326-4d63-4e26-ac39-e4c811b158da.png)
![](index_files/dd4fe779-8c25-4e1e-8e02-d60147f5cdf6.png)
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717205413833-2019783289.png)
成功启动,又见到了我们熟悉的界面:
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195111629-1193750958.jpg)
![](index_files/c7c69034-4ad5-4d51-a67c-59a41172dcd7.jpg)
Windbg
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717205456341-1077272550.png)
![](index_files/e22f4605-591a-4852-a0af-ba36f46f007c.png)
安装完成后,需要配置虚拟机和主机串口,进行通信才能进行调试,借鉴前人经验,很快我们就可配置完成。
配置完成后,当我们打开调试模式后,windbg显示如下,及说明配置成功。
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195301285-1344252929.jpg)
![](index_files/0ca4b477-0324-4bc0-b1e8-2e1a43e7f151.png)
<wiz_code_mirror>
1
tips:安装完成后,可以保存快照,这样大大加速每次虚拟机开机效率。
编译驱动程序
我们需要安装Visual Studio 2015以及最新的SDK。还要安装Windows驱动程序工具包(WDK)。具体安装步骤可参考教程,安装完成后,下载项目。解压,打开Driver中的HEVD.sln文件,如下:
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195345565-2030838377.jpg)
![](index_files/7876a1bd-1fbe-42b8-96c6-12162cc7542c.png)
编译前,需要设置项目属性:
右键-属性-C/C++ - 警告等级 设置为等级3(/W3)
将警告视为错误 改为 否(/WX-)
-代码生成 -安全检查 改为 禁用安全检查(/GS-)
-链接器 - 将连接器警告视为错误 改为 否(/WX:NO)
-Driver Settings - Target OS Version 改为Windows 7
然后编译,如下所示,即生成驱动文件。
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195431963-329032427.jpg)
![](index_files/6308941f-e02a-4871-a390-625051f0e9bb.png)
多说一点,我第一次操作时,发现了编译不能成功,出现如下错误:
error : Invalid argument <HEVD.crt> for property <TestCertificate>.
经过长时间的查找资料,最终发现了解决方案,感谢海歌也疯狂的方法!
0x02 关于工具:
很多人都在用OSRLoader,我个人使用的是KmdManger和DbgViewer,有需要的可以点击下载。
提取码:kooc
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195512645-1228532004.jpg)
![](index_files/1a40d9b3-5bef-4840-ab29-6fa2185f75cc.jpg)
后面将开始对内核常见漏洞类型进行分析和学习,冲鸭!
![](https://img2018.cnblogs.com/blog/1613864/201907/1613864-20190717195522485-1825937883.png)
作者:huity
出处:http://www.cnblogs.com/huity35/
版权:本文版权归作者所有。
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任。
![](index_files/0.49390582760032653.png)
共勉。