可绕过谷歌官方应用商店安全检测的恶意软件——Joker变种
2020-07-11 11:25:00 Author: www.4hou.com(查看原文) 阅读量:252 收藏

Check Point研究人员在Google Play中发现了一个Joker Dropper和Premium Dialer 监控恶意软件的新变种。该更新版的Joker可以下载其他恶意软件到设备上,下载的Premium Dialer可以在无需用户同意或用户不知情的情况下让用户订阅付费服务。

图 1  Google Play中的Joker应用

Joker是一款典型的安卓恶意软件类型,一直在不断地寻找绕过谷歌官方应用市场安全检测的方法。此次的Joker最新变种利用了一种来自PC威胁图谱的古老的绕过简述来绕过谷歌应用市场的安全检测。

为了实现让app用户订阅付费服务而不知情或不告知,Joker使用了两个主要的组件——Notification Listener服务和动态dex文件。Notification Listener服务是原始Joker应用的一部分,动态dex文件是从C2服务器加载的,可以让用户注册不同的服务。

为最小化Joker的指纹,攻击者选择从远程C2服务器来动态加载dex文件,将恶意dex文件以base64编码的字符串的形式隐藏在应用中,来实现解码和加载。

技术分析

之前的版本中用于与C2通信和下载动态dex文件的代码位于classes.dex文件中,现在classes.dex 文件的功能还包括加载新的payload。

Joker会通过注册一个与C2通信的新对象来检查攻击活动是否仍在进行来从Activity触发恶意流。确认之后,就可以准备要加载的payload模块。

图 2 – 恶意对象的创建

图 3 – 与C2通信的恶意对象

图 4 – 来自C2服务器的响应

加载dex文件的第一个 方法是从manifest文件读取内容。研究人员检查manifest文件时发现,有另一个metadata域中含有一个base64编码的dex文件。所以只需要从manifest文件中读取数据、解码payload和加载新的dex文件。

图 5 – 含有base64编码的dex的Manifest文件

 图 6 – 从manifest 文件中读取数据

研究人员还发现了一个仍在开发过程中的变种,该变种将.dex 文件隐藏成base64字符串中,而不是将字符串加入到manifest文件中,这些字符串位于main应用的内部类中。在该例中,恶意代码运行只需要读取字符串、从base64字符串中解码、然后用反射的形式加载。

图 7 – main应用中的字符串

 

图 8 – 读取class字符串和解码

图 9 – 加载含有反射的dex文件

 图 10 – 解密的字符串

新payload中含有原始Joker文件的主dex文件中的代码,包括Notification Listener服务的注册、使用户订阅付费服务等等。攻击者隐藏功能只需要将C2服务器设置为在状态码中返回false,没有恶意活动会出现。

总结

研究人员建议感染了恶意app的用户:

· 从设备中卸载受感染的应用;

· 检查手机号和信用卡账单检查是否订阅了相关付费服务,如果订阅了那么尽快取消;

· 安装安全解决方案来预防未来可能的感染。

本文翻译自:https://research.checkpoint.com/2020/new-joker-variant-hits-google-play-with-an-old-trick/如若转载,请注明原文地址


文章来源: https://www.4hou.com/posts/KmEx
如有侵权请联系:admin#unsafe.sh