當前位置:
首頁 > 新聞 > 深度分析Scarab的新變種勒索軟體

深度分析Scarab的新變種勒索軟體

Scarab(聖甲蟲)勒索軟體是在2017年6月被發現的。此後,在野外發現了幾種不同的變種。最流行或者說最廣泛的版本是通過Necurs殭屍網路發布的,最初是用Visual C語言編寫的。然而在解包之後,2017年12月我們發現的另一種變種叫做Scarabey,其傳播有些不同,也擁有不同的有效載荷代碼。

Scarabey跟大多數勒索軟體一樣,在將受害者系統上文件加密之後,要求其受害者用比特幣支付勒索錢款。然而,與Scarab原始版本不同,Scarabey並不是經由Necurs malspam傳播,而是通過在伺服器和系統上RDP/手動刪除傳播,並且發現其針對的是俄羅斯用戶。

此外,Scarabey似乎不是打包在我們見過的任何一種樣例中。其惡意代碼是用Delphi編寫的,並沒有用Scarab具備的C++包裝,並且版本不同勒索信的內容和語言也不同。

勒索信

對受害者而言,Scarabey和其他Scarab勒索軟體的主要區別是勒索贖金信所使用的語言以及加密消息使用的恐嚇戰術。

在Scarab案例中,勒索贖金信是用英語寫的,然而,它讀起來就像是一個俄羅斯文本逐字翻譯成英文,根本不是正確的英語語法或句法。然而Scarabey勒索贖金信是用俄語寫的。有趣的是,當你把Scarabey的勒索信放到谷歌翻譯,正如下面我所做的,其翻譯出現了跟Scarab勒索信一樣的語法錯誤。

原始Scarab消息

Scarabey消息,用谷歌從俄語翻譯成英語,這更加證明了Scarab的作者可能是說俄語的人,他們用母語寫了勒索信,通過翻譯器運行並將其添加到Scarab的代碼中。鑒於他們針對的目標是俄羅斯人,這一推測就顯得很有可能。他們用母語發布了Scarabey勒索信,以覆蓋更多的受害者。

不同的威脅

在Scarab的原始版本中,它警告:用戶拖延支付贖金時間越長,贖金金額就會變得更高。

而Scarabey告知用戶,他們每拖延一天,被刪除的文件將越來越多,直到他們沒有更多的文件可以恢復。

從本質上說,犯罪分子暗示受害者他們擁有未加密文件的副本,可以回饋給用戶,或者他們控制了受害者電腦可以刪除受害者文件。但是這是不可能實現的,原因有以下幾點:

1. 在受害者電腦上發送所有文件的數據傳輸量是不合理的,還有就是,根本就不存在可以將受害者文件發送給惡意軟體作者以勒索贖金的網路功能。

2. 無論是scarab還是其變種,都沒有後門或遠程訪問代碼,因此威脅受害者刪除其計算機上的文件根本不可能實現。

3. 根據我們的理解,解密過程是在贖金支付之後,他們會給你發送帶有唯一密鑰的解密軟體。然後你可以運行該軟體並對自己的文件進行解密。即便是這樣,他們也沒有辦法限制被解密的東西,因為解密過程是在本地和離線狀態下完成的。

4. 在惡意軟體的代碼中沒有任何部分可以實現從計算機中刪除用戶的文件。

具體來說,在消息中,你可以看到作者暗示代碼最初是解密的伺服器端,這是不對的:

每24小時刪除24個文件。(我們有文件的副本)。如果你在72小時內不運行解密程序,那麼計算機上的所有文件都將被完全刪除,沒有恢復的可能。

然後,惡意軟體作者給出了解密的步驟,該步驟引用了在支付了贖金之後發送給受害者的解密程序的使用方法。支付贖金之後收到的解密軟體,通過你唯一的密鑰將在本地解密文件:

——在開始解碼後,文件將在一個小時內被解碼。——其他用戶的解碼器與您的數據不兼容,因為每個用戶的加密密鑰是唯一的。

這裡的結論是,直接刪除文件或惡意軟體作者可以訪問受害者電腦並刪除文件的說法純粹是一種恐嚇策略,目的是敦促用戶快速支付贖金。

技術分析

