Android.KungFu手机病毒原理及清理方法

原文链接:http://jingyan.baidu.com/article/363872ec8ad56b6e4ba16fb1.html

Android.KungFu手机病毒清理方法

  • 浏览:3333
  • |
  • 更新:2012-02-17 15:27
  • |
  • 标签: android

  Android.KungFu最早在6月份被安全厂商截获,随后又出现了至少3种不同的变种,截止到发文为止,这款病毒仍然在不断演化。KungFu系列病毒的特征非常典型,感染此病毒的手机会自动在后台静默下载并安装某些软件,当手机感染此病毒后使用常规安全软件无法彻底清除,甚至将手机恢复至出厂设置也无法解决问题,这款病毒通常会捆绑在某些合法软件内,在第三方Android应用市场和论坛中传播,常见的宿主包括一键XXX(免费)、音乐随身听等,截止到发文为止,LBE团队已经通知各大第三方Android应用市场和论坛关注该类型的应用。

步骤/方法

  1.   Android.KungFu整体架构由两个模块构成,第一个模块(Loader)会在宿主运行到特定场景时激活,随后执行提权操作,并加载第二个模块(Payload),Payload模块则常驻内存,执行各种威胁手机安全的操作。Android.KungFu不同的变种之间,区别主要在于不同的Loader,Payload模块则基本相同。当Loader模块被激活后,首先会试图获得ROOT权限。根据宿主软件的不同,Loader会采用不同的策略,如果Loader宿主本身需要ROOT 权限,Loader就会附着在宿主需要以ROOT权限执行的代码之后运行(例如一键XXX免费版,其中捆绑的Android.KungFu会嵌入在安装 XXX的代码中)。如果宿主本身不需要ROOT权限,Loader会利用公开的漏洞(NPROC_RLIMIT)在后台静默获取ROOT权限(例如音乐随 身听)。由于这个漏洞广泛的存在于Android2.1和2.2设备上,所以,即使手机没有ROOT权限,多数手机依然会受这个病毒威胁。

  2.  

    然后,随后,Loader会进行以下操作(不同的变种具体细节可能不同):

  3.  

    将系统分区设置为可写

      获取设备信息,包括系统版本,手机品牌,Device ID,SDK版本等数据,写mycfg.ini,并将此ini文件复制到/system/etc下重命名为.rild_cfg

      使用AES加密算法解密Payload(Payload通常保存在宿主的assets中,名为Webview.db.init),并将Payload复制以下位置:

      /system/etc/.dhcpcd

      /system/xbin/ccb

      /system/bin/installd(将原始文件备份为/system/bin/installdd)

      /system/bin/dhcpcd(将原始文件备份为/system/bin/dhcpcdd)

      /system/bin/bootanimation(将原始文件备份为/system/bin/bootanimationd)

      恢复系统分区为只读,并执行/system/xbin/ccb

      至此,Payload已经完成金蝉脱壳,从宿主APK中成功的被释放出来了。由于病毒替换的关键系统文件(installd, dhcpcd, bootanimation)在开机过程中会自动启动,因此病毒实际上具备了以ROOT权限开机自动启动的能力。同时,由于Payload已经脱离APK 藏身于系统分区内,即使安全软件检测到病毒,也无法进行清理操作。

      当Payload随系统自动启动之后,会尝试连接以下地址,获取攻击命令:http://search.gongfu-android.com:8511

      http://search.zi18.com:8511

      http://search.zs169.com:8511

      由于Payload感染了多个系统进程,为避免相互冲突,当任意一个Payload进程连接至控制服务器后,便创建/system/etc/dhcpcd.lock文件锁来进行进程同步。

      目前Payload已知的功能包括:

      自动下载APK软件包至本地

      静默安装APK软件包

      启动指定APK软件包

      静默卸载APK软件包

      设置浏览器首页(未使用)

      至此,病毒就会源源不断的向受感染的手机中自动下载并安装软件,从中获取高额利益了。

      

  4.  

    清除方法

      使用专杀工具

      由于Android.KungFu的特殊性,常规安全软件无法完全清除此病毒,因此LBE小组提供了针对Android.KungFu的专杀工具,彻底清理Android.KungFu在系统内的残留,您可以从http://www.lbesec.com/下载到此工具。需要注意的是,使用此工具之前,您必须使用安全软件全盘扫描,确保所有感染病毒的APK文件已被清理,否则有可能清除不彻底导致重新感染。

      

  5.  

    手工清理

      我们推荐用户使用专杀工具,方便快捷,但如果您希望能自己动手的话,也可以手工清除Android.KungFu残留。同样在手工清除前,请使用安全软件全盘扫描,确保所有感染病毒的APK文件已被清理,否则有可能清除不彻底导致重新感染。

      如果您的手机未安装过Busybox,请首先安装Busybox https://market.android.com/details?id=stericson.busybox

      使用超级终端软件,或者在PC上使用adb shell连接至手机,获取root权限后,执行以下命令:

      busybox mount –o remount,rw /system

      busybox chattr –i /system/etc/.dhcpcd

      busybox rm /system/etc/.dhcpcd

      busybox chattr –i /system/etc/dhcpcd.lock

      busybox rm /system/etc/dhcpcd.lock

      busybox chattr –i /system/etc/.rild_cfg

      busybox rm /system/etc/.rild_cfg

      busybox chattr –i /system/xbin/ccb

      busybox rm /system/xbin/ccb

      如果/system/bin/installdd文件存在的话,执行以下操作

      busybox rm /system/bin/installd

      busybox mv /system/bin/installdd /system/bin/installd

      如果/system/bin/dhcpcdd文件存在的话,执行以下操作

      busybox rm /system/bin/dhcpcd

      busybox rm /system/bin/dhcpcdd /system/bin/dhcpcd

      如果/system/bin/bootanimationd文件存在的话,执行以下操作

      busybox mv /system/bin/bootanimation

      busybox mv /system/bin/bootanimiationd /system/bin/bootanimation

      最后,重启手机,完成清理

      reboot

      

  6.  

    对以上操作的一些说明:

      chattr命令是用来去除文件的EXT2_IMMUTABLE_FL标志位。如果系统分区使用ext文件系统的话,病毒会给所有受感染的文件设置此标志 位,此标志位可以防止文件被删除(这也是有些用户尝试用RE管理器删除失败的原因)。如果您在执行chattr命令的时候出现错误,也不要惊慌,这说明您 的系统分区不是ext文件系统,只要随后的rm命令能够成功执行,就表示清理操作已成功。

      

  7.  

    结语和分析

      以破坏系统、炫耀技术为目标的恶意软件早已淡出视线,如今的恶意软件都以明确的利益为导向,Android.KungFu也不例外。根据用户报告,该病毒 会自动向用户手机中安装并激活下列软件:大众点评、游戏快递、有你短信、京东商城、当当网、银联、盛大切客、云中书城等。很明显,这是一款通过自动推送并 静默安装软件,以获取推广费用为目的的恶意软件。根据当前市场上一个有效激活大约2元人民币的价格,我们不难算出病毒作者以损害用户经济利益为代价,轻易 攫取了高额的回报。

      目前多数安全软件(包括我们LBE小组的软件在内)仅仅会扫描APK文件,而以Android.KungFu为代表的恶意软件,则已经具备初步的感染ELF文件的能力。安全厂商应尽快跟进,加强ELF文件扫描的能力。

      由于Android平台的漏洞的频频出现,而厂商在ROM更新方面相对滞后,导致相当一部分Android设备暴漏在提权漏洞的威胁中。作为Android用户,您切不可认为不ROOT就等于安全(更何况,还有相当多的恶意软件无需ROOT也可以运行)。我们建议您:只通过安全的途径下载使用软件,不安装来历不明的软件(谨慎安装各种汉化版、破解版软件),使用一款安全软件,通过以上途径来保护您手机的安全。

