背景介紹
近日,漁村安全團隊追蹤到一個利用永恆之藍漏洞傳播的挖礦程序,其具備高度的模塊化和較強的傳播能力,在短短數日就感染了數萬台用戶電腦。針對該突發情況,漁村安全團隊迅速組織應急工作,最終使得目前的感染情況受到控制,下文為樣本分析。
感染量
從微軟發布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 dashcoin@protonmail.com -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。