首页
社区
课程
招聘
[翻译]初学Windows内核漏洞利用(二):熟悉HEVD
发表于: 2017-6-29 22:01 6171

[翻译]初学Windows内核漏洞利用(二):熟悉HEVD

2017-6-29 22:01
6171

初学Windows内核漏洞利用(一):搭建实验环境  http://bbs.pediy.com/thread-218838.htm


最近我刚刚开始学习Windows内核漏洞利用,因此决定以博客的形式分享一些我的学习心得。

上一部分介绍了如何搭建实验环境;现在,我们将接触Ashfaq Ansari所开发的HEVDHackSys Extreme Vulnerable DriverHackSys Team小组所开发的一个Kernel Driver,其中包含大量常见漏洞且原理简单,主要考验各种利用方法,项目网址:aa0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Z5j5h3y4C8M7%4W2K6N6r3g2S2L8g2)9J5c8V1S2S2j5$3E0e0P5i4y4q4P5s2c8J5k6h3#2W2g2Y4g2D9L8X3g2J5j5h3u0D9k6f1c8J5K9i4k6W2M7R3`.`.),进而将其熟练掌握。下一部分,我计划简要介绍一些漏洞示例和利用技术。

本文所用到的软硬件环境:

·上一部分所描述的实验环境;

·HackSys Extreme Vulnerable DriverHEVD),包括预构建版本(下载网址:520K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Z5j5h3y4C8M7%4W2K6N6r3g2S2L8g2)9J5c8V1S2S2j5$3E0e0P5i4y4q4P5s2c8J5k6h3#2W2g2Y4g2D9L8X3g2J5j5h3u0D9k6f1c8J5K9i4k6W2M7W2)9J5c8Y4u0W2L8r3g2S2M7$3g2K6)和源代码(下载网址:663K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Z5j5h3y4C8M7%4W2K6N6r3g2S2L8g2)9J5c8V1S2S2j5$3E0e0P5i4y4q4P5s2c8J5k6h3#2W2g2Y4g2D9L8X3g2J5j5h3u0D9k6f1c8J5K9i4k6W2M7R3`.`.);

