阅读本文大概需要 8 分钟

今年,新冠疫情成了与人类对立的最大病毒体,我们的免疫系统与无数昼夜奔波的医护人员即是与之抗衡的安全卫士

那么,计算机和我们如今最常用的智能手机如何防御病毒,我想写的这个系列就带领大家深谙这一话题。本篇文章先带大家了解一下移动手机的一段短暂的病毒编年史,写的过程中也看到了很多血淋淋的历史。

移动病毒历程

2004 年以前,电脑病毒的魔爪在 PC 端持续扩张,还并没有渗透到当时并不普及的移动设备,然而,2004 年的一个傍晚,第一个手机病毒的出现打开了这个潘多拉魔盒,从此,移动病毒与移动安全之间展开了一场血肉横飞的搏斗。

1. Cabir(2004)

2004 年 6 月算是移动计算机安全的新纪元,Cabir 的出现开创了历史上手机病毒的先例。

该病毒由当时知名的病毒开发组织 29A  成员  Vallez  开发,并在发现的几天后被卡巴斯基实验室的  Roman Kuzmenko,分析出是专门运行在  ARM  处理器上的  Symbian OS  的蠕虫病毒(病毒式传播)。“Cabir”  这个名字也是由卡巴斯基实验室的员工以同事埃琳娜・卡比罗娃(Elena Kabirova)的名字命名的。

虽然是病毒,但 Cabir 当时基本上也没有造成什么实质的危害。手机感染 Cabir 后,只是会在手机显示屏上显示 “Caribe” 字串,并扫描附近 10 米内开启蓝牙连接的智能手机,找到目标后,Cabir 会尝试向目标发送 Caribe.SIS 文件,再次感染目标。

Cabir = Caribe

Cabir 最大的危害仅仅是会一直通过蓝牙连接扫描其他智能手机,会快速耗完电池电量。Cabir 并不能像常规病毒一样使手机宕机,也不会窃取消息,或完成其他恶意功能

但 Cabir 在当时依然证明了智能手机也会受到恶意软件攻击,这就为其他变种病毒的出现奠定了基础,其中包括一款使用户无法使用蓝牙连接的变种,以及一款通过彩信传播的变种,之后的两年移动端病毒也呈现出爆发式的增长。

2004~2006 年病毒数量的增长

2. Skulls(2005)

Cabir 出现不久之后,2004 年 11 月 Skuller.a 出现了。

与 Cabir 不同,Skuller.a 算是真正意义上的的木马病毒,它利用 Symbian 系统的 bug,可以在不提示用户的情况下用自己的文件覆盖系统文件。

利用该特性,Skuller 可以将应用程序图标替换为骷髅图(Skulls),并删除可用的应用程序文件。结果,一旦手机关机并再次开机,手机就会停止工作。这种类型的 “破坏木马” 也成为了后来病毒开发者中最受欢迎的一种形式。

这种木马程序也有一个特点,就是一定需要用户手动安装,因此攻击者一般会在一些恶意网站或者社交软件中欺骗对象安装该木马。

3.FakePlayer(2010)

2010 年,卡巴斯基的员工 Denis Maslennikov 接收到用户反馈,发现了第一个针对 Android 系统的恶意样本软件,并在 8 月公开,将其命名为 Trojan-SMS.AndroidOS.FakePlayer.a,这款木马可以获取短信发送权限形成恶意扣费。

该木马病毒会伪装成一个正常的媒体播放器,通过手机短信传播,一旦点击其中的链接网站 Trojan-SMS.AndroidOS.FakePlayer.a 就会提示手机用户安装一个 13KB 的 APK 应用文件,在安装同时要求用户允许其获得短信发送权限,一旦用户的手机安装该木马之后,将会向指定号码发送付费短信,从而对用户的话费账户造成损失

