冰鞋3.0 bete9更新了,本此更新如下
- 修复了内存马防查杀补丁在windows服务器未生效的问题
- .anti rasp
1. anti rasp
java这一块rasp比较多,因为jvm提供了相关的技术支持。但是rasp真的是万金油吗?我们以百度的openrasp为例。
众所周知,java的rasp只可以修改java class的字节码,不可以修改native库的字节码。虽然这句话说起来很别扭,但是像我们阐述一个道理,即java agent修改字节码的能力是有限的。
如果我们把很多操作,通过java调用native库,也就是JNI技术去实现,这样就可以绕过java agent了。原理在于,rasp对于很多他认为有关敏感操作的类的方法进行插桩。在很多中漏洞攻击中,最终都要回归到调用相关敏感方法上。在该方法被调用的时候用规则去检测被调用函数的参数。如果认为是敏感操作则拦截本次方法的请求。那么如果有关敏感操作的方法是JNI实现的,那么rasp就无能为力了。
我们可以发现,这种rasp绕过的技巧比较高,需要目标靶机上存在有敏感操作的JNI库方法,我们才可以加以利用。所以,冰蝎的绕过方法是,自己上传一个JNI库文件(windows dll共享库),将相关操作封装为shellcode。
在load方法中我们可以明显看出这就是执行一段shellcode的功能,不知道广大厂商的EDR能否拦截这种操作。
当然,某些中间件也会自带JNI库,去实现某些高性能操作。我们也可以用来绕过rasp。例如tomcat
在org.apache.tomcat.jni
包中,tomcat为了实现高性能的网络IO处理,自己使用C语言的方式重新实现了socket操作,文件读写,MMAP等一系列操作。tomcat需要安装tomcat-native
扩展才可以使用org.apache.tomcat.jni
包下的操作。
下面我们使用tomcat native
扩展来执行命令
实测可以绕过openrasp。
结论
冰蝎的rasp绕过只是影响被渗透后无法溯源webshell都执行过什么命令,而不影响渗透前rasp的拦截。看样子rasp们还可以放心
2. windows 内存马防查杀补丁
在前几篇的文章中,我们分析了windows 下jvm attach的机制,其中最关键的一个方法是JVM的_JVM_EnqueueOperation@20
方法。该方法在被attach后在目标JVM运行。
而冰蝎的操作是,直接在JVM中干掉这个方法,代码也很简单,直接修改JVM中该方法所在内存的权限,让她不能执行。
当然,这种也比较容易恢复,重新设置一下内存的权限即可。可能很多EDR就支持该查杀
来源:freebuf.com 2021-04-22 10:10:30 by: 宽字节安全实验室
请登录后发表评论
注册