严禁将本文中的任何信息用于非法目的或对任何未经许可的系统进行测试。未经授权尝试访问计算机系统或数据是违法行为,可能会导致法律后果。
作者不对因阅读本文后采取的任何行动所造成的任何形式的损害负责,包括但不限于直接、间接、特殊、附带或后果性的损害。用户应自行承担使用这些信息的风险。
我们鼓励所有读者遵守法律法规,负责任地使用技术知识,共同维护网络空间的安全与和谐。
本文由Zer0 Sec团队的的lagom师傅供稿
环境配置:
安装tomcat:
- 在centos下,不推荐使用yum安装,一是这样使用Arthas会报错(当前运行的用户和运行Arthas的用户不一样)
- 直接下载运行:https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.35/bin/apache-tomcat-8.0.35.tar.gz
cd binchmod +x *.sh./starup.sh
- 关闭防火墙:
systemctl stop firewalld
- 成功访问:
安装Arthas:
wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.7.2/arthas-bin.zipunzip arthas-bin.zipjava -jar arthas-boot.jar
安装copagent:
- https://github.com/LandGrey/copagent/raw/release/cop.jar
- 直接运行:
java -jar cop.jar
安装shell-analyazer:
- GitHub - 4ra1n/shell-analyzer: 已集成到 jar-analyzer 中 https://github.com/jar-analyzer/jar-analyzer
- 注意:agent.jar是核心文件,请保持与gui.jar或remote.jar同目录
- 排查内存马端运行:
java -cp remote-0.1.jar:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/lib/tools.jar com.n1ar4.RemoteLoader [PID] [8位密码]
客户端运行:
java -jar gui-0.1.jar
- 如图:
哥斯拉查杀:
注入内存马:
哥斯拉生成一个马:
- 讲生成的马放在/usr/share/tomcat/webapps/ROOT下:
- 注入内存马:
- 注入成功:
哥斯拉查杀:
-
arthas:
-
mbean查:
- 使用mbean命令,可以查看所有mbean列表:
mbean | grep "name=/"
- 如果在哥斯拉中添加filter内存马,如下:
- 再次使用mbean | grep "name=/",可以查看到新增了很多servlet和filter:
-
查看所有servlet:
sc *.Servlet
-
查看所有的classloader:
classlaoder
- 重点关注那些使用次数为1或者比较少的,这里的org.apache.jsp.a_jsp$X就很可疑。
-
查看所有的filter:
sc *.Filter
- 发现存在可疑的filter。
- 使用sc -d [类],表示打印类的详细信息:
- 从这里也可以判断出,当前该类classloader是可疑的。
-
反编译:
- 使用以下命令,会讲源码和相关的classloader打印出来:
jad org.apache.coyote.MapperFeature
- 很明显的木马特征,我们也可以重定向到本地,然后使用阿里云沙箱检测。
jad --source-only org.apache.coyote.MapperFeature > 1.java
- --source-only 表示的是只查看源代码
- >表示重定向
- 什么!哥斯拉竟然能过阿里云webshell查杀!
d盾查杀:
-
去除内存马(重点):
- 使用tomcat-memshell-scanner查杀:
-
cop:
- 运行:
java -jar cop.jar
- 输入1即可:
- 进入那个隐藏目录后,查看如图所示:
- 其中class表示是可疑的class,java是可疑class反编译的。
- 然后可疑直接拉近d盾扫描:
-
shell-anaylzer:
- 点击servlet即可看到可疑的jsp文件:
- 点击删除内存马:
- crtl+c复制当前类名,然后粘贴点击删除:
冰蝎:
注入AgentNoFIle:
- 注入后访问成功:
-
Arthas查杀:
- 这里使用了shiro550打入了冰蝎内存马:
- 连接成功,如图所示:
- 查看所有的servlet:
sc *.Servlet
- 查找所有的Filter:
sc *.Filter
- 使用jad进行反编译查看源码:
jad --source-only com.summersec.x.BehinderFilter
- 反编译保存在本地,然后可以使用河马,d盾查杀,这就教如何将这个内存马杀掉(不能直接上线)。
jad --source-only org.apache.jsp.shell_jsp > /root/arthas/org.apache.jsp.shell_jsp.java
- 这里做简答的修改:
- 使用mc命令重新编译:
mc [需要编译的java文件] -d [保存目录]
-
shell-analyzer:
- 找到该文件后直接查杀,发现查杀不了,不知道为什么。
- 而且查杀完后,其他的页面是访问不了了。
-
Agent型内存马:
- 排查也很简单,在Servlet中找到了这个:
- 但他是注入到正常的代码中,因此点击删除内存马后,正常的业务也会收到影响。
-
防检测机制:
- 如果冰蝎使用放检测,那么就不能获取当前进程的东西了。
原文始发于微信公众号(Zer0 sec):Zer0 Sec团队:内存马查杀案例
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论