ナビゲーションをスキップする
BlackBerry ThreatVector ブログ

ウクライナの政府機関、非営利団体、IT 組織の機能停止を目的とするワイパー型マルウェア WhisperGate

本ブログ記事は、2022年1月27日に米国で公開されたBlackBerryのブログ記事の抄訳版です。原文は こちらからご覧頂けます。

 

概要

2022 年 1 月 13 日、Microsoft 社により、ウクライナの政府機関、非営利団体、IT 組織を標的とするマルウェアキャンペーンの証拠が特定されました。キャンペーンでは「WhisperGate」と呼ばれる破壊的なワイパー型マルウェアが使用されており、その攻撃段階は多段に分かれています。現在のところ、このマルウェアは Windows OS を搭載したデバイスを標的とすることが確認されていますが、ターゲットとされた政府の報告によると、Linux 版の亜種が存在する可能性もあるとのことです。

WhisperGate による攻撃の第 1 段階では、マスターブートレコード(MBR)が上書きされ、偽の(虚偽を含んだ)脅迫状が表示されます。第 2 段階と第 3 段階では、悪意のある Discord リンクからペイロードが取得されます。そして最終段階では、対象のファイルタイプに対してファイルコラプタ(ファイル破壊プログラム)が実行され、データが回復不能な状態まで破壊されます。

どの攻撃段階でも暗号化は確認されていません。また、このマルウェアは金銭目的で作られているわけではなく、現在のところデータの破壊だけを目的としているようです。そのため、脅威アクターは、標的の組織を混乱または機能停止させるためにこのマルウェアを使用していると考えられます。

ウクライナとその周辺地域での地政学的な問題が深刻化していることから、リスクプロファイルが高いすべての組織は、本記事の情報を活用し、このグループによる悪意のある活動の未然防御に取り組むことを強く推奨します。

 

 

オペレーティングシステム

 

リスクと影響

 

技術的解析

第 1 段階 – MBR ワイパー

攻撃の第 1 段階では、マルウェアがマスターブートレコード(MBR)にアクセスして内容を上書きし、システムの次回起動時に偽の脅迫状が表示されるようにします。MBR とは、オペレーティングシステム(OS)を正常にロードするために、OS がシステム内のどこに、どのように格納されているかを識別するためのものです。MBR が修正された結果、システムが動作不能になる場合もあります。

Microsoft 社の初期報告によると、脅威アクターは Python の Impacket ツールを使用して横展開を行い、マルウェアを実行していました。これは以下のコマンドで行われます。

  • “cmd.exe /Q /c start c:\stage1exe 1> \\127.0.0.1\ADMIN$\_[TIMESTAMP] 2>&1” 

SHA256: a196c6b8ffcb97ffb276d04f354696e2391311db3841ae16c8c9f56f36a38e92

攻撃者が最初に使用するファイルは、「stage1.exe」という Win32 バイナリです。このファイルが管理者権限で起動されると、8,192 バイトのバッファがスタック上にロードされます。また、次の図に示す「CreateFileW」関数の呼び出しにより、MBR のハンドルが取得されます。

図 1 - バッファとハンドルを作成し、ディスクへの書き込みを行うコード

そしてこのハンドルを介して、バッファの内容が MBR に上書きされます。このバッファには、偽の脅迫状と、それを被害者のマシン上で表示するためのシェルコードが含まれています。図 2 に示すように、物理ドライブの先頭セクターにある MBR 領域に対し、512 バイトのファイルが書き込まれます。

図 2 - バッファに含まれる偽の脅迫状で MBR が上書きされる様子

バッファに含まれる脅迫状は図 3 のようになっており、システムが次回再起動したときに被害者に提示されます。そこには Bitcoin ウォレットのアドレスとインスタントメッセージシステム Tox の ID が書かれており、データを復元したければ 1 万ドルを支払うよう要求されています。しかし、この攻撃は復元手段を用意せずに MBR を上書きし、パーティションテーブルを破壊しているため、この内容はまったくの虚偽であると言えます。

図 3 - システムの再起動後に被害者に提示される偽の脅迫状