时间: 2024-10-05 05:21:07

Android.KungFu手机病毒原理及清理方法的相关文章

Android自复制传播APP原理学习(翻译)

 Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler/self-compile-Android 吃完晚饭偶然看到这篇论文,当时就被吸引了,马上翻译总结了一下.如有错误欢迎斧正. 该论文的研究出发点比较高大上这里我们就不多说了,简而言之就是想通过移动设备来实现一个自组网,在发生灾难的时候,手机之间能够自动传输关键数据,减少损失.整个目标通过设计一个能够

“黑暗潜伏者” -- 手机病毒新型攻击方式

近期百度安全实验室发现一款"黑暗潜伏者"新型手机病毒.该病毒附着在众多壁纸和游戏类应用中.截至目前,已经发现感染该病毒的应用超过1万多款,感染用户超过3000万. 该病毒恶意行为如下:1. 后台利用系统漏洞获取临时Root权限.2. 获取临时Root权限后,安装SysPhones.apk恶意程序为系统软件,安装Root后门程序zy到/system/bin目录.3. SysPhones.apk根据服务器端指令静默下载.安装推广应用,并能够根据指令安装推广应用为系统软件,从而使其无法卸载.

Android系统Recovery工作原理之使用update.zip升级过程分析(一)

通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动模式分析,Recovery工作原理,如何从我们上层开始选择system update到重启到Recovery服务,以及在Recovery服务中具体怎样处理update.zip包升级的,我们的安装脚本updater-script怎样被解析并执行的等一系列问题.分析过程中所用的Android源码是gin

