BlueSkyランサムウェア: マルチスレッド処理で暗号化処理を高速に

Ransomware conceptual image, covering groups including BlueSky Ransomware

This post is also available in: English (英語)

概要

BlueSkyランサムウェアは最新鋭の技術でセキュリティ防御をかいくぐる新興ランサムウェアファミリのひとつです。

ランサムウェアは悪意のあるプログラムの一種で、ユーザーのデータを暗号化し、「復号したければ身代金を払え」と要求してきます。BlueSkyランサムウェアの主な標的はWindowsホストで、このプログラムはマルチスレッドを使ってホスト上のファイルをより高速に暗号化します。

私たちの分析では、BlueSkyランサムウェアのサンプルにContiランサムウェアグループにリンクするコードフィンガープリントが見つかっています。具体的にはBlueSkyのマルチスレッドアーキテクチャはConti v3とコード的に類似しており、ネットワーク検索モジュールはContiのものがそっくりそのまま複製されています。

ただしBlueSkyには、どちらかというとBabukランサムウェアによく似た部分もあります。たとえば、両者ともファイル暗号化アルゴリズムにはChaCha20を、鍵生成にはCurve25519を使っています。

CloudSEKの調査によれば、偽ウェブサイトからBlueSkyランサムウェアをドロップ・ダウンロードし、データを暗号化するさいは、PowerShellスクリプトが使われるようです。暗号化に成功すると、BlueSkyランサムウェアは暗号化したファイル名をファイル拡張子「.bluesky」に変更し、「# DECRYPT FILES BLUESKY #.txt」、「# DECRYPT FILES BLUESKY #.html」という身代金要求メモファイルをドロップします。

パロアルトネットワークスのお客様は、Cortex XDR次世代ファイアウォールのNGFWシリーズWildFireなどのクラウド配信型セキュリティサービスを通じ、BlueSkyランサムウェアなどのランサムウェアから保護されています。Advanced URL Filteringサブスクリプションは、リアルタイムにURLを解析し、BlueSkyランサムウェアに対するマルウェア防御を行います。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、infojapan@paloaltonetworks.com まで電子メールにてご連絡ください (ご相談は弊社製品のお客様には限定されません)。また弊社サイバーリスクマネジメントサービスをリクエストいただければ予防的措置を講じることもできます。

Unit 42の関連トピック Ransomware, Conti Ransomware

目次

初期ドロッパー
ローカル特権昇格
ランサムウェアのペイロード
身代金要求メモ
解析対策技術
ランサムウェアのアーティファクト(痕跡)
ファイル暗号化
RedLineインフォスティーラとの関連
結論
IoC
MITRE TTP(戦術・技術・手順)
追加リソース

初期ドロッパー

BlueSkyランサムウェアはまず、hxxps://kmsauto[.]us/someone/start.ps1にホストされているPowerShellスクリプトのstart.ps1によってドロップされてきます(図1)。この初期ドロッパーはBase64エンコードされてからDeflate圧縮されています。このつくりはPowerShellドロッパーではよく見られるものです。

この初期ドロッパーはBase64エンコードされてからDeflate圧縮されています。このつくりはPowerShellドロッパーではよく見られるものです。
図1. 初期ドロッパー

埋め込まれたBase64エンコード済みデータストリームは、start.ps1から抽出されてデコード・展開されたあと、さらにまたべつのstage.ps1というPowerShellスクリプトへとつながります。このPowerShellスクリプトは、無意味なコメントを多数含めることで、悪意のあるアクティビティを隠そうとしていました。これらの無意味なコメントを削除してみると、start.ps1が自身を実行しているユーザーの権限に基づいて、hxxps://kmsauto[.]us/someone/から多数ペイロードをダウンロードしていることがわかりました(図2)。

マルウェアの作者が悪意のあるアクティビティを隠すために追加した無関係なコメントを削除。start.ps1がユーザーの権限に基づいて多数のペイロードをダウンロードすることがわかった
図2. 初期ドロッパー(デコードしたもの)

ローカル特権昇格

ローカル特権昇格用の追加ペイロードをダウンロードする前に、PowerShellスクリプトstage.ps1は自身が特権ユーザーとして実行されているかどうかを判定します。特権ユーザーとして実行されていれば次のステップに進み、ランサムウェアのペイロードをダウンロード・実行します。特権ユーザーでなければ、ホストのオペレーティングシステム(OS)のバージョンに応じた手法でローカルの特権昇格を行います。ホストのOSバージョンがWindows XP、7、8などWindows 10より前のものなら、このスクリプトはJuicyPotatoと呼ばれるローカル特権昇格ツールを改変したものをダウンロードして実行します。ホストのOSバージョンがWindows 10かそれ以降のものであれば、このスクリプトはghost.exespooler.exeをダウンロードして実行し、それぞれのツールでローカル特権昇格の脆弱性CVE-2020-0796CVE-2021-1732をエクスプロイトします。