WhisperGate が再起動を強制することはなく、被害者自らがシステムを再起動するのを待ちます。マルウェアはこのように再起動を遅らせ、その間に以下に詳述する追加の攻撃段階を実行しています。

 

第 2 段階 - ダウンローダ

SHA256: dcbbae5a1c61dbbbb7dcd6dc5dd1eb1169f5329958d38b58c3fd9384081c9b78

攻撃の第 2 段階では .NET マルウェアが使用されます。このファイルはダウンローダであり、ハードコードされた Discord のコンテンツデリバリネットワークのリンクに対し、HTTP 接続を確立するために使用されています。図 4 に示すように、このリンクは「Tbopbh.jpg」という JPG ファイルをホストしており、ファイルの中には、攻撃の第 3 段階を実行するための悪意のあるペイロードが含まれています。なお、このファイルは、第 2 段階のダウンローダのアセンブリを逆コンパイルした結果と同じ名前になっています。

図 4 - 第 3 段階のマルウェアをダウンロードする Discord リンク

Discord サーバーへのアクセスに先立ち、ダウンローダは図 5 のように PowerShell を起動し、Base64 でエンコードされたコマンドを実行します。このコマンドは 20 秒間のスリープであり、これにより、マルウェアが標的のマシン上で検知されにくくなっています。

図 5 - PowerShell を起動して 20 秒間のスリープを実行するコード

そして、次の段階のペイロードを取得するため、162[.]159[.]135[.]233 でホストされる Discord サーバーへの接続を確立します。この様子を以下に示します。

図 6 - 第 2 段階のダウンローダが Discord サーバーへの TCP 接続を確立する様子

 

第 3 段階 - インジェクタ

SHA256: 923eb77b3c9e11d6c56052318c119c1a22d11ab71675e6b95d05eeb73d1accd6

第 3 段階のペイロードとして取得されるファイルは .NET アセンブリファイルであり、ファイル内のバイト列全体を反転させて難読化されています。ペイロードのバイトの順序を反転させると、「Frkmlkdkdubkznbkmcf.dll」という Win32 DLL(ダイナミックリンクライブラリ)ファイルが得られます。図 7 に示すように、このアセンブリには 3 つのリソースが含まれています。

図 7 - 3 つのリソースを含むアセンブリ

リソース「78c855a088924e92a7f60d661c3d1845」は、メモリ上に読み込まれた後、XOR 演算でデコードされます。この結果、別の .NET DLL ファイルである「zx_fee6cce9db1d42510801fc1ed0e09452.dll」が得られ、中には「AdvancedRun」と「Waqybg」という 2 つの追加リソースが含まれています。

図 8 - 追加リソース「AdvancedRun」と「Waqybg」

リソース「AdvancedRun」は、Windows Defender の実行を停止し、メモリ上から削除するために使用されます。この処理は、PowerShell を起動して複数のコマンドを実行することによって行われます。

 

第 4 段階 - ファイルコラプタ

SHA256: 34ca75a8c190f20b8a7596afeb255f2228cb2467bd210b2637965b61ac7ea907

このマルウェアの最終段階では、ファイルの破壊が行われます。この時点でリソース「Waqybg」が実行され、対象とする各ファイルの先頭を 1 MB の静的データで上書きし始めます。解析時には、この結果としてハードディスクの空き容量がすぐに枯渇し、解析用の仮想マシン(VM)がクラッシュしました。

マルウェアには以下に示すファイル拡張子のリストがハードコードされており、これらが破壊対象とされます。ファイル先頭への上書きが終わると、マルウェアはファイル名の末尾にランダムな 4 バイトの拡張子を付加します(例:「File.1234」)。

