xHelper,一种于2019年3月被发现的木马病毒,主要被用作其他恶意软件(包括但不限于银行木马、勒索软件等)的传播工具,据说曾在不到5个月的时间里就成功感染了3.2万部智能手机和平板电脑。
卡巴斯基实验室于近日发文称,即使时间已经过去了一年,但xHelper如今的活跃度完全没有减弱。另外,一旦这种木马病毒进入你的安卓设备,由它下载并安装的恶意软件就很难被清除,即使是恢复出厂设置。
xHelper的工作原理根据卡巴斯基实验室的说法,xHelper通常被伪装成清理和加速APP,但实际上完全不具备其描述中的功能。
一旦安装完成,你将无法在主屏幕或程序菜单中看到它的图标。当然,如果你确实想和它见上一面,那么你可以移步到系统设置中的已安装应用程序列表。
图1.已安装应用程序列表
xHelper的有效载荷经过加密处理,位于“/assets/firehelper.jar”,其主要任务是将一些有关受感染设备的信息(android_id、制造商、型号、固件版本等)上传到hxxps://lp.cooktracking[.]com/v1/ls/get并下载一个恶意模块——Trojan-Dropper.AndroidOS.Agent.of。
图2.解密URL以发送设备信息
解密和启动有效载荷涉及到使用附带的本地库,这种方法使得恶意软件分析变得尤为困难。
释放程序Trojan-Dropper.AndroidOS.Helper.b 将首先被解密并启动,然后运行的将会是Downloader.AndroidOS.Leech.p,以进一步感染设备。
分析显示,Leech.p的任务是下载Trojan.AndroidOS.Triada.dd 以及一系列将用于获取root权限的漏洞利用代码。
图3.解码Leech.p的C&C地址
图4.下载Triada木马
在获取到root权限后,xHelper可以直接在系统分区中安装恶意文件。
其中一些文件会安装到“/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文件中,这允许恶意软件在系统重新启动时自动运行。此外,由于目标文件夹中的所有文件都被分配了不可修改的属性,这使得删除恶意软件非常困难,因为安卓系统甚至不允许超级用户删除具有该属性的文件。
不仅如此,xHelper的开发人员还使用了另外一种恶意软件保护技术——修改系统库/system/lib/libc.so。这个库几乎包含安卓设备上所有可执行文件使用的通用代码,而通过替换libc中mount函数(用于装在文件系统)的代码,便可以防止受害者以写模式挂载到/system 分区进而删除恶意文件。
我们该如何应对?从上面的分析我们不难看出,仅仅是清除xHelper 并不能彻底净化被感染的系统。因为,安装在系统分区中的安装程序(com.diag.patches.vm8u)会在第一时间重新安装xHelper和其他恶意软件。
图5.无需用户交互的安装程序
幸运的是,如果你在设备上设置了恢复模式,那么则可以尝试使用从原始固件中提取的libc.so文件替换受感染的文件,然后再从系统分区中删除所有恶意软件。
当然,直接重新刷机会更为简单可靠。但我们提醒,在刷机时一定要使用从可靠途径获得的固件,因为一些固件也存在预装恶意软件的情况。