Android平台挖礦木馬研究報告
摘要
· 手機挖礦木馬就是在用戶不知情的情況下利用其手機的計算能力來為攻擊者獲取電子加密貨幣的應用程序。
· 電子加密貨幣是一種匿名性的虛擬貨幣,由於不受政府控制、相對匿名、難以追蹤的特性,電子加密貨幣常被用來進行非法交易,也成為犯罪工具、或隱匿犯罪所得的工具。
· 2014年3月首個Android平台挖礦木馬被曝光。
· 從2013年開始至2018年1月,360烽火實驗室共捕獲Android平台挖礦木馬1200餘個,其中僅2018年1月Android平台挖礦木馬接近400個。
· 從Android平台挖礦木馬偽裝應用類型看,工具類(20%)、下載器類(17%)、壁紙類(14%)是最常偽裝的應用類型。
· 從樣本來源來看,除了被曝光的在Google play中發現的十多個挖礦木馬外,我們在第三方下載站點捕獲了300多個挖礦木馬,總下載次數高達260萬餘次。
· 從網站來看,據Adguard數據顯示,2017年近1個月時間內在Alexa排行前十萬的網站上,約有220多個網站在用戶打開主頁時無告知的利用用戶計算機進行挖礦,影響人數多達5億。大多是以視頻門戶網站,文件分享站,色情網站和新聞媒體站等這類相對訪問時間較長的站點。
· Android平台發現的挖礦木馬選擇的幣種主要有(BitCoin)、萊特幣(Litecoin)、狗幣(Dogecoin)、卡斯幣(Casinocoin) 以及門羅幣(Monero)這五種。
· 挖礦方式有單獨挖礦和礦池挖礦兩種,Android平台挖礦木馬主要採用礦池挖礦。
· Android平台挖礦木馬技術原理從代碼上看,主要分為使用開源的礦池代碼庫進行挖礦和使用瀏覽器JavaScript腳本挖礦。
· 挖礦木馬的技術手段包括檢測設備電量、喚醒狀態、充電狀態、設置不可見頁面以及仿冒應用下載器。
· 應用盈利模式由廣告轉向挖礦,門羅幣成為挖礦幣種首選以及攻擊目標向電子貨幣錢包轉移成為Android平台挖礦木馬的趨勢。
· 目前挖礦木馬的防禦措施,PC平台已經具備防禦能力,移動平台由於許可權控制不能徹底防禦。
· 移動平台挖礦受限於電池容量和處理器能力,但電子加密貨幣正在快速增長,現有貨幣增值並出現新的貨幣幣種,挖礦最終會變得更有利可圖。
· 國外這種全新的盈利模式,還處在起步階段,還需要更多的控制和監管,避免被惡意利用。
第一章 Android平台挖礦木馬介紹
一、什麼是手機挖礦木馬
挖礦(Mining),是獲取比特幣等電子加密貨幣的勘探方式的昵稱。由於其工作原理與開採礦物十分相似,因而得名。
手機挖礦木馬就是在用戶不知情的情況下利用其手機的計算能力來為攻擊者獲取電子加密貨幣的應用程序。
二、電子加密貨幣
電子加密貨幣是一種匿名性的虛擬貨幣。它不依靠任何法定貨幣機構發行,更不受央行管控。交易在全球網路中運行,有特殊的隱秘性,加上不必經過第三方金融機構,因此得到越來越廣泛的應用。
由於不受政府控制、相對匿名、難以追蹤的特性,電子加密貨幣常被用來進行非法交易,也成為犯罪工具、或隱匿犯罪所得的工具。以WannaCry為代表的勒索軟體,都採用比特幣為支付工具。
2009年,比特幣成為第一個去中心化的電子加密貨幣,也是目前知名度與市場總值最高的加密貨幣。
圖1、比特幣在2013年4月~2018年1月價格變化趨勢[1]
2017年比特幣的價格上漲了1500%,最高時單個比特幣價格逼近2萬美元。且隨著比特幣價格的瘋狂上漲,挖礦木馬的攻擊事件也越來越頻繁。
三、手機挖礦木馬歷史演變
挖礦木馬最早是2013年在PC平台上被發現,而首個手機挖礦木馬CoinKrypt[2]最早被國外安全廠商在2014年3月曝光。手機挖礦木馬經過一陣沉寂後,隨著電子加密貨幣價格的一路走高,惡意軟體作者又重新將目標轉向了挖礦。手機挖礦木馬的攻擊事件也重回視野,且勢必是未來惡意軟體的趨勢之一。
圖2
2014年03月Android.Coinkrypt,Android平台上首個挖礦木馬。
2014年04月Android. BadLepricon[3],在Google Play上發現手機挖礦木馬。
2014年05月Android. Widdit[4],首個使用Android挖礦SDK的挖礦木馬。
2017年10月Android.JsMiner[5],首個載入JavaScript的挖礦木馬。
2017年10月Android.CpuMiner[6],首個使用cpuminer庫的挖礦木馬。
2017年12月Android.PickBitPocket[7],偽裝成比特幣錢包的欺詐程序。
2017年12月Android.Loapi[8],擁有複雜模塊化架構的挖礦木馬。
2018年1月Android.Hackword[9],首個使用Coinhive安卓SDK挖礦的木馬。
第二章 Android平台挖礦木馬現狀
一、規模和影響
從2013年開始至2018年1月,360烽火實驗室共捕獲Android平台挖礦木馬1200餘個,其中僅2018年1月Android平台挖礦木馬接近400個,佔全部Android平台挖礦類木馬近三分之一。
2014年Android挖礦木馬經過短暫的爆發後,於2015,2016年逐漸歸於平靜。主要原因是受到當時移動平台技術等限制,以及電子貨幣價格影響,木馬作者的投入和產出比不高。但隨著2017年年底電子貨幣價格的一路高漲,挖礦技術的成熟,再次得到木馬作者的目標,手機挖礦木馬在也呈爆髮式增長。
圖3
Android平台挖礦木馬偽裝成各類應用軟體,統計發現其中工具類(20%)、下載器類(17%)、壁紙類(14%)是最常偽裝的應用類型。
圖4
從樣本來源來看,除了被曝光的在Google play中發現的十多個挖礦木馬外,我們在第三方下載站點捕獲了300多個挖礦木馬,根據其網頁上的標識,估算出這個網站上的APP總下載次數高達260萬餘次。
圖5第三方下載站點下的挖礦木馬
從網站來看,據Adguard數據顯示[10], 2017年近1個月內在Alexa排行前十萬的網站上,約有220多個網站在用戶打開主頁時無告知的利用用戶計算機進行挖礦,影響人數多達5億。
圖6Adguard近一個月的調查數據
這些網站來自美國、印度、俄羅斯、中國、巴西以及中國等多個國家。
圖7主要國家佔比
而這部分網站大多是以視頻門戶網站,文件分享站,色情網站和新聞媒體站等這類相對訪問時間較長的站點。
圖8挖礦網站分類情況
二、目標幣種
挖礦木馬在幣種選擇上是隨著幣種的挖掘難度和幣種相對價格等因素而變化。目前在Android平台發現的挖礦木馬選擇的幣種主要有(BitCoin)、萊特幣(Litecoin)、狗幣(Dogecoin)、卡斯幣(Casinocoin) 以及門羅幣(Monero)這五種。
圖9幣種優劣勢對比
三、挖礦方式及收益分配
挖礦方式有單獨挖礦和礦池挖礦兩種。下面以比特幣為例來說明兩種挖礦方式的區別。
(一)獨立挖礦
獨立挖礦是指使用自己計算機當前擁有的計算能力去參與比特幣的挖掘,獲取到的新區塊的收益全歸個人所有。
圖10獨立挖礦流程
比特幣平均每十分鐘產生一個區塊,而參與比特幣挖掘的用戶數量非常龐大,獨立挖礦可能一整年也無法搶到一個區塊。且手機的計算能力相比於其他挖礦設備更是有限,當前Android平台還未發現使用獨立挖礦手段來獲取電子貨幣的挖礦木馬。
(二)礦池挖礦
礦工是參與比特幣勘探競爭的網路成員的昵稱。而礦池是一個通過特定演算法而設計的伺服器,所有連接到礦池伺服器的用戶,會組隊進行挖礦。
個人設備的性能雖然渺小,但是成千上萬的人進行組隊挖礦,總體性能就會變得十分強大,在這種情況,挖礦的成功率會大大提升,一旦礦池中的隊伍成功製造了一個區塊,那麼所有隊伍中的人會根據每個人貢獻的計算能力進行分紅。礦池的開發者一般會對每個用戶收取一定手續費,但由於這種方法讓大家更穩定得獲得比特幣,大部分礦工都會選擇礦池挖礦,而不是單獨挖礦。
圖11礦池挖礦流程
礦池挖礦也分為一般礦池挖礦和前端礦池挖礦。
1. 一般礦池挖礦:
一般礦池挖礦直接利用CPU或GPU本身的高速浮點計算能力進行挖礦工作。由使用C或者其他語言構造的挖礦程序進行CPU或GPU計算得到算力價值。礦池根據產生的算力價值進行分紅,並收取10%以下的礦池手續費。
2. 前端礦池挖礦:
前端挖礦利用asm.js或webAssembly前端解析器中介在瀏覽器端被動使用用戶的CPU完成挖礦或者利用Html5新規範WebGL利用瀏覽器完成GPU挖礦操作。由瀏覽者產生的CPU或GPU計算得到算力價值。前端礦池(如Coinhive[11])會收取30%的礦池手續費。
由於使用方便,跨平台且隱藏性較好等特點,前端礦池挖礦逐漸得到挖礦木馬作者的青睞。
第三章 Android平台挖礦木馬技術原理
一、挖礦技術原理
在Android平台上攻擊者為追求穩定的收益,挖礦方式通常都選擇使用礦池來進行挖礦。攻擊者通過挖礦木馬遠程控制用戶手機,在用戶不知情的情況下,使手機持續在後台挖掘電子貨幣來為其牟利。
圖12攻擊者通過挖礦木馬賺取收益的攻擊流程
而在代碼層上的表現形式為,嵌入開源的礦池代碼庫進行挖礦和使用礦池提供的瀏覽器JavaScript腳本進行挖礦。
(一)使用開源的礦池代碼庫進行挖礦
挖礦木馬CpuMiner 使用開源的挖礦項目cpuminer來開採比特幣和萊特幣:
圖13Github開源項目
步驟一:註冊的挖礦的廣播和服務等組件,在Android Manifest里註冊廣播和挖礦的服務MiningService。
圖14
步驟二:嵌入核心的挖礦的庫文件
圖15
步驟三:設置挖礦包括演算法、礦池地址、礦工賬戶信息等基本信息開始挖礦。
圖16
步驟四:執行cpuminer進行挖礦開始挖礦
圖17
(二)使用瀏覽器JavaScript腳本挖礦
2017年9月,國外著名的BT站點Pirate Bay(海盜灣)[12]嘗試在網頁中植入JavaScript挖礦腳本,但由於兼容性問題,部分用戶的CPU出現了100%的瘋狂佔用,官方承認他們有意藉此來增加部分營收。
由於瀏覽器JavaScript挖礦腳本配置靈活簡單,具有全平台化等特點,受到越來越多的惡意挖礦木馬的青睞,同時也導致了利用JavaScript腳本挖礦的安全事件愈發頻繁。
圖18
通過Coinhive提供的JavaScript API
二、挖礦木馬的技術手段
挖礦的過程運行會佔用CPU或GPU資源,造成手機卡頓、發熱或電量驟降等現象,容易被用戶感知。為了隱匿自身挖礦的行為,挖礦木馬會通過一些技術手段來隱藏或控制挖礦行為。
(一)檢測設備電量
挖礦木馬運行會導致電池電量明顯下降,為保證手機在多數情況下正常運行而不被用戶察覺,會選擇在電池電量高於50%時才運行挖礦的代碼。
圖19檢測設備當前的電量是否大於50%
(二) 檢測設備喚醒狀態
挖礦木馬會檢查手機屏幕的喚醒狀態,當手機處於喚醒狀態,當處於鎖屏狀態時才會開始執行,避免用戶在與手機交互時感知到挖礦帶來的卡頓等影響。
圖20檢測屏幕喚醒狀態
(三)檢測設備充電狀態
設備在充電時會有足夠的電量和發熱的想像。在充電時運行挖礦木馬避免用戶察覺挖礦帶來的電量下降和發熱等現象。
圖21
圖22通過MiningService服務連接Pickaxe礦池來挖掘比特幣
(四)設置不可見的頁面進行挖礦
挖礦木馬通過設置android:visibility為invisible屬性,達到不可見的Webview頁面載入效果從而使用JavaScript腳本進行挖礦,隱藏自身的惡行挖礦行為。
圖23設置不可見的webview頁面
(五)仿冒應用下載器


※雲安全風險(一):Azure CSV注入漏洞
※雲高防之另類玩法:遊戲盾
TAG:嘶吼RoarTalk |