このページの本文へ

McAfee Blog

サプライチェーン攻撃を行なったSUNBURSTバックドア追加分析

2020年12月24日 17時30分更新

文● McAfee

  • この記事をはてなブックマークに追加
  • 本文印刷

エグゼクティブサマリー

 SolarWindsに関連する最近の情報開示は、かなりの注目を集めています。より広範なキャンペーンに関する既存の分析の結果、トロイの木馬化したSUNBURSTに関連する特定のIoCが検出されましたが、Advanced Threat Research(ATR)チーム内の焦点は、追加の永続性対策の可能性を判断することでした。バックドアを分析したところ、アクセスのレベルは、追加の永続化メカニズムが確立されている可能性があるという仮定と、敵対者からの意図に関するいくつかの推論に役立つことがわかりました

・興味深い点は、SolarWindsのImprovement Client実行可能ファイルとそのバージョン「3.0.0.382」の存在のチェックでした。Improvement Clientは、認証方法によるOrionユーザーアカウントの数や、監視対象のデバイスやアプリケーションに関するデータなど、かなりの情報を収集できるプログラムです。
・httpルーチンの注目すべき点は、攻撃者が被害者のクラウドおよび/またはワイヤレスネットワークの詳細/アクセスを調べていたことを示す可能性のあるhttpトラフィック内の特定のキーワードの検索でした。
・被害者がユーザー名とパスワードを使用してプロキシサーバーを使用している場合でも、バックドアはその情報を取得し、それを使用してC2への接続を構築することができます。

利用可能なリソース

 この分析では、バックドアが追加の永続化方法を確立する可能性をサポートしているという前提に焦点を当てますが、利用可能な指標に対するカバレッジに関する保証を提供することの重要性を認識しています。次のリソースが利用可能です。

・KB93861:SolarWinds Sunburst BackdoorのMcAfeeの適用範囲:https://kc.mcafee.com/corporate/index?page = content&id = KB93861
・SUNBURSTマルウェアとSolarWindsサプライチェーンの侵害:保護の概要の詳細だけでなく、MVISION EDRまたはMARを使用してSUNBURSTを検索する方法: https://www.mcafee.com/blogs/other-blogs/mcafee-labs/sunburst-malware-and-solarwinds-supply-chain-compromise/
・MVISION Insightsキャンペーン:SUNBURSTバックドアで複数のグローバルな犠牲者に影響を与えるSolarWindsサプライチェーン攻撃。このリソースは、潜在的なターゲットの地理とセクターに基づいて、利用可能な指標の普及に関する最新の追跡を提供します: https://www.mcafee.com/enterprise/en-us/lp/insights-preview.html#

 この分析により、追加のリソースが利用可能になり、より広いコミュニティーが利用可能になります。

バックドア分析

 多くの同業他社からこのSUNBURSTトロイの木馬に関する優れた分析が存在します。ここでの目的は、調査結果を複製することではなく、これまでカバーされていなかった分析を提供することです。目的は、潜在的な被害者がキャンペーンの機能をよりよく理解できるようにして、追加の永続化メカニズムがある可能性を検討できるようにすることです。

 この分析の目的のために、ファイル「SolarWinds.Orion.Core.BusinessLayer.dll」に焦点を当てました。この特定のファイルは、その名前が示すように、SolarWinds ORIONソフトウェアスイートに関連付けられており、バックドア「SunBurst」を含むクラスが追加されて変更されています。

図1.追加されたモジュールと依存関係

 バックドアをさらに深く掘り下げると、最初の呼び出しは、次の関数を持つ追加されたクラス「OrionImprovementBusinessLayer」に対するものであることがわかります。

図2.挿入されたクラスの開始

 クラスは、モジュールが実行されているかどうかを確認するチェックから始まり、実行されていない場合は、サービスを開始し、その後、休止期間を開始します。

図3.バックドアのスリープシーケンス

 FireEyeによって詳細に説明されているように、この休止期間は数分から最大2週間の範囲で、実際の休止期間は、Orionプロセスのハッシュ、ファイルの書き込み時間、プロセスの実行など、コードから渡される必要のあるチェックによって異なります。このように長いスリープ期間は珍しく、非常に忍耐強い敵だと言えるでしょう。

 バックドア内の最も重要な文字列は、base64エンコーダーとともに.NETの圧縮ライブラリのDeflateStreamクラスでエンコードされます。ブロックリストを調べることにより、さらに調査する必要のある調査結果を発見します。最初のエントリは、ローカルIPアドレス範囲とネットマスクです。