ランサムウェアのペイロード

追加特権を奪取したstage.ps1は、BlueSkyランサムウェアの最終ペイロードをhxxps://kmsauto[.]us/someone/l.exeからダウンロードします。ダウンロードされたファイルは、正規Windowsアプリケーションに見せかけるため、javaw.exeという名前でローカルのファイルシステムに保存されます。最後にこのサンプルがファイルパス%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\javaw.exeから実行されます。

身代金要求メモ

ファイルの暗号化が成功してファイル拡張子を.blueskyに変更し終えると、BlueSkyはローカルディレクトリに「# DECRYPT FILES BLUESKY #.txt」というテキストファイルと「# DECRYPT FILES BLUESKY #.html」というHTMLファイルを身代金要求メモとしてドロップします。図3に# DECRYPT FILES BLUESKY #.htmlの内容を示します。

BlueSkyの身代金要求メモの内容。
図3. BlueSkyの身代金要求メモ

解析対策技術

BlueSkyは解析対策技術を複数実装しています。これらの技術には、文字列の暗号化、APIの難読化、アンチデバッグの機構などが含まれます。この結果、Windows APIの関数名を難読化したり、APIの解決に間接呼び出しが使えるにようなっています。またBlueSkyは、API名をDJBハッシュ関数でエンコードすることでマルウェア解析を妨害しています(図4)。

またBlueSkyは、API名をDJBハッシュ関数でエンコードすることでマルウェア解析を妨害しています(本図)。
図4. DJBハッシュマッチング

ランサムウェアのアーティファクト(痕跡)

BlueSkyは、ボリューム情報、マシンGUID、プロダクトID、インストール日を組み合わせた値のMD5ハッシュを計算して一意なユーザーIDを生成します(図5)。またこのユーザーIDでミューテックスのGlobal\<32-byte ID>を生成します(この<32-byte ID>の部分に計算された一意なユーザーIDが入る)。

BlueSkyは、ボリューム情報、マシンGUID、プロダクトID、インストール日を組み合わせた値に対してMD5ハッシュを計算し、一意のユーザーIDを生成します(本図)。
図5. 一意なユーザーIDを計算

BlueSkyは、レジストリキーHKCU\Software\<32-byte ID>を作成し、そこにレジストリエントリ「completed」、「RECOVERY BLOB」、「x25519_public」を保存します。これらのエントリは、ランサムウェアのオペレーションでフィンガープリントに使われます。暗号化の処理がcompleted(完了)になると、レジストリエントリcompletedに値「1」が設定されます。RECOVERY BLOBは被害組織のフィンガープリント識別子で、ChaCha20アルゴリズムで暗号化されています。RECOVERY BLOBの構造を以下の表1に示します。

オフセット データ サイズ
0x00 Curve25519公開鍵 0x20
0x20 暗号ランダム値 0x0C
0x2C Curve25519秘密鍵 0x20
0x4C 一意なユーザーID 0x10
0x5C RC4デコードされたハードコードバイト 0x10
0x6C 不明なDWORD 0x04
0x70 不明なDWORD 0x04
0x74 定数0x1000 0x04

表1 RECOVERY BLOBの構造

その後RECOVERY BLOBはChaCha20で暗号化され(図6)、HKCU\Software\<32-byte ID>\RECOVERYに格納されます。

RECOVERY BLOBはChaCha20で暗号化され(本図)、HKCU\Software\<32-byte ID>\RECOVERYに格納される。
図6. RECOVERY BLOBの暗号化

ファイル暗号化

たいていのランサムウェアファミリはファイル拡張子一覧を用意して特定のファイルタイプを暗号化の対象にします。BlueSkyはこれとは逆に暗号化処理から除外するファイル拡張子の一覧を使います。BlueSkyが暗号化から除外するファイル拡張子は次のものです。
ldf, scr, icl, 386, cmd, ani, adv, theme, msi, rtp, diagcfg, msstyles, bin, hlp, shs, drv, wpx, bat, rom, msc, lnk, cab, spl, ps1, msu, ics, key, msp, com, sys, diagpkg, nls, diagcab, ico, lock, ocx, mpa, cur, cpl, mod, hta, exe, ini, icns, prf, dll, bluesky, nomedia, idx

次のディレクトリも暗号化から除外されます。
$recycle.bin, $windows.~bt, $windows.~ws, boot, windows, windows.old, system volume information, perflogs, programdata, program files, program files (x86), all users, appdata, tor browser

