绕过HIPS可能性测试
HIPS拦截程序启动的主要手段为Hook进程创建时必须经过的服务函数,如NtCreateSection、NtResumeThread
这些服务函数在ring3是无法对其绕过的
而且程序进入ring0的道路一般都被HIPS封死了,ring3 ReSSDT的方法也会引起HIPS的反应,所以要完全绕过HIPS的拦截而启动程序
那是相当困难的事
所以这里提到的方法,并不是真正的ByPassHIPS,而是“骗”过HIPS,或者说绕过HIPS的规则
如何骗?
以运行记事本程序为例
我们要做的就是让HIPS认为记事本不是由我们的程序启动的,而是其它正常的进程,如explorer.exe。
一般大家由于考虑到规则的易用性,AD规则的设置都是允许explorer.exe执行几乎所有程序,所以这就存在绕过的可能
具体做法:
hook Native Api NTCreateProcess(Ex)
注意到NTCreateProcess的第四个参数InheritFromProcessHandle,这个参数就是父进程的句柄,指明父进程
(小声地说:这个参数是进程权限继承的基础,如果我们能够成功修改这个参数,就可以打破权限继承机制,实现包括提权的操作)
我们要做的就是把这个参数替换为其它某个进程的句柄,那么HIPS在拦截时就会认为启动程序的父进程就是修改后的那个进程了
由于hook的是Native Api,NTCreateProcess(Ex)由ntdll.dll导出,因此这个操作在ring3就能完成
附测试程序
测试方法:
建立规则禁止(或者询问)CreateProcesstest.exe执行记事本(notepad.exe),或者禁止其执行任何程序也可以
然后执行CreateProcesstest.exe,CreateProcesstest.exe会尝试运行记事本,此时看看记事本程序是否已经运行,同时HIPS是否正确拦截
能否过HIPS与HIPS判断父进程的方法有关,经测试可过EQ4,KIS8
请测试瑞星
http://bbs.kafan.cn/thread-326348-1-1.html用户系统信息:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)