.HTML .HTM .PHTML .PHP .JSP .ASP .PHPS .PHP5 .ASPX .PHP4 .PHP3 .DOC .DOCX .XLS .XLSX .PPT .PPTX .PST .MSG .EML .TXT .CSV .RTF .WKS .WK1 .PDF .DWG .JPEG .JPG .DOCM .DOT .DOTM .XLSM .XLSB .XLW .XLT .XLM .XLC .XLTX .XLTM .PPTM .POT .PPS .PPSM .PPSX .HWP .SXI .STI .SLDX .SLDM .BMP .PNG .GIF .RAW .TIF .TIFF .PSD .SVG .CLASS .JAR .SCH .VBS .BAT .CMD .ASM .PAS .CPP .SXM .STD .SXD .ODP .WB2 .SLK .DIF .STC .SXC .ODS .3DM .MAX .3DS .STW .SXW .ODT .PEM .P12 .CSR .CRT .KEY .PFX .DER .OGG .JAVA .INC .INI .PPK .LOG .VDI .VMDK .VHD .MDF .MYI .MYD .FRM .SAV .ODB .DBF .MDB .ACCDB .SQL .SQLITEDB .SQLITE3 .LDF .ARC .BAK .TAR .TGZ .RAR .ZIP .BACKUP .ISO .CONFIG


そして、すべての対象ファイルの上書きが完了すると、以下のように ping コマンドを実行した後、自身をマシンから削除します。

“cmd.exe /min /C ping 111.111.111.111 -n 5 -w 10 > Nul & Del /f /q \”[Filepath]\”

 

まとめ

WhisperGate は、多段階の攻撃とステルス性の高い手法により、極めて破壊的なマルウェアとしてユニークな存在となっています。解析を通じて、このマルウェアは何らかの金銭的な利益を得るためではなく、標的の組織を混乱させる目的で用いられていることがわかってきました。

本件の調査は現在も進行中であり、BlackBerry でも引き続き解析を行っています。新たな展開があり次第、その情報を共有する予定です。WhisperGate に関しては、今後も何かと耳にすることがあるでしょう。特に、このワイパー型マルウェアの Linux 版が存在するという可能性が立証されるとすればなおさらです。続報については、今後のブログでお伝えします。

 

YARA ルール

以下の YARA ルールは、この記事で説明した脅威を捕捉するために BlackBerry の Research & Intelligence Team が作成しました。

rule Stage_1

{
   meta:
      description = "Detects Stage 1 WhisperGate"
      author = "BlackBerry Threat Research"
      date = "2022-01-17"
      license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

      strings:
         // Regex for ransom note in MBR
         $re1 = /You should pay us \$[0-9]{1,3}k via bitcoin wallet/   

         // MBR signature
         $b1 = {55 AA}
         // Int 13 Bios interrupt
         $b2 = {CD 13}
         // Extended write interrupt code
         $b3 = {B4 43}

         // Strings in MBR replacement data
         $s1 = "Your hard drive has been corrupted."
         $s2 = "tox ID"
         $s3 = "We will contact you to give further instructions."

         // String used in CreateFileW call to open main physical drive
         $s4 = "\\\\.\\PhysicalDrive0" wide

         // The hardcoded data it uses to overwrite the MBR

      condition:
         // MZ header
         uint16(0) == 0x5a4d and

         ((all of ($b*) and 2 of ($s*)) or (all of ($s*) and $re1))
   }

import "pe"

rule Stage2
{
   meta:
      description = "Detects WhisperGate Stage 2"
      author = "BlackBerry Threat Research"
      date = "2022-01-17"
      license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

   strings:
      // Regex for any attachment link coming from the same discord channel
      $re1 = /https:\/\/cdn\.discordapp\.com\/attachments\/928503440139771947\/[0-9]{18}\/[^<>:"\/\|?*]*\b/ wide

      // 3 strings combined to make powershell command that evaluates to "Start-Sleep -s 10"
      $s1 = "powershell" wide
      $s2 = "-enc UwB0AGEAcgB0AC" wide
      $s3 = "0AUwBsAGUAZQBwACAALQBzACAAMQAwAA==" wide

      // The method name being looked for in stage 3
      $s4 = "Ylfwdwgmpilzyaph" wide

      // Used with .Replace("x", "") for reflection on WebClient to get DownloadData method
      $s5 = "DxownxloxadDxatxxax" wide

   condition:
      // MZ header
      uint16(0) == 0x5a4d and
      // is a .NET binary
      pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].size != 0 and

      $re1 and 2 of ($s*)
}

