Protect Against Russia-Ukraine Cyber Activity

[2022-03-04 06:15 PSTの内容を反映] 脅威に関する情報: 現在進行中のロシアとウクライナのサイバー紛争

A conceptual image representing cyber conflict such as the use of CVE-2021-32648 and WhisperGate currently targeting Ukraine.

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

概要

2022年1月14日以降、ウクライナ政府の多数のWebサイトを標的とした一連の攻撃が報告されています。これらの攻撃により多数の政府機関のWebサイトが改ざんされたり、アクセスできなくなったりしていることが判明しました。この結果、ウクライナ政府は、ロシアが自国のWebサイトに対するこれらの攻撃を首謀したと公式に非難しました。

その翌日、2022年1月13日に最初に観測された「WhisperGate」と呼ばれる新しいマルウェアの概要が公開されました。このマルウェアは、Windows Defender Threat Protectionを無効にすること、破壊的性質を持つこと、ウクライナの複数の組織を標的にしていることが判明しました。Microsoftはこのカスタムマルウェアを使用しているのが「DEV-0586」と呼ばれる脅威アクターであると公表しています。

いずれの攻撃もウクライナの組織を標的としていますが、2つの脅威はこれまで異なる状況で実行されてきました。

かかる事象を受け、パロアルトネットワークスのリサーチャーは、報告された脅威の悪用様態を問わず全世界でお客様が適切に保護されるよう、ただちに対策を取りました。これらの攻撃から最終的には以下2つの脅威の調査が行われました。

  1. ウクライナ政府系Webサイトへの攻撃の背後にあったと考えられるコンテンツ管理システム(CMS)プラットフォーム「OctoberCMS」の脆弱性「CVE-2021-32648
  2. 脅威アクターDEV-0586に帰属する「WhisperGate」マルウェア

パロアルトネットワークスのお客様は、Cortex Xpanseや、次世代ファイアウォールの脅威防御セキュリティサブスクリプションにより、脆弱性のあるOctoberCMSのインスタンスや、インターネットから直接アクセス可能なインスタンスを特定することができます。WhisperGateマルウェアに対する防御は、Cortex XDRに加え、WildFireおよびAdvanced URL Filteringサブスクリプションを備えた次世代ファイアウォールにも搭載されています。またこれら2つの脅威の検出・緩和を支援するCortex XSOARパックも利用可能です。

ウクライナを狙う脅威について本稿で説明する内容 関連するCVE/マルウェア/影響を受けるソフトウェア
ウクライナ政府系Webサイトに対する攻撃 OctoberCMSに影響を与えるCVE-2021-32648
ウクライナで複数の組織に対する攻撃が発生 WhisperGateマルウェア Windows Defender Threat Protection を無効化

目次

CVE-2021-32648の脆弱性
WhisperGateマルウェアファミリ
緩和策
WhisperGateのハンティング
結論
追加リソース

CVE-2021-32648の脆弱性

CVE-2021-32648はOctoberCMSのバージョン1.0.472未満のプラットフォームに存在する脆弱性で、攻撃者は特別に細工したアカウントのパスワードリセット要求を使って任意のアカウントへのアクセス権を取得します。この脆弱性により、ウクライナ政府が利用している基盤Webサイトへのアクセスが可能になったものと考えられています。

この脆弱性の発見後、パロアルトネットワークスの脅威リサーチャーは、同脆弱性を修正するパッチのリバースエンジニアリングをただちに開始し、ごく短時間で実際に機能する概念実証(PoC)を作成することができました。その日のうちに公開されたPoCにより、さまざまな組織がこの脆弱性とそのエクスプロイト方法への理解を深めることができました。自分たちで作成したPoCを使ったデモンストレーション動画を以下にリンクします。このビデオでは、悪意のある攻撃者がCVE-2021-32648の脆弱性を悪用し、侵害したOctoberCMSのアカウントにログインし、サーバーのホストするWebページを改ざんする様子を解説しています。

この脆弱性がどのように悪用されたかを調べるため、OctoberCMSの開発者がバージョン1.0.472に追加したCVE-2021-32648の脆弱性を緩和するパッチを分析したところ、脆弱なコードはOctoberCMSのOctober RainライブラリAuth/Model/User.phpファイルに存在することがわかりました。この脆弱性をもたらすコードはcheckResetPasswordCodeという名前の関数内、具体的にはUser.phpの281行目にあります。次のコードは、HTTPリクエスト内で送信されたリセットコードと、正当なリセット処理でOctoberCMSが生成するリセットコードとを比較することで、受信したパスワードリセットリクエストを検証しようとしています。

