首页
论坛
专栏
课程

[翻译]初学Windows内核漏洞利用(一):搭建实验环境

2017-6-28 20:23 2548

[翻译]初学Windows内核漏洞利用(一):搭建实验环境

2017-6-28 20:23
2548

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

本部分主要是关于搭建实验环境;接下来的部分我计划介绍一下如何使用Ashfaq Ansari所开发的“HackSys Extreme Vulnerable Driver”(HEVD,项目网址为:https://github.com/hacksysteam/HackSysExtremeVulnerableDriver)来做一些练习。

希望对大家有所帮助!

本文中我所用的环境如下:

·使用Kali Linux作为主机系统(当然,你可以选择你所偏好的任何系统);

·VirtualBox虚拟机软件(下载网址:https://www.virtualbox.org/);

·2台虚拟机,操作系统为Windows 7(32),且都安装了Virtual Guest Additions工具(译者注:类似于VMware Workstation上的VMTools)——其中一台虚拟机用作调试方,另一台作为被调试方;

·WinDbg调试器(可以在Windows SDK中找到,下载网址:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk)。

当我们进行用户级的调试时,调试方与被调试方在同一台机器上;而在内核级调试的情况下这不可能,因为我们需要对被调试的操作系统进行完全控制(即,如果我们中断程序执行,整个系统都将冻结)。这就是为什么我们需要两台虚拟机扮演不同的角色。

建立调试方

调试方是指我们用于监视被调试方的机器;因此,我们需要在上面安装WinDbg调试器,并配置符号以解析系统结构。

为了安装WinDbg调试器,我们需要下载Windows SDK(下载网址:https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk);根据Windows系统版本,有时我们还需要安装一些必要的更新。

在安装选项中,必须选择调试工具,如下图所示。


WinDbg调试器安装后,我们应该添加符号;为此,我们只需要添加一个环境变量“_NT_SYMBOL_PATH”,WinDbg调试器将自动引用该变量。

然后使用能够下载符号的链接为其赋值,如下所示:

https://msdl.microsoft.com/download/symbols

完整的变量内容看起来就像这样(含义:下载的符号将存储于C:\Symbols文件夹中):

SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols

建立被调试方

我们需要配置被调试方,使其能够被外部控制。为此,我们在启动菜单中添加一个额外选项;当我们以该配置启动系统时,将启用调试功能。

    我们需要用到一个工具“bcdedit”。首先,我们将当前设置复制到一个新的选项,比方说名为“Debug me”。具体命令格式如下:

bcdedit /copy {current} /d "Debug me"

该命令将返回一个新选项的GUID,我们需要复制并开启该选项的调试功能。具体命令格式如下:

bcdedit /debug {MY_GUID} on

最后,我们可以看一下调试接口可用的设置,具体命令如下:

bcdedit /dbgsettings

在调试方与被调试方之间建立连接

调试方与被调试方将通过串行端口COM1进行通信,而该串口是通过主机系统上的命名管道仿真实现的。配置非常简单,我们只需要保证调试方与被调试方具有相同的管道命名集合。调试方创建管道,之后被调试方连接已存在的管道(这就是必须先运行调试方的原因)。

    我使用Linux系统作为主机系统,因此选择管道名称如下:

/tmp/wke_pipe

请注意,如果你使用Windows系统作为主机系统,你的管道名称应该遵循不同的约定,例如:

\\.\pipe\wke_pipe

更多内容请参阅网址:https://en.wikipedia.org/wiki/Named_pipe

测试连接

万事俱备,现在我们只需要测试环境是否正确运行!首先启动调试方,运行WinDbg,然后让其等待被调试方的连接。例如:

“文件”菜单 -> “内核模式调试”选项,如下图所示。


选择COM作为接口,如下图所示。

然后我们运行被调试方主机;当确定被调试方连接到管道时,我们可以将其中断。例如:

被调试方连接上管道,如下图所示。

现在我们可以将其中断,选择“调试”菜单 -> “中断”选项,如下图所示。

当命令行窗口提示符为“kd”时,代表我们正控制着被调试方,如下图所示。

此时被调试方被冻结,等待着调试方的命令。通过运行“g”命令,我们可以释放被调试方并使其继续运行,如下图所示。





原文链接:https://hshrzd.wordpress.com/2017/05/28/starting-with-windows-kernel-exploitation-part-1-setting-up-the-lab/

本文由 看雪翻译小组 木无聊偶 编译

转载请注明来源



[公告]安全测试和项目外包请将项目需求发到看雪企服平台:https://qifu.kanxue.com

打赏 + 5.00
打赏次数 1 金额 + 5.00
 
赞赏  CCkicker   +5.00 2017/07/12
最新回复 (1)
myangel 2017-6-28 23:10
2
0
佩服。。
游客
登录 | 注册 方可回帖
返回