某多重混淆应急响应
在一次攻防演练中,发现一个有趣的shell,文件做过多层混淆。
静态分析
Unicode混淆
根据内容可大概得知为unicode编码,对其进行解码,解码之后内容如下:
字节码Base64解码
其中clzBytecodeBase64Str参数值为base64编码,直接使用base64解码之后发现存在乱码,猜测为字节码文件进行base64编码。提取clzBytecodeBase64Str值,使用工具对其进行解码还原为class文件,其内容如下:
ZKM14混淆
根据内容猜测其为ZKM14混淆,对其进行还原。然后查看反混淆之后的内容:
第二次字节码解码
同理将s3进行解码,得到如下内容
根据上图可得知其为webshell
动态分析
由于java所有代码都需要进到JVM,可直接dump出JVM中的类文件即可。
启动tomcat,访问一次原始文件页面,让tomcat将其加载至JVM中。使用arthas加载tomcat,首先要寻找对应的类名。
通过jvisualvm工具,查看内存中的类。
通过dump Sklater
命令直接将class导出
总结
1.这个webshell结合了上次说的编码、classload,还加了ZKM混淆;
2.在这次事件上,静态分析可以对整个流程理解更深刻,动态分析可以更快得到结果。