转载请注明出处,谢谢。

Android系统开放,各大论坛活跃,应用程序分发渠道广泛,这也就为恶意软件的传播提供了良好的环境。好在手机上安装了安全软件,是否能有效的检测出恶意软件呢?下边针对LBE安全大师、腾讯安全管家和360手机卫士做出一系列实验。

1. Android恶意样本实验。

Android Malware Genome Project(http://www.malgenomeproject.org/)收集了2010年8月到2011年10月的涵盖主要恶意软件类型的超过1200个恶意程序样本,样本有些陈旧,但这是目前手头上有的,最新的样本不知如何获得,希望有了解的同学留言告知。

从中抽取了涵盖不同类型的100多个样本进行安装实验。结果恶意软件识别率惊人的高。几乎全部可以检测的到。

              

恶意软件的检测率如此高,确实很让我惊讶,那这些安全软件到底是如何检测恶意软件的呢,实验的结果更是让我惊讶,这项实验才是重点。

2. Plankton类型的5aff5198c2fe5798bd7f1519dab0cd4ee737d5d2.apk程序测试安全软件的检测方式

起初,我考虑检测恶意软件主要是扫描APK的Manifest文件,分析函数调用关系,所以我考虑对样本进行反向工程,然后自己新建项目去实现,当增加一段代码安全软件就判定为恶意程序,删除这一段代码后就检测正常时,这段代码就是恶意软件的核心特征。在这样的考虑下,首先综合使用apktool、dex2jar和jdgui对apk样本进行处理。

2.1 样本反向工程

5aff5198c2fe5798bd7f1519dab0cd4ee737d5d2.apk样本为一款愤怒的小鸟修改器程序,名称为Angry Birds Cheater,图标如下:

Apktool处理,发现程序结构很简单,只有res和smali目录,还有Manifest.xml文件,Manifest文件中只有一个Activity和一个Service,申请的权限不少,我怀疑这些权限是不是一个检测的点。

Manifest文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest android:versionCode="3" android:versionName="2.01" package="com.crazyapps.angry.birds.cheater.trainer.helper"xmlns:android="http://schemas.android.com/apk/res/android"><application android:label="@string/app_name" android:icon="@drawable/icon"><activity android:label="@string/app_name" android:name=".AngryBirdsCheater" android:configChanges="keyboardHidden|orientation"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.plankton.device.android.service.AndroidMDKService" android:enabled="true" /></application><uses-sdk android:minSdkVersion="8" /><supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS" /><uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" /><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_LOGS" /><uses-permission android:name="com.htc.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.motorola.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.motorola.launcher.permission.WRITE_SETTINGS" /><uses-permission android:name="com.motorola.launcher.permission.INSTALL_SHORTCUT" /><uses-permission android:name="com.motorola.launcher.permission.UNINSTALL_SHORTCUT" /><uses-permission android:name="com.lge.launcher.permission.READ_SETTINGS" /><uses-permission android:name="com.lge.launcher.permission.WRITE_SETTINGS" /><uses-permission android:name="com.lge.launcher.permission.INSTALL_SHORTCUT" /><uses-permission android:name="com.lge.launcher.permission.UNINSTALL_SHORTCUT" />
</manifest>

Smali代码看起来比较吃力,所以采用dex2jar和jdgui来查看代码,代码的结构如下图:

其中AngryBirdsCheater为Activity,在onCreate方法里调用了AndroidMDKService服务的initMDK方法启动服务,然后向服务器请求攻击指令,下载jar文件等。

看雪论坛有对Plankton恶意程序的一篇分析文章:http://bbs.pediy.com/showthread.php?t=176363 。此处不多讲了,因为实验结果出现的太突然了,根本没需要深入理解代码过程,下边解释出现了什么。

2.2 创建工程实现Plankton恶意程序

接下来自己创建工程,程序名为Plankton2,第一个Activity页面就自动生成的也没改,然后添加com.plankton.device.android.service包,创建AndroidMDKService类,在Manifest中声明这个服务,写到这,先运行下试试吧。

结果,结果令人震惊:

          

什么,这就报毒了,我还什么都没写呢,MainActivity里只有onCreate,而且里边只setContentView里,AndroidMDKService里只有onBind,里边还是空的,Manifest文件里甚至没有申请一项权限。这误报的太明显了。

Plankton2代码结构:

MainActivity代码:

public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}}

