勒索軟件 BlackBasta 2.0 的技術演變
2022 年 11 月 16 日,研究人員發現 BlackBasta 勒索軟件開始使用全新的樣本文件。新版本的 BlackBasta 相比舊版本更新了許多代碼(包括文件加密算法與庫文件),擁有更低的引擎檢出率。惡意樣本的大部分字符串都已經經過混淆,文件名也已經隨機化,這阻礙反病毒引擎與 EDR 等安全產品的檢測。
技術分析
字符串混淆
與 Conti 勒索軟件類似,BlackBasta 勒索軟件開發人員似乎也使用了 ADVObfuscator 進行字符串混淆。如下圖所示,基于棧進行構建,并且使用異或操作對單個字節進行解密:
字符串混淆
目前,并非是所有字符串都經過混淆處理。但可以預期的是,日后會有更多的字符串被混淆。
文件加密
BlackBasta 2.0 版本中給最重要的部分就是對加密算法的修改。最初,BlackBasta 勒索軟件使用非對稱 4096 位 RSA 公鑰與對稱 ChaCha20 算法進行加密。而且,RSA 算法是通過 GNU 多精度算術庫(GMP)實現的。而在最新的 BlackBasta 2.0 中,加密算法已經被橢圓曲線(ECC)和 XChaCha20 算法所取代。并且,算法實現轉而使用 Crypto++。新版本使用的橢圓曲線算法為 secp521r1,內嵌的公鑰為:
BlackBasta 2.0 在加密過程中使用被成為 DHIES 的加密模式,利用 Crypto++ 中的橢圓曲線集成加密方式(ECIES)生成每個文件的 XChaCha20 與基于哈希的消息認證碼(MHAC)。在完成加密后,BlackBasta 會向文件結尾追加一個 314 字節的數據,如下所示:
BlackBasta 2.0 加密文件
藍色部分的 133 個字節是為每個文件臨時生成的 secp521r1 公鑰,接下來的 56 個字節是用于 XChaCha20 加密的密鑰(32 字節)與隨機數(24 字)。隨后的紅色部分是 HMAC(20 字節),灰色部分為空字節填充,橙色部分為加密文件的大小(2 字節)。最后的紫色部分為 flag(12 字節),攻擊者依賴此處識別受害者。
為了提高加密速度,BlackBasta 根據文件大小使用 XChaCha20 對文件進行不同策略的加密。如果件小于 5000 字節,則整個文件將以 64 字節為單位進行加密。如果文件大于 64 字節且不是 64 字節的偶數倍,則不會加密最后的 64 字節塊。如果文件小于 1GB,BlackBasta 會交替加密 64 字節塊并跳過 128 字節,直到文件末尾。如下圖所示:
交替加密數據
如果文件大于 1GB,BlackBasta 會首先加密文件前 5064 個字節。在跳過 6336 個字節后,加密 64 個字節再跳過 6336 個字節,一直持續到文件末尾。XChaCha20 加密代碼如下所示:
XChaCha20 文件加密代碼
加密完成后,BlackBasta 使用硬編碼的擴展名重命名文件。這些擴展名都是針對每個受害者定制的,例如 .agnkdbd5y、.taovhsr3u 或 .tcw9lnz6q。以前版本的 BlackBasta 使用的擴展名是固定的,為 .basta。
勒索文件的圖標也進行了修改,從白色變成了紅色:
圖標對比
勒索信息
BlackBasta 2.0 將勒索信息也作了修改,如下所示:
勒索信息(2022 年 11 月)
特征變化
新舊版本的特征對比如下所示:
其命令行參數也進行了修改,如下所示:
結論
Conti 勒索軟件似乎已經分裂成包括 BlackBasta 在內的多個攻擊組織,進一步擴大了勒索軟件的威脅。自從 2022 年 11 月中旬,BlackBasta 2.0 面世以來,研究人員發現了多個受害者。這表明該攻擊組織是十分成功的,并且也在持續更新和升級。