・10.0.0.0 255.0.0.0
・172.16.0.0 255.240.0.0
・192.168.0.0 255.255.0.0


 同等のIPv6ローカルアドレスが続きます:


fc00::,fe00::, fec0::,ffc0::,ff00::,ff00::


 次に、IPアドレスとそれに関連するサブネットマスクのリストがあります。それらのIPアドレスに対してwhoisを実行して、それらが誰に属しているかを把握しました。特定のエントリに実装されているネットマスクは「かなり」固有ですが、次のIPがブロックリストに挿入された理由は示されていません。したがって、攻撃者は特定のターゲットを回避したいという意図的な意図を持っていたと想定する必要があります。

 被害者がブロックリストに含まれていないと仮定すると、サンプルは名前付きパイプ583da945-62af-10e8-4902-a8f205c72b2eの作成に進みます。これは、バックドアのひとつのインスタンスのみが実行されていることを確認するために行なわれます。これは、独自の環境内で実行したレプリケーションを通じて確認できました。

図4.バックドアの実行

 バックドアを実行したところ、この値がコードにハードコードされていることを確認でき、休止期間が過ぎるとサービスが開始され、名前付きパイプが作成されます。この時点で、バックドアは、図5に示すように、インストールされているシステムに対して一意のUserID MD5値も作成します。

図5.ユーザーIDの作成

 この特定のルーチンは、最初にシステムのデバイス情報を読み取りますが、ループバックインターフェイス(「Select * From Win32_NetworkAdapterConfiguration where IPEnabled = true」に言及しているReadDeviceInfoルーチンのコードの一部)を無視します。次に、Device-infoがドメイン名と結合され、その後にレジストリキー(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography)の値が続きます。次に、この情報を使用して、その文字列のMD5値を作成します。

 モジュールは「更新」ルーチンを開始します。このルーチンは、図6に示すように、バックドアの検出に対して使用される可能性のある不要なサービスなどに対する検証用に設計された連続ループです。

図6.更新ループ

情報収集

 バックドアはシステムから情報を収集します。次の情報は、「CollectSystemDescription」と呼ばれるルーチンによって収集されます。いくつかの例が含まれます。

・OSバージョン、メジャー/マイナー–32ビットまたは64ビット
・ネットワーク構成、IP、NetBIOS、IPV6などに関する情報
・ホスト、SID、ユーザー名、システムディレクトリ。特に、管理者アカウントのSIDが検索されます。

 追加のデータを収集するための他のサブルーチンがあります。たとえば、ネットワークアダプターからの情報を列挙する場合、バックドアはGetNetworkAdapterConfigurationルーチンを使用します。ルーチンは次の情報を収集しています。

図7.ネットワーク情報の収集

 特定の「不要な」サービスが実行されているかどうかを確認するために、バックドアはサービスを列挙し、ハッシュリストを作成して、ハードコードされたこれらの値のセットと比較します。「更新」ルーチンは、「ブロックリスト」プロセスIDが検出されると終了します。バックドアは、そのサービスを無効にする値をそのサービスのレジストリに入力することにより、これらのサービスを停止しようとします。更新ルーチンは再度チェックし、不要なプロセスがすべて無効になるまでこのプロセスを続行します。

 バックドアのもうひとつの機能は、タスクを開始/停止することです。

図8.タスクの強制終了/実行ルーチン

 コードで観察されたその他の機能は次のとおりです。

・SetTime
・CollectSystemDescription
・UploadSystemDescription
・GetProcessByDescription
・GetFileSystemEntries
・WriteFile
・ファイルが存在しています
・ファイルを削除する
・GetFileHash
・ReadRegistryValue
・SetRegistryValue
・DeleteRegistryValue
・GetRegistrySubKeyAndValueNames
・リブート


 興味深い点は、SolarWindsのImprovement Client 実行可能ファイルとそのバージョン「3.0.0.382」の存在のチェックでした。

図9.ImprovementClientの検索

 ImprovementClientは、次の情報を収集できるプログラムです(出典:SolarWinds)。

・インストールされているSolarWinds商用ライセンスに関連付けられているSWID(SolarWinds ID)
・インストール中にインストーラーに提供される電子メールアドレス
・ダウンロードしたインストーラーの一意の識別子
・インストールされているすべてのOrion製品のバージョン
・オペレーティングシステムのバージョン
・CPUの説明とカウント
・インストールされている物理メモリーと使用率
・タイムゾーン
・Orionウェブサイトにログインした日付
・ローカルにインストールされた他のSolarWindsOrion製品のライセンス情報
・データベーステーブルの行数
・ポーリングプロトコルによる監視対象ノードの数
・認証方法によるOrionユーザーアカウントの数
・ネットワーク検出のスケジューリング情報(結果ではない)
・監視対象のデバイスとアプリケーションに関するデータ:
 ・ベンダー
 ・モデル
 ・OS/ファームウェアバージョン
 ・カウント
 ・ホストされているウェブサイトの数などの抽象的な構成情報