与之前的木马程序类似,FakePlayer 也必须由用户手动安装,用户也会收到该应用程序会发送 SMS 消息到高级号码的权限申请,因此当卡巴斯基在还未推出 Android 平台手机安全软件之前,表示解决方法仍在用户自身,在安装不明来源的应用程序时,请务必注意其要求的权限列表,通常情况下,获取短信发送、拨打电话等付费行为的权限将存在扣费风险,而访问联系人信息、邮件信息等隐私内容的应用,将存在个人隐私泄漏的风险

对于今天来说,该应用程序开发起来非常非常简单,完全基于 Google 提供的 Hello World 示例开发,但虽然简单,与 Cabir 一样也给一些初学 Android 开发者拓展了新的视野,也为整个 Android 安全领域奠定了基础。

4.HummingBad(2016)

六年后的 2016 年,中国本土病毒程序 HummingBad 出现了,这也是近年来最具有代表性的移动端病毒之一。

HummingBad 是由微赢互动(Yingmob) 公司,可以通过自动点击侵入性广告谋取欺诈性的广告收入,当时已经感染了多达  8500  万台设备。在国内发现的五个月后,跨国安全软件与服务公司 Check Point 发布了一份报告 (https://blog.checkpoint.com/wp-content/uploads/2016/07/HummingBad-Research-report_FINAL-62916.pdf),公开了当年 HummingBad 的具体数据和部分代码。

Check Point 指出,他们留意 Yingmob 团伙已有五个月的时间,其人员组成繁杂完善,且获利惊人。其首选工具是一款叫做 HummingBad 的恶意软件,甚至与一家广告分析公司有染。

HummingBad 是 Check Point 在 2016 年 2 月份发现的一款恶意软件,它会在 Android 设备上建立一个永久性的 rootkit,借助虚假广告和安装额外的欺诈性应用来获利。

Yingmob 选择了与一家合法的国内广告分析企业合作,分享其资源和技术。该团伙具备高度组织性,拥有负责开发 HummingBad 而已组件的单独 4 组 / 25 名职员。

Yingmob 利用 HummingBad 每月获得 30 万美元的欺诈性广告收入,这一稳定现金流还包括了一个集中的组织结构,证明了网络犯罪能够轻松实现经济上的自给自足。

HummingBad 除了会自动展示广告模拟点击外,还会利用系统的多个漏洞尝试获取 Android 设备的 Root 权限,在被入侵的手机中安装各种流氓软件,在当时功能手段也极其复杂。

HummingBad 功能上本身包含了两个主要组成部分,其中一个组件负责对 Android 设备进行 Root 操作,Rootkit 会考虑利用多种不同的漏洞。Root 成功后,攻击者就能完全获取设备的访问权限。如果 Root 失败,第二套组件就会生成一个欺骗性的系统升级通知,欺骗用户让 HummingBad 获取系统级权限(Root 还是关键呀!)。无论 Root 是否成功,HummingBad 都会尽可能下载大量欺诈应用。

图源 Check Point 报告,模拟点击代码

整套 HummingBad 也包含好几个恶意组件。首要的组件名为 SSP,其作用是显示非法广告、安装欺诈应用。该组件会在系统内置注册一个广播接收器(Android 四大组件中的 BroadcastReceiver),监听以下事件:

  • USER PRESENT,解锁设备时触发

  • BOOT COMPLETED,设备启动后触发

  • SCREEN ON,设备唤起时触发

触发过后,SSP 开启名为 Se 的服务,初始化恶意逻辑,并且开启广告网络。SSP 还会开启计时器,每 10 秒钟计划一次 LockTask,如果满足相应条件(比如互联网连接、从服务器获取到设置,时间延迟等),LockTask 就会重启 Se 服务,并且启动 MainActivity 进程,激活恶意 payload。部分代码如下:

public void onReceive(Context context, Intent intent) {Editor editor = UtilsClass.getInstance().getSharedPreferences(context).edit();if (Utilstools.ACTIONIAD.equals(intent.getAction())|| Utilstools.ACTIONZDT.equals(intent.getAction()) ||"android.intent.action.USER_PRESENT".equals(intent.getAction()) ||"android.intent.action.BOOT_COMPLETED".equals(intent.getAction()) ||"android.intent.action.SCREEN_ON".equals(intent.getAction())) {if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {MobclickAgent.onEvent(context, "SSP_ReCreate");}if (!Utilstools.getInstance().isServiceRunning(context)) {context.startService(new Intent(context, Se.class));}}//...
}

MainActivity 进程开始之后,恶意程序会显示广告 banner,广告上面会有个关闭按钮。此时,程序再次拦截 KeyDownEvent 事件,阻止事件分发:

  • KEYCODE HOME(3)

  • 按键返回(4)

  • 键盘菜单(82)

public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == 4 || keyCode == 82 || keyCode == 3) {return false;}return super.onKeyDown(keyCode, event);
}

