GlobeImposter勒索病毒技術分析報告
新年伊始,勒索病毒再度在國內傳播肆虐。騰訊安全聯合實驗室反病毒實驗室近期接到多起客戶遭受勒索軟體攻擊的反饋,通過跟進分析發現,黑客使用的勒索病毒全部為GlobeImposter家族的勒索病毒,黑客在突破企業防護邊界後釋放並運行勒索病毒,最終導致系統破壞,影響正常工作秩序。
經騰訊安全聯合實驗室反病毒實驗室分析,此次GlobeImposter勒索家族攻擊事件顯現出下列特點:
GlobeImposter勒索家族習慣以垃圾郵件方式和掃描滲透的方式進行傳播,此次勒索病毒的攻擊過程極可能為Windows遠程桌面服務密碼被暴力破解後植入勒索病毒。
從勒索病毒樣本層面看,此次的GlobeImposter勒索軟體在代碼上進行了一些改變。如以往該家族樣本在加密之前會結束諸如「sql」,「outlook」,「excel」、「word」等進程,而此次的勒索病毒則沒有這些對進程的檢測的代碼。
該次的勒索病毒使用了RSA+AES加密方式,其中AES密鑰的生成方式並不是通過傳統的隨機函數等生成,而是通過CoCreateGuid函數生成全局唯一標識符,並將該標識符做為AES加密演算法的secret key。
在網上公開的針對此家族勒索病毒的分析報告中,對文檔加密部分的勒索原理都語焉不詳,公開的報告中對文檔加密演算法等細節總是也是一筆代過。鑒於此,本篇將對該樣本的勒索原理進行闡述,重點將從技術角度對文檔的加密過程進行分析。
技術分析
勒索病毒整體加密過程
勒索病毒使用了RSA+AES加密方式,加密過程中涉及兩對RSA密鑰(分別為黑客公私鑰和用戶公私鑰,分別用hacker_rsa_xxx和user_rsa_xxx表示這兩對密鑰)和一對AES密鑰。黑客RSA密鑰用於加密用戶RSA密鑰,用戶RSA密鑰用於加密AES密鑰,AES密鑰用於加密文件內容。
具體的加密過程為:勒索病毒首先解碼出一個內置的RSA公鑰(hacker_rsa_pub),同時對每個受害用戶,使用RSA生成公私鑰(user_rsa_pub和user_rsa_pri),其中生成的密鑰信息使用內置的RSA公鑰(hacker_rsa_Public)進行加密後,做為用戶ID。在遍歷系統文件,對符合加密要求的文件進行加密。對每個文件,通過CoCreateGuid生成一個唯一標識符,並由該唯一標識符最終生成AES密鑰(記為file_aes_key),對文件進行加密。在加密文件的過程中,該唯一標識符會通過RSA公鑰(user_rsa_pub)加密後保存到文件中。
黑客在收到贖金、用戶ID和文件後,通過自己的私鑰(hacker_rsa_pri)解密用戶ID,可以得到user_rsa_pri,使用user_rsa_pri解密文件,就可以得到文件的file_aes_key,進而可以通過AES演算法解密出原始文件。
下面對樣本中使用的一些技術手段進行分析。
加密字元解密演算法
軟體中的字元及內置的公鑰等信息都以加密的方式保存,加密使用的為AES演算法,函數00409392為解密演算法函數,函數包含5個參數,每個參數的含義如下:
參數1:返回值,解密後的內容
參數2:返回值,解密後的內容的長度
參數3:解密key
參數4:解密key的長度
參數5:文件句柄,如果文件句柄不為空,就將解密後的內容寫入到該文件句柄對應的文件中
對aes_crypt函數,使用mbedtls_aes_crypt_ecb進行AES解密操作。
通過IDA的上下文交叉引用,看到共有七處調用了MyAESDecode函數進行解密內容,這七處調用功能解釋如下:
解碼排除文件夾與排除後綴名
惡意樣本在勒索過程中對包含某些特殊字元的文件夾進行繞過,這些特殊的字元解碼演算法如下:
對上面解密出來的RSA公鑰(hacker_rsa_pub)計算SHA256,計算sha256的代碼片段如下:
使用sha256的值做為AES key,再次利用2.2中的解密演算法,解密出字元串列表。
解密出的字元串列表:
用戶ID的生成
勒索病毒運行後,會在用戶機器上生成名為「60091F9FF415A9DD5FDFF0D880249E69F883A75D0242CE20D6E6A90CC5AEAFDE的文件,此文件名為內置的公鑰的SHA256哈希值。該文件中保存了用戶ID信息。
用戶ID的生成演算法為:勒索病毒首先通過RSA-1024生成用戶公私鑰(user_rsa_pub和user_rsa_pri),將生成的密鑰中的rsa.P與rsa.Q拼接上「.TRUE.HOWBACKFILE」等內容後,使用內置的公鑰(hacker_rsa_pub)加密,結果作為用戶ID,同時,生成的公鑰(user_rsa_pub)會做為後面遍歷文件系統時的加密key使用。可見,該用戶ID也經過了RSA公鑰(hacker_rsa_pub)的加密,在沒有私鑰(hacker_rsa_pri)的情況下,很難還原出RSA-1024的密鑰內容。
文件加密過程
通過GetLogicalDrives得到盤符信息,對每個盤符開啟一個線程進行加密,每個線程函數的參數包含三部分內容:當前盤符路徑,加密key(user_rsa_pub),用戶ID。
判斷文件路徑是不是屬於排除路徑:
函數sub_4094D9會實現對文件的加密,對文件的加密使用的是AES加密演算法。下面將詳細介紹該函數的過程。
AES加密的KEY通過CoCreateGuid生成,CoCreateGuid函數功能為生成全局唯一標識符,勒索病毒使用該全局唯一標識符做為secret_key, secret_key用來生成AES的加密key.。
AES加密時的IV參數由當前文件的大小和文件路徑共同生成。IV參數將MD(filesize|| filename )後取前16位。
將IV和secret key使用MBEDTLS_MD_SHA256計算8192次HASH,並將HASH結果做為AES加密的KEY。
隨後,使用內置的RSA公鑰將guid進行加密,並將加密過的guid及用戶ID寫入到當前文件中。
最後,使用AES演算法將文件內容加密。
AES加密演算法過程如下:
自啟動
勒索病毒通過在RunOnce註冊表下新建名為BrowserUpdateCheck的鍵值,達到開機自啟動的目的。部分代碼如下:
自刪除
通過調用CMD /c del來實現自刪除,部分代碼如下:
刪除遠程桌面連接信息及事件日誌
解密bat文件後釋放到臨時目錄下,並載入運行。
解密出來的bat文件內容如下:
Bat會刪除遠程桌面連接信息文件default.rdp,並通過wevtutil.execl命令刪除日誌信息。
總結
從上面的技術分析可以看出,對文件的加密使用的是AES加密,每個文件對應一個AES密鑰,AES密鑰由CoCreateGuid函數生成,該密鑰經過用戶公鑰(user_rsa_pub)加密後保存在加密後的文件中。黑客使用CoCreateGuid函數生成key,一方面是考慮CoCreateGuid函數生成內容的唯一性與隨機性,生成的全局唯一標識符做為key使用不易被猜解;另一方面可能是出於對反勒索安全軟體的對抗。
騰訊安全聯合實驗室反病毒實驗室提醒大家:
提高安全意識,不要隨意打開來源不明的文件,或隨意點擊可疑的鏈接,對重要的數據文件定期進行非本地備份。
對於可疑文件,可以使用騰訊電腦管家進行掃描,或者將文件上傳哈勃分析系統(https://habo.qq.com/)查看文件是否存在風險。
針對企業用戶,盡量關閉不必要的文件共享許可權以及445,135,139,3389等不必要的埠。
針對文中提到的勒索攻擊事件,可以使用御界防APT郵件網關(http://s.tencent.com/product/yjwg/index.html)和御界高級威脅檢測系統(http://s.tencent.com/product/gjwxjc/index.html)兩個安全產品進行有效的檢測與防護。
TAG:騰訊安全聯合實驗室 |