このコードはCVE-2021-32648を悪用しており、そのさいHTTPリクエスト内で送信されたリセットコードと、正当なリセット処理でOctoberCMSが生成するリセットコードとを比較することで、受信したパスワードリセットリクエストを検証しようとしています。

この脆弱性の悪用は、アカウントのパスワードリセット用に特別に細工したHTTPリクエスト内で、リセットコードとしてtrueのブール値を指定するだけです。ブール値のtrueを指定すると、2つの変数の型が異なっていても、ブール値trueとリセットコード文字列を比較した結果としてブール値trueが返されます。これでアクターから受信したパスワードリセット要求の検証が成功したのと同じことになってアクターはパスワードを変更できるようになります。

OctoberCMSの開発者は、バージョン1.0.472でこの脆弱性を修正するにあたり、HTTP POSTリクエスト経由でユーザーが提供したリセットコードの値を比較するさい、==ではなく===を使用するよう、上記コード行を変更しました。===== との違いは、前者が変数の「値」だけを比較するのとは異なり、後者は「値」と「値の型」の両方を比較する点です。次の2つのコマンドでPHPコードを実行すると、==を使って文字列コードをブール値trueと比較するとブール値はtrueとなり、===を使って同じ比較をするとブール値はfalseとなってその違いがわかります。

CVE-2021-32648に脆弱なOctoberCMSのバージョンと修正版との違いを示すため、以下の2つのコマンドでPHPコードを実行しています。==を使って文字列コードをブール値trueと比較するとtrueになり、===を使って同じ比較をするとfalseになります。

CVE-2021-32648の脆弱性分析を受け、さまざまな製品で保護対策が作成・強化されました。これら保護の詳細は本稿末の「緩和策」に譲ります。

WhisperGateマルウェア

2022年1月13日にMicrosoftが初めて観測したWhisperGateマルウェアは、Microsoft Windows Defenderの削除と標的上のファイル破損を目的としたコンピュータネットワーク攻撃(CNA)マルウェアです。同マルウェアは2つのサンプルで構成されています。1つはランサムウェアで、もう1つはインメモリのMicrosoft Intermediate Language(MSIL)ペイロードを配信するビーコン用インプラントです。このインメモリコードは、LOLBIN(Living Off the Land Binaries: 侵害先の環境に元からあるバイナリを使う回避テクニック)を使用して検出を回避し、特定の監視ツールが存在する場合には起動できないようにするなどの分析対策技術を用いています。本稿執筆時点で、WhisperGateとして確認されている既知のサンプルは、Stage1.exeStage2.exeの2つです。Stage1.exeはランサムウェアと称してターゲットのマスターブートレコードを512バイトで上書きし、再起動時に次のような身代金要求メモを表示します。

WhisperGateマルウェアのサンプルがドロップする身代金要求メモ
図1 Stage1の身代金要求メモ

Stage2.exeは、HTTPS接続によりDiscordのコンテンツデリバリーネットワーク(CDN)にホストされているJPGファイルをダウンロードするビーコン用インプラントです。DiscordのCDNはユーザーの作成したサービスで、そこに添付ファイルをホストできますが、これじたいは悪性のものではありません。ホストされているファイルは、以下のURLから取得されます。

hxxps://cdn.discordapp[.]com/attachments/928503440139771947/930108637681184768/Tbopbh.jpg

ファイルTbopbh.jpgは、インメモリにロードされ、破壊機能を起動する悪意のあるペイロードです。このペイロードには、以下のような活動パターンがあります。

1. InstallUtil.exeは、ホストの%TEMP%ディレクトリ(C:\Users\[USERNAME]\AppData\Local\Temp)にコピーされます。このファイルは、正規のMicrosoft Windowsバイナリです。

2. エンコードされたコマンドでPowerShellインスタンスが2つ生成され、10秒間スリープします(C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -enc UwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBzACAAMQAwAA==)。

3. C:\Users\[USERNAME]\AppData\Local\TempNmddfrqqrbyjeygggda.vbsという名前のVisual Basic Script(VBS)が作成されます。

