首页
社区
课程
招聘
[翻译]初学Windows内核漏洞利用(一):搭建实验环境
发表于: 2017-6-28 20:23 5988

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

2017-6-28 20:23
5988

最近我刚刚开始学习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文件夹中):

建立被调试方

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

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

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

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

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

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

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

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

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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
打赏 + 5.00雪花
打赏次数 1 雪花 + 5.00
 
赞赏  CCkicker   +5.00 2017/07/12
最新回复 (1)
雪    币: 1795
活跃值: (63)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
佩服。。
2017-6-28 23:10
0
游客
登录 | 注册 方可回帖
返回
//