1. 程式人生 > >一個利用“永恒之藍”漏洞傳播的挖礦程序分析

一個利用“永恒之藍”漏洞傳播的挖礦程序分析

amp 不同 數據文件 緩解 項目 近日 相同 oos 參數

背景介紹

近日,漁村安全團隊追蹤到一個利用永恒之藍漏洞傳播的挖礦程序,其具備高度的模塊化和較強的傳播能力,在短短數日就感染了數萬臺用戶電腦。針對該突發情況,漁村安全團隊迅速組織應急工作,最終使得目前的感染情況受到控制,下文為樣本分析。

感染量

從微軟發布ms17-010(永恒之藍漏洞) 的修復補丁到現在已經過去四個月了,相繼爆發的利用該漏洞傳播的WannaCry,Petya 勒索病毒更是給 我們 上了一課。但目前來看,還是有不少用戶沒有及時更新補丁或者做相應的緩解措施,同時 Shadow Brokers把從 Equation Group偷來的全套針對該漏洞的利用工具開源 ,這使得人人有了一套 核武器 ,導致發動攻擊的門檻極度降低。綜合上述原因,可以推測該漏洞在很長一段時間之內,還會有不同程度的活躍。目前,根據全網監控數據可知,各地區感染該例樣本量占比情況如下 :

技術分享

樣本分析

1.感染癥狀

該樣本分為兩個模塊,分別為挖礦程序與永恒之藍攻擊程序,感染後的用戶機器,通常會有如下癥狀 :

1. 監聽26571端口

技術分享

2.存在C:\Windows\IME\Crypt文件夾

技術分享

3.訪問其他主機的445端口

技術分享

2.傳播方式

技術分享

如上圖所示,是整個樣本的攻擊流程圖,受害者之間的樣本投送分工為:

攻擊方,挖礦程序搭建web服務器(端口 26571),等待特定的GET請求

被攻擊方,payload訪問攻擊方提供的web服務器,通過 GET請求得到樣本(含挖礦程序和永恒之藍 EXP 程序)

3.樣本特性

通過前文已知,該樣本是分為挖礦程序與永恒之藍攻擊程序,下面針對不同模塊進行分析。

3.1挖礦程序

挖礦程序的調用者是內核後門註入到lsass.exe中的 payload所生成並調起的。

3.1.1 創建計劃任務

程序在啟動時,創建計劃任務,達到開機自啟動的目的,命令如下:

schtasks.exe/create /TN "\Microsoft\Windows\UPnP\Services" /RU SYSTEM /TR"%WinDir%\IME\Microsoft\svchost.exe" /SC ONSTART

技術分享

3.1.2 釋放挖礦程序

創建線程,完成從資源bin中釋放挖礦程序到系統根目錄下功能,文件名稱為 ServicesHost.exe

技術分享

之後傳遞參數

-o stratum+tcp://xmr.pool.minergate.com:45560-u [email protected]
/* */ -t 1 --donate-level=1

執行,同時嘗試解析系統根目錄下的 settings7283.dat數據文件。

3.1.3 開啟WEB服務

創建線程,搭建一個WEB服務器,提供文件下載功能,方便被攻擊方快速下拉惡意代碼。

技術分享

其中,回調函數Url_parser只處理兩種請求,分別為:

POST方式接收到的Hell World?

GET方式接收到的/dnsclientprovider_userdata.mof

當POST方法得到的請求數據是Hell World? ,則當前挖礦進程會退出,邏輯如下:

技術分享

技術分享

其中dnsclientprovider_userdata.mof文件目前沒有捕獲到,但根據之後的payload 的請求數據來看,該文件是一個 ZIP包,裏面包含了挖礦程序和攻擊程序,故達到了利用漏洞傳播的效果。

3.1.4 執行攻擊程序&攻擊信息上報

開啟新線程,執行C:\Windows\IME\Microsoft\spoolsv.exe,實為payload 從攻擊方下拉後解壓生成的攻擊程序。開啟新線程,每隔 900s向服務器上報信息。

技術分享

3.2 永恒之藍攻擊程序

3.2.1 攻擊流程

攻擊程序執行由挖礦程序進行調起,運行後,首先釋放自身資源bin 到 %\\IME\\TMP20D1.TMP中,之後進行Unzip 操作,解壓縮完成後的文件列表如下:

技術分享

其中核心模塊如下:

文件名稱 功能說明
svchost.exe 永恒之藍攻擊程序(Eternalblue-2.2.0.exe)
spoolsv.exe doublepulsar後門利用程序(Doublepulsar-1.3.1.exe)
svchost.xml 永恒之藍攻擊程序配置文件
spoolsv.xml doublepulsar配置文件
x64.dll 64位Payload DLL文件
x86.dll 32位Payload DLL文件

接下來,讀取xml配置信息、Payload程序到內存,方便之後攻擊時進行參數配置,然後掃描開放 445端口,但未開放26571端口的機器( 防止重復感染 ),如下:

技術分享

得到掃描結果之後,格式化Eternalblue需要的xml配置信息 (ip即可),之後創建進程,將Eternalblue 執行結果重定向到stage1.txt中,方便stage2階段的篩選。

技術分享

從stage1.txt中可以得到攻擊是否成功,以及目標機器的CPU架構信息,通過查找指定關鍵字,得到需要的信息,例如 :得到目標機器平臺是否為x86(x64原理相同)

技術分享

實際stage1.txt的內容:

技術分享

當查找成功之後,構造 Doublepulsar 利用工具的 xml 信息 spoolsv.xml,同時通過特征碼定位 payload 中需要填寫的配置參數 (攻擊方 ip,payload 通過該 ip訪問 web 服務,下拉樣本程序 )

技術分享

所有工作完成之後,調用 Doublepulsar 執行後門利用( 通過內核級註入 payload到lsass.exe進程 ( 默認進程名 ))

技術分享

以上就是攻擊程序的執行流程,接下來是payload的功能分析。

3.2.2 payload功能

payload 分為 x64.dll 和 x86.dll ,完成功能相同,這裏以 x86.dll 為例進行分析。其導出函數有 Func1 , Func2,代碼相同,如下:

技術分享

訪問攻擊端架設的WEB服務器,下載 dnsclientprovider_userdata.mof ( 若本地系統根目錄存在該文件,則先刪除 ),然後進行解壓,同時將解壓後的下列文件移動到 C:\Windows\IME\Microsoft\ 下。

技術分享

最後,執行挖礦程序(此處svchost.exe是挖礦程序 )。

技術分享

至此,第二個用戶已經完成感染。

總結

該樣本所使用的絕大多數都是開源模塊,其中WEB服務器使用開源項目mongoose ,挖礦程序使用開源項目https://github.com/xmrig/xmrig, 永恒之藍 漏洞利用工具地址 https://github.com/Eitenne/EternalPulse。

一個利用“永恒之藍”漏洞傳播的挖礦程序分析