新版冰蝎内存马清除指南

新版冰蝎内存马清除指南-使者云
新版冰蝎内存马清除指南
此内容为付费资源,请付费后查看
会员专属资源
您暂无购买权限,请先开通会员
开通会员
付费资源
------正文内容展示,开始汲取新知识啦------

hw第一天,冰蝎发布了更新版本。在使者的眼中,冰蝎反编译越来越简单,让更多人都可以参与魔改冰蝎的过程中。冰蝎的流量正在朝向加密化,混淆化的方向发展,对于全流量取证设备来讲压力越来越大。甚至,你真的认为部署的全流设备有用???

冰蝎更新主要有以下几点:

  • 反编译越来越简单。
  • 新增内存马注入。不同于以往的内存马注入方式,变得更难以清除

从流量部分来看,新版冰蝎的流量部分并没有太多变化。不出意外的话,各大安全厂商应该是可以查杀的。但是,不要忘记,新版反编译很简单,降低魔改冰蝎的门槛,也就是说,魔改流量冰蝎即将出世。

新版冰蝎的http请求函数

图片[1]-新版冰蝎内存马清除指南-使者云

1. 新版内存马分析

冰蝎为了实现更难清楚的目的,放弃了内存马的不落地的特征。转而使用JVM TI技术(rasp一样的技术),动态修改java http的处理部分。

下面我们来看一下怎么实现的,在注入内存马的时候,shell会通过目标操作系统的类别判断上传哪种java agentjar包。路径在下图

图片[2]-新版冰蝎内存马清除指南-使者云

我们随便点开一个分析

注入java agent

jar包被上传后,会首先执行下面的代码,该代码反射调用com.sun.tools.attach.VirtualMachine,VirtualMachine这个类提供一些调用jvm方法的途径。该类的说明文档在这里以供查阅  https://docs.oracle.com/javase/7/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html。

需要注意的是,目前jvm只提供了加载java agent,但是没有提供卸载java agent。也就是说加载后是无法清除的,只能从重启的角度来清除该类型内存马,如果再配合我的JVM持久化方法呢?蓝队很难做应急响应去清除该类型webshell的。

图片[3]-新版冰蝎内存马清除指南-使者云

修改字节码

冰蝎内存马为了实现更好的兼容性,选择hook javax.servlet.http.HttpServlet#service 函数,在weblogic选择hook weblogic.servlet.internal.ServletStubImpl#execute 函数。

添加的代码很简单,获取request,response,判断请求的url是否为内存马响应的url,如果是,则进入内存马执行的流程,如果不是则不响应。这段javaassist的代码如下

你以为检测这两个函数就可以了吗?不,你错了,在中间件的任何一个处理http请求的环节,都可以实现插入我们自己的字节码以做到内存马。在某一版的冰蝎中,hook的是下面tomcat特有的这个类。

图片[4]-新版冰蝎内存马清除指南-使者云

2. 清除java agent内存马

理论上讲无法通过常规工具清除,除非重启,java agent在添加字节码的时候,有如下几个限制

  • 不能新增方法
  • 不能修改函数签名

而且经过java agent修改后的类,jvm并没有保存之前未修改的类的字节码。javaassist也没有delete method代码的功能。

但是为了在不重启业务服务器的情况下完成清除内存马,可以通过如下手段解决

  • 读取本地磁盘上的class字节码
  • 重新写一个java agent,强行替换被内存马修改后的类。
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞3082赞赏 分享
抢沙发

请登录后发表评论

    暂无评论内容