绕过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)
最后编辑shulun743 最后编辑于 2011-05-20 11:17:13