主页 > imtoken钱包下载安卓官网 > Android平台挖矿木马研究报告
Android平台挖矿木马研究报告
360烽火实验室
概括
关键词:手机挖矿木马,电子货币
第一章Android平台挖矿木马简介
一、什么是手机挖矿木马
挖矿是获取电子加密货币(如比特币)的勘探方法的别称。 因其工作原理与开采矿物十分相似而得名。
手机挖矿木马是利用手机算力在用户不知情的情况下为攻击者获取电子加密货币的应用。
2. 电子加密货币
加密货币是一种匿名的虚拟货币。 它不依赖于任何法定货币机构的发行,也不受中央银行的控制。 交易在全球网络中运行,具有特殊的隐私性,不需要经过第三方金融机构,因此得到越来越广泛的应用。
由于不受政府控制、相对匿名、难以追踪等特点,电子加密货币常被用于非法交易,也成为犯罪工具或隐瞒犯罪所得的工具。 以WannaCry为代表的勒索软件都是使用比特币作为支付工具。
2009年,比特币成为第一个去中心化的电子加密货币,也是目前流行度和市值最高的加密货币。
2013年4月至2018年1月比特币价格变化趋势[1]
2017年,比特币价格上涨了1500%,单颗比特币价格最高时接近2万美元。 而随着比特币价格的疯狂上涨,挖矿木马的攻击也越来越频繁。
三、手机挖矿木马的历史演变
PC平台挖矿木马于2013年首次被发现,第一个手机挖矿木马CoinKrypt[2]于2014年3月首次被国外安全厂商曝光。手机挖矿木马沉寂一段时间后,随着电子加密货币的价格一直在上涨,恶意软件作者又将目标转向了挖矿。 手机挖矿木马的攻击也重新浮出水面,必将成为未来恶意软件的发展趋势之一。
2014年3月Android.Coinkrypt,第一个Android平台挖矿木马。
2014年4月,安卓。 BadLepricon[3]在Google Play上发现了一款手机挖矿木马。
2014年5月,安卓。 Widdit[4],第一个使用Android挖矿SDK的挖矿木马。
2017年10月,第一个加载JavaScript的挖矿木马Android.JsMiner[5]。
2017年10月 Android.CpuMiner[6],第一个使用cpuminer库的挖矿木马。
2017年12月Android.PickBitPocket[7],伪装成比特币钱包的欺诈程序。
2017年12月Android.Loapi[8],一个具有复杂模块化架构的挖矿木马。
2018年1月,第一个使用Coinhive Android SDK挖矿的木马Android.Hackword[9]。
第二章Android平台挖矿木马现状
一、规模与影响
2013年至2018年1月,360烽火台捕获Android平台挖矿木马1200余个,其中仅2018年1月就有近400个为Android平台挖矿木马,占Android平台挖矿木马总数的近三分之三. 三分之一。
Android挖矿木马在2014年短暂爆发后,在2015、2016年逐渐平息,主要原因是受当时移动平台技术的限制和电子货币价格的影响,木马作者的输入输出不高。 但随着2017年底电子货币价格的上涨和挖矿技术的成熟,木马作者再次中标,手机挖矿木马也呈现爆发式增长。
Android平台挖矿木马伪装成各种应用软件,其中工具(20%)、下载器(17%)和壁纸(14%)是最常见的伪装应用类型。
从样本来源来看,除了Google play中暴露的十余款挖矿木马外,我们还捕获了第三方下载站的300余款挖矿木马。 根据其网页上的标志,我们估计该网站APP的总下载量达到了260万次以上。
第三方下载站下的挖矿木马
从网站的角度来看,根据Adguard数据[10],在2017年的最后一个月,在Alexa排名前10万的网站中,有超过220个网站在用户打开主页时没有通知就利用用户的电脑进行挖矿。 . 影响多达5亿人。
过去一个月的 Adguard 调查数据
这些网站来自美国、印度、俄罗斯、中国、巴西、中国等各个国家。
主要国家占比
这些网站多为视频门户网站、文件共享站、色情网站和新闻媒体站等,访问时间较长。
挖矿网站分类
2.目标货币
挖木马的币种选择因币种挖矿难度、币种相对价格等因素而异。 目前在安卓平台发现的挖矿木马主要选择五种币种:比特币、莱特币、狗狗币、赌场币、门罗币。
货币优缺点比较
三、挖矿方式及收益分配
挖矿方式有两种:个体挖矿和矿池挖矿。 下面以比特币为例,说明两种挖矿方式的区别。
(一)独立挖矿
独立挖矿是指利用自己电脑当前拥有的算力参与比特币挖矿,获得的新区块收益全部归个人所有。
独立挖矿流程
比特币平均每十分钟出一个区块,参与比特币挖矿的用户数量庞大比特币合约稳定盈利模式,独立挖矿可能一整年都抢不到一个区块。 而且手机的算力相较于其他挖矿设备更加有限。 目前在Android平台上未发现采用独立挖矿方式获取电子货币的挖矿木马。
(2) 矿池挖矿
矿工是对参与比特币开采竞赛的网络成员的昵称。 矿池是通过特定算法设计的服务器,所有接入矿池服务器的用户都会组成一个团队进行挖矿。
个人装备的性能虽然小,但是如果几千人组队来挖矿的话,整体性能会变得非常强大。 这样的话,挖矿的成功率就会大大提高。 一旦矿池中的团队成功创建了一个区块,团队中的所有人将根据每个人贡献的算力进行分红。 矿池的开发者一般会向每个用户收取一定的费用,但由于这种方式可以让大家更稳定地获得比特币,所以大多数矿工会选择矿池挖矿,而不是个人挖矿。
矿池挖矿流程
矿池挖矿也分为通用矿池挖矿和前端矿池挖矿。
一般矿池挖矿:
一般矿池挖矿直接利用CPU或GPU本身的高速浮点运算能力进行挖矿工作。 算力值由C或其他语言编写的挖矿程序通过CPU或GPU计算得到。 矿池按照产生的算力价值进行分红,收取低于10%的矿池手续费。
前端矿池挖矿:
前端挖矿使用asm.js或webAssembly前端解析器中介,被动使用用户的CPU在浏览器端完成挖矿,或者使用新的Html5规范WebGL使用浏览器完成GPU挖矿操作。 算力值由浏览器产生的CPU或GPU计算得出。 前端矿池(如Coinhive[11])会收取30%的矿池手续费。
由于使用方便、跨平台、隐蔽性好等特点,前端矿池挖矿逐渐受到挖矿木马作者的青睐。
第三章Android平台挖木马技术原理
一、挖矿技术原理
为了在Android平台上追求稳定收益,攻击者通常会选择使用矿池进行挖矿。 攻击者通过挖矿木马远程控制用户手机,在用户不知情的情况下,让手机在后台继续挖电子货币,为其谋利。
攻击者通过挖矿木马获取收益的攻击过程
在代码层,形式是嵌入开源矿池代码库进行挖矿,使用矿池提供的浏览器JavaScript脚本进行挖矿。
(1) 使用开源矿池代码库进行挖矿
挖矿木马CpuMiner使用开源挖矿项目cpuminer来挖比特币和莱特币:
Github 开源项目
第一步:注册挖矿广播和服务组件,在Android Manifest中注册广播和挖矿服务MiningService。
第二步:嵌入核心挖矿库文件
第三步:设置挖矿的基本信息比特币合约稳定盈利模式,包括算法、矿池地址、矿工账户信息等基本信息,开始挖矿。
第四步:执行cpuminer挖矿,开始挖矿
(2) 使用浏览器JavaScript脚本挖矿
2017年9月,国外著名BitTorrent网站海盗湾(Pirate Bay)[12]试图在网页中植入JavaScript挖矿脚本,但由于兼容性问题导致部分用户CPU 100%疯狂,官方承认他们有意以此来增加他们的部分收入。
由于浏览器JavaScript挖矿脚本灵活简单的配置及其全平台的特点,受到越来越多的恶意挖矿木马的青睐,这也导致了利用JavaScript脚本挖矿的安全事件越来越频繁。
通过 Coinhive 的 JavaScript API
二、挖木马的技术手段
挖矿过程的运行会占用CPU或GPU资源,造成手机卡顿、发热、掉电等现象,用户很容易感知到。 为了隐藏自己的挖矿行为,挖矿木马会使用一些技术手段来隐藏或控制挖矿行为。
(1)检测设备功率
挖矿木马的运行会导致电池电量大幅下降。 为保证手机在大多数情况下正常运行而不被用户察觉,会选择在电量高于50%时运行挖矿代码。
检测设备当前电量是否大于50%
(2)检测设备的唤醒状态
挖矿木马会检查手机屏幕的唤醒状态。 当手机处于唤醒状态时,在锁屏状态下会开始执行,避免用户在与手机交互时感知挖矿带来的挖矿影响。
检测屏幕唤醒状态
(3)检测设备充电状态
该设备在充电时将有足够的功率和热量来想象。 在充电时运行挖矿木马可以防止用户注意到挖矿导致的电量下降和发热。
通过MiningService服务连接Pickaxe矿池挖比特币
(4)设置不可见页面进行挖矿
挖矿木马通过设置android:visibility为不可见属性,实现不可见的Webview页面加载效果,从而利用JavaScript脚本进行挖矿,隐藏自身的恶意挖矿行为。
设置不可见的webview页面
(5) 仿冒应用程序下载器
挖矿木马通过伪造流行的应用程序来诱骗用户下载。 事实上,它们只是应用程序下载器。 软件启动后开始挖矿,只提供应用下载链接。
假应用程序下载器
第四章Android平台挖木马趋势