Zscalerのブログ
Zscalerの最新ブログ情報を受信
購読するBlackBasta | ランサムウェアの分析
要点
- BlackBastaは2022年2月に登場し、二重脅迫型ランサムウェアの手口を採用している
- 脅威グループはファイルを暗号化して身代金の支払いを要求する前に、組織から機密情報を抜き取る
- 以前のバージョンのBlackBastaはマルウェアのコード自体は斬新であったものの、すでに消滅しているContiランサムウェアと多くの類似点を共有していた
- 2022年11月、BlackBastaランサムウェアはファイル暗号化アルゴリズム、スタックベースの文字列の難読化、攻撃対象ごとのファイル拡張子など、重要なアップデートを行った
- ランサムウェア コードの変更は、ウイルス対策とEDR検出をより巧妙に回避するよう設計されている可能性が高い
Zscaler ThreatLabzは、BlackBastaなどの主要なランサムウェア ファミリーとその戦術、技術、手順(TTP)を追跡しています。2022年11月16日、ThreatLabzはウイルス対策の検出率が非常に低いBlackBastaランサムウェアの新しいサンプルを特定しました。最新のBlackBastaコードには、初期のBlackBastaランサムウェアと比べて多くの違いがあり、これにはファイル暗号化アルゴリズムの置き換えやGNU Multiple Precision Arithmetic Library (GMP)からCrypto++暗号化ライブラリーへの切り替えなどが含まれます。マルウェアの文字列の多くが難読化され、ファイル名もランダム化されているため、静的ベースのウイルス対策検出機能や動作ベースのEDR検出を回避する可能性があります。このブログでは、BlackBastaの最近の変更に焦点を当てて解説します。現在のBlackBastaのコードベースは初期のものとはかなり異なるため、ThreatLabzではこの新しいバージョンをBlackBasta2.0と呼んでいます。
技術分析
次のセクションでは文字列の難読化やファイルの暗号化など、BlackBastaランサムウェアの変更点を分析し、追加、削除、変更されたさまざまな機能を比較します。
文字列の難読化
Contiランサムウェアと同様に、BlackBastaランサムウェアの開発者はADVObfuscatorを使用したスタックベースの文字列難読化を実験していることがわかりました。図1は、スタック上で構築され、1バイトとのXOR演算を使用してデコードされる難読化文字列の例を示しています。
図1. BlackBasta 2.0のスタックベースの文字列難読化の例
現在、ランサムウェア内のすべての文字列が難読化されているわけではありませんが、近い将来さらに多くの文字列が難読化される可能性があります。
ファイルの暗号化
おそらく、BlackBasta2.0 での最も重要な変更は、暗号化アルゴリズムに対するものです。以前のバージョンの BlackBastaランサムウェアは、被害者ごとの非対称 4,096 ビット RSA 公開鍵と、ファイルごとの ChaCha20 対称鍵を使用していました。RSA アルゴリズムは、 GNU Multiple Precision Arithmetic Library (GMP) を使用して実装されました。BlackBastaランサムウェアの最新バージョンでは、暗号化アルゴリズムが楕円曲線暗号 (ECC) と XChaCha20 に置き換えられています。BlackBasta2.0 でこれらのアルゴリズムを実装するために使用される暗号化ライブラリはCrypto++です。BlackBasta2.0 で使用される楕円曲線は NIST P-521 (別名 secp521r1) です。BlackBasta2.0 サンプルに埋め込まれたハードコードされた NIST P-521 公開鍵の例を以下に示します。
Public-Key: (521 bit) pub: 04:00:52:1f:d8:b3:65:b7:9c:30:bd:fa:1c:88:cc: 77:77:81:f6:50:9d:d9:17:8d:17:d8:fa:3a:8c:b0: f2:6f:87:21:0c:95:db:94:f5:9c:bf:fd:ca:f0:8d: 19:6a:9c:2f:9f:4b:96:20:31:95:41:54:3e:92:43: ed:7b:d1:81:8c:58:78:01:2e:31:b8:02:7a:c1:b9: 7f:2f:b4:b2:ba:aa:df:ed:68:a2:df:eb:90:4a:4f: da:28:10:db:f5:ae:12:08:cf:dd:1f:10:80:48:00: 32:38:1d:23:40:0c:ca:05:2c:5c:d2:79:1d:ae:8f: 0a:74:a1:1c:79:b3:0c:38:21:aa:94:1a:4f ASN1 OID: secp521r1 NIST CURVE: P-521 writing EC key -----BEGIN PUBLIC KEY----- MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQAUh/Ys2W3nDC9+hyIzHd3gfZQndkX jRfY+jqMsPJvhyEMlduU9Zy//crwjRlqnC+fS5YgMZVBVD6SQ+170YGMWHgBLjG4 AnrBuX8vtLK6qt/taKLf65BKT9ooENv1rhIIz90fEIBIADI4HSNADMoFLFzSeR2u jwp0oRx5sww4IaqUGk8= -----END PUBLIC KEY-----
BlackBasta 2.0で使用される暗号化プロセスでは、Diffie-Hellman Augmented Encryption Scheme (DHAES)モードのCrypto++ 1 Elliptic Curve Integrated Encryption Scheme1 (ECIES)を活用し、ファイルごとにXChaCha20とハッシュベースのメッセージ認証コード(HMAC)を生成します(DHAESは、Advanced Encryption Standardとの混同を避けるため、DHIESとも呼ばれます)。そして、BlackBastaは図2に示すように、暗号化が完了した後に314バイトのフッターをファイルに追加します。
図 2. BlackBasta2.0で暗号化されたファイル フッターの例
最初の133バイト(青色)は、ファイルごとに生成される一時的なNIST P-521公開キーです。次の56バイトは、ファイルごとに暗号化されたXChaCha20の32バイトのキーと24バイトのナンス(緑色)で、その後に20バイトのHMAC(赤色)が続きます。これに、Nullバイトのパディングと暗号マテリアルのサイズを示す2バイトの値(オレンジ色)が続きます。最後の12バイト(紫色)はマーカー(例:j4ftnwzxbrf)で、BlackBasta復号ツールが暗号化されたファイルを識別するために使用できる攻撃対象によって変化します。
暗号化プロセスは一時的なNIST P-521キー ペアを生成することから始まります。その後、対応するプライベート キーを使用して、Diffie-Hellmanアルゴリズムを用いてハードコードされたパブリック キーとの共有秘密キーを生成します。結果はキー導出関数KDF2に渡され、72個の疑似乱数バイトが生成されます。また、最初の16バイトはHMACキーとして、後続の56バイトはファイルのXChaCha20キーとナンス(上部に緑色で表示)を暗号化するためのXORキーとして使用されます。ファイルごとのXChaCha20キーとナンスは、Crypto++乱数生成ライブラリーを使用して生成され、HMACはSHA1ハッシュ アルゴリズムを使用して暗号文で計算されます。結果はフッターの20バイト(赤で表示)を使用したメッセージ検証に使用できます。
速度を最適化するために、BlackBastaはファイルのサイズに応じてXChaCha20で異なる方法を用いてファイルを暗号化します。ファイルが5,000バイト未満の場合、ファイル全体が64バイトのブロックで暗号化されます。ファイル サイズが64バイトより大きく、64バイトの偶数倍でない場合、最後の64バイト ブロックは暗号化されません。ファイル サイズが 1,073,741,824 (0x40000000)バイト(1GB)以下の場合、BlackBastaは図3に示すように、ファイルの最後に達するまで64バイトのブロックを暗号化し、その後にスキップされる(つまり暗号化されない)128バイトを交互に実行します。
図3. 暗号化されたブロックと暗号化されていないブロックを交互に繰り返すBlackBasta2.0ランサムウェアによって暗号化されたNullバイトを含むファイルの例
ファイルが1GBを超える場合、BlackBastaは最初の5,064バイトを暗号化し、6,336バイトをスキップします。そして、64バイトを暗号化し、6,336バイトをスキップします。これをファイルの最後に達するまで繰り返します。XChaCha20の暗号化コードを図4に示します。
図4. BlackBasta2.0 XChaCha20ファイル暗号化コード
暗号化が完了すると、BlackBasta 2.0はファイル名を.agnkdbd5y、.taovhsr3u、.tcw9lnz6qといった攻撃対象ごとにハードコードされた拡張子に変更します。BlackBastaの前のバージョンでは、暗号化されたファイルの拡張子は.bastaのみでした。
暗号化された身代金ファイルのアイコン画像も、図5に示すように白いボックスから赤いボックスに変更されています。
図5. BlackBasta暗号化ファイルのアイコン画像(新旧バージョン)
これは非常に小さい変更ですが、ウイルス対策製品がBlackBastaの検出に使用する可能性のある静的シグネチャーを迂回するには十分な場合があります。
身代金ノート
BlackBasta2.0は身代金メモのテキストを図6のとおりに変更しています。
図6. BlackBasta2.0の身代金メモの例(2022年11月)
身代金メモのファイル名もreadme.txtからinstructions_read_me.txtに変更されています。BlackBasta2.0は、cmd.exe /c start /MAX notepad.exeコマンドを介してWindowsのメモ帳で身代金メモを開きます。
BlackBasta機能の同等性
表1はBlackBastaのバージョン1.0と2.0の機能を比較しています。
特長 |
BlackBasta 1.0 |
BlackBasta 2.0 |
暗号化ライブラリー |
GMP |
Crypto++ |
非対称暗号化 |
4,096ビットRSA |
NIST P-521 |
対称暗号化 |
ChaCha20 |
XChaCha20 |
暗号化されたファイルのアイコンの変更 |
はい |
はい |
暗号化されたファイル拡張子 |
.basta |
.[a-z0-9]{9} |
デスクトップの壁紙の変更 |
はい |
いいえ |
Readmeファイル名 |
readme.txt |
instructions_read_me.txt |
文字列の難読化 |
いいえ |
はい |
プロセスとサービスの終了 |
はい |
いいえ |
シャドウ コピーの削除 |
はい |
〇/× (サンプルによって異なる) |
暗号化されたファイルのアイコン名 |
fkdjsadasd.ico |
fkdjsadasd.ico |
Mutex名 |
dsajdhas.0 |
ofijweiuhuewhcsaxs.mutex |
表1. BlackBasta 1.0とBlackBasta 2.0の機能の同等性
前述の違いに加えて、BlackBasta 2.0は攻撃対象のデスクトップの壁紙を変更したり、ファイルの暗号化を妨害する可能性のあるプロセスやサービスを終了したりすることはありません。Mutex名も更新されました。
表2のようにコマンドライン パラメーターの数も変更されています。
コマンドライン パラメーター |
BlackBasta 1.0 |
BlackBasta 2.0 |
定義 |
-threads |
いいえ |
はい |
暗号化に使用するスレッドの数 |
-nomutex |
いいえ |
はい |
Mutexを作成しない |
-forcepath |
はい |
はい |
指定したパスのファイルを暗号化する |
-bomb |
〇 (新しいビルドの場合) |
いいえ |
ActiveDirectory経由で拡散してランサムウェアを起動する |
表 2. BlackBastaコマンドライン パラメーターの比較
まとめ
Contiランサムウェア グループのメンバーは、最も主要なランサムウェア脅威の1つであるBlackBastaなどの脅威グループに分派して活動を続けているようです。BlackBasta 2.0がリリースされた2022年11月中旬以降、ThreatLabzはこの新バージョンに侵害された被害者を5人以上観測しており、脅威グループが駆使する手口の巧妙さをうかがい知ることができます。なお、BlackBastaの最新バージョンでは、ウイルス対策やEDRをより高度に回避できるようになった可能性が高いと考えられています。
Zscaler Cloud Sandboxによる検知
Zscalerの多層クラウド セキュリティ プラットフォームは、サンドボックスの検知に加え、以下の脅威名でBlackBastaに関連する指標をさまざまなレベルで検知します。
侵害の痕跡(IoC)
SHA256 Hash |
定義 |
e28188e516db1bda9015c30de59a2e91996b67c2e2b44989a6b0f562577fd757 |
BlackBasta2.0サンプル(実行可能) |
c4c8be0c939e4c24e11bad90549e3951b7969e78056d819425ca53e87af8d8ed |
BlackBasta2.0サンプル(実行可能) |
350ba7fca67721c74385faff083914ecdd66ef107a765dfb7ac08b38d5c9c0bd |
BlackBasta2.0サンプル(実行可能) |
51eb749d6cbd08baf9d43c2f83abd9d4d86eb5206f62ba43b768251a98ce9d3e |
BlackBasta2.0サンプル(DLL) |
07117c02a09410f47a326b52c7f17407e63ba5e6ff97277446efc75b862d2799 |
BlackBasta2.0サンプル(DLL) |
これらのIOCはThreatLabzのGitHubリポジトリーでも提供しています。