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

导读:本篇文章讲解 干货|冰蝎、哥斯拉 内存马应急排查,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

实验环境

  • 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-webapps
systemctl start tomcat

启动后访问8080端口,看到tomcat起来了。

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

安装 Arthas

https://github.com/alibaba/arthas/releases

下载压缩包解压执行

wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.6.6/arthas-bin.zip
unzip arthas-bin.zip
java -jar arthas-boot.jar
干货|冰蝎、哥斯拉 内存马应急排查

哥斯拉 内存马

用哥斯拉生成。

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

放到网站根目录下面。

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

植入内存马之前查看内存中mbean信息。

 mbean | grep "name=/"
干货|冰蝎、哥斯拉 内存马应急排查

FilterShell

连上哥斯拉的webshell可以看到提供了memoryShell和FilterShell两种

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

可以看到哥斯拉的Filter内存马name中都带有时间戳。

sc *.Filter
sc -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 排查内存马命令总结

classloader
sc *.Filter
sc *.Servlet
jad
heapdump

注意事项

使用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"
干货|冰蝎、哥斯拉 内存马应急排查

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77483.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!