ANDROID内存优化以及原理(大汇总——上)

写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在ANDROID开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读.(本文最后我会尽量列出所参考的文章). 内存简介: RAM(random access memory)随机存取存储器.说白了就是内存. 一般Java在内存分配时会涉及到以下区域: 寄存器(R

Android/IOS手机使用Fildder2抓包

对于Android和IOS开发及测试的同事来说抓包是一个很重要的事,有利于排查问题所在,快速定位问题.但长期以来一直没有一款可以快速抓包的工具,直到有了Fildder2. 使用步骤: 1.  Fiddler2下载地址(http://fiddler2.com/) 2.  下载对应的版本安装到电脑 3.  打开Fiddler软件,界面和其他抓包软件大致一样,效果图如下: 4.  接下来就是抓取Android/IOS的数据包了,首先安装Fiddler2的电脑必须与Android/IOS手机处于同一个局

android 控制手机音量的大小 切换声音的模式

(1)程序说明 在android API的AudioManager中,提供了调节手机音量的办法. audioMa.adjustVolume(AudioManager.ADJUST_LOWER, 0); audioMa.adjustVolume(AudioManager.ADJUST_RAISE, 0); 也可以调节手机声音的模式为震动或者静音 audioMa.setRingerMode(AudioManager.RINGER_MODE_NORMAL); audioMa.setRingerMode

Android获取手机联系人的姓名和电话

Android获取手机联系人的姓名和电话 主要是用到了跳入手机联系人的intent和获取手机联系人信息的内容提供者,直接上代码 注:此贴是借鉴别人的帖子加了一些自己的东西写出的,原帖地址明日附上: / 首先 我们需要跳入手机通讯录 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); startActivityForResult(intent, 0); // 之后,我们需要重写

android 获取手机的所有程序和widget的包名和启动类名

获取 widget可以 AppWidgetManager 来获取 List<AppWidgetProviderInfo> widget=AppWidgetManager.getInstance(Context(上下文)).getInstalledProviders(); 得到所有AppWidgetProviderInfo for (int i = 0; i < widget.size(); i++) {        AppWidgetProviderInfo info=widget.g

Android 解决手机unauthorized错误

转自:http://blog.csdn.net/quicksand201/article/details/19190821 手机开发者选项中USB调试已经打开,在电脑命令行下输入adb devices,显示手机未认证 D:\develop\androidroot\adt-bundle-windows-x86-20131030\sdk\platform-tools>adb devices* daemon not running. starting it now on port 5037 ** da