11月初一個(gè)名為“MosesStaff”的神秘黑客組織成功對(duì)以色列國防部發(fā)動(dòng)了網(wǎng)絡(luò)攻擊,獲取了一些“軍隊(duì)部署信息”,并對(duì)外發(fā)布了一些聲稱是從以色列國防部服務(wù)器獲取的文件和照片。
“MosesStaff”在官網(wǎng)聲稱,該組織入侵了165個(gè)服務(wù)器和254個(gè)網(wǎng)站,收集了超過11TB的數(shù)據(jù),其中包括以色列國防部及國防部長本尼·甘茨的相關(guān)信息,還有《以色列郵報(bào)》、電子西拉公司和Epsilor公司相關(guān)的文件。
技術(shù)分析
早在今年 9 月,黑客組織 MosesStaff 就開始以以色列組織為目標(biāo),加入了大約一年前由 Pay2Key 和 BlackShadow 攻擊組織發(fā)起的攻擊浪潮。這些攻擊者主要是出于政治原因發(fā)起的攻擊。
MosesStaff 加密的計(jì)算機(jī)屏幕截圖
在本文中,我們將介紹他們的策略、技術(shù)和程序 (TTP),分析他們的兩個(gè)主要工具 PyDCrypt 和 DCSrv,描述他們的加密方案。
1.MosesStaff 對(duì)以色列公司進(jìn)行的有針對(duì)性的攻擊中,泄露了數(shù)據(jù),并加密了網(wǎng)絡(luò)。但沒有贖金要求,也沒有解密選項(xiàng);他們的動(dòng)機(jī)純粹是政治性的。
2.對(duì)受害者網(wǎng)絡(luò)的初始訪問大概是通過利用 Microsoft Exchange Server等面向公眾的基礎(chǔ)設(shè)施中的已知漏洞實(shí)現(xiàn)的。
3.受感染網(wǎng)絡(luò)中的橫向移動(dòng)是使用基本工具進(jìn)行的:PsExec、WMIC 和 Powershell。
4.這些攻擊利用開源庫 DiskCryptor 來執(zhí)行卷加密并使用引導(dǎo)加載程序鎖定受害者的計(jì)算機(jī),引導(dǎo)加載程序不允許計(jì)算機(jī)在沒有正確密碼的情況下啟動(dòng)。
5.在某些情況下,當(dāng)前的加密方法可能是可逆的。
感染鏈
為了獲得初始訪問權(quán)限,攻擊者利用了目標(biāo)中面向外部的基礎(chǔ)設(shè)施中的已知漏洞。結(jié)果,一個(gè)webshell出現(xiàn)在以下路徑中:
C:\inetpub\wwwroot\aspnet_client\system_web\IISpool.aspx
它是一個(gè)基本的密碼保護(hù)shell,其中將輸入密碼的MD5與硬編碼值52a04efc6a0e7facf34dcc36a6d1ce6f (joker123的MD5哈希值)進(jìn)行比較。這個(gè)webshell是模糊的,基于Github中可用的一個(gè)webshell。
混淆的 webshell 密碼驗(yàn)證代碼
身份驗(yàn)證成功后混淆的 webshell 的屏幕截圖
攻擊者還將幾個(gè)額外的工具上傳到同一個(gè)文件夾:
1.多個(gè)批處理腳本可以在特定的遠(yuǎn)程計(jì)算機(jī)上啟用 SMB 或禁用 Windows 防火墻。
2.PsExec 的一個(gè)副本,這是 Microsoft 的一種便攜式工具,允許使用任何用戶的憑據(jù)遠(yuǎn)程運(yùn)行進(jìn)程。
3.OICe.exe,一個(gè)小型的 Go 可執(zhí)行文件,它通過其命令行參數(shù)接收命令并執(zhí)行它。該工具可能會(huì)在攻擊的早期階段用于受感染的服務(wù)器,以避免執(zhí)行 cmd 或 PowerShell 等可疑子進(jìn)程。
攻擊者進(jìn)入受害者網(wǎng)絡(luò)后,他們收集網(wǎng)絡(luò)中計(jì)算機(jī)的信息并將其組合到一個(gè)victim_info列表中。這包含域名、計(jì)算機(jī)名稱和管理員憑據(jù),稍后用于編譯特制的 PyDCrypt 惡意軟件。
該惡意軟件通常在 C:\Users\Public\csrss.exe 中路徑運(yùn)行,負(fù)責(zé)在網(wǎng)絡(luò)內(nèi)部自我復(fù)制并釋放主要的加密載荷 DCSrv。
感染鏈
PyDCrypt
PyDCrypt 的主要目標(biāo)是感染其他計(jì)算機(jī)并確保主要載荷 DCSrv 正確執(zhí)行??蓤?zhí)行文件是用 Python 編寫的,并使用 PyInstaller 進(jìn)行加密編譯,在構(gòu)建階段使用 --key 標(biāo)志。如前所述,攻擊者為每個(gè)受感染的組織構(gòu)建一個(gè)新的樣本,并對(duì)從受害者的環(huán)境中收集的參數(shù)進(jìn)行硬編碼:
在 PyDCrypt 示例中硬編碼的字典顯示了攻擊者在偵察階段從受害者環(huán)境中收集的信息
PyDCrypt 可以接收 2 或 3 個(gè)參數(shù)。
預(yù)期的第一個(gè)參數(shù)是 113,惡意軟件會(huì)檢查,如果參數(shù)不同,它不會(huì)繼續(xù)執(zhí)行并自行釋放。
第二個(gè)參數(shù)可以是 0 或 1,表示 PyDCrypt 之前是否已經(jīng)運(yùn)行過。
第三個(gè)參數(shù)是可選的,如果提供了,它將用作加密密鑰,稍后將作為參數(shù)傳遞給DCSrv。
惡意軟件的主要工作流程:
創(chuàng)建鎖定文件以防止多個(gè)惡意軟件實(shí)例同時(shí)運(yùn)行。
解密 DCSrv(名為 C:\Users\Public\svchost.exe)到磁盤并執(zhí)行它。加密算法基于 XOR 和多個(gè) Base64 編碼操作。
負(fù)責(zé) DCSrv 執(zhí)行的 PyDCrypt 的反混淆代碼
解密并釋放 PSExec(名為 ps.exe),解碼方法與 DCSrv 相同。
修改防火墻規(guī)則以允許在遠(yuǎn)程計(jì)算機(jī)上使用 netsh.exe 傳入 SMB、Netbios 和 RPC 連接:
遍歷網(wǎng)絡(luò)中的計(jì)算機(jī)并感染每臺(tái)計(jì)算機(jī):惡意軟件嘗試使用已泄露的管理員憑據(jù)通過 Powershell、PSExec 或 WMIC等任何可用的工具遠(yuǎn)程復(fù)制和執(zhí)行 csrss.exe (PyDCrypt)。通過在目標(biāo)計(jì)算機(jī)上運(yùn)行 whoami 或 echo 1233dsfassad 來完成對(duì)每種方法的探測(cè)。
釋放所有創(chuàng)建的工件,例如 ps.exe 二進(jìn)制文件和 PyDCrypt 可執(zhí)行文件。
PyDCrypt 單執(zhí)行樹(single execution tree)的取證報(bào)告示例
DCSrv
該惡意進(jìn)程偽裝成合法的 svchost.exe 進(jìn)程,其目的只有一個(gè):加密所有計(jì)算機(jī)卷,并拒絕對(duì)計(jì)算機(jī)的任何訪問。
它包含以下4個(gè)資源:
資源 1——包含加密配置,根據(jù)代碼,還可以包含硬編碼的加密密鑰。一些配置值是:
引導(dǎo)加載程序自定義消息:Hacked By
在安裝 DiskCryptor 驅(qū)動(dòng)程序后重新啟動(dòng)計(jì)算機(jī)之前等待的時(shí)間;
加密卷后重新啟動(dòng)計(jì)算機(jī)之前等待的時(shí)間;
引爆時(shí)間:加密開始的確切時(shí)間;
資源 2——64 位的簽名 DCDrv.sys 驅(qū)動(dòng)程序;
資源 3——32 位簽名的 DCDrv.sys 驅(qū)動(dòng)程序;
資源 4——用于安裝引導(dǎo)加載程序的加密 DLL;
除了配置之外,執(zhí)行流程還可以由該工具接收到的命令行參數(shù)控制,它可以接受0到2個(gè)參數(shù)。
如果第一個(gè)存在,則它是加密密鑰,如果第二個(gè)存在,則它是一個(gè)標(biāo)識(shí)符,也將與保存在惡意軟件配置中的字符串進(jìn)行比較。一個(gè)例子是字符串“113”,在DCSrv和PyDCrypt參數(shù)中都使用了它。然而,如前所述,標(biāo)準(zhǔn)的執(zhí)行鏈?zhǔn)荘yDCrypt將其參數(shù)(包括加密密鑰)傳遞給DCSrv。
完整的加密工具是基于一個(gè)強(qiáng)大的第三方開源工具DiskCryptor。MosesStaff使用了該工具的幾個(gè)部分,主要是簽名驅(qū)動(dòng)程序和自定義引導(dǎo)加載程序。
該工具的執(zhí)行流程可以分為三個(gè)部分:驅(qū)動(dòng)安裝、卷加密和引導(dǎo)加載程序安裝。
安裝驅(qū)動(dòng)程序
第一個(gè)操作是創(chuàng)建兩個(gè)名為 DCUMSrv 和 DCDrv 的服務(wù),每一個(gè)都有不同的目的。
DCUMSrv僅用于持久性機(jī)制,用于在啟動(dòng)時(shí)使用最初提供的參數(shù)運(yùn)行相同的可執(zhí)行文件svchos .exe。DCDrv運(yùn)行提供的過濾驅(qū)動(dòng)程序DCDrv.sys。對(duì)于安裝,它從資源2或3中提取嵌入式驅(qū)動(dòng)程序(取決于它是運(yùn)行在32位系統(tǒng)還是64位系統(tǒng)上),并將其內(nèi)容寫入C: windows system32\drivers\DCDrv.sys。然后,它以與DiskCryptor開源項(xiàng)目相同的方式配置注冊(cè)表參數(shù)。
用于持久性機(jī)制的服務(wù)
安裝 DCSrv.sys 過濾器驅(qū)動(dòng)程序
由于驅(qū)動(dòng)程序的有效簽名,正如我們?cè)谙旅婵吹降?,DSE(驅(qū)動(dòng)程序簽名強(qiáng)制執(zhí)行)功能不會(huì)停止其安裝。
DCDrv.sys 有效簽名
當(dāng)惡意軟件完成驅(qū)動(dòng)程序的安裝后,它會(huì)在幾分鐘后執(zhí)行一次重啟,以使驅(qū)動(dòng)程序運(yùn)行。
加密卷
在第二次運(yùn)行時(shí),惡意軟件會(huì)等待配置中給出的確切時(shí)間,然后才會(huì)引爆其加密機(jī)制,這是有效載荷是針對(duì)每個(gè)受害者創(chuàng)建的又一個(gè)證明。
檢查當(dāng)前時(shí)間并將其與配置中提供的值進(jìn)行比較的代碼
到特定時(shí)間時(shí),程序會(huì)遍歷所有可用驅(qū)動(dòng)器,從 C: 到 Z:,并使用多個(gè)線程同時(shí)對(duì)它們進(jìn)行加密。
如前所述,核心加密機(jī)制基于DiskCryptor驅(qū)動(dòng)程序。因此,它所要做的就是使用打包到 dc_ioctl 結(jié)構(gòu)中的正確參數(shù)啟動(dòng)正確的 IOCTL 消息:
用戶模式應(yīng)用程序和內(nèi)核模式驅(qū)動(dòng)程序之間有多種通信方法,最流行的方法是使用 Windows API DeviceIoControl 發(fā)送稱為 IO 控制代碼 (IOCTL) 的特殊代碼。
在本例中,用于加密驅(qū)動(dòng)器的相關(guān)IOCTL代碼為DC_CTL_ENCRYPT_START和DC_CTL_ENCRYPT_STEP,參數(shù)為:passw1字段中的命令行密鑰,device字段中的迭代設(shè)備,crypt字段中的CF_AES加密模式。
這個(gè)過程可能需要一段時(shí)間,所以惡意軟件在使用自定義引導(dǎo)加載程序重新啟動(dòng)之前有兩個(gè)小時(shí)的休眠時(shí)間。
安裝DiskCryptor引導(dǎo)裝載程序
這通常在加密過程之前完成,但取決于配置值,也可以等待它結(jié)束。事先覆蓋引導(dǎo)加載程序的動(dòng)機(jī)很明顯,因?yàn)榧词辜用軟]有完成,對(duì)組織的損害也是通過鎖定他們的計(jì)算機(jī)造成的。
引導(dǎo)加載程序安裝程序作為資源4嵌入到可執(zhí)行文件中,并在以/.dll的形式刪除它之前進(jìn)行解密。這個(gè)DLL文件有兩個(gè)名為IsEFI和InstallLoader的導(dǎo)出函數(shù),它們的名稱很好地描述了它們的功能。
惡意軟件動(dòng)態(tài)加載釋放的庫并使用引導(dǎo)加載程序文本消息作為參數(shù)調(diào)用 InstallLoader:
加載引導(dǎo)加載程序安裝程序
我們還沒有發(fā)現(xiàn)引導(dǎo)加載程序本身引入了任何自定義惡意更改。因此,它包含我們希望在帶有引導(dǎo)加載程序的卷磁盤加密軟件中看到的用于解密主卷的確切功能。
加密方案
勒索軟件組織(如Conti、Revil、Lockbit等)幾乎無一例外地總是確保他們的加密系統(tǒng)設(shè)計(jì)良好且無懈可擊。他們知道一個(gè)嚴(yán)重的錯(cuò)誤最終可能會(huì)讓他們損失數(shù)十萬美元的潛在收入。不管出于什么原因,包括非經(jīng)濟(jì)動(dòng)機(jī),缺乏使用勒索軟件的經(jīng)驗(yàn),或者業(yè)余編碼技能,MosesStaff團(tuán)隊(duì)并沒有做太多技術(shù)上的突破。
密鑰生成
MosesStaff 使用三種方法來生成加密機(jī)制使用的對(duì)稱密鑰:
作為 PyDCrypt 自動(dòng)生成的命令行參數(shù);
作為用戶提供的命令行參數(shù);
如果配置中的某個(gè)位被打開,則密鑰在可執(zhí)行文件中被硬編碼;
最常見的方法是運(yùn)行 PyDCrypt,并根據(jù) MD5 哈希和精心制作的鹽值為每個(gè)主機(jī)名發(fā)送專有加密密鑰。生成密鑰的代碼如下所示:
解密過程
如上所述,簡(jiǎn)單的基于對(duì)稱密鑰的加密通常不足以形成一個(gè)防彈的、難以逆轉(zhuǎn)的加密方案。通過使用上面的分析,我們確實(shí)有幾個(gè)可能反轉(zhuǎn)加密的選項(xiàng)。
第一個(gè)也是最重要的選項(xiàng)是查看環(huán)境中是否安裝了EDR產(chǎn)品日志。一個(gè)正確設(shè)計(jì)的EDR會(huì)記錄所有的流程創(chuàng)建,以及它們的命令行參數(shù),這是案例中的關(guān)鍵。
使用svchost.exe參數(shù)進(jìn)行解密的復(fù)制攻擊的EDR解決方案的屏幕截圖
第二種選擇是提取并逆轉(zhuǎn)最初攻擊受害者的PyDCrypt惡意軟件。這種方法有點(diǎn)棘手,因?yàn)榇a在運(yùn)行完成后會(huì)被自行刪除。在PyDCrypt示例中,我們可以提取精心制作的哈希函數(shù),該函數(shù)為每臺(tái)計(jì)算機(jī)生成密鑰。
通過使用從這些方法中提取的密鑰,我們可以將它們插入啟動(dòng)登錄屏幕,并解鎖計(jì)算機(jī)。通過這種方式,我們可以恢復(fù)對(duì)操作系統(tǒng)的訪問,但磁盤仍然是加密的,并且每次重新啟動(dòng)時(shí) DiskCryptor 引導(dǎo)加載程序都處于活動(dòng)狀態(tài)。這可以通過創(chuàng)建一個(gè)簡(jiǎn)單的程序來解決,該程序向 DiskCryptor 驅(qū)動(dòng)程序啟動(dòng)適當(dāng)?shù)?IOCTL,并最終將其從系統(tǒng)中釋放。
總結(jié)
將網(wǎng)絡(luò)攻擊歸因于政治動(dòng)機(jī)的原因很復(fù)雜,目前,根據(jù)我們掌握的所有信息,我們無法得出任何明確的結(jié)論。然而,有一些工具引起了我們的注意:
攻擊中使用的工具之一 OICe.exe 在該組織開始其活動(dòng)的活躍階段(加密和公開泄密)前幾個(gè)月從巴勒斯坦提交給 VT。
攻擊者在被攻擊的服務(wù)器上留下的命令代理工具VT提交的屏幕截圖
雖然這不是一個(gè)強(qiáng)有力的跡象,但它可能會(huì)泄露攻擊者的起源;有時(shí)他們會(huì)測(cè)試公共服務(wù)(如 VT)中的工具,以確保它們足夠隱蔽。
網(wǎng)站 moses-staff[.]se 上使用的背景和徽標(biāo) PNG 圖像文件(所有人都有可用的元數(shù)據(jù))是在域在計(jì)算機(jī)上注冊(cè)后幾天創(chuàng)建或修改的,時(shí)區(qū)為 GMT+3 ,這是以色列和巴勒斯坦領(lǐng)土在每年這個(gè)時(shí)候的時(shí)區(qū)。
來自MosesStaff網(wǎng)站的圖像元數(shù)據(jù)示例
如上所述,MosesStaff 有一種特定的操作方式,即利用面向公眾的服務(wù)器中的漏洞,然后使用獨(dú)特的工具和野外操作的組合,使目標(biāo)網(wǎng)絡(luò)加密,與之前的 Pay2Key 和 BlackShadow 組織一樣,MosesStaff 組織受政治和意識(shí)形態(tài)的驅(qū)使,將目標(biāo)對(duì)準(zhǔn)以色列組織。