・SolarWinds製品に関するデータ:
 ・機能使用統計
 ・パフォーマンス統計
 ・ハードウェアとOSプラットフォームの説明

 httpルーチンの別の観察は、攻撃者が監視/にインストールされているSolarWindsのモジュールを使用して、被害者のクラウドおよび/またはワイヤレスネットワークの詳細/アクセスを調べていたことを示す可能性のあるhttpトラフィック内の特定のキーワードの検索でした。これらの種類のインスタンスを管理します。SolarWindsのOrionを使用したネットワークの管理は、ウェブサーバーをホストしているブラウザーとローカルホストを使用して実行されます。証明書の値を読み取り、http-trafficでこれらのキーワードを検索すると、この情報が得られます。

図10.キーワードの検索

ネットワーク/DGA

 すべてのチェックとルーチンを通過すると、バックドアはドメイン生成アルゴリズム(以下、DGA)を使用してドメインを生成します。DGAコードの一部の例は以下のとおりです:

図11.DGAコード例

 ドメインに正常に到達すると、「Update」というルーチンに、これに基づいて実行され、ルーチン「HttpHelper.Initialize」を起動する新しいスレッドを開始する部分が含まれます。以下のスクリーンショットでは、そのフローを観察できます。

図12.DGA、HttpHelper

 このコードは、dnsrecordがドメインと等しく、到達できる場合、新しいスレッドがバックグラウンドで開始されることを示しています。

 ‘HttpHelper’クラス/ルーチンは、すべてのC2通信を担当します。

図13.HttpHelp

 被害者がユーザー名とパスワードを使用してプロキシサーバーを使用している場合でも、バックドアはその情報を取得し、それを使用してC2への接続を構築することができます。次に、そのために「IWebProxyGetWebProxy」と呼ばれるルーチンを使用します。

図14.プロキシユーザー名とpwdの取得

 DGAで生成されたC2は、avsvmcloud [.] comのサブドメインです。

 これらのドメインがどのように見えるかの例は以下のとおりです。


・02m6hcopd17p6h450gt3.appsync-api.us-west-2.avsvmcloud.com
・039n5tnndkhrfn5cun0y0sz02hij0b12.appsync-api.us-west-2.avsvmcloud.com
・043o9vacvthf0v95t81l.appsync-api.us-east-2.avsvmcloud.com
・04jrge684mgk4eq8m8adfg7.appsync-api.us-east-2.avsvmcloud.com
・04r0rndp6aom5fq5g6p1.appsync-api.us-west-2.avsvmcloud.com
・04spiistorug1jq5o6o0.appsync-api.us-west-2.avsvmcloud.com

 DGAで生成されたC2からCNAMEを調べると、次のドメイン名が見つかりました。


・freescanonline[.]com
・deftsecurity[.]com
・thedoccloud[.]com
・websitetheme[.]com
・highdatabase[.]com
・incomeupdate[.]com
・databasegalore[.]com
・panhardware[.]com
・Zupertech[.]com
・Virtualdataserver[.]com
・digitalcollege[.]org

 前述のHTTPハンドラーコードで、さまざまな機能のためにC2にインストールされる可能性のあるパスを発見しました。


・swip/upd/
・swip/Events
・swip/Upload.ashx

 バックドアが接続されると、敵対者の目的に応じて、メモリーに注入できる複数のペイロードの使用を含む複数のアクションを実行できます。これを書いている時点では、上記のドメインに対する「killswitch」に関する詳細により、この特定のバックドアが機能しなくなりますが、この分析の目的上、攻撃者に与えられるアクセスのレベルを示しています。ドメインを陥没させる取り組みは称賛に値しますが、環境内でSUNBURSTの指標を特定できた組織は、さらに永続的なメカニズムが展開されていないことを保証するための追加の対策を実行することを強くお勧めします。

※本ページの内容は2020年12月17日(US時間)更新の以下のMcAfee Blogの内容です。
原文:Additional Analysis into the SUNBURST Backdoor
著者:Christiaan Beek, Cedric Cochin and Raj Samani

■関連サイト

カテゴリートップへ