Qrypter恶意软件新变种解析

Change Web安全 2019年4月1日发布
Favorite收藏

导语:过去几周,Yoroi安全实验室的监控系统截获了一批恶意邮件,其目标疑似是意大利的某些组织机构。邮件内容是假冒的法院传票,通过诱骗用户打开附件的“诉讼”来感染目标用户。

介绍

过去几周,Yoroi安全实验室的监控系统截获了一批恶意邮件,其目标疑似是意大利的某些组织机构。邮件内容是假冒的法院传票,通过诱骗用户打开附件的“诉讼”来感染目标用户。

Cybaze-Yoroi ZLAB团队对该附件进行了剖析,在此过程中发现了Qrypter恶意软件的一个新的演变过程。

技术分析

B1.jpg

此附件名为“Avviso del tribunale.jar”,在Java虚拟机中打开它时,会显示ClassNotFoundException,同时关联一个名为“qua.qrypter.Runner”的可疑类。

1.PNG

图1.恶意软件的堆栈跟踪

Qrypter是一种恶意软件即服务(malware -as-a- service),能与AdWind/jRAT恶意软件的结合使用使它在攻击者中特别受欢迎。我们以前对Qrypter也做过分析,但与那时记录的保护技术比,这个新样本似乎显示了一些不一样的地方。

2.PNG

图2. JAR内部结构

通过存档管理器打开JAR文件,可以看到它的内部结构:所有文件都是加密的,除了其中一个文件“p14603 / p14604 / p14605.class”,它代表的是一个可运行的Java类。

3.PNG

图3.加密的文件内容

因此可以推断,“p14605.class”文件包含一个Java Main,它负责解密和启动实际的payload。对该类逆向后,可以看出Qrypter的属性。

解密程序利用了Java反射,使分析更加困难:恶意软件使用的每个单个对象在运行时以类似于图4所示的方式加载,其中恶意软件将对象System.out分配给名为“f11131465014074101”的局部变量。

4.png

图4.Java反射使用示例

恶意软件的初始入口点是静态main方法,它由几行代码组成,用于为解密例程设置初始参数。

5.png

图5.静态main方法

有趣的是,解密程序使用switch方法实现了有限状态机(FSA),这是信息工程师和计算机科学家常用的一种经典的计算方法。初始状态设置为“24”。

6.png

图6.用作状态机核心的switch结构

switch指令会反复检查“currentState”变量的值,“currentState”变量用于指示机器最近一项的状态,然后根据它的值跳到正确的case语句中。每个“case”包含解密程序的一个步骤和一条用于从当前状态移动到下一个状态的指令。图7显示了解密阶段的一条指令:通过使用不同的反射层,恶意软件会试图加载类“qua.qrypter.Runner”,其名称包含在“f11131464987745335”变量中,这就是由于缺少类而导致类启动异常的点。

7.png

图7.通过反射调用ClassLoader

但是,对解密程序的静态分析可以重建恶意软件行为,揭示payload保护机制的细节,并使我们能编写自定义解码器来提取样本的下一阶段。

检查代码时,我们注意到加密密钥存储在大量反射调用中的一个特定变量中:

8.png

图8.用于解密其他所有文件的加密密钥

有了这些信息,我们成功地解密了包含在初始JAR存档中的所有受保护的文件,模拟了Qrypter的行为。详细来说就是创建了一个“SecretKeySpec”,然后传递给AES初始化的“Cipher”对象,但是第一个结果还不是纯文本,它实际上是一个GZIP压缩流,因此会被转发到另一个“GZIPInputStream”对象中。

9.png

图9.用于解密所有其他文件的加密密钥

其中一个解密文件是一个序列化的“LinkedHashMap”对象,包含一系列表示原始文件名和(伪)加密名称之间映射的键值条目。该对象是重建真实payload结构的基础。

10.png

图10. LinkedHashMap的内容,指示了加密文件与其原始名称之间的关系

实际上,检查hashmap的条目时,会出现许多类名。它们的名字——“drop.box”证实了AdWind / jRAT作为最终payload的存在,“sky.drive”和“mega.download”文件是众所周知的部件(图10),包含了恶意软件私钥和配置。通过对它们的解密,可以识别AdWind / jRAT配置模式,类似于我们之前在报告中分析的那样。

11.png

图11.经典jRAT配置文件

结论

即使最终的payload是诸如jRAT之类的众所周知的恶意软件,通过Qrypter加密器的包装,也会使某些防病毒引擎无法检测到。此外,这个版本的Qrypter与旧版本的不同之处在于:在之前对Qrypter分析中从未出现过对反射技术和状态机方法的大量使用。Qrypter因其MaaS模型而流行,但鉴于其目前web服务是不可访问的,因此不清楚恶意作者如何使用Qrypter将其AdWind/jRAT的payload武装起来的。

本文翻译自:https://blog.yoroi.company/research/decrypting-the-qrypter-payload/如若转载,请注明原文地址: https://www.4hou.com/web/17103.html
点赞 0
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论