次のファイル名も暗号化から除外されます。
# decrypt files bluesky #.txt, # decrypt files bluesky #.html, ntuser.dat, iconcache.db, ntuser.dat.log, bootsect.bak, autorun.inf, bootmgr, ntldr, thumbs.db

BlueSkyは暗号化にマルチスレッドキューを使って(図7)、マルチスレッド処理を開始します。これにはファイルの暗号化を担当するスレッドや、ローカルファイルシステム上のファイルないしマウントされたネットワーク共有を列挙してキューに追加するスレッドなどがあります。このマルチスレッドアーキテクチャは、Conti v3というべつのランサムウェアのコードと似ています。とくにネットワーク検索モジュールはConti v3のものがそっくりそのまま複製されています。ただしファイルの暗号化ルーチンには違いが見られます。たとえばConti v3はRSAやAESベースでファイルを暗号化しますが、BlueSkyはCurve25519とChaCha20ベースです。

BlueSkyランサムウェアが暗号化にマルチスレッドキューを使う様子。マルチスレッドアーキテクチャはべつのランサムウェアConti v3とコードが類似している
図7 ランサムウェアのマルチスレッドキュー

BlueSkyのファイル暗号化はBabuk ランサムウェアのそれに似ています。両者とも、Curve25519を使ってホストの公開鍵を生成し、生成した公開鍵と攻撃者の秘密鍵を使って共通鍵を生成します。BlueSkyは楕円曲線鍵ペアを生成後、共通鍵のハッシュを計算し、このハッシュを使ってChaCha20アルゴリズム用のファイル暗号化鍵を生成します。最後にBlueSkyはファイルバッファを読み出し、ChaCha20で暗号化してから、元のファイルの内容を置き換えます(図8)。

BlueSkyランサムウェアは鍵ペアを生成し、ChaCha20用の鍵を初期化し、暗号化対象のファイルの内容を読み取り、ファイルを暗号化し、元のファイルの内容を置き換えます。緑で書かれているコメントは各プロセスのステップをハイライトしています。
図8 ファイル暗号化ルーチン

RedLineインフォスティーラとの関連

BlueSkyランサムウェア関連で観測したサンプルはすべて、kmsauto[.]usというアクティブなドメインにホストされていました。BlueSkyランサムウェア関連のサンプルがもっとないかハンティングしていたところ、RedLineインフォスティーラ関連の複数のマルウェアサンプルがこれと同一のドメインにホストされていることがわかりました。RedLineインフォスティーラとBlueSkyランサムウェアとの間にコードの重複は見られませんでしたが、これら両ファミリは初期攻撃ベクトルとしてPowerShellダウンローダを使うなど、初期段階の類似が認められました。

結論

ランサムウェアの作者は、悪意のあるサンプルをエンコード・暗号化したり、ランサムウェアの配信や読み込みを多段型にするなど、最新鋭の技術でセキュリティ防御をかいくぐろうとします。BlueSkyランサムウェアの場合、マルチスレッド処理で被害端末上のファイルを高速に暗号化でき、APIのハッシュ化をはじめとする難読化技術でアナリストのリバースエンジニアリング処理を妨害しようとします。

今後もこうした暗号化技術や配信メカニズムには磨きがかかり、ランサムウェア攻撃が拡大していく可能性は非常に高いといえるでしょう。

Cortex XDR次世代ファイアウォールのNGFWシリーズAdvanced URL Filteringをご利用のパロアルトネットワークスのお客様は、本稿で取り上げた攻撃からの保護を受けています。また悪意のある指標(ドメイン、URL、ハッシュ)は、弊社DNS SecurityWildFireサービスが防止します。

侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、infojapan@paloaltonetworks.com まで電子メールにてご連絡いただくか、下記の電話番号までお問い合わせください(ご相談は弊社製品のお客様には限定されません)。

  • 北米フリーダイヤル: 866.486.4842 (866.4.UNIT42)
  • 欧州: +31.20.299.3130
  • アジア太平洋: +65.6983.8730
  • 日本: +81.50.1790.0200

サイバー保険にご加入の場合はUnit 42を名前指定でリクエストできます。またRansomware Readiness Assessment (ランサムウェア対応力診断)をはじめとする弊社 サイバーリスクマネジメントサービスをリクエストいただくことで、予防的措置を講じることもできます。

IoC