將Scarab和Scarabey的代碼進行比較,很明顯,這種變體雖然是用俄語編寫的,並且針對俄羅斯用戶,但最初很可能來自於同一作者。在整個代碼中,兩種惡意軟體的變種幾乎每個位元組都是一樣的。此外,生成的子進程、刪除的文件、使用的加密方法和使用的互斥鎖都是相同的。這就是我們認為它是一個變種的原因,而不是一個新的家族。

下面的圖片顯示了這兩個惡意軟體的輸出。惟一不同的是代碼地址和內存數據引用的地址(用黃色和紅色突出顯示)。

代碼分析

Scarabey的變種是用Delphi編寫的。首先,它先檢查其是否是第一次運行。通過檢查是否有傳入參數來完成上述操作。如果沒有,則檢查是否設置了以下註冊表鍵:

SoftwareILRTISoidle

〔第一次運行檢查,註冊表鍵〕

如果沒有設置(這意味著它是第一次運行),會檢查是否還沒有創建SEVNZ並執行cmd.exe將自己複製到臨時漫遊目錄,作為sevnz.exe使用:

cmd.exe /c copy /y C:UsersvirusLabDesktop9a02862ac95345359dfc3dcc93e3c10e.exe 「C:UsersvirusLabAppDataRoamingsevnz.exe」

然後當退出時,會使用程序「runas」生成一個自身的進程。

〔驗證SEVNZ.EXE不存在,把self複製到SEVNZ.EXE。使用「runas」param執行elf〕

現在,子過程接管了。

代碼流現在進入與之前相同的函數,刪除了SEVNZ並重新複製它。由於傳入的參數,該操作跳過了最初的部分。然後執行之前複製的文件sevnz.exe。

C:Users[username]AppDataRoamingsevnz.exe

然後,使用命令行它打開了程序cmd.exe…

「mshta.exe 「javascript:o=new ActiveXObject(『Scripting.FileSystemObject』);setInterval(function()catch(e){}},10);」」

鑒於程序在運行時不會刪除,它只能等待並刪除自身。

到了SEVNZ.exe進程:

該進程將檢查是否正在作為sevnz.exe運行,通過嘗試刪除「…AppData Roaming sevnz.exe」實現該檢查。

如果刪除失敗,就知道它正在作為sevnz.exe運行。而不是原始的可執行文件。一旦通過該檢查,它就會使用mtsha.exe執行Javascript,這會延遲並將自身添加到註冊表自動運行:

mshta.exe 「javascript:o=new ActiveXObject(『WScript.Shell』);

x=newActiveXObject(『Scripting.FileSystemObject』);

setInterval(function()

catch(e){}},10);

接下來,它將刪除影子卷冊拷貝,這是勒索軟體的標準,以確保用戶無法恢復加密的文件。

—–Executes these scripts with mtsha.exe:—–

ActiveXObject(「WScript.Shell」);

o.Run(「cmd.exe /c wbadmin DELETE SYSTEMSTATEBACKUP -keepVersions:0」,0);

o.Run(「cmd.exe /c wmic SHADOWCOPY DELETE」,0);

o.Run(「cmd.exe /c vssadmin Delete Shadows /All /Quiet」,0);

