原文链接: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也可以运行)。我们建议您:只通过安全的途径下载使用软件,不安装来历不明的软件(谨慎安装各种汉化版、破解版软件),使用一款安全软件,通过以上途径来保护您手机的安全。

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

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

     Android自复制传播APP原理学习(翻译) 1 背景介绍 论文链接:http://arxiv.org/abs/1511.00444 项目地址:https://github.com/Tribler ...

  2. (转)Android 系统 root 破解原理分析

    现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Lin ...

  3. Android/IOS手机使用Fiddler抓包

    对于Android和IOS开发及测试的同事来说抓包是一个很重要的事,有利于排查问题所在,快速定位问题.但长期以来一直没有一款可以快速抓包的工具,直到有了Fiddler2. 使用步骤: 1.  Fidd ...

  4. 腾讯技术分享:Android版手机QQ的缓存监控与优化实践

    本文内容整理自公众号腾讯Bugly,感谢原作者的分享. 1.问题背景 对于Android应用来说,内存向来是比较重要的性能指标.内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验.因此 ...

  5. Wireshark-配合tcpdump对Android(安卓)手机抓包

    环境:Windows, 安装真机(可以获取Root权限), adb, Wireshark, tcpdump 原理: 使用 tcpdump 进行抓包, 然后用 Wireshark 进行分析 1.获取手机 ...

  6. 028 Android 旋转动画+病毒查杀效果+自定义样式的ProgressBar

    1.目标效果 旋转动画+病毒查杀效果 2.xml布局文件 (1)activity_kill_virus.xml <?xml version="1.0" encoding=&q ...

  7. Android端代码染色原理及技术实践

    导读 高德地图开放平台产品不断迭代,代码逻辑越来越复杂,现有的测试流程不能保证完全覆盖所有业务代码,测试不到的代码及分支,会存在一定的风险.为了保证测试全面覆盖,需要引入代码覆盖率做为测试指标,需要对 ...

  8. Android敲诈者病毒“安卓性能激活”分析(2015年9月版)

    一.情况简介 前几天分析了论坛里的一个Android敲诈者病毒,感觉还是很有收获,后面有空多研究研究Android病毒.说句题外话, 根据前面分析的Android敲诈者病毒的隐藏手法,应该可以实现&q ...

  9. 深入探索Android热修复技术原理读书笔记 —— 代码热修复技术

    在前一篇文章 深入探索Android热修复技术原理读书笔记 -- 热修复技术介绍中,对热修复技术进行了介绍,下面将详细介绍其中的代码修复技术. 1 底层热替换原理 在各种 Android 热修复方案中 ...

随机推荐

  1. 使用base64对图片的二进制进行编码,使其可以利用ajax进行显示

    有时候我们需要动态的将图片的二进制在页面上进行显示,如我们需要弄一个验证码的功能,那么如果我们的验证码的图片在后台得到的是该图片的二进制,那么当我们需要在页面上点击一个按钮利用ajax进行切换的时候, ...

  2. PHP abstract与interface之间的区别

    1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口 ...

  3. Python与数据结构[4] -> 散列表[2] -> 开放定址法与再散列的 Python 实现

     开放定址散列法和再散列 目录 开放定址法 再散列 代码实现 1 开放定址散列法 前面利用分离链接法解决了散列表插入冲突的问题,而除了分离链接法外,还可以使用开放定址法来解决散列表的冲突问题. 开放定 ...

  4. ASP.NET Core 2.2 基础知识(一) 依赖注入

    依赖: 类A用到了类B,我们就说类A依赖类B.如果一个类没有任何地方使用到,那这个类基本上可以删掉了. public class Test { private MyDependency md = ne ...

  5. [姿势]cpp - memset

    头文件:memory.h 可以刷的有: memset(array,,sizeof(array)); //全部赋0 memset(array,-,sizeof(array)); //全部赋-1 用法和用 ...

  6. 3.3常用类(java学习笔记)Runtime与Process

    一.Runtime 我们来看下文档中对Runtime的说明: 每一个java程序都有一个属于Runtime类的实例,它允许程序连接到程序运行环境. 当前runtime可以用getRuntime()方法 ...

  7. MAC接普通外置键盘的修改键位的方法

    使用mac电脑已经有一年多,现在对它的喜欢是每天都在增加,甚至有些离不开了.今天突然想接个外置键盘,在使用过程中,遇到一些问题,记录一下. 使用过mac的同学都知道,mac键盘有一个最大的特点是: 比 ...

  8. 关于MYsql 多字段排序

    SELECT switch_data.* , lan_data.ename FROM switch_data , lan_data WHERE switch_data.address = '佳合丽景' ...

  9. Matlab与神经网络入门

    第一节.神经网络基本原理  1. 人工神经元( Artificial Neuron )模型  人工神经元是神经网络的基本元素,其原理可以用下图表示: 图1. 人工神经元模型 图中x1~xn是从其他神经 ...

  10. Inno Setup入门(十三)——Pascal脚本(2)

    事件函数(2) function CheckPassword(Password: String): Boolean; 如果安装程序在Pascal 脚本中发现该函数,它自动显示密码页并调用CheckPa ...