AndroidMDKService代码:

public class AndroidMDKService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}}

Manifest文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.shuai.plankton2"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><activityandroid:name="com.shuai.plankton2.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.plankton.device.android.service.AndroidMDKService">           </service></application>
</manifest>

这样的结果着实很出乎我的意料。

还好,360和他们不一样,报的是安全的。

难道仅仅是有了AndroidMDKService类就唬住LBE和手机管家了吗,现在点到这个类上F2,重命名,去掉MDK的K,重新安全,此时所有检测均为安全的了。

进一步测试发现,必须是com.plankton.device.android.service包名下创建AndroidMDKService类才会被检测,看来LBE和手机管家检测恶意程序是根据恶意类名的方式实现的,这样的做法导致恶意软件只要更改包名就可以绕过检测。

360还无法检测到恶意,那继续完善程序,根据反编译的结果把类补充完整,因为反编译的结果直接贴到工程中会有不少错误,修改了很长时间360还是一直识别是安全的,我在想是不是因为哪些功能或者特征没有实现处理,所以360就不会报毒,让我认为360的检测结果还是比较靠谱的。

2.3 样本重签名,360不认识了

突然想到给程序重签名试试看,重签名的过程网上可以搜到,用WinRAR打开APK文件,删除META-INF目录,然后在命令行用keytool生成密钥,用jarsigner签名。

这时候再安装,360报未发现安全风险,和上图相同,这明明是个恶意程序的,怎么成安全的了,只是换了个签名而已,程序的恶意行为部分又不会影响。

总结:

普通的恶意样本检测中,三款安全软件都表现良好,能准确的检测出恶意软件;进一步的分析中发现,LBE和腾讯手机管家识别恶意软件时通过类的URI(不知道这种叫法是否合理),只要包名和类名符合恶意程序特征,就会报恶意程序,即使这个程序什么都不做,这就会造成很多误报情况发生,而且恶意程序可以通过更换包名和类名的方法绕过检测;360手机卫士是通过签名来识别恶意程序的,对程序重签名可以绕过这种检测方法。

总的来说,静态的基于特征的检测总会存在这些问题,这也是在考虑效果和性能情况下的折中,毕竟在程序安装时就进行复杂的检测会带来过大的系统开销,但是这就又带来了一下安全隐患,这种检测方式还必须及时更新病毒库,否则最新出现的恶意程序会无法识别。

转载于:https://www.cnblogs.com/zhaoshuai1215/p/3409371.html