o.Run(「cmd.exe /c bcdedit 「

new ActiveXObject(「WScript.Shell」);

o.Run(「cmd.exe /c wbadmin DELETE SYSTEMSTATEBACKUP-keepVersions:0」,0);

o.Run(「cmd.exe /cwmicSHADOWCOPYDELETE」0);

o.Run(「cmd.exevssadminDeleteShadows /All/Quiet」,0);

o.Run(「cmd.exe /c bcdedit /set recoveryenabled No」,0);

o.Run(「cmd.exe /c bcdedit /set bootstatuspolicy ignoreallfailures」,0);

然後將打開一個線程,該線程將無限循環,並確保沒有「關鍵」進程正在運行。如果發現有,就會終止這些進程。這樣做的原因可能是這些進程對某些文件有鎖定,而勒索軟體可能會對這些文件進行加密。因此,通過終止這些進程,可以釋放文件以便加密。關鍵的進程來自於一個生成的字元串:

agntsvc.exe

isqlplussvc.exe

ncsvc.exe

msftesql.exe

sqlagent.exe

sqlbrowser.exe

sqlservr.exe

sqlserver.exe

sqlwriter.exe

oracle.exe

ocssd.exe

dbsnmp.exe

synctime.exe;

mydesktopqos.exe

agntsvc.exe

isqlplussvc.exe

xfssvccon.exe

mydesktopservice.exe

ocautoupds.exe

agntsvc.exe

agntsvc.exe

agntsvc.exe

encsvc.exe

firefoxconfig.exe

tbirdconfig.exe

ocomm.exe

mysqld.exe

mysqld-nt.exe

mysqld-opt.exe

dbeng50.exe

sqbcoreservice.exe

在加密函數的主循環中,整個代碼持續執行檢查是否存在互斥鎖,如果存在,這便是一個清除自身的標誌,並將其從系統中刪除:

MUTEX:STOPSCARABSTOPSCARABSTOPSCARABSTOPSCARABSTOPSCARAB。

通過代碼中許多不同的部分可以對加密循環進行調用,但是最先運行並執行大部分加密操作的部分代碼如下:

遞歸地遍歷所有的文件夾並且檢查以確保擴展名不是.exe或.dll。如果都符合了,它會對文件進行加密,並且使用.scarab作為擴展名對其進行重新命名。

[使用POS()檢查當前的文件擴展名,是否存在為「exe,dll」的substr〕

加密代碼不直接使用任何加密API。相反,AES代碼被嵌入惡意軟體中,如上圖所示。

〔部分是設置對主加密函數的調用〕

加密演算法

我們已經確定加密演算法是AES。在它讀取的實際文件數據之前,一個4位元組塊(0xDEFACE01)被附加到緩衝區。這可能是salt,也可能是惡意軟體作者的玩笑。它使用生成的位元組來執行一些數據操作運算,這很可能是創建隨機數的初始化向量。

〔IV生成器函數,然後是AES設置的開始〕

〔XORS數據傳入了MAIN_AES_LOOP_FUNCTION,也就是IV。var_8是加密密匙〕

該惡意軟體通過使用AES_ALGO標記的函數,在數據上運行AES 256。因為幾個屬性我們確定它是AES 256。

1. 它使用16位字元塊。這對於任何類型的AES來說都是相當標準的。它一次對文件中的16個字元進行加密,其大小是128位。

2. AES版本的不同之處在於密鑰的大小和加密回合的數量。在本例中,它使用了14個加密回合(AES 256的標準),而不是10個回合(AES 128的標準)。密鑰的大小也是256位(32位元組或字元)。

3. 同時也在使用子類型CBC(密碼塊鏈接)。CBC的主要指標是前面的密碼文本用於加密下一個純文本塊。換句話說,前面的加密塊用作下一個要加密數據塊的初始化向量。

〔顯示AES CBC的流,先使用IV,然後是前面的密碼文本用作IV〕

在這種情況下,IV位元組作為一個初始化步驟在純文本位元組上被XOR,以便在結果中創建更多的隨機性。從下一個圖片中可以看到,AES的輸出被複制到該變數中,在執行AES之前,它將被用於循環的開頭初始化下一個純文本塊。在這一點上,儘管沒有通過加密API進行調用,但應該清楚AES的用法。

〔下面的圖片顯示了前面的密碼文本作為IV用於初始化的位置。注意:var_28將包含加密的數據〕

下面是一些演示演算法的截圖。正如你所看到的,數據被載入到矩陣中。然後,對一些硬編碼的數據執行一系列的數據運算,再加上加密密鑰位元組。下面文本中高亮顯示的是一個回合中的一組運算(4個中的1個)。其中的四組運算組成了一個加密的回合。這是因為為了執行矩陣的數學運算,你需要對其他回合中每一矩陣中的每一項進行運算。如前所述,總共完成了14個回合。

編碼的加密密鑰是在註冊表的「temp」(臨時)密鑰中寫入的:

如果在註冊表中找到了密鑰,它就會進入將註冊表中密鑰解碼到原始加密密鑰中的函數。否則,它會跳轉到新的生成函數。

這很有趣,因為它是用於加密文件的主要密鑰。其格式類似於贖金勒索信里的密鑰,但該密鑰更長,這表明作為ID提供給用戶的密鑰是存儲在註冊表密鑰的編碼版本。轉儲密鑰的例子:

[HKEY_CURRENT_USERSoftwareILRTISo]

"temp"="VkIAAAAAAADpt9Q2lAzhCExfqjLoD3vSpluc678N56Zn8b7LVRxMi1ZsYk2HXD1e4s3tiefTmZJAc0vxPposvLzP0yaCh5+KRQm60U0EkzeB2NXetarabUFYgJxb8QRsygKaOqBriC4Bs4ajM24h=e2CsVNP9R3q==UXNmfRFGIsv7NR9BIxE35bdoFpTU8rMGQ14MeQcAii1iY7GpNoY3b4DOgfuKGo3qNC1MYKYdfpn0dbiow3f7ZQGClpwTZ0shFhkWk7aTA7TM1prtgJte7TWe=ERHg8GaFrZtVs9ylNTYPt5CmzHBdAIaXeKZvZnSSafbi83o9gLgAS1OxAb7LBtJpZAJDyBkuyJFR4dFbXztponIBKT1OjtTvTMy07+0B4jI3=K1QGuKSROjAdCF06TsjKWlvUw0iUHRGasz946H3Mnxu3GdCHrAp9Cd94bMo1x1PVdIi3bXSwobjgOlJgJPJC4Y6J4QIE=e45PDNzdK6aCY0uiQ0jOD=8lDWTp=+r+dbGJrJ12qn8CRnBwaFIpyNjDhzdMdTwyvExCmuOesOLms8S7TRoV1GcTyWJAQpSJYcR66H6CngM5GHopdpoTH4mWVOOYp5HFHTDAvMafomF2S6xEmUgXIcKpB7oNohO+Wx0cUmf95=+9uozHMBWE4kFhj+OOKw0I7w7HnwYfafhxsw0CmoOvorZztXk8whlh1d4U26z=aJ6JwH8wVBSszsRLQ+H4y3bRaeupq5Vo+smDfigjVVzCam4HoAdOKzN9MWiigl9Oi+4vTkSFFazc6HzyVaHg8luKGBJMhi2FNHTFO56RA"

來自贖金勒索信的密鑰:

+4IAAAAAAADIGnmIHZL=FYRQCAN=AgKnzw+0uzFbXSR5AdFlfTrhWN9sifnho8LiX5=V8SbNVWyWWrdbTLipFEeeEv=9zLmnid8e

UqlqKr2RUN=V7LdjoyNwjWMNbylRiGNAKWK6g9exeHhVfUrZ+9oRTq6Kp5eNe7kDdV7UMPVZ12=5pm9a+5lOMw==TNi2R2tUjFcK

tTD3c9IZgJwOMgcOw3fRrmgaloh5cIV3V74DRy2segx13RDL4J6B+gJnfT2mxIZuBE1G5HcmuLHCoqQif2BamhfbMASCUEpOp7+Z

G0jI=1PTmOhD3Yq4XjJWI4mc61AruRlaYqwPTUUbrsI0zTYX1mmM3Tvyso8bqDy4h5meyPYuXlgtRj06mtdrGZszb6ObsIT4Fz0O

Ag=4HgI4VSHA=HAU5yCjZzIIkLhlWGvdAk

用於加密的密鑰從一個文件到另一個文件是變化的。這意味著兩個具有相同內容的文件在加密之後會有所不同。本質上是有一個初始密鑰,許多子密鑰是從該初始密鑰派生出來的。如果所有文件都使用了一個單獨的加密密鑰(這種情況在其他勒索軟體里出現過),那麼你就可以在加密過程的任何時候捕獲內存,保存密鑰,並使用它解密硬碟上的所有文件。不幸的是,由於Scarab執行的密鑰循環,它使得對文件的解密變得不可能。

整個磁碟加密完成之後,勒索軟體就會進入一個調用函數,該函數枚舉所有的網路文件夾和驅動器。例如:VMWare共享文件夾、終端服務、網路驅動器。如果被找到了,它也會對這些文件夾中的文件進行加密。

一旦完成,它將通過notepad.exe打開加密消息。

謠言

網上已經有很多文章指出,Scarabey有能力充當後門,允許遠程訪問,也可以收集敏感數據。根據我們的分析,我們認為這是不真實的。除了簡單地加密用戶計算機上的文件外,我們沒有發現任何其他功能的跡象。

此外,有關於Scarab的傳言稱,在gitHub上,該公司正在開發一款名為「HiddenTear」的開源勒索軟體。在我們自己的研究和外部研究中,都已經證實是不真實的。現在看來,這似乎是一個行業共識,因為它被錯誤地發布了。

Windows的Malwarebytes檢測到了這種威脅,它的變種是:Ransom.Scarab。


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

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


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

Janus安卓應用簽名繞過漏洞,允許攻擊者修改合法應用
OnePlus結賬出現漏洞?論支付中的風險

TAG:嘶吼RoarTalk |