免费教程_免费网赚教程_破解版软件-寂涯网络学习基地

当前位置: 主页 > 系统综合 > 系统安全 > 利用 WDM 驱动 本地提权(5)

利用 WDM 驱动 本地提权(5)

时间:2011-11-29 12:10来源:未知 整理:寂涯网络 点击:

 

它同样是检测接收和分发 IRP 的设备,进入处理 IRP_MJ_PNP 的分发例程可以发现,它创建
了 PDO:
 PAGE:00018314 sub_18314 proc near ; CODE XREF:
sub_17FC0:loc_17FDCp
PAGE:00018314
PAGE:00018314 arg_0 = dword ptr 8
PAGE:00018314 arg_4 = dword ptr 0Ch
PAGE:00018314
PAGE:00018314 push ebp
PAGE:00018315 mov ebp, esp
PAGE:00018317 push esi
PAGE:00018318 mov esi, [ebp+arg_4]
PAGE:0001831B mov eax, [esi+60h]
PAGE:0001831E movzx ecx, byte ptr [eax+1] ;MinorFunction
IRP_MN_QUERY_DEVICE_RELATIONS == 7
PAGE:00018322 sub ecx, 0
PAGE:00018325 jz short loc_18370
PAGE:00018327 dec ecx
PAGE:00018328 dec ecx
PAGE:00018329 jz short loc_18365
PAGE:0001832B sub ecx, 5

PAGE:0001832E jz short loc_1835A
[...]
PAGE:0001835A loc_1835A: ; CODE XREF: sub_18314+1Aj
PAGE:0001835A push esi
PAGE:0001835B push [ebp+arg_0]
PAGE:0001835E call sub_181AA
[...]
PAGE:00018110 sub_18110 proc near ; CODE XREF: sub_181AA+45p
PAGE:00018110
PAGE:00018110 var_8 = dword ptr -8
PAGE:00018110 var_4 = dword ptr -4
PAGE:00018110 arg_0 = dword ptr 8
PAGE:00018110
[...]
PAGE:0001811E push ebx ; DeviceObject
PAGE:0001811F push 1 ; Exclusive
PAGE:00018121 push 80h ; DeviceCharacteristics
PAGE:00018126 push 2Ah ; DeviceType
PAGE:00018128 push 0 ; DeviceName
PAGE:0001812A push 180h ; DeviceExtensionSize
PAGE:0001812F push dword ptr [eax+8] ; DriverObject  
PAGE:00018132 mov [ebp+var_4], ecx
PAGE:00018135 call ds:IoCreateDevice
PAGE:0001813B test eax, eax
[...]
PAGE:00018158 mov [esi+164h], eax
PAGE:0001815E mov byte ptr [esi+111h], 1 ; Sets Device Flag

一直都运行如常,这种情况已经运行很多年,并且一直运行得很好,因为你并不能访问
PDO,但是在 Vista 下,PDO 是暴露的,所以事情就发生逆转了。这一 PDO 将驱动对象分享
予 KSA 设备,由于函数 Ks!DispatchCreate(ks.sys)和 ks!DispatchRead 在调用
PcInitializeAdapterDriver后并没有被更改,如果我们在PDO上发送一个I/O请求(比如
IRP_MJ_WRITE(WriteFile)或者 IRP_MJ_READ(ReadFile)),那么我们就可以触发前文提及的
漏洞,最后即可在受影响的用户电脑上提及权限至SYSTEM,即使是 guest帐号也是可行的。 
 
修补方案
 
对于开发者而言,修补该漏洞并不复杂。如果你编写一个WDM驱动,并且需要创建“陌生”
设备,那么你就必须重写每一个包含在 KSDISPATCH_TABLE 中的 IRP handler。不过,KSA
提供了安全创建附加设备更为合适的方案,也就是,微软通过检测引用的 FsContext 指针
是否为 NULL 来避免了此类问题。

结论
 
编写安全驱动并非易事,这里面包括了很多重要理论,这需要很扎实的操作系统知识。当前
有一种在复杂系统上建模风险评估的方法,叫做“Swiss Cheese Theory”。这种建模方法被
广泛运用于航空工业,也用于分析 IT 安全行业中的风险因素。想象一下,所有这些存在微
孔的瑞士奶酪片,每片都是其中一个层,从而避免各种潜在威胁可以直接通过孔洞到达系统
最底层。如果各层均被破坏,那么整个系统将会受到破坏,你可能面临飞机崩溃,建筑物倒
塌或你的计算机受到攻击并被控制。本文所讲述的故事,就是所有的“奶酪”层失败的故事...
利用代码
 
exploit es1371mp.sys + WDM Audio Drivers checker源码,完整内容请参见附件:  

#include "stdafx.h"
#define IRP_MJ_WRITE                    0x04
#define OS_2K                            0
#define OS_XP_2K3_VISTA                    1
    //// typedef stuff
typedef ULONG (WINAPI *PNTALLOCATE)(IN HANDLE               ProcessHandle,
                                    IN OUT PVOID            *BaseAddress,

本页地址 http://www.jybase.net/xitonganquan/20111129678.html

百度搜索更多

谷歌搜索更多

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------

评价:
昵称: 验证码:点击我更换图片
推荐内容
赞助商
赞助商


关于本站免责声明视频更新google百度地图视频地图RRS订阅

如有什么问题请在本站留言,或发邮件到 hxt167#foxmail.com