安全矩阵

 找回密码
 立即注册
搜索
查看: 789|回复: 0

干货|冰蝎、哥斯拉 内存马应急排查

[复制链接]

189

主题

191

帖子

903

积分

高级会员

Rank: 4

积分
903
发表于 2023-1-23 23:04:07 | 显示全部楼层 |阅读模式




作者:Zgao
原文地址:https://zgao.top
内存马的排查方式汇总。内存马的原理分析网上有很多文章,这里就不介绍了。通过实验分析如何在实战环境中快速定位内存马。
实验环境

           
  •         Centos / tomcat 7.0.76

           
  •         冰蝎v4.0.5

           
  •         哥斯拉v4.0.1

           
  •         Arthas 3.6.6

环境搭建安装tomcat通过yum安装tomcat。


           

  •        

yum install -y tomcat tomcat-webapps tomcat-admin-webappssystemctl start tomcat
启动后访问8080端口,看到tomcat起来了。
编辑
安装 Arthashttps://github.com/alibaba/arthas/releases
下载压缩包解压执行


           

  •        

  •        

wget https://github.com/alibaba/artha ... .6.6/arthas-bin.zipunzip arthas-bin.zipjava -jar arthas-boot.jar
编辑
哥斯拉 内存马用哥斯拉生成????。
编辑
放到网站根目录下面。
编辑
植入内存马之前查看内存中mbean信息。


           

mbean | grep "name=/"

编辑
FilterShell连上哥斯拉的webshell可以看到提供了memoryShell和FilterShell两种????。
编辑
编辑
可以看到哥斯拉的Filter内存马name中都带有时间戳。


           

  •        

sc *.Filtersc -d org.apache.coyote.SerializationConfig
编辑
使用jad反编译我们认为可疑的类。


           

jad org.apache.coyote.SerializationConfig

编辑
编辑
代码中大量运用invoke反射来实现。
MemoryShell
编辑
添加该内存马后通过mbean可以看到多了几个servlet。


           

  •        

mbean | grep "name=/"sc *.Servlet
编辑
编辑
可疑的classloader。
编辑
冰蝎 内存马冰蝎内存马由于对底层函数做了hook的操作,所以特征更弱一些。
先生成冰蝎4.0的服务端。
编辑
上传后连接注入内存马。
编辑
开启冰蝎的防检测功能。
编辑
连上内存马。
编辑
冰蝎的classloader。
编辑
编辑
冰蝎????属于Servlet类型的,不过并不是加载内存马之后才有的,而是连接冰蝎服务端的时候就有的。
反编译冰蝎的马,可以看到明显AES加密的key。
编辑
但是有个终极排查思路,就是内存dump。
heapdump 内存排查不管冰蝎的内存马如何hook,但是内存????肯定是在内存中的。并且访问的时候是有路由映射的。那么内存dump出来的文件肯定会有记录。
heapdump

           

strings /var/cache/tomcat/temp/heapdump2022-10-19-12-464292342944555007800.hprof| grep "POST /"

编辑
还有另外一种方法排查冰蝎内存????,就是查找内存中web目录的可疑路径。


           

strings /var/cache/tomcat/temp/heapdump2022-10-19-12-464292342944555007800.hprof| grep -E "/webapps/.*?\!"| sort -u

编辑
Arthas 排查内存马命令总结

           

  •        

  •        

  •        

  •        

classloadersc *.Filtersc *.Servletjadheapdump注意事项使用Arthas可能会遇到下面的报错。

           

Unable to open socket file: target process not responding or HotSpot VM not loaded
编辑
该报错是因为tomcat是以tomcat用户运行的,而我们用arthas是用root用户运行的。JVM 只能 attach 同样用户下的 java 进程。
使用runuser命令即可以tomcat用户运行arthas。


           

runuser -l tomcat -c "java -jar /usr/share/tomcat/arthas-boot.jar"

编辑

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 03:57 , Processed in 0.013589 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表