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エンコード済みデータストリームは、start.ps1から抽出されてデコード・展開されたあと、さらにまたべつのstage.ps1というPowerShellスクリプトへとつながります。このPowerShellスクリプトは、無意味なコメントを多数含めることで、悪意のあるアクティビティを隠そうとしていました。これらの無意味なコメントを削除してみると、start.ps1が自身を実行しているユーザーの権限に基づいて、hxxps://kmsauto[.]us/someone/から多数ペイロードをダウンロードしていることがわかりました(図2)。
ローカル特権昇格
ローカル特権昇格用の追加ペイロードをダウンロードする前に、PowerShellスクリプトstage.ps1は自身が特権ユーザーとして実行されているかどうかを判定します。特権ユーザーとして実行されていれば次のステップに進み、ランサムウェアのペイロードをダウンロード・実行します。特権ユーザーでなければ、ホストのオペレーティングシステム(OS)のバージョンに応じた手法でローカルの特権昇格を行います。ホストのOSバージョンがWindows XP、7、8などWindows 10より前のものなら、このスクリプトはJuicyPotatoと呼ばれるローカル特権昇格ツールを改変したものをダウンロードして実行します。ホストのOSバージョンがWindows 10かそれ以降のものであれば、このスクリプトはghost.exeとspooler.exeをダウンロードして実行し、それぞれのツールでローカル特権昇格の脆弱性CVE-2020-0796とCVE-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は解析対策技術を複数実装しています。これらの技術には、文字列の暗号化、APIの難読化、アンチデバッグの機構などが含まれます。この結果、Windows APIの関数名を難読化したり、APIの解決に間接呼び出しが使えるにようなっています。またBlueSkyは、API名をDJBハッシュ関数でエンコードすることでマルウェア解析を妨害しています(図4)。
ランサムウェアのアーティファクト(痕跡)
BlueSkyは、ボリューム情報、マシンGUID、プロダクトID、インストール日を組み合わせた値のMD5ハッシュを計算して一意なユーザーIDを生成します(図5)。またこのユーザーIDでミューテックスのGlobal\<32-byte ID>を生成します(この<32-byte ID>の部分に計算された一意なユーザー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に格納されます。
ファイル暗号化
たいていのランサムウェアファミリはファイル拡張子一覧を用意して特定のファイルタイプを暗号化の対象にします。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のファイル暗号化はBabuk ランサムウェアのそれに似ています。両者とも、Curve25519を使ってホストの公開鍵を生成し、生成した公開鍵と攻撃者の秘密鍵を使って共通鍵を生成します。BlueSkyは楕円曲線鍵ペアを生成後、共通鍵のハッシュを計算し、このハッシュを使ってChaCha20アルゴリズム用のファイル暗号化鍵を生成します。最後にBlueSkyはファイルバッファを読み出し、ChaCha20で暗号化してから、元のファイルの内容を置き換えます(図8)。
RedLineインフォスティーラとの関連
BlueSkyランサムウェア関連で観測したサンプルはすべて、kmsauto[.]usというアクティブなドメインにホストされていました。BlueSkyランサムウェア関連のサンプルがもっとないかハンティングしていたところ、RedLineインフォスティーラ関連の複数のマルウェアサンプルがこれと同一のドメインにホストされていることがわかりました。RedLineインフォスティーラとBlueSkyランサムウェアとの間にコードの重複は見られませんでしたが、これら両ファミリは初期攻撃ベクトルとしてPowerShellダウンローダを使うなど、初期段階の類似が認められました。
結論
ランサムウェアの作者は、悪意のあるサンプルをエンコード・暗号化したり、ランサムウェアの配信や読み込みを多段型にするなど、最新鋭の技術でセキュリティ防御をかいくぐろうとします。BlueSkyランサムウェアの場合、マルチスレッド処理で被害端末上のファイルを高速に暗号化でき、APIのハッシュ化をはじめとする難読化技術でアナリストのリバースエンジニアリング処理を妨害しようとします。
今後もこうした暗号化技術や配信メカニズムには磨きがかかり、ランサムウェア攻撃が拡大していく可能性は非常に高いといえるでしょう。
Cortex XDR、次世代ファイアウォールのNGFWシリーズ、Advanced URL Filteringをご利用のパロアルトネットワークスのお客様は、本稿で取り上げた攻撃からの保護を受けています。また悪意のある指標(ドメイン、URL、ハッシュ)は、弊社DNS Security、WildFireサービスが防止します。
侵害の懸念があり弊社にインシデントレスポンスに関するご相談をなさりたい場合は、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ハッシュ | 説明 |
|
BlueSkyランサムウェアのペイロード |
08f491d46a9d05f1aebc83d724ca32c8063a2613250d50ce5b7e8ba469680605 | 難読化されたPowerShellダウンローダ |
969a4a55bb5cabc96ff003467bd8468b3079f5c95c5823985416c019eb8abe2f | PowerShellダウンローダ(デコードしたもの) |
c4e47cba1c5fedf9ba522bc2d2de54a482e0ac29c98358390af6dadc0a7d65ce | CVE-2020-0796 SMBGhostの特権エスカレーションのエクスプロイト |
cf64c08d97e6dfa5588c5fa016c25c4131ccc61b8deada7f9c8b2a41d8f5a32c | JuicyPotato |
6c94a1bc67af21cedb0bffac03019dbf870649a182e58cc5960969adf4fbdd48 | CVE-2021-1732 特権昇格エクスプロイト |
RedLine | |
|
PowerShellダウンローダ |
|
MSILダウンローダ |
|
ペイロード |
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デコード・展開して次の段階のペイロードをアンパックする
|
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を難読化して機能を分析から保護する |