SHA256ハッシュ 説明
  • 2280898cb29faf1785e782596d8029cb471537ec38352e5c17cc263f1f52b8ef
  • 3e035f2d7d30869ce53171ef5a0f761bfb9c14d94d9fe6da385e20b8d96dc2fb
  • 840af927adbfdeb7070e1cf73ed195cf48c8d5f35b6de12f58b73898d7056d3d
  • b5b105751a2bf965a6b78eeff100fe4c75282ad6f37f98b9adcd15d8c64283ec
  • c75748dc544629a8a5d08c0d8ba7fda3508a3efdaed905ad800ffddbc8d3b8df
  • e75717be1633b5e3602827dc3b5788ff691dd325b0eddd2d0d9ddcee29de364f
BlueSkyランサムウェアのペイロード
08f491d46a9d05f1aebc83d724ca32c8063a2613250d50ce5b7e8ba469680605 難読化されたPowerShellダウンローダ
969a4a55bb5cabc96ff003467bd8468b3079f5c95c5823985416c019eb8abe2f PowerShellダウンローダ(デコードしたもの)
c4e47cba1c5fedf9ba522bc2d2de54a482e0ac29c98358390af6dadc0a7d65ce CVE-2020-0796 SMBGhostの特権エスカレーションのエクスプロイト
cf64c08d97e6dfa5588c5fa016c25c4131ccc61b8deada7f9c8b2a41d8f5a32c JuicyPotato
6c94a1bc67af21cedb0bffac03019dbf870649a182e58cc5960969adf4fbdd48 CVE-2021-1732 特権昇格エクスプロイト
RedLine
  • 58db85f0c86640b4c3a2584e9ef5696c526190faf87eaa19085737685bc9e7f5
  • 9ca0e858ff6f163a128fb699d2b801b6b13a2eb1d6cd995302effa5f587cd8d8
  • aecfc82fa44790e0533f0bece0a1ab0860b163838646aa0c019187a37326d477
  • be3e665d389e8b85ceda1e2fc80a41a247de27d1d0b13ee0c2574c1e36ebc6d4
PowerShellダウンローダ
  • 4d696c106f568b99308565172116933c0e26ce2e9ace003a110e8bde0216ddab
  • aa7ff8badcffdff66df6d30bde51b6e3c960be0a3719b73d3875af8e1173bd94
MSILダウンローダ
  • 0dfe7a93ff40834c072c7fdd9381771b1086b67f545fa83c766b2d67a911e47b
  • 1a30e0d65a8a09abc3feb1c86a0619845fc6ab9bdba3ae8800ecec55a647910e
  • 624f129189a05897c176e9feb519521c1b6ef528b0b52e1a7a3290e5a2313a6b
  • fe2e5df2fae90fb90b56e4ea268e8ca68f46dc3365c22b840d865193a48be189
ペイロード

URL

  • hxxps://kmsauto[.]us/someone/l.exe
  • hxxps://kmsauto[.]us/app1.bin
  • hxxps://kmsauto[.]us/server.txt
  • hxxps://kmsauto[.]us/encoding.txt
  • hxxps://kmsauto[.]us/all.txt
  • hxxps://kmsauto[.]us/someone/spooler.exe
  • hxxps://kmsauto[.]us/sti/sti.bin
  • hxxps://kmsauto[.]us/someone/potato.exe
  • hxxps://kmsauto[.]us/someone/ghost.exe
  • hxxps://kmsauto[.]us/someone/start.ps1

身代金要求メモのURL

  • http://ccpyeuptrlatb2piua4ukhnhi7lrxgerrcrj4p2b5uhbzqm2xgdjaqid.onion

レジストリのパス

  • HKCU\Software\<32-byte hex string>\completed
  • HKCU\Software\<32-byte hex string>\recoveryblob
  • HKCU\Software\<32-byte hex string>\x25519_public

MITRE TTP(戦術・技術・手順)

ID 技術 説明
T1486 Data Encrypted for Impact BlueSkyはCreateIoCompletionPort()PostQueuedCompletionStatus()GetQueuedCompletionPort()でファイルを高速に暗号化する
T1140 Deobfuscate/Decode Files or Information BlueSkyのダウンローダはデータをBase64デコード・展開して次の段階のペイロードをアンパックする


BlueSkyランサムウェアのペイロードはRC4ベースの暗号化で身代金要求メモを暗号化し、カスタム暗号化スキームで埋め込み文字列を暗号化する

T1083 File and Directory Discovery BlueSkyはローカルシステム上のファイルを検出できる
T1106 Native API BlueSkyは実行時にAPI呼び出しを使う
T1135 Network Share Discovery BlueSkyはリモートのオープンなSMBネットワーク共有をNetShareEnum()で列挙できる
T1027 Obfuscated Files or Information BlueSkyはAPIを難読化して機能を分析から保護する

追加リソース