當前位置:
首頁 > 新聞 > Rapid勒索病毒分析與檢測

Rapid勒索病毒分析與檢測

勒索病毒一直是安全行業的一個熱點,近期安全人員發現了一款名為rapid的勒索病毒,該勒索病毒使用了 RSA加AES對文件進行加密,它不僅會感染計算機上已有的文件,還會對新創建的文件進行加密。本文對rapid病毒進行了詳細分析,剖析其加密機制,解析其加密後的文件。


1.

概述

當rapid病毒運行時,它會創建多個線程不斷掃描文件系統,進行文件加密,它不僅會感染計算機上的已有文件,還會對新創建的文件進行加密。被加密的文件,其文件名被添加「.rapid」擴展名,同時文件大小增加了0x4D0位元組。



rapid病毒將在進行加密的文件夾中創建名為「How Recovery Files.txt」的勒索提示文件,文件中包含一個電子郵件,讓受害者聯繫如何完成付款。用戶重啟電腦,將自動彈出名為「recovery.txt」的勒索提示文件,其內容和「How Recovery Files.txt」文件內容相同。



2.

詳細分析


使用蘭眼(LanyEye)下一代威脅感知系統對rapid程序進行檢測。在蘭眼中,rapid程序被標記為高危:



接下來對rapid程序進行逆向分析。


首先程序調用ShellExecuteA執行如圖所示命令:


主要作用包括清除Windows卷影拷貝,防止受害者使用卷影拷貝恢復文件。禁用系統修復和自動修改功能,勒索程序可能加密驅動文件導致系統頻繁崩潰,禁用修復功能,忽略錯誤降低系統崩潰概率。終止oracle.exe、sqlite.exe、sql.exe進程,一方面,可以釋放內存,另一方面,可以解除這些資料庫進程對某些文件的佔用。


接著程序添加開機啟動項,在註冊表HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun下新建Encrypter和userinfo項,Encrypter項值為「%AppDataRomainginfo.exe」,userinfo的項值為「%AppDataRomaing
ecovery.txt」。「info.exe」文件是勒索病毒程序自身的拷貝,「recovery.txt」文件是勒索信息文件,文件內容和上文提到的「How Recovery Files.txt」文件內容相同。




本次為了保證系統能夠正常運行,程序不會選取文件夾名稱為「Windows」、「intel」、「nvidia」、「ProgramData」和「temp」下的文件:



此勒索軟體並沒有通過後綴名過濾文件而是判斷選取的文件是不是「How Recovery Files.txt」、「info.exe」、「recovery.txt」,如果是其中三個文件則跳過,剩下的全加密。



2.1.

加密過程



程序首先創建了一個PROV_RSA_FULL類型的CSP容器,然後將通過Base64的硬編碼在程序中的RSA的公鑰(命名為RSA1)導入。



接著程序會查看是否存在註冊表項「local_public_key」。如果沒有則會創建註冊表項「local_public_key」



程序創建了一個PROV_RSA_FULL類型的CSP容器,並且調用CryptGenKey()生成了隨機RSA密鑰對(命名為RSA2)。



之後調用CryptExportKey()導出剛剛生成的RSA2私鑰數據,並調用RSA1公鑰對RSA2私鑰加密。加密完成後,將RSA私鑰數據寫入註冊表項HKEY_CURRENT_USERSoftwareEncryptKeyslocal_enc_private_key,將數據長度寫入註冊表項HKEY_CURRENT_USERSoftwareEncryptKeyslocal_enc_private_key_len


再次調用CryptExportKey()導出剛剛生成的隨機RSA2公鑰數據,這次不需要加密,直接寫入註冊表HKEY_CURRENT_USERSoftwareEncryptKeyslocal_public_key和HKEY_CURRENT_USERSoftwareEncryptKeyslocal_public_key_len。



之後開始對文件進行加密,獲取選取文件的大小,如果文件大小小於0x4D0位元組,則直接進入加密流程;否則讀取文件尾部0x20位元組的數據,並判斷這部分數據是不是加密標誌「F5 D5 CD CD CD 7D CD CD 95 91 C1 C1 CD AD CD CD 41 CD 41 CD C1 99 FD 1D 59 95 81 FD 99 79 25 A5」,如果不是則進入加密流程,否則選取下一個文件。因為加密過的文件是大於0x4D0的,並且在其文件尾部添加了0x20個位元組的加密標誌



程序進入加密流程後,會先調用CryptGenKey()生成隨機AES密鑰。



並調用CryptExportKey()導出AES密鑰數據,BLOBTYPE=PLAINTEXTKEYBLOB:



如圖所示返回數據長度0x2C,0x3A42A8-0x3A42AF是BLOBHEADER ,0x3A42B0-0x3A42B3是keysize,0x3A42B4-0x3A42D3是AES的密鑰,0x3A42D4-0x3A4327則是使用0xCD填充的數據:


使用RSA2公鑰加密AES密鑰,加密的是上文中提到的「BLOB格式數據+AES密鑰+填充數據」這整個0x80位元組的數據:



讀取文件數據,使用AES密鑰對讀取的文件數據進行加密 :



AES加密是按照128bit進行分組,當原文件位元組數不是128bit的整數倍時,加密後的密文數據將會大於明文數據,所以程序在加密前在明文尾部填充了0x10個位元組的0x00(一個AES分組的位元組數)。


向文件覆寫加密後的數據,首先只寫入原文件大小的密文數據,變多的0x10位元組的數據接下來再寫;


繼續向文件中寫數據,寫入0x4D0位元組的數據。這0x4D0位元組的數據包括五部分:第一部分0x10位元組,這部分就是變多的數據;第二部分0x20位元組,包含源文件文件大小的字元串和0xCD的填充數據;第三部分0x80位元組,是被加密的AES密鑰數據;第四部分0x400位元組,是被加密的RSA2私鑰數據;第五部分0x20位元組,是文件加密標誌數據。



在文件名後添加「.rapid」擴展名:


顯示勒索信息



至此,我們已經分析完了rapid勒索軟體的文件加密流程,接下來我們來分析被加密後的文件。


3.

加密文件解析


假設一個大小為0x9000位元組的文件被rapid程序加密,加密後的文件結構如下:



4.

小結


rapid勒索病毒使用數字簽名(RSA_AES-256)對文件進行加密,文件解密需要獲取數字簽名的私鑰。但是,數組簽名的私鑰使用RSA加密,在沒有RSA私鑰的情況下,很難獲取數字簽名的私鑰,文件恢復的難度極大。

2017年是勒索病毒高發的一年,可以預見2018年這種狀態仍將持續,我們每一個人都應該提高警惕,切勿打開來自可疑郵箱的附件,避免使用第三方軟體資源,安裝防病毒軟體,降低安全隱患。


*本文作者:蘭雲科技銀河實驗室,轉載請註明來自FreeBuf.COM


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

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


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

駐場工程師眼中的政務雲安全
拒絕成為免費勞動力:檢測含有挖礦腳本的WiFi熱點

TAG:FreeBuf |