在这个文章系列中,我将为大家介绍如何分析和利用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(或两者都要!)
现在,假设您已经安装了上面列出的所有必要工具,接下来,我们开始介绍如何设置环境。(这里假设您已经安装了Windows 7 x86的新实例(无论是安装在VMware Fusion,或者VMware Workstation等虚拟机上)。
我们将已安装的Windows 7 x86实例命名为“Windows 7 (x86) - Debugger”。
以下是设置“Windows 7 (x86) - Debugger”计算机时需要采取的具体步骤:
首先,我们需要安装“WinDBG - Debugging Tools”
为了节省时间,我们现在将通过创建系统变量来设置调试符号
然后,转到“Computer -> Properties -> Advanced System Settings -> Environment Variables”
并通过以下命令创建系统变量:
变量名称:_NT_SYMBOL_PATH
变量的值: SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols
接下来,请安装OSRLOADER(稍后将完成驱动程序注册过程)
安装OSRLOADER后,我们请继续安装IDA Freeware
之后,为GCC安装Python和/或Mingw-w64(并将其安装路径添加到环境变量“Path”中)
C:\Program Files\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin
C:\Python27
接下来,让我们将HackSysExtremeVulnerableDriver的内容提取到桌面
此外,由于这是调试器机器,因此将“HEVD.pdb”文件放在如下所示的目录中,这样的话,不仅可以节省一些时间,还能避免许多让人头痛的问题(因为这样的话,WinDGB就可以解析驱动程序符号了)
对于HEVD-v3.0:
C:\projects\hevd\build\driver\vulnerable\x86\HEVD\HEVD.pdb
最后,在Windows 7 (x86) - Debugger机器上面,安装您喜欢的文本编辑器。
现在,Windows 7 (x86) - Debuger机器就算设置好了,让我们关闭虚拟机,并创建一个机器的链接克隆。让我们把这个克隆的虚拟机命名为Windows 7 (x86) - Debuggee。
为了完成上面的操作,我们只需右键单击Windows 7 (x86) - Debugger,并选择“VMware - Library’ -> Manage -> Clone -> Create a linked clone”即可。
现在我们已经成功地将Windows 7 (x86) - Debugger克隆为Windows 7 (x86) - Debuggee,在设置方面,我们需要做的事情很少。
下面是我们需要在Windows 7 (x86) - Debuggee机器上要执行的步骤:
使用BCD启用调试功能:
以管理员身份运行CMD,并执行以下命令:
bcdedit /copy {current} /d "Debug"
bcdedit /debug {} on
bcdedit /dbgsettings
最后,我们需要使用OSRLOADER注册并启动HEVD驱动程序。
现在,我们已成功完成Windows 7(x86)-Debuggee计算机的设置!
上面,我们已经在两台机器上安装/配置了我们需要的一切,我们现在必须在两个VMware虚拟机配置(.VMX)文件中添加/修改某些设置。由于我们的环境搭建在Windows 7系统上,并且不支持通过网络连接进行通信,因此,我们需要为每台计算机添加一个串行端口,以便实现通信。
对于Debugger机器,需要将以下内容添加到.VMX文件中:
serial0.present = “TRUE”
serial0.fileType = “pipe”
serial0.fileName = “\.\pipe\com_1”
serial0.pipe.endPoint = “server”
对于Debuggee机器,需要在其.VMX文件中添加以下内容:
serial0.present = “TRUE”
serial0.fileType = “pipe”
serial0.fileName = “\.\pipe\com_1”
serial0.pipe.endPoint = “client”
对.VMX文件进行修改后,一定要保存所做的工作。现在,让我们进行相关测试,以确保我们的Debugger和Debuggee机器之间能够正常通信。
为此,我们首先要启动Windows 7 (x86) - Debugger机器,并打开WinDBG。然后,在WinDBG内,切换至“File -> Kernel Debug.. -> COM”,并验证波特率值与我们在上一节运行的bcdedit/dbgsettings命令时显示的值是否一致,同时,检测端口值是否被设置为com1。验证设置无误后,点击“OK”按钮。
现在,Windows 7 (x86) - Debugger机器正在等待Windows 7 (x86) - Debuggee进行连接,让我们启动它,并从Windows启动管理器屏幕中选择“Debug”选项。
如果您成功地完成了上述所有步骤,当切换回运行WinDBG的Windows 7 (x86) - Debugger机器时,应该看到已经成功地与Windows 7 (x86) - Debuggee机器建立了连接!
在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),那么工作区文件将为您节约一些时间。
下面是我的工作区文件:
如果您已经完成了上述操作,并且一切正常,那就太棒了!因为这就意味着我们接下来就可以开始鼓捣更加有趣的东西了!
在本系列教程的下一部分中,我们将开始介绍如何使用IDA Freeware来分析HEVD驱动程序。在分析HEVD驱动程序之后,我们将使用分析期间收集的信息开始构建针对HEVD堆栈溢出漏洞的exploit代码。
原文地址:https://jb05s.github.io/HEVD-Driver-Exploitation-Part-1/
本文作者:mssp299
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/148558.html