擊關(guān)注 InfoQ,置頂公眾號(hào)
接收程序員的 8 點(diǎn)技術(shù)早餐
作者|Ben
編輯|Martin、郭蕾
出處丨聊聊架構(gòu)
最近比特幣大火,區(qū)塊鏈大火,昨天就連我一個(gè)四線城市的、沒怎么接觸過互聯(lián)網(wǎng)的小學(xué)同學(xué)都焦慮地打電話問我,區(qū)塊鏈這波浪潮里他應(yīng)該怎么掙錢。
聊聊架構(gòu)之前發(fā)布過一系列的文章來介紹區(qū)塊鏈技術(shù),想想真有意思,那會(huì)閱讀量怎么都做不高,但現(xiàn)在,又突然出來很多的區(qū)塊鏈媒體。當(dāng)然,我們也做了一個(gè)專注報(bào)道區(qū)塊鏈技術(shù)的公眾號(hào):區(qū)塊鏈前哨,歡迎大家關(guān)注。
之前,我估計(jì)很多人都注意到過這樣一個(gè)新聞,有一些成人網(wǎng)站看到比特幣的暴漲之后,開始打起了挖礦的主意。他們?cè)谧约壕W(wǎng)站中偷偷暗藏挖礦代碼,而當(dāng)用戶訪問這些網(wǎng)站之后,他們就會(huì)神不知鬼不覺地迅速運(yùn)行這些挖礦代碼,甚至在用戶關(guān)閉瀏覽器之后,相關(guān)代碼仍然能夠繼續(xù)運(yùn)行并占用 CPU 資源。
今天這篇是篇翻譯文章,作者 Ben 是一名國外的資深開發(fā)者。他看到這篇新聞之后,也陷入了沉思。換個(gè)角度,如果不是挖礦,而是把全世界的 Web 瀏覽器通過 websocket 連接在一起,那是不是就可以組成一臺(tái)“超級(jí)計(jì)算機(jī)”,并利用這個(gè)超級(jí)計(jì)算機(jī)解決分布式問題?
于是他開始了新的嘗試。聊聊架構(gòu)對(duì)這篇文章進(jìn)行了翻譯,以下是全文。
寫在前面
我們將討論一個(gè)具有爭議性的話題——如何從網(wǎng)站訪客的瀏覽器中“偷”走計(jì)算資源。目前有很多討論是關(guān)于如何利用瀏覽器來挖掘數(shù)字貨幣的,但我不想加入到這些話題的討論當(dāng)中,我只是想探討一種有效利用計(jì)算資源的方式。
Web 瀏覽器執(zhí)行代碼的能力越來越強(qiáng)大。JavaScript 的發(fā)展、WebAssembly 的出現(xiàn)、對(duì) GPU 訪問能力的提升和線程模型的演變,這些因素組合在一起,讓瀏覽器與計(jì)算機(jī)一樣具備了強(qiáng)大的計(jì)算能力。隨著瀏覽器數(shù)字貨幣挖礦機(jī)的崛起,我也在思考這樣的一個(gè)問題:如何把全世界的計(jì)算資源整合成一個(gè)單獨(dú)的實(shí)體——一臺(tái)由網(wǎng)站訪客的瀏覽器組成的超級(jí)計(jì)算機(jī)。
就像普通的計(jì)算機(jī)集群一樣,這臺(tái)超級(jí)計(jì)算機(jī)的所有計(jì)算節(jié)點(diǎn)在協(xié)調(diào)之下共同解決一個(gè)問題。但與普通的計(jì)算機(jī)集群不同的是,這些計(jì)算節(jié)點(diǎn)時(shí)臨時(shí)性的(隨著網(wǎng)站訪客的來來去去),而且它們之前無法彼此對(duì)話(沒有跨站點(diǎn)的請(qǐng)求)。
這是我想到的一個(gè)例子:
右邊是超級(jí)計(jì)算機(jī)控制服務(wù)器。左邊是訪問某個(gè)網(wǎng)站的瀏覽器,它是這個(gè)超級(jí)計(jì)算機(jī)中的一個(gè)節(jié)點(diǎn),上面還顯示了它的 CPU 指標(biāo)。
這個(gè)超級(jí)計(jì)算機(jī)要解決的問題是找出某個(gè)給定哈希值的原始值。從圖上可以看出,總共有 23 個(gè)節(jié)點(diǎn)參與了計(jì)算,計(jì)算并比對(duì)了 380,204,032 個(gè)哈希值,其中美國的訪客貢獻(xiàn)了 50% 的處理能力。
代碼實(shí)現(xiàn)
這里主要用 websocket 技術(shù)在服務(wù)器和計(jì)算節(jié)點(diǎn)之間建立持久連接。這些連接用于協(xié)調(diào)節(jié)點(diǎn)的行為,從而讓它們成為相互協(xié)作的實(shí)體。websocket 可以傳輸代碼和協(xié)作消息,讓一切都成為可能。
websocket 的出現(xiàn)戲劇性地改變了 Web 客戶端的行為??蛻舳诉B接到網(wǎng)站上,先執(zhí)行預(yù)先定義好的 JavaScript,等建立起 websocket 連接之后,就可以執(zhí)行其他任意 JavaScript 腳本。
下圖右邊是超級(jí)計(jì)算機(jī)控制服務(wù)器,左邊是接收動(dòng)態(tài)指令的 Web 客戶端。
如果一款 App 使用了 WebView,JavaScript 就可以直接跑到 App 中,也就是說,通過 websocket 傳輸?shù)拇a可以跳過 WebView,直接進(jìn)入 App 的領(lǐng)地。
下圖右邊是超級(jí)計(jì)算機(jī)控制服務(wù)器,左邊是接收指令的 Web App??梢钥吹?,指令直接滲透到了 App 層。
剩下的就沒有什么新鮮的了。App 可以通過 C&C 協(xié)議(Botnet Command and Control)獲取指令,網(wǎng)頁在初次加載之后就可以動(dòng)態(tài)獲得 JavaScript 腳本,而 websocket 具有真正的動(dòng)態(tài)性(不像 Ajax 的輪詢拉取模式),可以跨多瀏覽器和設(shè)備運(yùn)行,而且對(duì)運(yùn)行環(huán)境有完全的訪問權(quán)限。
所以,我們完全可以通過 websocket 向計(jì)算節(jié)點(diǎn)傳輸指令代碼,當(dāng)然也可以用來傳遞消息,實(shí)現(xiàn)分布式協(xié)調(diào)。
Crackzor.js
六年前,我基于 OpenMPI 開發(fā)了一款分布式密碼破解器(ben.akrin.com/?p=1424),叫作 crackzor。
密碼破解是一個(gè)非常典型的分布式問題,說起來很簡單,就是通過排列組合字符猜出密碼。我使用 JavaScript 重寫了 crackzor,使用 websocket 替代了 OpenMPI。
不過,每一個(gè)分布式問題都是不一樣的,crackzor 并不是解決所有問題的良方。crackzor 的魔力在于它的靈活性,它把一個(gè)字符排列組合空間拆分成很多個(gè)塊,再把這些塊分?jǐn)偨o計(jì)算節(jié)點(diǎn)。在給定了要解決的問題以及迭代的起始和結(jié)束位置之后,節(jié)點(diǎn)就可以開始工作,不需要再為它們提供字符排列組合,這樣就不會(huì)出現(xiàn)網(wǎng)絡(luò)帶寬瓶頸問題。
第一個(gè)問題:如何最大程度利用節(jié)點(diǎn)的 CPU
JavaScript 默認(rèn)使用的是單線程模型,代碼通過 websocket 傳送到客戶端,默認(rèn)情況下只使用了 CPU 的一個(gè)核。而現(xiàn)今的大部分計(jì)算機(jī) CPU 都是多核的,所以,我們要想辦法把這些 CPU 都利用起來。
于是救星出現(xiàn)了——Web Worker。HTML 5 提供了這一特性,極大簡化了多線程的實(shí)現(xiàn)。不過,我們還需要解決一個(gè)問題。Web Worker 文檔告訴我們要從文件加載腳本文件,但我們的代碼是通過 websocket 傳輸過來的,并駐存在內(nèi)存中,所以我們無法直接通過指定腳本文件的方式來執(zhí)行代碼。
我們通過把代碼包裝成一個(gè) Blob 對(duì)象來解決這個(gè)問題:
var worker_code = 'alert( "this code is threaded on the nodes" );' window.URL = window.URL || window.webkitURL; var blob; try { blob = new Blob(\[worker_code\], {type: 'application/javascript'}); } catch (e) { window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; blob = new BlobBuilder; blob.append(worker_code); blob = blob.getBlob; } workers.push( new Worker(URL.createObjectURL(blob)) ) ;
第二個(gè)問題:在節(jié)點(diǎn)間分配任務(wù)
Websocket 服務(wù)器承擔(dān)了后續(xù)的大部分協(xié)調(diào)工作,它需要跟蹤節(jié)點(diǎn)的接入和退出,以及某個(gè)節(jié)點(diǎn)是否在執(zhí)行計(jì)算任務(wù),并在有可用節(jié)點(diǎn)時(shí)給它們分配任務(wù)。
服務(wù)器需要一直處于運(yùn)行狀態(tài),處理來自節(jié)點(diǎn)的連接。不過,這臺(tái)超級(jí)計(jì)算機(jī)可能每天需要解決不同的問題。為此,我寫了一個(gè)函數(shù)用來讀取文件,并執(zhí)行文件中的代碼。這個(gè)函數(shù)通過一個(gè)進(jìn)程來調(diào)用。
function eval\_code\_from_file { if( !file_exists("/tmp/code") ) { console.log( "error: file /tmp/code does not exist" ) ; } else { var code = read_file( "/tmp/code" ) ; code = code.toString ; eval( code ) ; } } process.on('SIGUSR1', eval\_code\_from_file.bind );
有了這個(gè)函數(shù),下一次我就可以殺掉舊進(jìn)程,然后使用新進(jìn)程加載新代碼。這要?dú)w功于 JavaScript 的靈活性,這種靈活性讓我們可以在任意時(shí)刻運(yùn)行任意代碼,只要對(duì)運(yùn)行環(huán)境有完全的訪問權(quán)限。
要給節(jié)點(diǎn)分發(fā)任務(wù)也很簡單,只要讓客戶端在連接到服務(wù)器時(shí)注冊(cè)一個(gè)回調(diào)函數(shù),然后在回調(diào)函數(shù)里執(zhí)行代碼即可。
比如客戶端:
var websocket_client=io.connect("http://websocket_server.domain.com"); websocket_client.on( "eval_callback",function(data){data=atob(data),eval(data)}.bind ) ;
服務(wù)器端:
client_socket.emit( "eval_callback", new Buffer("alert('this code will run on the client');").toSt
到目前為止:
所有的臨時(shí)節(jié)點(diǎn)(網(wǎng)站用戶的 Web 瀏覽器)連接到 websocket 服務(wù)器上;
通過進(jìn)程信號(hào)讓 websocket 服務(wù)器執(zhí)行新的代碼;
新代碼中包含了節(jié)點(diǎn)需要解決的新問題;
新代碼告訴 websocket 服務(wù)器如何協(xié)調(diào)節(jié)點(diǎn);
一旦某個(gè)節(jié)點(diǎn)解決了問題,接著處理下一個(gè)問題;
現(xiàn)在我們知道了如何利用 Web 瀏覽器來構(gòu)建一臺(tái)超級(jí)計(jì)算機(jī)。出于多方面的考慮,比如可讀性、安全性和復(fù)雜性方面的問題,我不想把我的代碼全部都公開出來。不過,如果有人感興趣,可以聯(lián)系我,我很樂意分享跟多的想法。
更多小建議
在拆分任務(wù)時(shí),任務(wù)不能太大。因?yàn)楣?jié)點(diǎn)都是臨時(shí)性的,如果任務(wù)太重,極有可能發(fā)生中斷。大部分 Web 瀏覽器會(huì)拒絕執(zhí)行或終止執(zhí)行太耗資源的代碼,而小任務(wù)可以在幾秒鐘之內(nèi)就完成,不會(huì)被打斷。
使用 JavaScript 實(shí)現(xiàn) MD5:https://gist.github.com/josedaniel/951664。
記錄節(jié)點(diǎn)解決問題所使用的平均時(shí)間,把運(yùn)行緩慢的節(jié)點(diǎn)排除在外,以免影響“超級(jí)計(jì)算機(jī)”的整體性能。
語:加密貨幣挖礦惡意軟件的問題正變得越來越嚴(yán)重。隨著通過劫持CPU周期暗中挖礦并從中受益的威脅制造者的數(shù)量持續(xù)增長,暗中挖礦惡意軟件在越來越多的網(wǎng)站出現(xiàn)。
1.CharCode JavaScript
在2017年12月6日,F(xiàn)ortiGuard實(shí)驗(yàn)室發(fā)現(xiàn)了一個(gè)被攻擊的網(wǎng)站-acenespargc.com。查看源代碼,我們發(fā)現(xiàn)一個(gè)可疑的加密腳本,它使用eval()函數(shù)將所有字符轉(zhuǎn)換為數(shù)字。我們使用了一個(gè)叫做CharCode Translator的工具將這些數(shù)字反向轉(zhuǎn)換成字符。然后,我們檢索到了一個(gè)鏈接,該鏈接會(huì)重定向到一個(gè)詐騙頁面或釣魚網(wǎng)站。
第1部分
第2部分
以上只是一個(gè)簡單的例子。威脅制作者可以根據(jù)地理位置對(duì)釣魚內(nèi)容進(jìn)行定制,為了更好地避免被發(fā)現(xiàn),當(dāng)檢測到你之前訪問過該釣魚頁面時(shí),它就會(huì)消失。
使用這種技術(shù),威脅制作者能夠隱藏用肉眼看的到的惡意網(wǎng)站/釣魚網(wǎng)頁/廣告URL。
這一技術(shù)現(xiàn)在已經(jīng)被威脅制作者們采用,他們可以在被攻擊的網(wǎng)站上隱藏加密貨幣的挖礦JavaScript,這樣訪問該網(wǎng)站的任何人都將被“感染”,被“感染”的電腦將會(huì)為威脅者進(jìn)行秘密挖礦。我們將這種行為歸為惡意的,是因?yàn)樗谖唇?jīng)允許的情況下使用他人的資源。
2.封隔器工具隱藏CoinHive腳本
在12月28日,F(xiàn)ortiGuard實(shí)驗(yàn)室利用我們上面描述的混淆技術(shù),了解了另一個(gè)惡意網(wǎng)站——romance-fire[.]com ——該網(wǎng)站是通過一個(gè)客戶推薦的。該網(wǎng)站包含隱藏的用來加密貨幣挖礦的惡意代碼。
我們發(fā)現(xiàn)了編碼的腳本,并且通過使用包裝器工具對(duì)其進(jìn)行解包,我們發(fā)現(xiàn)該腳本與CoinHive有一個(gè)連接。
來自源代碼的JavaScript
解壓縮JavaScript-第1部分
我們注意到URL(hxxp://3117488091/lib/jquery-3.2.1.min.js?v=3.2.11)似乎沒有一個(gè)有效的IP地址或域名。我們做了一些研究,在KLOTH.NET上轉(zhuǎn)換后,發(fā)現(xiàn)“3117488091”是185.209.23.219的十進(jìn)制IP。下面是結(jié)果:
該網(wǎng)站的URL轉(zhuǎn)換成hxxp://185.209.23.219/lib/jquery-3.2.1.min.js?v=3.2.11。從URL中,我們檢索到相同的JavaScript模式,因此我們?cè)俅未蜷_腳本。
解壓縮JavaScript-第2部分
在最后一輪的解壓縮之后,我們終于能夠檢索包含CoinHive URL的腳本了:
解壓縮JavaScript-第3部分
3.來自GitHub的貨幣挖礦
在2018年1月26日,我們發(fā)現(xiàn)了另一個(gè)網(wǎng)站——sorteosrd[.]com——該網(wǎng)站通過劫持用戶的CPU來挖掘加密貨幣。這種加密挖礦的惡意軟件再次讓劫持者在沒有經(jīng)過電腦用戶許可的情況下,從挖掘數(shù)字貨幣中獲利。我們相信這個(gè)網(wǎng)站可能已經(jīng)被網(wǎng)站管理員攻擊或利用了。
網(wǎng)站hxxp://sorteosrd.com的源代碼
在用戶設(shè)備上暗中加密挖礦的影響
從上面的截圖中可以看到,在訪問站點(diǎn)之后,由于CPU被充分利用,硬幣挖礦戲劇性地減慢了PC的速度。
4.被入侵的網(wǎng)站——黑莓手機(jī)被CryptoCoin挖礦感染
另一個(gè)CoinHive腳本的例子是在一個(gè)意料之外的被攻擊的網(wǎng)站——blackberrymobile.com——發(fā)現(xiàn)的。
就連黑莓的網(wǎng)站也在短時(shí)間內(nèi)受到了Monero加密貨幣挖礦的攻擊。
5.受攻擊的網(wǎng)站——Milk New Zealand受到了deepMiner工具的感染
此外,我們還發(fā)現(xiàn)新西蘭最大的乳制品農(nóng)場之一——Milk New Zealand網(wǎng)站也遭到了攻擊。我們的AV實(shí)驗(yàn)室檢測到了來自該網(wǎng)站的惡意活動(dòng),所以我們查看了該網(wǎng)站的源代碼,并在github上找到了一個(gè)使用deepMiner工具的腳本,在Monero、Electroneum、Sumokoin等網(wǎng)站上挖礦。下面是網(wǎng)站截圖:
使用deepMiner的JavaScript
根據(jù)上面截圖中的數(shù)據(jù),我們了解到這種腳本使用DDNS作為其域名,并且只增加了50%的CPU使用率,這樣終端用戶就不大會(huì)注意到。
6.甚至YouTube也為帶有貨幣挖礦的廣告提供服務(wù)
加密貨幣挖礦惡意軟件的問題正變得越來越嚴(yán)重。隨著通過劫持CPU周期暗中挖礦并從中受益的威脅制造者的數(shù)量持續(xù)增長,暗中挖礦惡意軟件在越來越多的網(wǎng)站出現(xiàn)。一周前,一名威脅制造者設(shè)法將一個(gè)貨幣挖礦腳本植入了在線廣告中,隨后幾個(gè)惡意廣告便出現(xiàn)在YouTube上,幸運(yùn)的是,YouTube發(fā)現(xiàn)了這個(gè)問題,并在兩個(gè)小時(shí)內(nèi)刪除了受影響的廣告。
惡意加密挖礦的YouTube廣告
如何防止或避免被貨幣挖礦劫持?
1 清除你的瀏覽器緩存,或者安裝清潔工軟件來查找和刪除電腦上的無用的文件和無效的Windows注冊(cè)表?xiàng)l目;
2 在瀏覽器中禁用JavaScript或運(yùn)行腳本攔截工具或擴(kuò)展;
3 安裝防病毒軟件,如:FortiClient;
4 安裝并運(yùn)行廣告攔截器或類似的工具,如:Ghostery;
FortiGuard已經(jīng)把本文列出的所有惡意URL都列入了黑名單。
IOC:
被攻擊的網(wǎng)站:
acenespargc[.]com
www[.]romance-fire[.]com
milknewzealand[.]com
新發(fā)現(xiàn)的貨幣挖礦URL:
hxxp://coinhive[.]com
hxxp://minerhills[.]com
hxxp://crypto-webminer[.]com
hxxp://sorteosrd[.]com
hxxp://greenindex[.]dynamic-dns[.]net
hxxps://github[.]com/deepwn/deepMiner
家網(wǎng)站的主要收入來源是廣告,如果沒有人點(diǎn)擊廣告,就等于沒有收入。尤其是一些內(nèi)容流量網(wǎng)站,就靠著廣告活著。
但是廣告能給網(wǎng)站帶來的收入畢竟有限,窮則思變,他們開始盯上了虛擬貨幣。全球排名前1萬的網(wǎng)站中,有2.2% 的網(wǎng)站正在做這種損人利己的勾當(dāng)。
區(qū)塊律動(dòng) BlockBeats 統(tǒng)計(jì),截止 7月 9 日,全網(wǎng)有超過 3 萬家網(wǎng)站內(nèi)置了挖礦代碼,只要用戶打開網(wǎng)站進(jìn)行瀏覽、操作,網(wǎng)站就會(huì)調(diào)用電腦或手機(jī)的計(jì)算資源來進(jìn)行挖礦。根據(jù) Adguard 的數(shù)據(jù)統(tǒng)計(jì),全球約有 5 億臺(tái)電腦曾被綁架挖礦。
流量小一點(diǎn)的網(wǎng)站,每天可以獲得幾美元的額外收入,多的可以達(dá)到數(shù)千美元。而代價(jià)就是犧牲網(wǎng)站用戶的電腦性能和能源,換取門羅幣。
瀏覽即挖礦,如果你在上網(wǎng)的時(shí)候覺得自己的電腦和手機(jī)莫名其妙地發(fā)燙,那么你就要考慮是不是已經(jīng)被網(wǎng)站利用來挖礦了。
瀏覽即挖礦,黑客總能找到各種奇怪的資源來牟利
幾乎所有的瀏覽挖礦代碼挖的都是門羅幣。
門羅幣采用的是 Cryptonight 的挖礦算法,這種算法對(duì)于 CPU 很友好,非常適合在普通電腦上運(yùn)行。于是乎,就有開發(fā)者打起了歪主意。
他們利用 javascript 編寫代碼,當(dāng)用戶載入某個(gè)網(wǎng)站的時(shí)候,也會(huì)載入挖礦代碼。據(jù)最大的門羅幣挖礦代碼提供商 Coinhive 的數(shù)據(jù)顯示,他們的代碼運(yùn)行效率約等于門羅幣礦機(jī)的 65%,未來還有一定的提升空間。
雖然在訪問網(wǎng)站的時(shí)間內(nèi),用戶只能貢獻(xiàn)一點(diǎn)點(diǎn)的算力,但是積少成多,訪問量越大越賺錢。
多家挖礦代碼提供商都有計(jì)算器供開發(fā)者預(yù)測收入,如果你的網(wǎng)站每天都有 10-20 用戶訪問的話,每天可以收入 0.3 個(gè) XMR,約 270 塊人民幣,每個(gè)月可以得到 8100 元的收入。
白來的收入,何樂而不為呢?于是乎不少本來廣告收入就不多、又沒有其他盈利模式的網(wǎng)站開始在網(wǎng)站上運(yùn)行挖礦代碼。
著名的 BT 資源下載網(wǎng)站海盜灣,近日被爆出網(wǎng)站內(nèi)置了門羅幣的挖礦代碼。在海盜灣的網(wǎng)站上非常霸道地寫著,「只要進(jìn)入海盜灣網(wǎng)站,你就同意我們使用你的 CPU 進(jìn)行門羅幣挖礦。如果你不同意,你可以立刻離開或者安裝 adblocker」。
這段話,只能在海盜灣網(wǎng)站最底端的位置才能看到,而且還被特意調(diào)成了小字號(hào)。
也就是說,哪怕你只是打開海盜灣看看有沒有更新什么資源,你的電腦 cpu 占用也會(huì)瞬間飆到 100%,為海盜灣網(wǎng)站創(chuàng)收提供算力,直到你關(guān)掉網(wǎng)站。
據(jù)了解,被植入挖礦代碼的網(wǎng)站中,有 68% 的網(wǎng)站為色情網(wǎng)站。如果你有瀏覽色情網(wǎng)站的習(xí)慣,那你也應(yīng)該注意一下,因?yàn)椴簧偕榫W(wǎng)站為了增加收入也會(huì)加入挖礦代碼。
當(dāng)你的雙手在飛舞顫抖的時(shí)候,是否發(fā)現(xiàn)自己的電腦已經(jīng)變得滾燙,或許你根本就沒有發(fā)現(xiàn),因?yàn)槟阏诔撩杂趧e的事情。
除了網(wǎng)站所有者自行添加挖礦代碼之外,還有黑客黑入其他網(wǎng)站服務(wù)器在代碼中惡意植入挖礦木馬的。比如上個(gè)月高考結(jié)束之后,不少高校的網(wǎng)站都被爆出被黑客入侵,考生在查詢考試成績的時(shí)候就要為黑客做貢獻(xiàn)。
因?yàn)椴榉志W(wǎng)站都有分?jǐn)?shù)公開的時(shí)間,大量考生都會(huì)開著網(wǎng)頁等待放榜,所以這類網(wǎng)站比其他博客之類的網(wǎng)站更受歡迎。上個(gè)月底,騰訊御見威脅情報(bào)中心檢測到山東、湖北、河南、黑龍江等多所重點(diǎn)大學(xué)的官網(wǎng)被植入挖礦木馬。
此外,還有不少游戲外掛的開發(fā)者也會(huì)在外掛中植入挖礦木馬,讓很多貪小便宜、貪圖享受的用戶中招。
除了電腦端,在 Android 手機(jī)端也出現(xiàn)了大量包含挖礦木馬的 App。360 安全實(shí)驗(yàn)室今年 1 月份的數(shù)據(jù)顯示,全網(wǎng)有 400 多種挖礦木馬在流行,占 Android 木馬總量的 1/3。
網(wǎng)頁挖礦劫持服務(wù)商,完善的黑產(chǎn)體系
有需求,就有服務(wù),挖礦代碼和挖礦木馬背后其實(shí)有一整個(gè)完整的產(chǎn)業(yè)鏈,而且服務(wù)非常完善。
打開網(wǎng)頁就進(jìn)行挖礦,其實(shí)這個(gè)功能不是網(wǎng)站開發(fā)者自己開發(fā)的,他們使用的都是網(wǎng)頁挖礦服務(wù)商提供的接口。開發(fā)者只需要在網(wǎng)頁代碼中插入那么一串代碼,就可以坐享收入。
網(wǎng)頁挖礦服務(wù)商給網(wǎng)站開發(fā)者提供了各式各樣的挖礦服務(wù),比如驗(yàn)證碼挖礦、短鏈接接入、靜默挖礦等,只要你敢來,瞬間可以占用你 100% 的電腦資源。
任何產(chǎn)品都有迭代的空間,于是乎,CoinHive 這樣的網(wǎng)頁挖礦服務(wù)提供商也在不斷地進(jìn)化他們的產(chǎn)品,讓網(wǎng)站開發(fā)者可以更好地隱藏利用用戶電腦挖礦的事實(shí),為用戶提供更好的服務(wù)。
例如,許多網(wǎng)站為了防止垃圾評(píng)論,都會(huì)采取點(diǎn)擊驗(yàn)證碼的方式攔截機(jī)器人。CoinHive 就提供了類似的反作弊模塊,當(dāng)用戶在點(diǎn)擊這個(gè)按鈕的時(shí)候就會(huì)開啟網(wǎng)頁挖礦,在驗(yàn)證完成之后,挖礦停止。
如果用戶真的有意愿等待發(fā)帖或者登陸,是完全能夠接受這十幾秒的驗(yàn)證時(shí)間的,但代價(jià)就是十幾秒內(nèi)電腦 CPU 火力全開去挖礦,瞬間升溫幾十度。
CryptoLoot 還提供靜默挖礦功能,可以在用戶完全沒有察覺的情況下就運(yùn)行挖礦代碼。在 CryptoLoot 的網(wǎng)站上,他們把靜默挖礦標(biāo)榜為自己的一個(gè)特色功能,可實(shí)現(xiàn)安靜不打擾。呵,還真是貼心呢。
挖到礦后就可以開始算錢了,挖礦代碼提供商幾乎可以為開發(fā)者進(jìn)行即時(shí)結(jié)算。他們每 2 個(gè)小時(shí)就可以進(jìn)行一次分賬,在完成抽成之后,可以直接向開發(fā)者的錢包里轉(zhuǎn)賬門羅幣,當(dāng)然也能以人民幣、美元等法幣進(jìn)行提現(xiàn)。
提供商實(shí)現(xiàn)了從頭到尾的全方面服務(wù),只為網(wǎng)站開發(fā)者和黑客提供更好的服務(wù)和更高的收入。
但是要知道,這樣的行為是違法的。
無論是在國內(nèi)還是國外,未經(jīng)用戶允許便擅自占用用戶的計(jì)算資源,可以被定義為是木馬病毒。按照先關(guān)法律法規(guī),這是違法行為,構(gòu)成犯罪的還將追究刑事責(zé)任。
知名網(wǎng)站都不會(huì)用這種卑鄙的手段來獲取利益,只有我們上面提到的幾種類型的、本身就已經(jīng)違法的網(wǎng)站才會(huì)做這種事情。
無論是挖礦代碼提供商還是網(wǎng)站開發(fā)者,都明白偷用戶電腦資源來挖礦是一件不光彩的事情,所以代碼提供商會(huì)毫不留情地從挖礦所得中抽走 30%,對(duì)于這種大額抽成,網(wǎng)站所有者也欣然接受。
據(jù) PC Magazine 網(wǎng)站預(yù)測,CoinHive 一年的抽成收入就可以達(dá)到 500 萬美元,他們所服務(wù)的網(wǎng)站和黑客一年可以產(chǎn)生高達(dá) 1 億人民幣。
CoinHive 目前服務(wù) 75% 的網(wǎng)頁挖礦網(wǎng)站,再加上其他服務(wù)商覆蓋的網(wǎng)站,整個(gè)行業(yè)每年盜用用戶電腦挖礦的收入可以達(dá)到 1.5 億人民幣。
擔(dān)心電腦被用去挖礦,怎么辦?
首先要感謝國家,因?yàn)槟闵谥袊?,有騰訊電腦管家和 360 安全衛(wèi)士這種東西「保護(hù)」你,但是代價(jià)是要接受他們的全家桶服務(wù)。
接下來要感謝有良心的開發(fā)者,他們正在幫助你。
如果你正在使用的是 Chrome 瀏覽器,或者基于 chrome 內(nèi)核的瀏覽器,都可以安裝Adblock、Adblocker、ADP 等廣告攔截插件來實(shí)現(xiàn)惡意代碼攔截。比如 AdBlocker 在去年網(wǎng)頁挖礦最泛濫的那段時(shí)間就更新了算法,在插件中加入了挖礦代碼攔截,用戶可以免費(fèi)使用這些攔截插件。
如果你使用的是火狐瀏覽器,那么可以安裝 noscript 插件來限制 Javascript 的運(yùn)行,將挖礦代碼擋在門外。
最后要感謝自己,感謝潔身自好的自己不去瀏覽一些奇奇怪怪的、令人興奮的、助你上天入地的網(wǎng)站。
來源:網(wǎng)易科技
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。