欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

运用WinDbg内核本地调试器攻破Windows系统内核

来源:本站整理 作者:佚名 时间:2017-09-26 TAG: 我要投稿

在本文中,我将为读者先容一种应用windbg当地内核调试技巧在Windows内核中运行代码的办法。固然,精确的说这并不是一个漏洞破绽bug,因为这里只用到了windbg的失常功效,同时只应用了一个批处理文件(而不是powerhell或许vbs)和一些带有Microsoft的署名的可运行文件(此中一些曾经是位于操纵体系和windbg中的,我是经由过程批处理文件转储获得的)。
应用该办法,无需在用户形式下启动可运行文件(固然某些Microsoft署名的可运行文件除外)或加载已署名的驱动程序。是以,PatchGuard和其余掩护步伐也无奈阻拦咱们。 经由过程该办法,咱们会将代码间接放入内核内存空间中,而后经由过程hook一些线程来运行它。正如咱们将演示的那样,由一个简略的批处理文件构成的歹意软件将可以或许跳转到内核,经由过程当地内核调试技巧和windbg使其代码得以在内核中运行。
本文由五个部门构成:
1.将文件转储到批处理文件中:将二进制文件嵌入并转储到批处理文件中的几种办法。
2.以管理员身份运行批处理文件:这里先容从批处理文件到获得UAC提醒符的办法(不应用powershell、vbs ...)
3.启用当地内核调试:若何从批处理文件中启用当地内核调试。
4.应用windbg修补内核内存,从而注入并运行咱们的代码:一种经由过程批处理文件应用windbg当地内核调试技巧来修补内核内存并在内存中运行咱们的代码的办法。
5.末了,咱们将把一切这些器械放在一路,打造一个观点验证式的批处理文件,它适用于Windows 8.1 x64机械,同时,咱们还会停止一些响应的测试。
 
1)将相干文件嵌入到磁盘上的批处理文件中
实际上,可以或许有许多办法都可以或许到达该目标,这里挑几种加以先容。
1.1)创立一个.bab(也即.cab):
可以或许应用Microsoft对象makecab.exe(或Windows的晚期版本中的cabarc.exe)来创立CAB文件。这些CAB文件用来寄存咱们要转储、紧缩的文件。 然则咱们还会增加一个未紧缩的文件,即咱们的第一个文件:咱们的批处理文件。
要应用makecab.exe,咱们必需给它供给一个.ddf文件的门路作为参数:

makecab.exe / F makecab.ddf
该.ddf文件的感化是让makecab.exe创立CAB文件。 您可以或许在这里(https://msdn.microsoft.com/en-us/library/bb417343.aspx )找到无关makecab.exe的信息,和从这里(https://msdn.microsoft.com/en-us/library/bb417343.aspx#microsoftmakecabusersguide )找到对付microsoft cabinet格局的信息。
假定咱们有一个setup.exe文件(咱们想要转储到磁盘的可运行文件)和一个setup.bat文件(主批处理文件)。
Setup.bat:
@echo off
mkdir expanded
expand %0 expanded -F:*
expanded\setup.exe
pause
goto:eof
咱们必要创立一个.ddf文件,其感化是让makecab.exe去创立一个包括setup.bat和setup.exe的CAB:
Makecab.ddf:
.OPTION EXPLICIT ; Generate errors on variable typos
.Set Cabinet=on
.Set Compress=off
.Set InfAttr= ; Turn off read-only, etc. attrs
setup.bat
.Set Cabinet=on
.Set Compress=on
setup.exe
将setup.exe、setup.bat和makecab.ddf放在同一个目次中,而后运行敕令:

makecab.exe / F makecab.ddf
,如许就可以获得响应的CAB文件了。
CAB文件的内容以下所示:

咱们可以或许看到CAB文件中保留了两个文件,此中第一个文件是未紧缩的批处理剧本,第二个文件是紧缩过的setup.exe。 假如咱们将.cab文件重命名为.bat,并运行该.bat文件,那末不会呈现任何成绩。第一个二进制文件的内容(CAB标头)将被批处理文件解释器疏忽:它会测验考试运行它,但它会表现差错新闻,当解释器找到批处理未紧缩的代码时,它会运行该代码,这时候不会呈现任何成绩。这个批处理代码运行expand.exe,它是作为参数传递给咱们的.bat文件(也就是CAB文件)的,而且CAB文件被解紧缩到目次“expanded”中。 以后,就会运行setup.exe。
1.2)转储ascii编码的二进制文件,应用certutil.exe停止解码:
在本文中,咱们将应用对象certutil.exe(相干信息请看这里https://technet.microsoft.com/en-us/library/cc732443.aspx )将二进制文件编码为文本,并将其嵌入到批处理文件中:

certutil -encode file.bin file.enc
file.bin是一个二进制文件,此中包括:
0x00 0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x99 0xaa 0xbb 0xcc 0xdd 0xee 0xff
编码后,咱们获得一个文本文件file.enc:
-----BEGIN CERTIFICATE-----
ABEiM0RVZneImaq7zN3u/w==
-----END CERTIFICATE-----
咱们将这个文本嵌入到批处理文件中,即把它转储到磁盘,以后可以或许应用

certutil -decode
将该文本再次解码为二进制文件。
批处理文件:
@echo off
call:DumpBlock setup.bat "%temp%\file.enc" _____binstart_____ _____binend_____
certutil -decode "%temp%\file.enc" "%temp%\file.bin"
goto:eof
:DumpBlock
@echo off
SetLocal EnableDelayedExpansion
echo. %~1 %~2 %~3 %~4
set SrcFile=%~1
set DestFile=%~2
set StartBlockMark=%~3
set EndBlockMark=%~4
set Flag=0
del /F %DestFile%
for /f "tokens=* delims=" %%a in ('type %SrcFile%') do (
if !Flag! EQU 2 (echo "set Flag=1"&set Flag=1)
if /i "%StartBlockMark%" EQU "%%a" (echo "set Flag=2"&set Flag=2)
if /i "%EndBlockMark%" EQU "%%a" (echo "set Flag=0"&set Flag=0)
if !Flag! EQU 1 (echo %%a >> %DestFile%)
)
goto:eof
@echo off

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载