HEVD驱动程序漏洞利用之道,Part 1:搭建环境

2020-12-04 9,580

概述

在这个文章系列中,我将为大家介绍如何分析和利用Windows系统中存在安全漏洞的驱动程序,加强读者对于驱动程序漏洞利用的理解。

此外,由于本人正在学习C语言,所以,我不仅将用Python编写/描述相关的漏洞利用代码,还将提供C语言的对等版本!在本文中,我将用Python来编写/描述相关的漏洞利用代码。

在本文中,我们主要介绍测试环境的设置过程。虽然这可能不是最有趣的,但它是至关重要的一部分。如果这是你第一次接触这个过程,本文将给您带来很大的帮助,至少,可以免去到处查找在线文章的繁琐过程——相反,您只要阅读本文就足够了!

所需软件

首先,我们要搭建内核调试的测试环境。

在此过程中,我们需要用到下面的软件:

1. Windows 7 32位虚拟机(VM)

2. HackSysExtremeVulnerableDriver v3.0(HEVD)

3. WinDBG(您只需安装“Debugging Tools”即可)

4. IDA Freeware

5. OSRLOADER(注册易受攻击的驱动程序)

6. 文字编辑器(我建议使用Sublime Text)

7. Python或C(或两者都要!) 

Debugger

现在,假设您已经安装了上面列出的所有必要工具,接下来,我们开始介绍如何设置环境。(这里假设您已经安装了Windows 7 x86的新实例(无论是安装在VMware Fusion,或者VMware Workstation等虚拟机上)。

我们将已安装的Windows 7 x86实例命名为“Windows 7 (x86) - Debugger”。

以下是设置“Windows 7 (x86) - Debugger”计算机时需要采取的具体步骤:

         首先,我们需要安装“WinDBG - Debugging Tools

image.png 

         为了节省时间,我们现在将通过创建系统变量来设置调试符号

         然后,转到“Computer -> Properties -> Advanced System Settings -> Environment Variables”

         并通过以下命令创建系统变量: 

            变量名称:_NT_SYMBOL_PATH

            变量的值: SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols

接下来,请安装OSRLOADER(稍后将完成驱动程序注册过程)

image.png 

     安装OSRLOADER后,我们请继续安装IDA Freeware

image.png 

     之后,为GCC安装Python和/或Mingw-w64(并将其安装路径添加到环境变量“Path”中) 

        C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin

        C:\Python27

image.png 

    接下来,让我们将HackSysExtremeVulnerableDriver的内容提取到桌面

         此外,由于这是调试器机器,因此将“HEVD.pdb”文件放在如下所示的目录中,这样的话,不仅可以节省一些时间,还能避免许多让人头痛的问题(因为这样的话,WinDGB就可以解析驱动程序符号了)

             对于HEVD-v3.0: 

C:\projects\hevd\build\driver\vulnerable\x86\HEVD\HEVD.pdb

image.png 

    最后,在Windows 7 (x86) - Debugger机器上面,安装您喜欢的文本编辑器。

Debuggee

现在,Windows 7 (x86) - Debuger机器就算设置好了,让我们关闭虚拟机,并创建一个机器的链接克隆。让我们把这个克隆的虚拟机命名为Windows 7 (x86) - Debuggee。

为了完成上面的操作,我们只需右键单击Windows 7 (x86) - Debugger,并选择“VMware - Library’ -> Manage -> Clone -> Create a linked clone”即可。

image.png 

现在我们已经成功地将Windows 7 (x86) - Debugger克隆为Windows 7 (x86) - Debuggee,在设置方面,我们需要做的事情很少。


下面是我们需要在Windows 7 (x86) - Debuggee机器上要执行的步骤:

    使用BCD启用调试功能:

        以管理员身份运行CMD,并执行以下命令:

            bcdedit /copy {current} /d "Debug"

            bcdedit /debug {} on

            bcdedit /dbgsettings

image.png 

    最后,我们需要使用OSRLOADER注册并启动HEVD驱动程序。 

image.png 

 

现在,我们已成功完成Windows 7(x86)-Debuggee计算机的设置!

实现DebuggerDebuggee之间的通信

上面,我们已经在两台机器上安装/配置了我们需要的一切,我们现在必须在两个VMware虚拟机配置(.VMX)文件中添加/修改某些设置。由于我们的环境搭建在Windows 7系统上,并且不支持通过网络连接进行通信,因此,我们需要为每台计算机添加一个串行端口,以便实现通信。

对于Debugger机器,需要将以下内容添加到.VMX文件中: 

    serial0.present = TRUE

    serial0.fileType = pipe

    serial0.fileName = \.\pipe\com_1

    serial0.pipe.endPoint = server

image.png 

对于Debuggee机器,需要在其.VMX文件中添加以下内容: 

    serial0.present = TRUE

    serial0.fileType = pipe

    serial0.fileName = \.\pipe\com_1

    serial0.pipe.endPoint = client

image.png 

.VMX文件进行修改后,一定要保存所做的工作。现在,让我们进行相关测试,以确保我们的Debugger和Debuggee机器之间能够正常通信。


为此,我们首先要启动Windows 7 (x86) - Debugger机器,并打开WinDBG。然后,在WinDBG内,切换至“File -> Kernel Debug.. -> COM”,并验证波特率值与我们在上一节运行的bcdedit/dbgsettings命令时显示的值是否一致,同时,检测端口值是否被设置为com1。验证设置无误后,点击“OK”按钮。

image.png 

现在,Windows 7 (x86) - Debugger机器正在等待Windows 7 (x86) - Debuggee进行连接,让我们启动它,并从Windows启动管理器屏幕中选择“Debug”选项。

image.png 

如果您成功地完成了上述所有步骤,当切换回运行WinDBG的Windows 7 (x86) - Debugger机器时,应该看到已经成功地与Windows 7 (x86) - Debuggee机器建立了连接! 

image.png 

验证驱动程序

debugger和debuggee机器之间成功建立连接后,我们还需要进行最后一次检查,以确保所有内容都配置正确,然后,才能继续下面的工作。

让我们从Windows7(x86)-Debugger上的WinDBG(CTRL+break)进入debuggee,并验证HEVD模块是否已加载,其符号是否已成功映射。

为了完成这项任务,我们需要在windbg内运行以下命令: 

    lm m H* (查询以字母“H”开头的已加载模块) 

    x /D HEVD!a* (查询“HEVD”模块内以字母“A”开头的函数列表) 

如果无法枚举HEVD,请检查是否已经在Windows 7 (x86) - Debuggee上通过OSRLOADER成功注册并启动了HEVD服务。

如果无法枚举HEVD函数,请检查HEVD.pdb文件是否位于Windows 7 (x86) - Debuggeer机器的正确目录中。

提示和技巧

在我短暂的内核利用和WinDBG使用的过程中,我发现了一些小技巧,我发现它们对我很有帮助(并且为我节省了大量的时间),所以,我们很高兴将它们介绍给大家。


以下是我在Debugger机器上做的一些设置,这样可以节省许多时间,并避免重复劳动。 

cmd.exe和WinDbg (x86)固定到任务栏上。

    cmd.exe的属性中,我将Start in:变量设置为%HOMEDRIVE%%HOMEPATH%\Desktop。

    WinDbg (x86)的属性中,我将Start in:变量设置为%HOMEDRIVE%HOMEPATH%\Desktop。

        修改这个变量后,相关程序就会从保存工作空间文件(.WEW)的目录中启动。

    WinDbg (x86)的属性中,我将Target:变量设置为“C:\Program Files\Windows Kits\10\Debuggers\x86\windbg.exe” -k com:port=COM1,baud=115200。

        这将使WinDbg在打开WinDbg时自动设置debugger和debuggee机器之间的通信。

    WinDbg创建一个工作区文件。

        如果您喜欢从Immunity Debugger进行windows设置(假设您以前使用过Immunity Debugger),那么工作区文件将为您节约一些时间。

        下面是我的工作区文件: 

image.png 

小结

如果您已经完成了上述操作,并且一切正常,那就太棒了!因为这就意味着我们接下来就可以开始鼓捣更加有趣的东西了!

在本系列教程的下一部分中,我们将开始介绍如何使用IDA Freeware来分析HEVD驱动程序。在分析HEVD驱动程序之后,我们将使用分析期间收集的信息开始构建针对HEVD堆栈溢出漏洞的exploit代码。 

image.png 

原文地址:https://jb05s.github.io/HEVD-Driver-Exploitation-Part-1/

 


本文作者:mssp299

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/148558.html

Tags:
评论  (0)
快来写下你的想法吧!

mssp299

文章数:51 积分: 662

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号