·OSR驱动加载器(下载网址:b17K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2G2M7%4u0G2L8X3I4A6L8X3g2Q4x3X3g2U0L8$3#2Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0W2j5$3k6E0i4K6y4r3j5i4u0@1K9h3y4D9k6g2)9K6c8o6p5#2y4H3`.`.);

·DebugView工具(下载网址:985K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1k6h3y4Z5L8X3g2@1i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8Y4y4&6M7$3W2F1N6r3g2J5L8X3q4D9M7#2)9J5c8X3c8W2j5Y4g2Y4N6X3W2W2N6#2)9J5k6h3q4K6M7s2R3`.,位于Sysinternals工具集中,下载网址:9c6K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6@1k6h3y4Z5L8X3g2@1i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8Y4y4&6M7$3W2F1N6r3g2J5L8X3q4D9M7#2)9J5c8X3u0T1z5o6b7J5x3o6j5J5);

·Visual Studio 2012开发环境(可以选择你喜欢的版本)。

安装并测试HEVD

首先,我将演示如何安装HEVD:我们将搭建并配置调试方和被调试方,使得调试字符串和HEVD的符号可见;我们还将接触专项利用工具。

查看调试字符串

HEVD和专项利用工具以调试字符串的形式打印大量的信息。我们既可以从调试方主机(使用WinDbg调试器),也从被调试方主机(使用DebugView工具)查看这些信息。

为了查看驱动安装过程中所打印的字符串,我们将在安装HEVD之前进行适当的配置。

调试方:

为了获得命令行提示符“kd”,我们需要中断被调试方的执行流程(在WinDbg调试器中,选择“调试”菜单 -> “中断”选项)。然后,我们使用如下命令,启动打印调试字符串的功能:

之后,我们通过执行“g”命令,使被调试方恢复运行。

注意:开启该功能会使被调试方运行速度变慢;因此,应尽可能在本地查看调试字符串(即只在被调试方)。

被调试方:

    我们需要以管理员权限运行DebugView工具,然后选择“拦截”菜单 -> “拦截内核模式”,如下图所示。


安装驱动

首先,我们将预构建的程序包(驱动+漏洞)下载到被调试方(即被攻击主机),安装并测试。我们可以在HackSys Team小组的github页面发布版块(网址:96aK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6Z5j5h3y4C8M7%4W2K6N6r3g2S2L8g2)9J5c8V1S2S2j5$3E0e0P5i4y4q4P5s2c8J5k6h3#2W2g2Y4g2D9L8X3g2J5j5h3u0D9k6f1c8J5K9i4k6W2M7W2)9J5c8Y4u0W2L8r3g2S2M7$3g2K6)找到它。程序包丽包括两个版本的驱动,有漏洞/无漏洞;我们选择有漏洞,32位系统编译(i386)的版本,如下图所示。

我们选择服务启动类型为“自动”;然后点击“注册服务”按钮,在其成功后点击“启动服务”。

我们可以在WinDbg调试器(调试方主机)和被调试方主机上的DbgView工具上看到所打印的HEVD旗标信息。

添加符号

HEVD的预编译程序包自带符号文件(sdb文件),我们可以将其添加到调试方。首先,我们通过发送中断信号来停止被调试方的运行,并使用“lm”命令查看所有已加载模块。

为了找到HEVD模块,我们通过如下命令来设置过滤器:

从结果可见,HEVD模块没有附加任何符号;还好,这很容易修复。首先,为了打印WinDbg调试器在搜索符号过程中参考路径的所有信息,我们使用如下命令开启符号加载通知:

然后,使用如下命令尝试重载符号:

并尝试再次引用它们。从所见到的路径中,我们可以复制pdb文件;在将pdb文件移动到调试方主机的合适位置之后,重新加载符号。可以通过使用如下命令尝试打印HEVD中的所有函数,来测试符号是否成功添加:

测试漏洞利用工具

相同的程序包中还包含一组专项利用工具,我们可以通过执行适当的命令来运行其中每一个工具。下面我们尝试使用其中一些工具,并将cmd.exe设置为待运行的程序,如下图所示。


使用Pool Overflow漏洞利用工具,如下图所示。

如果整个漏洞利用过程运行成功,目标程序(cmd.exe)将被分配更高的权限。

通过执行命令“whoami”可以确认,该程序确实提权运行了,结果如下图所示。


同时,我们可以在调试方主机上看到漏洞利用工具所打印的调试字符串,如下图所示。


除了Double Fetch漏洞之外,其他所有的漏洞利用工具在单核环境下都将运行良好;如果我们想要(Double Fetch)漏洞利用工具生效,就需要保证被调试主机为双核环境。

注意:某些漏洞利用工具并不是100%可靠,在使用它们之后可能会造成系统崩溃;别担心,这很正常。

驱动你好,开始交流!

与用户层情况类似,内核层的漏洞利用同样开始于寻找能够向程序提供输入的点;然后,我们需要找到能够干扰执行流程(与用户层不同,内核层的一次崩溃将直接导致蓝屏!)的输入;最终,我们将尝试精心构造输入,以便我们能够控制有漏洞程序的执行流程。

为了能够从用户模式与驱动交流,我们将向其发送IOCTLInput-Output control 输入/输出控制)信号。IOCTL信号允许我们从用户层向驱动发送一些输入缓冲区;这就是我们可以尝试漏洞利用突破的点。

HEVD包含了各种类型漏洞的样例,其中每一个都可以通过使用不同的IOCTL信号来触发,并通过所提交的缓冲区来利用;其中某些(并非所有)漏洞在触发时将导致系统崩溃。

查找设备名称与IOCTL信号列表

我们在与驱动交流之前,需要知道两件事情:


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
打赏 + 1.00雪花
打赏次数 1 雪花 + 1.00
 
赞赏  CCkicker   +1.00 2017/07/12
最新回复 (3)
雪    币: 62
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
so  nice
2017-6-29 22:31
0
雪    币: 1746
活跃值: (277)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
3
没想到,真的有人翻译内核漏洞系列了,不过fuzzsecurity网站上的内核漏洞比较全一点
2017-6-30 20:01
0
雪    币: 1784
活跃值: (512)
能力值: ( LV12,RANK:310 )
在线值:
发帖
回帖
粉丝
4
hackyzh 没想到,真的有人翻译内核漏洞系列了,不过fuzzsecurity网站上的内核漏洞比较全一点
谢谢,下一篇翻译完了我会去看一看,学习一下
2017-6-30 21:38
0
游客
登录 | 注册 方可回帖
返回