Android手机安全软件的恶意程序检测靠谱吗--LBE安全大师、腾讯手机管家、360手机卫士恶意软件检测方法研究...相关推荐

  1. lbe android,lbe安全大师下载|lbe安全大师安卓版 v6.1.2559_手机天堂

    lbe安全大师官网版基于业界首创的API拦截技术,能够实时监控与拦截系统中的敏感操作,动态拦截来自已知和未知的各种威胁.避免各类吸费软件,广告软件乃至木马病毒窃取您手机内的隐私信息以及可能产生的经济损 ...

  2. 修复 Android 系统问题的 9 款最佳 Android 手机维修软件和应用

    您可能会对新的 Android 手机印象深刻,因为它令人兴奋的性能.然而,随着时间的推移,您可能会发现系统与过去不一样.您可能会遇到屏幕无响应. Android 应用程序崩溃.连接问题.电池耗尽等现象 ...

  3. android手机助手sd卡,360手机助手怎么设置将应用程序安装到手机sd卡中?(适用电脑与手机)...

    现在大家下载手机软件基本上是使用手机助手来下载,下载完成后一般是自动安装到手机内存,软件多了内存自然不够,所以我们最好是设置一下,鉴于使用360手机助手的朋友有很多,所以今天教大家360手机助手怎么设 ...

  4. android手机闹钟在那里面,手机闹钟软件哪个好用 安卓手机怎么设置闹钟

    一到冬天,起床就非常的困难.然而,给自己的手机设个闹钟就不用担心早上起不来了.现如今,手机几乎人手都会有,手机软件是个非常实用的软件,除了基本提醒的功能外,更多的辅助功能在生活中被广泛应用.那手机闹钟 ...

  5. cordova 安卓文件多选_mac上的安卓手机数据传输软件推荐

    使用mac电脑如何管理安卓手机呢,你需要安装适用于mac的安卓手机数据传输软件,下面Macz小编就为您介绍几款mac上的安卓手机数据传输软件. AnyTrans for Android for Mac ...

  6. 360 android系统 流量,360手机卫士Android版增流量监控

    2011-3-15 10:52 [天极网IT新闻频道]目前,随着Android手机系统大热,低价智能手机越来越普及,而智能机最大的特点就是软件丰富和可随时随地可以上网.地铁里发微博,看新闻甚至看视频都 ...

  7. 手机叫车软件生存样本调查:部分公司月投入百万推广

    原文链接:http://tech.ifeng.com/mi/detail_2013_07/03/27063506_0.shtml 手机叫车软件生存样本调查:部分公司月投入百万推广 原标题:手机叫车软件 ...

  8. i9500android操作系统跑流量,四大手机安全软件谁更省流量?360手机卫士完胜

    有人把智能手机形容为流量的傀儡,一旦抛开无线网络,智能手机只能依靠流量维护其存在的意义.手机流量也成为大企业移动入口的必争之地.但前提是,消费者得愿意为此买单,因为流量消耗与手机交费直接挂钩. 各家安 ...

  9. 千千静听安卓版是百度音乐旗下一款手机音乐软件,集本地歌曲播放

    千千静听安卓版是百度音乐旗下一款手机音乐软件,集本地歌曲播放 千千静听 千千静听安卓版是百度音乐旗下一款手机音乐软件,集本地歌曲播放.在线歌曲试听下载于一身.拥有自动匹配封面歌词.绚丽桌面widget ...

  10. 2021-2027全球与中国手机售票软件市场现状及未来发展趋势

    本文研究全球及中国市场手机售票软件现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美.欧洲.日本.中国.东南亚.印度等地区的现状及未来发展趋势. 本文重点分析在全球及中国有重要角色的企 ...

最新文章

  1. shell命令之---Linux文件权限
  2. 维度爆炸?Python实现数据压缩如此简单
  3. C#复制图片_并重命名
  4. 使用Leap Motion Orion开发酷炫的手势识别VR/AR应用
  5. 编辑器 Notepad++
  6. Linux 之四 Ubuntu 20.04 WiFi 无法使用、设置无法显示、远程桌面、SSH、Git、PPA、FFmpeg 等各问题记录
  7. JS转字符 判断数字等
  8. java可达性_java垃圾回收机制--可达性算法
  9. LeetCode 353. 贪吃蛇(deque+set)
  10. 系统架构师学习笔记-系统开发基础知识(二)
  11. 测试面试题集-网络基础
  12. 不懂 NumPy 算什么 Python 程序员? | CSDN 博文精选
  13. Cocos Creator 你不知道的细节
  14. Java 常见面试题
  15. pli测试50题题库_人才测评题库60题测试(附答案).doc
  16. 腾讯地图SDK公交路线规划Demo
  17. 服务器usb驱动安装系统安装失败怎么办,USB3.0驱动无法安装失败怎么办?USB驱动失败失败的解决方法...
  18. 【行业云说直播间】-云数底座赋能基层治理现代化正式上线
  19. 删除无效的“设备和驱动器”
  20. 【 Iptables 】

热门文章

  1. 在ROS中创建工作区时出现错误
  2. C#导入导出MPP文件(PROJECT)
  3. IAR for STM8下载、安装、注册
  4. 什么是自媒体知识付费
  5. 什么是VMWare虚拟机
  6. 【UE】初识Slate编辑器-理解一个最基础的编辑器界面
  7. html给文字添加阴影效果,如何设置样式之添加文字阴影、边框阴影或者添加自己的CSS...
  8. 转载-谈谈我这些年的互联网赚钱经历
  9. php微信昵称保存,附件十四 存储微信昵称的处理方法
  10. Numpy 中某个矩阵的平方距离计算方法