rule Stage3
{
   meta:
      description = "Detects WhisperGate Stage 3"
      author = "BlackBerry Threat Research"
      date = "2022-01-17"
      license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

   strings:
      // The same as a string from stage2, not sure what it is
      $s1 = "Ylfwdwgmpilzyaph"
      // Names of resources
      $s3 = "78c855a088924e92a7f60d661c3d1845"
      $s4 = "7c8cb5598e724d34384cce7402b11f0e"

   condition:
      // MZ header
      uint16(0) == 0x5a4d and
      // is a .NET binary
      pe.data_directories[pe.IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR].size != 0 and

      all of them
}

import "pe"

rule Stage3_reversed
{
   meta:
      description = "Detects WhisperGate Stage 3 Reversed"
      author = "BlackBerry Threat Research"
      date = "2022-01-17"
      license = "This Yara rule is provided under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0) and open to any user or organization, as long as you use it under this license and ensure originator credit in any derivative to The BlackBerry Research & Intelligence Team"

   strings:
      // This string was also in stage2 so defo want to look into it
      // but this is the reversed version because Stage3 is backwards
      $s1 = "hpayzlipmgwdwflY"
      // Names of resources backwards
      $s3 = "5481d3c166d06f7a29e429880a558c87"
      $s4 = "e0f11b2047ecc48343d427e8955bc8c7"

   condition:
      // MZ header backwards at the end of the file
      uint16(filesize-2) == 0x4d5a and

      all of them
}

 

侵入の痕跡(IOC)

ファイル

a196c6b8ffcb97ffb276d04f354696e2391311db3841ae16c8c9f56f36a38e92 (Stage 1)
dcbbae5a1c61dbbbb7dcd6dc5dd1eb1169f5329958d38b58c3fd9384081c9b78 (Stage 2)
923eb77b3c9e11d6c56052318c119c1a22d11ab71675e6b95d05eeb73d1accd6 (Stage 3)
9ef7dbd3da51332a78eff19146d21c82957821e464e8133e9594a07d716d892d (Stage 3 Reversed)
34ca75a8c190f20b8a7596afeb255f2228cb2467bd210b2637965b61ac7ea907 (File Wiper)
35feefe6bd2b982cb1a5d4c1d094e8665c51752d0a6f7e3cae546d770c280f3a (Decoded Resource)

Bitcoin ウォレットのアドレス

1AVNM68gj6PGPFcJuftKATa4WLnzg8fpfv

ToxID

8BEDC411012A33BA34F49130D0F186993C6A32DAD8976F6A5D82C1ED23054C057ECED5496F65

Discord リンク

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

IP アドレス

162[.]159[.]135[.]233

 


BlackBerry によるサポート

もしBabuk Ransomwareのような脅威にさらされているなら、BlackBerry にお任せください。現在 BlackBerry 製品を利用していなくても問題ありません。

BlackBerry のインシデント対応チームは、世界的に活躍するコンサルタントから構成され、ランサムウェアや持続的標的型攻撃(APT)など、さまざまなインシデントへの対応と封じ込めのサービスを専門としています。

弊社はグローバルコンサルティングチームを常に待機させており、ご希望があれば、24 時間サポートと現地支援を提供できます。次の URL からご相談ください。  https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

 

・お問い合わせ:https://www.blackberry.com/ja/jp/forms/enterprise/contact-us

・イベント/セミナー情報:https://www.blackberry.com/ja/jp/events/jp-events-tradeshows

・サイバーセキュリティチームによるコンサルティング: https://www.blackberry.com/ja/jp/services/blackberry-cybersecurity-consulting/overview

・BlackBerry Japan:https://www.blackberry.com/ja/jp

The BlackBerry Research and Intelligence Team

About The BlackBerry Research and Intelligence Team

BlackBerry の Research and Intelligence Team は、新たに生じている脅威と持続的な脅威を検証し、セキュリティ担当者とその所属企業のために、インテリジェンス解析を提供しています。