前言:
本篇文章由k4n5ha0哥哥编写,发表已经获得他本人同意,首发于: https://my.oschina.net/9199771/blog/5529686
参考地址:
https://developer.aliyun.com/article/574406
https://mp.weixin.qq.com/s/Whta6akjaZamc3nOY1Tvxg#at
https://github.com/4ra1n/FindShell
https://blog.csdn.net/lff0305/article/details/70037807
https://blog.csdn.net/qq_31865983/article/details/98480703
1)获取 class 字节码的方法
oracle 的 jdk 的 lib 目录中 sa-jdi.jar 可以 dump 出被 javaagent “增强” 后的 java 字节码(增强包括业务增强或恶意后门),也就是实际内存中执行的字节码
启动命令:
java -cp sa-jdi.jar sun.jvm.hotspot.HSDB
它通过进程 pid 直接 attach,例如使用 jps 命令
然后在 tools 目录里选择 Class Browser 可以搜索类名
还能输入 sql 查找满足条件的类
又或者使用 js 代码进行 class 的查找
C:\jdk8>java -cp .;./lib/sa-jdi.jar sun.jvm.hotspot.tools.soql.JSDB 7540Attaching to process ID 7540, please wait...Debugger attached successfully.Server compiler detected.JVM version is 25.121-b13jsdb>jsdb> load("c:\\dev\\a.js");
这里提一句 java9 开始,该功能直接内置
hsdb 是 gui 模式,clhsdb 是命令行模式
2)使用哥斯拉注入实验性内存马
3)使用 Class Browser 可以直接搜索到这个类
我们把这个类写到硬盘上,点击 Create .class File 按钮
如下图,可惜 360 暂时还不查杀
4)反编译这个类
4.1)GDA 反编译
4.2)vscode 的 Decompiler
等等各种方式可以反编译得到 java 源码
5)扫描告警
不管是 class 文件还是 java 文件都可以进行进行扫描进行内存马的检测
微软的 md 对其中一种内存马的 java 源码可以进行查杀
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论