ファイアウォールの新たなゼロデイ脆弱性が話題になっています。ファイアウォールやVPNについて不安をお持ちの場合は、Zscalerの特別オファーをご活用ください。

Zscalerのブログ

Zscalerの最新ブログ情報を受信

購読する
セキュリティリサーチ

BlackBasta | ランサムウェアの分析

image

要点

  • 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演算を使用してデコードされる難読化文字列の例を示しています。

Image

図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バイトのフッターをファイルに追加します。

BlackBasta 2.0ファイル フッター

図 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バイトを交互に実行します。

Image

図3. 暗号化されたブロックと暗号化されていないブロックを交互に繰り返すBlackBasta2.0ランサムウェアによって暗号化されたNullバイトを含むファイルの例

ファイルが1GBを超える場合、BlackBastaは最初の5,064バイトを暗号化し、6,336バイトをスキップします。そして、64バイトを暗号化し、6,336バイトをスキップします。これをファイルの最後に達するまで繰り返します。XChaCha20の暗号化コードを図4に示します。

BlackBasta XChaCha20暗号化コード

図4. BlackBasta2.0 XChaCha20ファイル暗号化コード

暗号化が完了すると、BlackBasta 2.0はファイル名を.agnkdbd5y.taovhsr3u.tcw9lnz6qといった攻撃対象ごとにハードコードされた拡張子に変更します。BlackBastaの前のバージョンでは、暗号化されたファイルの拡張子は.bastaのみでした。

暗号化された身代金ファイルのアイコン画像も、図5に示すように白いボックスから赤いボックスに変更されています。

Image

図5. BlackBasta暗号化ファイルのアイコン画像(新旧バージョン)

これは非常に小さい変更ですが、ウイルス対策製品がBlackBastaの検出に使用する可能性のある静的シグネチャーを迂回するには十分な場合があります。

 

身代金ノート

BlackBasta2.0は身代金メモのテキストを図6のとおりに変更しています。

Image

図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による検知

Image

 

Zscalerの多層クラウド セキュリティ プラットフォームは、サンドボックスの検知に加え、以下の脅威名でBlackBastaに関連する指標をさまざまなレベルで検知します。

IOC(Indicator of Compromise、侵害の指標)

 

SHA256 Hash

定義

e28188e516db1bda9015c30de59a2e91996b67c2e2b44989a6b0f562577fd757

BlackBasta2.0サンプル(実行可能)

c4c8be0c939e4c24e11bad90549e3951b7969e78056d819425ca53e87af8d8ed

BlackBasta2.0サンプル(実行可能)

350ba7fca67721c74385faff083914ecdd66ef107a765dfb7ac08b38d5c9c0bd

BlackBasta2.0サンプル(実行可能)

51eb749d6cbd08baf9d43c2f83abd9d4d86eb5206f62ba43b768251a98ce9d3e

BlackBasta2.0サンプル(DLL)

07117c02a09410f47a326b52c7f17407e63ba5e6ff97277446efc75b862d2799

BlackBasta2.0サンプル(DLL)

 

これらのIOCはThreatLabzのGitHubリポジトリーでも提供しています。

 

form submtited
お読みいただきありがとうございました

このブログは役に立ちましたか?

dots pattern

Zscalerの最新ブログ情報を受信

このフォームを送信することで、Zscalerのプライバシー ポリシーに同意したものとみなされます。