2019年中,卡巴斯基研究人员在安卓智能手机上发现了一起xHelper 木马发起的大规模攻击,但目前该恶意软件仍在活跃。xHelper的主要特征是“杀不死”,一旦安装到手机上,即时用户卸载、删除,甚至恢复出厂设置也无法完全将其从手机中清除。研究人员分析了xHelper 是如何在手机上实现这么彻底的驻留的。
2019-2020年间xHelper 木马攻击数量分析
xHelper工作原理
研究人员首先根据当前木马样本分析了恶意软件家族的逻辑。恶意软件将自己伪装成智能手机的清理和加速工具,但事实上并没有类似的功能。安装后,清理工具就会消失,不会出现在主屏幕或程序菜单中。可以通过检查系统设置中的安装应用列表来查看。
木马的payload在文件/assets/firehelper.jar 中加密。其主要任务是发送受害者的手机信息到https://lp.cooktracking[.]com/v1/ls/get,发送的消息包括厂商、型号、固件版本等。
解密URL发送设备信息
下载另一个恶意模块——Trojan-Dropper.AndroidOS.Agent.of
恶意软件会用附带的本地库解密和启动payload,该方法使得很难分析该模型。在这一阶段,另一个释放器Trojan-Dropper.AndroidOS.Helper.b 会被解密和启动。然后运行恶意软件木马Downloader.AndroidOS.Leech.p,并进一步感染设备。Leech.p的任务是下载HEUR:Trojan.AndroidOS.Triada.dd 和一系列在设备上获取root权限的漏洞利用。
解码Leech.p C&C URL
下载Triada木马
恶意文件顺序保存在app的data文件夹中,其他程序没有该文件夹的访问权限。Matryoshka方案允许恶意软件作者使用安全产品已知的恶意模块。恶意软件可以获取运行来自中国厂商的安卓6和7系统的设备上的root权限。在获取权限后,xHelper可以直接在系统分区中安装恶意文件。
注:系统部分以只读模式挂载在系统startup中。有了root权限后,木马会以写模式重新挂载,并开始名为forever.sh 的主作业。Triada 使用了最著名的技巧,包括重新挂载系统分区来安装其程序。在本例中,安装的包是com.diag.patches.vm8u。
许多可执行文件会复制到/system/bin 文件夹中:
patches_mu8v_oemlogo — Trojan.AndroidOS.Triada.dd
debuggerd_hulu —AndroidOS.Triada.dy
kcol_ysy — HEUR:Trojan.AndroidOS.Triada.dx
/.luser/bkdiag_vm8u_date — HEUR:Trojan.AndroidOS.Agent.rt
还有文件会复制到/system/xbin 文件夹中:
diag_vm8u_date
patches_mu8v_oemlogo
调用来自xbin 文件夹中的文件会加入到install-recovery.sh 文件中,允许Triada 在系统启动时运行。目标文件夹中的文件分配的是不可改变的属性,因为系统无法允许超级用户删除该属性的文件,因此难以删除恶意软件。但该木马使用的这种自防御机制可以通过chattr 命令来删除该属性,以实现木马的删除。
如果该恶意软件可以以写模式重新挂载系统分区来复制自己,那么用户还可以用同样的策略删除吗?Triada的创建者也考虑到了这个问题,使用了另外一种保护技术,即修改系统库/system/lib/libc.so 。库中含有设备上所有可执行文件都使用的代码。Triada 替代了libc中mount函数的代码,可以防止用户以write模式挂载到/system 分区。
木马还可以下载和安装多个恶意软件,删除root控制权限的应用,比如superuser。
如何应对?
如上分析,简单地移除xHelper 并不能改变系统被感染的情况。系统分区中安装的程序com.diag.patches.vm8u 会重新安装xHelper 和其他恶意软件。
无需用户参与安装程序
但是如果在安卓设备上设置了恢复模式,可以在系统分区移除所有恶意软件前从原始固件中提取libc.so 文件,并替换受感染的文件。但是重刷手机是更加简单和可靠的方式。
需要注意的是被xHelper攻击的固件中一般都含有预装的恶意软件,可以独立下载和安装包括xHelper在内的程序。这样的话,恢复出厂设备是没用的,需要考虑其他的固件。但如果使用不同的固件,困难设备的部分组件无法正常运行。
本文翻译自:https://securelist.com/unkillable-xhelper-and-a-trojan-matryoshka/96487/如若转载,请注明原文地址: