lucky 勒索病毒分析與文件解密

2021-02-14 Seebug漏洞平臺

作者:Hcamael & 0x7F@知道創宇404實驗室

時間:2018年12月4日


近日,網際網路上爆發了一種名為 lucky 的勒索病毒,該病毒會將指定文件加密並修改後綴名為 .lucky。

知道創宇404實驗室的煉妖壺蜜罐系統最早於2018年11月10日就捕捉到該勒索病毒的相關流量,截止到2018年12月4日,該病毒的 CNC 伺服器依然存活。

根據分析的結果可以得知 lucky 勒索病毒幾乎就是 Satan 勒索病毒,整體結構並沒有太大改變,包括 CNC 伺服器也沒有更改。Satan 病毒一度變遷:最開始的勒索獲利的方式變為挖礦獲利的方式,而新版本的 lucky 勒索病毒結合了勒索和挖礦。

知道創宇404實驗室在了解該勒索病毒的相關細節後,迅速跟進並分析了該勒索病毒;著重分析了該病毒的加密模塊,並意外發現可以利用偽隨機數的特性,還原加密密鑰,並成功解密了文件,Python 的解密腳本連結: https://github.com/knownsec/Decrypt-ransomware

本文對 lucky 勒索病毒進行了概要分析,並著重分析了加密流程以及還原密鑰的過程。

lucky 勒索病毒可在 Windows 和 Linux 平臺上傳播執行,主要功能分為「文件加密」、「傳播感染」與「挖礦」。

「文件加密」

lucky 勒索病毒遍歷文件夾,對如下後綴名的文件進行加密,並修改後綴名為 .lucky:

bak,sql,mdf,ldf,myd,myi,dmp,xls,xlsx,docx,pptx,eps,
txt,ppt,csv,rtf,pdf,db,vdi,vmdk,vmx,pem,pfx,cer,psd

為了保證系統能夠正常的運行,該病毒加密時會略過了系統關鍵目錄,如:

Windows: windows, microsoft games, 360rec, windows mail 等等
Linux: /bin/, /boot/, /lib/, /usr/bin/ 等等

「傳播染」

lucky 勒索病毒的傳播模塊並沒有做出新的特色,仍使用了以下的漏洞進行傳播:

JBoss反序列化漏洞(CVE-2013-4810)

JBoss默認配置漏洞(CVE-2010-0738)

Tomcat任意文件上傳漏洞(CVE-2017-12615)

Tomcat web管理後臺弱口令爆破

Weblogic WLS 組件漏洞(CVE-2017-10271)

Windows SMB遠程代碼執行漏洞MS17-010

Apache Struts2遠程代碼執行漏洞S2-045

Apache Struts2遠程代碼執行漏洞S2-057

「挖礦

該勒索病毒採用自建礦池地址:194.88.105.5:443,想繼續通過挖礦獲得額外的收益。同時,該礦池地址也是 Satan 勒索病毒變種使用的礦池地址。

運行截圖:

lucky 勒索病毒的整體結構依然延續 Satan 勒索病毒的結構,包括以下組件:

預裝載器:fast.exe/ft32,文件短小精悍,用於加載加密模塊和傳播模塊
加密模塊:cpt.exe/cry32,加密模塊,對文件進行加密
傳播模塊:conn.exe/conn32,傳播模塊,利用多個應用程式漏洞進行傳播感染
挖礦模塊:mn32.exe/mn32,挖礦模塊,連接自建礦池地址
服務模塊:srv.exe,在 windows 下創建服務,穩定執行

流程圖大致如下:

lucky 勒索病毒的每個模塊都使用了常見的殼進行加殼保護,比如 UPX,MPRESS,使用常見的脫殼軟體進行自動脫殼即可。

對於一個勒索病毒來說,最重要的就是其加密模塊。在 lucky 勒索病毒中,加密模塊是一個單獨的可執行文件,下面對加密模塊進行詳細的分析。(以 Windows 下的 cpt.exe 作為分析樣例)

1. 脫去upx  

cpt.exe 使用 upx 進行加殼,使用常見的脫殼工具即可完成脫殼。

2. 加密主函數  

使用 IDA 加載脫殼後的 cpt.exe.unp,在主函數中有大量初始化的操作,忽略這些操作,跟入函數可以找到加密邏輯的主函數,下面對這些函數進行標註:

generate_key: 生成 60 位隨機字符串,用於後續加密文件。  

wait_sleep: 等待一段時間。  

generate_session: 生成 16 位隨機字符串,作為用戶的標誌(session)。  

lucky_crypto_entry: 具體加密文件的函數。   

send_info_to_server: 向伺服器報告加密完成。  

大致的加密流程就是函數標註的如此,最後寫入一個文件 c:\\_How_To_Decrypt_My_File_.Dic,通知用戶遭到了勒索軟體加密,並留下了比特幣地址。

3. generate_key()  

該函數是加密密鑰生成函數,利用隨機數從預設的字符串序列中隨機選出字符,組成一個長度為 60 字節的密鑰。

byte_56F840 為預設的字符串序列,其值為:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

4. generate_session()  

加密模塊中使用該函數為每個用戶生成一個標識,用於區分用戶;其仍然使用隨機數從預設的字符串序列中隨機選出字符,最後組成一個長度為 16 字節的 session,並存入到 C:\\Windows\\Temp\\Ssession 文件下。

其中 byte_56F800 字符串為:

ABCDEFGHIJPQRSTUVWdefghijklmnopqrstuvwx3456789

5. lucky_crypto_entry()  

文件名格式

該函數為加密文件的函數入口,提前拼接加密文件的文件名格式,如下:

被加密的文件的文件名格式如下:

[nmare@cock.li]filename.AiVjdtlUjI9m45f6.lucky

其中 filename 是文件本身的名字,後續的字符串是用戶的 session。

通知伺服器

在加密前,還會首先向伺服器發送 HTTP 消息,通知伺服器該用戶開始執行加密了:

HTTP 數據包格式如下:

GET /cyt.php?code=AiVjdtlUjI9m45f6&file=1&size=0&sys=win&VERSION=4.4&status=begin HTTP/1.1文件篩選

在加密模塊中,lucky 對指定後綴名的文件進行加密:

被加密的後綴名文件包括:

bak,sql,mdf,ldf,myd,myi,dmp,xls,xlsx,docx,pptx,eps,
txt,ppt,csv,rtf,pdf,db,vdi,vmdk,vmx,pem,pfx,cer,psd

6. AES_ECB 加密方法  

lucky 使用先前生成的長度為 60 字節的密鑰,取前 32 字節作為加密使用,依次讀取文件,按照每 16 字節進行 AEC_ECB 加密。

除此之外,該勒索病毒對於不同文件大小有不同的處理,結合加密函數的上下文可以得知,這裡我們假設文件字節數為 n:

對於文件末尾小於 16 字節的部分,不加密

若 n > 10000000 字節,且當 n > 99999999 字節時,將文件分為 n / 80 個塊,加密前 n / 16 個塊

若 n > 10000000 字節,且當 99999999 <= n <= 499999999 字節時,將文件分為 n / 480 個塊,加密前 n / 16 個塊

若 n > 10000000 字節,且當 n > 499999999 字節時,將文件分為 n / 1280 個塊,加密前 n / 16 個塊

對於每個文件在加密完成後,lucky 病毒會將用於文件加密的 AES 密鑰使用 RSA 算法打包並添加至文件末尾。

7. 加密完成  

在所有文件加密完成後,lucky 再次向伺服器發送消息,表示用戶已經加密完成;並在 c:\\_How_To_Decrypt_My_File_.Dic,通知用戶遭到了勒索軟體加密。

加密前後文件對比:

在討論密鑰還原前,先來看看勒索病毒支付後流程。

如果作為一個受害者,想要解密文件,只有向攻擊者支付 1BTC,並把被 RSA 算法打包後的 AES 密鑰提交給攻擊者,攻擊者通過私鑰解密,最終返回明文的 AES 密鑰用於文件解密;可惜的是,受害者即便拿到密鑰也不能立即解密,lucky 勒索病毒中並沒有提供解密模塊。

勒索病毒期待的解密流程:

那麼,如果能直接找到 AES 密鑰呢?

在完整的分析加密過程後,有些的小夥伴可能已經發現了細節。AES 密鑰通過 generate_key() 函數生成,再來回顧一下該函數:

利用當前時間戳作為隨機數種子,使用隨機數從預設的字符串序列中選取字符,組成一個長度為 60 字節的密鑰。

1. 隨機數=>偽隨機數  

有過計算機基礎的小夥伴,應該都知道計算機中不存在真隨機數,所有的隨機數都是偽隨機數,而偽隨機數的特徵是「對於一種算法,若使用的初值(種子)不變,那麼偽隨機數的數序也不變」。所以,如果能夠確定 generate_key() 函數運行時的時間戳,那麼就能利用該時間戳作為隨機種子,復現密鑰的生成過程,從而獲得密鑰。

2. 確定時間戳  

爆破

當然,最暴力的方式就是直接爆破,以秒為單位,以某個有標誌的文件(如 PDF 文件頭)為參照,不斷的猜測可能的密鑰,如果解密後的文件頭包含 %PDF(PDF 文件頭),那麼表示密鑰正確。

文件修改時間

還有其他的方式嗎?文件被加密後會重新寫入文件,所以從作業系統的角度來看,被加密的文件具有一個精確的修改時間,可以利用該時間以確定密鑰的生成時間戳:

如果需要加密的文件較多,加密所花的時間較長,那麼被加密文件的修改時間就不是生成密鑰的時間,應該往前推移,不過這樣也大大減少了猜測的範圍。

利用用戶 session

利用文件修改時間大大減少了猜測的範圍;在實際測試中發現,加密文件的過程耗時非常長,導致文件修改時間和密鑰生成時間相差太多,而每次都需要進行檢查密鑰是否正確,需要耗費大量的時間,這裡還可以使用用戶 session 進一步縮小猜測的範圍。

回顧加密過程,可以發現加密過程中,使用時間隨機數生成了用戶 session,這就成為了一個利用點。利用時間戳產生隨機數,並使用隨機數生成可能的用戶 session,當找到某個 session 和當前被加密的用戶 session 相同時,表示該時刻調用了 generate_session() 函數,該函數的調用早於文件加密,晚於密鑰生成函數。

找到生成用戶session 的時間戳後,再以該時間為起點,往前推移,便可以找到生成密鑰的時間戳。

補充:實際上是將整個還原密鑰的過程,轉換為尋找時間戳的過程;確定時間戳是否正確,儘量使用具有標誌的文件,如以 PDF 文件頭 %PDF 作為明文對比。

3. 還原密鑰  

通過上述的方式找到時間戳,利用時間戳就可以還原密鑰了,偽代碼如下:

sequence = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"

key = []

timestamp = 1542511041

srand(timestamp)

for (i = 0; i < 60; i++) {

key[i] = sequence[rand() % 0x3E]

}

4. 文件解密  

拿到了 AES 密鑰,通過 AES_ECB 算法進行解密文件即可。

其中注意兩點:

解密前先去除文件末尾的內容(由 RSA 算法打包的密鑰內容)

針對文件大小做不同的解密處理。

勒索病毒依然在肆掠,用戶應該對此保持警惕,雖然 lucky 勒索病毒在加密環節出現了漏洞,但仍然應該避免這種情況;針對 lucky 勒索病毒利用多個應用程式的漏洞進行傳播的特性,各運維人員應該及時對應用程式打上補丁。

除此之外,知道創宇404實驗室已經將文中提到的文件解密方法轉換為了工具,若您在此次事件中,不幸受到 lucky 勒索病毒的影響,可以隨時聯繫我們。

🔗

參 考 鏈 接

tencent: 

https://s.tencent.com/research/report/571.html

綠盟: 

https://mp.weixin.qq.com/s/uwWTS_ta29YlYntaZN3omQ

深信服: 

https://mp.weixin.qq.com/s/zA1bK1sLwaZsUvuOzVHBKg

Python 的解密腳本:  

https://github.com/knownsec/Decrypt-ransomware

 

往 期 熱 門

  

相關焦點

  • 雪中送炭——景雲WannaCry勒索病毒文件解密工具
    5月12日 永恆之藍+WannaCry勒索病毒爆發,此次病毒爆發對計算機用戶造成了巨大的損失。各安全廠商迅速推出解決方案,有效遏制勒索病毒的蔓延。同時,景雲殺毒也推出了反勒索防護系統,能夠有效攔截並殺滅WannaCry,但那些已經加密的重要文件,只有支付贖金一條路可走了嗎?NO!
  • 常見勒索病毒介紹
    概述          勒索病毒是一種惡意軟體,常被攻擊者或者黑客用於加密受害者主機重要文件和文件夾,從而向用戶勒索高額的贖金(通常以加密貨幣的形式),以交換解密密鑰。勒索病毒的攻擊已造成多起國內外重大安全事件,近日美國最大成品油管道商Colonial Pipeline遭遇勒索病毒攻擊,導致整個燃料運輸管道暫停運營。
  • 「微信支付」勒索病毒可以解密 火絨發布解密工具
    據火絨安全團隊分析,該勒索病毒開始勒索前,會在本地生成加密、解密相關數據,火絨工程師根據這些數據成功提取到了密鑰。此外,該勒索病毒只加密用戶的桌面文件,並會跳過一些指定名稱開頭的目錄文件,包括「騰訊遊戲、英雄聯盟、tmp、rtl、program」,而且不會感染使用gif、exe、tmp等擴展名的文件。值得一提的是,該病毒會利用帶有騰訊籤名的程序調用病毒代碼,來躲避安全軟體的查殺。
  • Stop勒索病毒變種加密機制分析 部分情況可解密恢復
    分析發現,該版本病毒相比較於18年11月份開始活躍的DATAWAIT版本,在加密算法和病毒模塊有了變化,由於該版本的stop勒索病毒在其基礎設施工作正常、聯網穩定情況下加密後的文件暫無法解密,我們提醒各政企機構注意防範。Stop勒索病毒家族在國內主要通過軟體捆綁、垃圾郵件等方式進行傳播,加密時通常需要下載其它病毒輔助工作模塊。
  • 勒索預警,一大波新型勒索病毒與解密工具
    STOP勒索病毒最新變種STOP是今年全球十大流行款勒索病毒之首,主要通過捆綁其他軟體進行傳播,變種非常多,高達一百多個變種樣本,最近又有新的變種更新,其加密後綴如下:karl、nesa、boot、kuub、noos、xoza、bora、leto、werd、coot、derp、litar雖然此前Emsisoft發布了STOP勒索病毒的解密工具
  • 警惕sodinokibi勒索病毒藉助釣魚郵件傳播,被加密的文件暫不能解密
    該勒索病毒首先出現於2019年4月底,早期使用web服務相關漏洞傳播。近期發現,sodinokibi勒索病毒會偽裝成稅務單位、司法機構,使用釣魚欺詐郵件來傳播(病毒附件名:關於你案件的文件.doc.exe,聯繫方式.doc.exe,來自最高法院的文件\錶殼材料.doc.exe,稅務局的文件\樣品填充.doc.exe等)。
  • 使用微信支付的勒索病毒:UNNAMED1989勒索病毒分析報告
    該勒索病毒病毒使用E語言開發,是有史以來第一款使用中文開發的勒索病毒。病毒運行後會加密當前桌面和非系統盤中的指定文件,中毒後重啟機器會彈出勒索信息提示框,並附帶二維碼提示用戶使用微信掃碼支付110元贖金進行文件解密。
  • 2020勒索病毒年度報告:360安全大腦全年解密文件近1354萬次
    近日,360安全大腦發布的《2020年勒索病毒疫情分析報告》顯示:2020年中,360反勒索服務共接收並處理勒索病毒攻擊求助3800餘例,其中超過3700例確認遭受勒索病毒攻擊,最終幫助超過260例反饋用戶完成文件解密工作。
  • 中了勒索病毒該怎麼辦?可以解密嗎?
    勒索預警,近期一大波新型勒索病毒來襲 ,之前那篇文章沒有說解決辦法,所以今天這篇再補充一下!勒索病毒席捲全球,給全球各大小政企業都帶來了巨大的損失,勒索病毒重點在於防,可是黑客無孔不入,再強大的系統都有可能存在漏洞,萬一企業被攻擊,已經中了勒索病毒,那該怎麼辦呢?我處理過很多勒索病毒應急響應事件,問的最多的一個問題就是:該怎麼辦?可以解密嗎?
  • 對勒索病毒說「No!」 — 解密工具大全
    每當出現新的0day漏洞市面上就會掀起一陣勒索病毒風今天小師妹帶大家一起對勒索病毒Say 「No!」勒索病毒加密方式、利用不同,且變種呈多樣化;所以在解密前,首先應該去識別病毒樣本的歸屬。怎麼判斷病毒所屬呢?
  • Ryuk勒索病毒新變種分析
    比如,勒索分成了兩階段勒索。先要求受害者支付贖金換取密鑰以解密文件,然後要求受害者支付另一筆贖金來保證機密信息不被公開。同時,勒索病毒的操縱者們從性價比的角度出發,改變策略,攻擊目標從廣撒網改到精準投放,打擊關鍵的高價值目標,以此換取高額贖金。還有就是從單純勒索行為到與殭屍網絡,挖礦等相互結合。
  • 實戰|勒索病毒介紹及解密
    近一年很多人問我,中了勒索病毒怎麼辦,問我的有醫療行業、財務系統等等,今天給大家介紹其中一個Sodinokibi勒索病毒背景和解密過程。    Sodinokibi勒索病毒簡介 Sodinokibi 很可能由隸屬於臭名昭著的 GandCrab 勒索軟體家族的攻擊者分發,根據 GandCrab 首次出現的地下論壇,該家族應該很快就會退休
  • Emsisoft發布Paradise(天堂)勒索病毒解密工具
    Paradise(天堂)勒索病毒在國內首次出現於2018年七月份,2017年9月份被首次提交到國外ID Ransomware網站上,在過去的一兩年的時間裡,出現過它的多個變種樣本,曾經還利用Flash漏洞進行傳播,最近的一次變種版本樣本於2019年10月24日,被安全研究人員公布,如下所示:此勒索病毒最新的加密後的文件後綴名為_Support_{ID}.FC
  • 解密工具 | 勒索病毒 解密 工具匯總
    最近應急服務的時候,總是在工控用戶方碰上各種勒索病毒,感染工控系統的計算機,以下為日常搜集的勒索病毒解密工具的匯總。希望對大家有用![777 Ransom]Trend Micro Ransomware解密器用來解密777勒索軟體加密的文件https://success.trendmicro.com/solution/1114221[AES_NI Ransom]Rakhni解密器用來解密AES_NI勒索軟體加密的文件http://
  • 企業中了勒索病毒該怎麼辦?可以解密嗎?
    ,可以進行解密;4.進行溯源分析,確認是通過哪種方式傳播感染的進來的,封堵相關的安全漏洞;5.做好相應的安全防護工作,以防再次感染。對於新型的勒索病毒樣本,安全服務人員還會將樣本提交到專業的安全分析師手中,對樣本進行詳細分析,看能否解密,同時需要對新型的勒索病毒樣本進行特徵入庫操作等等。如果企業中了勒索病毒,哪些勒索病毒是可以解密的呢?怎麼解密,有哪些相關的解密網站?這裡給大家介紹幾個關于勒索病毒信息查詢以及解密的網站,可以在這些網站查詢勒索病毒相關信息,以及下載相應的解密工具進行解密。
  • 2019年7月勒索病毒疫情分析
    從本月數據來看,反勒索服務反饋量有小幅度上升,其中Stop是反饋量上升最大的一個家族。360解密大師在本月新增了對LoopCipher勒索病毒家族的解密支持。相較於六月數據,本月反勒索服務的反饋量有小幅度的上升,其中以Stop的反饋量上升最大。同時在本月反饋中,勒索病毒的類型也是最為豐富的一次,共出現了29個不同家族勒索病毒。
  • 勒索病毒解密工具匯總
    最近應急服務的時候,總是在工控用戶方碰上各種勒索病毒,感染工控系統的計算機,以下為日常搜集的勒索病毒解密工具的匯總。希望對大家有用!
  • 追蹤Aurora(歐若拉)勒索病毒,Emsisoft更新解密工具
    Aurora(歐若拉)勒索病毒首次出現於2018年7月左右,加密後的文件後綴為Aurora,2018年11月,此勒索病毒的一款變種樣本,加密後的文件後綴為
  • 中了.Devos勒索病毒.所有文件被加密了,如何解密解決?
    名稱.devos文件病毒類型[backinfo@protonmail.com] .devos文件病毒類型勒索軟體介紹該病毒通過加密修改了受攻擊設備上的文檔,並要求受害者支付贖金,據稱受害者應追償贖金。該特定的病毒家族通過添加.devos擴展名來修改所有流行的文件類型,從而使數據絕對不可用。受害人根本無法打開他們的重要文件。勒索軟體還分配其唯一的識別密鑰,就像病毒家族的所有先前代表一樣。一旦該文件被勒索軟體加密,它將獲得一個特殊的新擴展名,成為次要擴展名。該文件病毒還會生成贖金記錄,向用戶提供據稱想要恢復數據的指令。
  • 注入型勒索病毒Ryuk圖文分析
    HERMES勒索病毒相關聯,此外也有消息稱HERMES勒索病毒與朝鮮黑客組織Lazarus有關聯。Ryuk勒索病毒主要通過垃圾郵件以及漏洞利用工具包進行傳播,專門用於自定義攻擊,Ryuk的感染和傳播過程都是由攻擊者手動執行的,被加密的文件以.RYK後綴結尾。