此时,由于用户无法回到 Home 页,或者是进行返回操作,只能被迫处理广告。但如果试图手动关闭广告,也会拦截相应的 click 事件,将该事件分发到屏幕中间(即 ” 关闭广告 “ 按钮无效),实际上也是点击一次广告操作。在点击广告之后,SSP 组件就会向服务器发出请求,给 APK 返回一个链接,SSP 随后再从服务器下载该 APK 文件。

图源 Check Point 报告,“关闭” 按钮相关代码

APK 文件下载完成后,恶意应用会检查设备是否已经 Root。如果已经 Root,则默默地安装下载的 APK 文件;如果没有 Root 的话,SSP 会弹出用户对话框,仍旧企图进行安装操作。

下载的 APK 文件安装完成后,SSP 再启动该程序,并且广播 INSTALL_BEFERRER,通过从服务器获取到的信息来伪造 Google Play 的安装,并从广告网络中获取广告收益。

据报告,微赢互动预计每天光从广告点击,就能获取超过 3000 美元的收益,而诈骗应用的安装则能获取 7500 美元 / 天。换算下来一个月就是 30 万美元,一年则为 360 万美元。

而这种诱导、警告用户(如软件需要更新、手机中毒需要查杀、点击一键清理手机之类的等等)的手段也成了后来很多移动端流氓软件惯用套路。

虽然 Android 系统本身会提醒用户某些应用可能具备有害权限,攻击者利用一些虚假故事依然可以诱导用户上当。

因此很多人说,在开放开源的 Android 生态系统中,用户就是最大的漏洞

推荐阅读
你亲手写的代码,正在出卖你

深夜,聊聊架构设计

深夜,分享一个Git小技巧

编程·思维·职场
欢迎扫码关注

移动手机病毒编年史(Cabir、Skulls、FakePlayer、HummingBad)相关推荐

  1. 手机病毒肆虐:恶意软件每天获取超3000美元收益

    究竟什么病毒轻而易举感染了全球8500万部手机? 伪装广告公司,利用手机病毒推广App.增加广告点击量 你的手机屏幕上莫名弹出一则广告,当点击关闭按钮时,广告并没有被关闭,反而进入广告页面.上面一幕是 ...

  2. 【历史上的今天】6 月 15 日:第一个手机病毒;AI 巨匠司马贺诞生;Chromebook 发布

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 6 月 15 日,在 1911 年的今天,美国三家公司在纽约合并成 IBM 公司的前身 CTR 公司 ...

  3. 常见手机病毒 android or Symbian

    相关网址:http://msm.qq.com/scan/news/secure_news_detail.jsp?id=84&from=index 综其特点:隐藏app图标.拦截短信.开机自动启 ...

  4. 移动发布手机病毒警示信息 发现六种新型病毒

    4月17日消息,近期,中国移动监测发现"伪系统杀毒"."捆绑恶魔"和"伪软件管家"等六款新型手机病毒,造成客户后台自动联网.点播手机游戏类业 ...

  5. 2015手机病毒暴涨16倍 每天70万人次连接风险WiFi

    随着手机生活的逐渐渗透,你的手机是更安全还是更容易"中招"?近日,北京晨报记者从瑞星和腾讯发布的年度安全报告看到,2015年手机病毒较上一年暴涨近16倍,桃色信息成为重要的手机病毒 ...

  6. 微信公布朋友圈9月十大谣言 包括新型手机病毒出现等

    10月4日消息,网络的快速发展加上社交平台的便利,使得信息传播速度日期加快.不过,便捷的网络和平台也成为一些谣言高发地,尤其是我们在刷朋友圈的过程中,经常会看到各种各样危言耸听的消息.日前,微信官方对 ...

  7. 106-网络安全——第七章计算机病毒和手机病毒

    1.计算机病毒是指编制者在计算机程序中插入的破坏系统功能或破坏数据,影响系统使用并能够自我复制的一组指令或程序代码 2.手机病毒是一种具有传染性.破坏性等特征的手机程序,其实质上同计算机病毒基本一样, ...

  8. android手机病毒原理,安卓手机病毒的原理是什么

    安卓手机病毒的原理是什么 Android系统因其开源性而受到了众多手机厂商和用户的倾爱,因为开源,所以降低了手机厂商的使用成本,也能让更多的开发者加入Android应用 的开发行列.下面是jy135小 ...

  9. 手机病毒“僵尸网络”进入高发期

    手机病毒是一种具有传染性.破坏性的手机程序.其可利用发送短信.彩信,电子邮件,浏览网站,下载铃声,蓝牙等方式进行传播,会导致用户手机死机.关机.个人资料被删.向外发送垃圾邮件泄露个人信息.自动拨打电话 ...

  10. 周鸿祎谈5G时代网络安全:手机病毒可能会更猖狂

    360创始人兼CEO周鸿祎在2018 ISC互联网安全大会上演讲.供图 中新网北京9月5日电(记者 吴涛)4日,2018 ISC互联网安全大会在北京召开,360创始人兼CEO周鸿祎接受媒体采访时谈到了 ...

最新文章

  1. python实现交并比IOU
  2. linux计算目录下wc,Linux wc命令详解
  3. CSS: SASS用法指南 (附视频)
  4. 程序员们,在你当领导前,有些事你得先知道
  5. 苹果air3安兔兔html5是什么,iPad Air3什么时候上市?我们期待的苹果iPad Air3是什么样?(2)...
  6. git GUI管理工具 sourcetree使用
  7. 18.链表管理内存实现c语言自动释放内存
  8. 欧标语言等级划分 C1,小语种欧标等级的要求
  9. python-封装继承多态
  10. 应届生,一口气拿下微软、Hulu、Amazon、腾讯、百度、网易、美团、华为等18家公司SP Offer面经...
  11. java语言英语单词_Java常用英语单词
  12. 百度BML飞桨训练营(五)商品种类识别
  13. 112、Flutter实现图片放大缩小的动画小
  14. AIDA64如何设置小屏监控 AIDA64监控CPU功耗
  15. AI会P图:你来描述,我来P
  16. photoclip / 移动端图片上传剪裁插件 /一款手势驱动的裁图插件
  17. mysql建表语句增加注释_mysql建表语句加注释
  18. 内网安全之:内网渗透流程
  19. 银行卡信息验证API接口调用接入流程
  20. 索尼录音笔怎么导出录音内容_追黄宗泽新剧追到了索尼录音笔?没办法,就是便携好用颜值高...

热门文章

  1. mysql 存储过程 锁表_MYSQL锁表问题的解决方法
  2. JSON格式错误报JSON parse error:
  3. linux中脚本退出函数,PowerShell中使用return语句退出函数例子
  4. mysql垂直分库_mysql垂直分库,水平分库,垂直分表,水平分表
  5. mongodb 导出txt_MongoDB导出软件
  6. 解决:“/****/kafka_2.13-3.0.0/bin/kafka-run-class.sh: line 342: exec: java: not found ”问题
  7. 【问题7】集群部署时的分布式 session 如何实现?
  8. Linux Semaphore
  9. 若非疯子怎会选择创业
  10. linux权限及ntfs文件系统权限的知识