4. プロセスwscript.exeを使ってステップ3のVBSスクリプトが実行されます。このVBSスクリプトを使ってPowerShellを呼び出し、Windows Defenderの除外パスをC:\(C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" Set-MpPreference -ExclusionPath 'C:\')に設定します。

5. AdvancedRun.exeが作成され、C:\Users\[USERNAME]\AppData\Local\Tempディレクトリに書き込まれます。

6.AdvancedRun.exeを使ってWindows Defenderを削除・停止するためのPowerShell.exeが実行されます。以下のコマンドパラメータがAdvancedRunに渡されます。

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" /WindowState 0 /CommandLine "rmdir 'C:\ProgramData\Microsoft\Windows Defender' -Recurse" /StartDirectory "" /RunAs 8 /Run

"C:\Users\USERNAME]AppData\Local\Temp\AdvancedRun.exe" /EXEFilename "C:\Windows\System32\sc.exe" /WindowState 0 /CommandLine "stop WinDefend" /StartDirectory "" /RunAs 8 /Run

7. PowerShellプロセスを使ってWindows Defenderを削除します(C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe rmdir 'C:\ProgramData\Microsoft\Windows Defender' -Recurse)。

8. C:\Users\[USERNAME]\AppData\Local\TempディレクトリからファイルInstallUtil.exeが実行されます。インメモリペイロード(Tbopbh.jpg)は、InstallUtil.exeプロセスのコンテキストで実行されます。

9. 複数インスタンスのcmd.exePing.exeを呼び出し、ファイルInstallUtil.exeを削除します(cmd.exe /min /C ping 111.111.111[.]111 -n 5 -w 10 > Nul & Del /f /q %TEMP%\InstallUtil.exe)。

10. stage2.exeのバイナリがC:\Users\[USERNAME]\AppData\Local\TempディレクトリからファイルAdvancedRun.exeを削除します。

11. ホスト111.111.111[.]111へのICMPトラフィックが送信されます。

12. フロッピードライブ(A:)を除き、マウント済みのUSBドライブ上のものを含む全ファイル・ディレクトリがターゲットにされます。以下のファイルの拡張子は、1バイトの0xCCの値で上書きされます。

WhisperGateマルウェアがターゲットにするファイル拡張子の一覧
図2 ターゲットにされるファイルの拡張子

13. 1メガバイト以上のファイルがターゲットになった場合は、上書き時に1MBに切り詰められます。

14. 以降Windows セキュリティの「Virus & threat protection(ウイルスと脅威の防止)」が利用できなくなります。

WhisperGateマルウェアがWindows Securityから「Virus & threat protection(ウイルスと脅威の防止)」を削除した様子を示すスクリーンショット
図3 「Virus & threat protection(ウイルスと脅威の防止)」が削除されている

緩和策

OctoberCMSのBuild 472およびv1.1.5未満を使用している組織は、最新バージョンにアップデートすることが推奨されます。さらに、この脆弱性を悪用するにはWebサーバーが7.4以下のPHPを実行している必要があります。

パロアルトネットワークスのお客様は、以下の方法でOctoberCMSの脆弱性に対する保護を受けています。

  • 脅威ID92199がこの脆弱性を特定するために公開されました。
  • Cortex Xpanseはインターネットから直接アクセス可能なOctoberCMSのインスタンスをお客様が検出できるようにするポリシーを用意しています。

パロアルトネットワークスのお客様は、以下の方法でWhisperGateマルウェアに対する保護を受けています。

  • WildFireはWhisperGateのサンプルを悪意のあるものとして適切に識別します。
  • 観測された悪意のあるDiscordのURLはすべて悪意のあるものとしてフラグが立てられています。
  • Cortex XDRは、機械学習ベースのローカル分析、Behavioral Threat Protection(BTP)モジュール、およびランサムウェア保護モジュールを使用して、このマルウェアの実行を防止します。

Cortex XSOARの「WhisperGate & CVE-2021-32648」パックでこの2つの脅威の自動検出・緩和が可能です。詳しくはXSOARのマーケットプレイスをご確認ください。

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

WhisperGateのハンティング

パロアルトネットワークスCortex XDRをご利用のお客様は、Cortex Managed Threat Huntingサービスの専門家が作成した以下のXQLクエリでWhisperGateマルウェアに関連する指標をデータセットから探し出すことができます。

結論

Unit 42脅威インテリジェンスチームは、この進化する状況を常に監視し、最近のイベントから既知の指標を積極的に探し、弊社のお客様に対する攻撃を阻止するための保護策を講じる準備をしています。

最新のリサーチ結果は製品別の保護として実装されていますが、状況の解明が進むつど、必要に応じてこれらの保護は強化されます。新たな情報と推奨事項が利用可能になりしだい、本概要は更新されます。

追加リソース

CVE-2021-32648の情報

WhisperGateの情報

2022-01-21 18:30 JST: 2022-01-20 14:14 PST の内容を反映
2022-03-07 12:00 JST: 2022-03-04 06:15 PST の内容を反映