更新:マイクロソフトは、SolarWinds のサプライ チェーンを侵害し、他の複数の組織に影響を与えた国家レベルのサイバー攻撃の背後にある脅威アクターに関する知識を拡大するために、パートナーおよび顧客と協力し続けています。 Microsoft はこれまで攻撃者の主要な指定として「Solorigate」を使用していましたが、今後は、攻撃者が使用するマルウェアの例ではなく、巧妙な攻撃の背後にある攻撃者に適切な焦点を当てたいと考えています。 Microsoft Threat Intelligence Center (MSTIC) は、SolarWinds、SUNBURST バックドア、TEARDROP マルウェア、および関連コンポーネントに対する攻撃の背後にいる攻撃者をNOBELIUMと名付けました。新しいコンテンツと分析をリリースする際には、NOBELIUM を使用してアクターと攻撃キャンペーンを参照します。
私たちは、セキュリティ業界およびパートナーと共に、Solorigate 攻撃の範囲を調査し続けています。調査が進行中ですが、防御者コミュニティにインテリジェンスを提供して、結果として組み込まれた範囲、影響、修復ガイダンス、および製品の検出と保護を理解できるようにしたいと考えています。 https://aka.ms/solorigateでより多くの情報が入手可能になると、常に更新されるリソース センターが確立されました。
侵害の全容は、セキュリティ業界全体でまだ調査中ですが、このブログでは、この巧妙な攻撃につながった侵害された SolarWinds Orion Platform DLL に関する洞察を共有しています。無害に見える数行のコードが 1 つの DLL ファイルに追加されたことで、影響を受ける製品を使用している組織に深刻な脅威がもたらされました。この製品は、政府やセキュリティ業界など、さまざまな業界で広く使用されている IT 管理ソフトウェアです。 DLL に挿入された目立たない悪意のあるコードは、約 4,000 行のコードで構成されるバックドアと呼ばれ、攻撃の背後にいる攻撃者が侵害されたネットワークで自由に動作できるようにしました。
侵害されたファイルがデジタル署名されているという事実は、攻撃者が同社のソフトウェア開発または配布パイプラインにアクセスできたことを示唆しています。 2019 年 10 月には、これらの攻撃者が空のクラスを追加してコードを挿入する能力をテストしていたことを示す証拠があります。したがって、 SolarWinds.Orion.Core.BusinessLayer.dllへの悪意のあるコードの挿入は、コンパイルされたコードへのデジタル署名を含むソフトウェア ビルドの最終段階の前の早い段階で行われた可能性があります。その結果、悪意のあるコードを含む DLL もデジタル署名され、特権アクションを実行する能力が強化され、目立たなくなります。
多くの行動において、攻撃者は目立たないようにするための措置を講じました。たとえば、挿入された悪意のあるコードは軽量であり、マルウェアが追加されたメソッドを並列スレッドで実行するタスクしか持たないため、DLL の通常の操作が変更されたり中断されたりすることはありません。このメソッドはクラスの一部であり、攻撃者はOrionImprovementBusinessLayerという名前を付けて、コードの残りの部分に溶け込ませました。このクラスには、13 のサブクラスと 16 のメソッドで構成されるすべてのバックドア機能が含まれており、悪意のあるコードをさらに隠すために文字列が難読化されています。
読み込まれると、バックドアは広範なチェック リストを通過し、アナリストのマシンではなく、実際の企業ネットワークで実行されていることを確認します。次に、影響を受けるデバイスから収集された情報から部分的に生成されたサブドメインを使用して、コマンド アンド コントロール (C2) サーバーに接続します。これは、影響を受けるドメインごとに一意のサブドメインを意味します。これは、攻撃者が検出を回避しようとするもう 1 つの方法です。
機能と機能の長いリストを備えたこのバックドアにより、ハンズオン キーボードの攻撃者は幅広いアクションを実行できます。過去の人間が操作した攻撃で見られたように、ネットワーク内で活動すると、攻撃者はネットワーク上で偵察を実行し、権限を昇格させ、横方向に移動することができます。攻撃者は、サイバースパイ活動であろうと金銭的利益であろうと、目標を達成できるまでネットワークを徐々に移動します。
図 1. ソロリゲート マルウェアの感染チェーン
この種の攻撃を検出するという課題は、強力な予防的保護に加えて、ネットワーク運用のさまざまな側面を調べて、ネットワーク内で進行中の攻撃を検出できるソリューションに組織が注力する必要があることを意味します。
以前に、お客様がこの脅威に対処できるようにするためのガイダンスと修復手順を提供しました。このブログでは、バックドアの動作と機能に関する詳細な分析を共有し、バックドアがビジネス環境にとって高いリスクである理由を示します。また、 Microsoft Defender for Endpointによって提供される包括的なエンドポイント保護の詳細についても共有します。別のブログでは、エンドポイントからの信号を他のドメイン (ID、データ、クラウド) と統合して、調整された検出、調査、および修復機能を提供する、より広範なMicrosoft 365 Defenderにわたる保護について説明します。 読む: Microsoft 365 Defender を使用して Solorigate から保護します。
すべての始まり: 汚染されたコード ライブラリ
攻撃者は、SolarWinds Orion プラットフォームに属するコード ライブラリであるSolarWinds.Orion.Core.BusinessLayer.dllに悪意のあるコードを挿入しました。攻撃者は、この DLL コンポーネント内の適切な場所を見つけてコードを挿入する必要がありました。理想的には、定期的に呼び出されるメソッド内の場所を選択し、実行と永続性の両方を保証して、悪意のあるコードが常に稼働していることが保証されるようにします。そのような適切な場所は、 RefreshInternalという名前のメソッドであることが判明しました。
図2:バックドア用ブートストラップに感染したメソッド
図 3: 元のメソッドの外観
この関数への変更は非常に軽量であり、簡単に見落とされる可能性があります。RefreshInternalの通常の実行フローが変更されないように、並列スレッド内でメソッドOrionImprovementBusinessLayer.Initializeを実行するだけです。
他の方法ではなく、なぜこの方法が選ばれたのですか?この DLL のアーキテクチャをざっと見てみると、 RefreshInternalがクラスSolarWinds.Orion.Core.BusinessLayer.BackgroundInventory.InventoryManagerの一部であり、 CoreBusinessLayerPluginクラスまでさかのぼることができる一連のメソッドによって呼び出されることがわかります。 Startという名前のメソッドで実行を開始するこのクラスの目的は (おそらく DLL が読み込まれる初期段階で)、さまざまな他のコンポーネントを初期化し、いくつかのタスクの実行をスケジュールすることです。これらのタスクの中には、最終的に悪意のあるコードを開始するバックグラウンド インベントリがあります。
図 4. 挿入された悪意のあるコードが並列スレッド内で実行される
バックドアの機能は、13 のサブクラスと 16 のメソッドで構成されるクラスOrionImprovementBusinessLayerに完全に存在します。その名前は、正当なコードの残りの部分に溶け込んでいます。脅威アクターは、「バックドア」や「キーロガー」などの分かりやすい用語を避けるのに十分な知識を持っており、代わりに、より中立的な専門用語を選択しました。一見したところ、この DLL のコードは正常に見え、疑念を抱くことはありません。これは、特にこの DLL のコードが頻繁に更新されていない場合、悪意のあるコードの挿入が何ヶ月も検出されなかった理由の一部である可能性があります。
詮索好きな目からの難読化を最小限に抑えるために、バックドア内の文字列は Base64 で圧縮およびエンコードされるか、代わりにハッシュが使用されます。
図 5: 難読化された文字列の例
初期偵察
Initializeメソッドは、バックドアの事実上の実行エントリ ポイントです。実際の被害者の環境で実行されていることを確認するために、いくつかのチェックを実行します。
- 悪意のある DLL をホストしているプロセスの名前がsolarwinds.businesslayerhost.exeであることを確認します。
- 悪意のある DLL の最終書き込み時刻が少なくとも 12 ~ 14 日前であることを確認します。
- ランダムな時間だけ実行を遅らせます
- 現在のデバイスのドメイン名が次の条件を満たしていることを確認します。
- ドメインには特定の文字列を含めることはできません。これらの文字列のチェックはハッシュを介して実装されるため、現時点ではブロックリストに登録されているドメイン名は不明です
- ドメインに「solarwinds」を含めないでください
- ドメインは、正規表現(?i)([^az]|^)(test)([^az]|$)と一致してはなりません。つまり、テスト ドメインのように見えてはなりません。
- セキュリティ関連のソフトウェアに関連する実行中のプロセスがないことを確認します (例: Windbg 、 Autoruns 、 Wireshark )
- セキュリティ関連のソフトウェア (例: groundling32.sys ) からロードされたドライバーがないことを確認します。
- セキュリティ関連のソフトウェアに属する特定のサービスのステータスが特定の条件 (例: windefend 、 sense 、 cavp ) を満たしていることを確認します。
- ホスト「api.solarwinds.com」が予想される IP アドレスに解決されることを確認します
これらのチェックのいずれかが失敗した場合、バックドアは終了します。これらすべての検査は、SolarWinds に属するテスト ネットワークやマシンなどの望ましくない環境に悪意のある機能が公開されるのを防ぐために実行されます。
バックドア
上記の広範な検証の後、バックドアはメインの実行段階に入ります。基本的に、バックドアは非常に標準的なもので、C2 サーバーから命令を受け取り、それらの命令を実行し、情報を送り返します。実行できるコマンドの種類は、レジストリ キーの操作から、プロセスの作成、ファイルの削除などにまで及び、信頼できる署名付きバイナリから実行されるため、攻撃者にデバイスへのフル アクセスを効果的に提供します。
最初のステップで、バックドアは事前定義された C2 サーバーへの接続を開始して、侵害されたシステムに関する基本的な情報を報告し、最初のコマンドを受け取ります。 C2 ドメインは 4 つの異なる部分で構成されています。3 つの部分はバックドアでハードコーディングされた文字列に由来し、1 つのコンポーネントはデバイスから抽出された固有の情報に基づいて動的に生成されます。これは、影響を受けるすべてのデバイスが、連絡先となる別のサブドメイン (場合によっては複数) を生成することを意味します。生成されたドメインの例を次に示します。
図 6: 動的に生成された C2 ドメイン
ドメインの動的に生成された部分が興味深い部分です。これは、次のデータをハッシュすることによって計算されます。
- ネットワーク インターフェイスの物理アドレス
- デバイスのドメイン名
- キーHKEY_LOCAL_MACHINESOFTWAREMicrosoftCryptographyのMachineGuidレジストリ値の内容
バックドアは、C2 ドメインで要求される疑似ランダム URI も生成します。ドメインと同様に、URI は一連のハードコーディングされたキーワードとパスを使用して構成されます。これらは、一部はランダムに選択され、一部は送信される HTTP 要求のタイプに基づいて選択されます。生成可能な URI は、次の形式に従います。
- pki/crl/< random components >.crl、ここで < random components > は数字と次の文字列のいずれかです:
- “-根”
- 「-証明書」
- 「-universal_ca」
- 「-ca」
- 「-primary_ca」
- 「-タイムスタンプ」
- “-グローバル”
- 「-セキュアカ」
- fonts/woff/<ランダム コンポーネント>-webfont<ランダム コンポーネント>.woff2 または fonts/woff/<ランダム コンポーネント>.woff2。ここで、<ランダム コンポーネント> は数値と、次の文字列の 1 つ以上です。
- “大胆な”
- “ボールドイタリック”
- 「エクストラボールド」
- 「エクストラボールドイタリック」
- “イタリック”、
- “光”
- 「ライトイタリック」
- “通常”
- 「セミボールド」
- 「セミボールドイタリック」
- 「opensans」
- 「のと」
- 「フリーフォント」
- 「ソースコードプロ」
- 「ソースセリフプロ」
- 「ソースハンサンズ」
- 「ソースハンセリフ」
- swip/upd/<ランダム コンポーネント>、ここで <ランダム コンポーネント> は、次の文字列の 1 つまたは複数にすることができます。
- 「ソーラーウィンズ」
- 「.CortexPlugin」
- “。オリオン”
- “無線”
- 「UI」
- 「ウィジェット」
- 「NPM」
- 「アポロ」
- 「クラウドモニタリング」
- 「ノード」、
- 「ボリューム」、
- 「インターフェース」、
- 「コンポーネント」
- スワイプ/Upload.ashx
- スワイプ/イベント
バックドアによって生成される最終的な URL の例を次に示します。
- hxxps://3mu76044hgf7shjf[.]appsync-api[.]eu-west-1[.]avsvmcloud[.]com /swip/upd/Orion[.]Wireless[.]xml
- hxxps://3mu76044hgf7shjf[.]appsync-api[.]us-east-2[.]avsvmcloud[.]com /pki/crl/492-ca[.]crl
- hxxps://3mu76044hgf7shjf[.]appsync-api[.]us-east-1[.]avsvmcloud[.]com /fonts/woff/6047-freefont-ExtraBold[.]woff2
最後に、バックドアは、前述の一意のユーザー ID、セッション ID、およびその他の無関係なデータ フィールドのセットを追加する JSON ドキュメントを作成します。次に、この JSON ドキュメントを C2 サーバーに送信します。
図 7: マルウェアによって生成されたデータの例
通信が成功すると、C2 は、バックドアが実行するコマンドを含む、エンコードされ圧縮されたデータのバッファで応答します。 C2 は、報告先の追加の C2 アドレスに関する情報で応答する場合もあります。バックドアは次のコマンドを受け入れます。
- アイドル
- 出口
- 時間設定
- CollectSystemDescription
- UploadSystemDescription
- 実行タスク
- GetProcessByDescription
- キルタスク
- GetFileSystemEntries
- 書き込みファイル
- ファイルが存在しています
- ファイルを削除する
- GetFileHash
- 読み取りレジストリ値
- SetRegistryValue
- レジストリ値の削除
- GetRegistrySubKeyAndValueNames
- リブート
- なし
簡単に言うと、これらのコマンドにより、攻撃者はプロセスを実行、停止、および列挙できます。ファイルとレジストリ キーの読み取り、書き込み、および列挙。デバイスに関する情報を収集してアップロードします。デバイスを再起動するか、待機するか、終了します。コマンドCollectSystemDescriptionは、次の情報を取得します。
- ローカル コンピューターのドメイン名
- 管理者アカウント SID
- ホスト名
- ユーザー名
- OS バージョン
- システム ディレクトリ
- デバイス稼働時間
- ネットワーク インターフェイスに関する情報
ハンズオンキーボード攻撃の結果
バックドア アクセスが取得されると、攻撃者は、特権エスカレーションの調査、資格情報の盗難、および高価値のアカウントと資産のラテラル ムーブメント ハンティングの標準的なプレイブックに従います。検出を回避するために、攻撃者はドメインの列挙に使用されるadfind.exeなどの Windows 管理ツールの名前を変更しました。
C:Windowssystem32cmd.exe /C csrss.exe -h 違反.contoso.com -f (name=”Domain Admins”) member -list | csrss.exe -h 違反.contoso.com -f objectcategory=* > .Modmod1.log
FireEyeとVolexityで詳述されているように、横方向の動きは PowerShell リモート タスク作成によって観察されました。
$scheduler = New-Object -ComObject (“Schedule.Service”);$scheduler.Connect($env:COMPUTERNAME);$folder = $scheduler.GetFolder(“MicrosoftWindowsSoftwareProtectionPlatform”);$task = $folder .GetTask(“EventCacheManager”);$definition = $task.Definition;$definition.Settings.ExecutionTimeLimit = “PT0S”;$folder.RegisterTaskDefinition($task.Name,$definition,6,”System”,$null,5 );echo “完了” C:Windowssystem32cmd.exe /C schtasks /create /F /tn “MicrosoftWindowsSoftwareProtectionPlatformEventCacheManager” /tr “C:WindowsSoftwareDistributionEventCacheManager.exe” / sc ONSTART /ru システム /S [マシン名]
永続性は、さまざまな手法で展開されたバックドアを介して実現されます。
- パワーシェル:
Powershell -nop -exec bypass -EncodedCommand
–EncodedCommand をデコードすると、次のようになります。
Invoke-WMIMethod win32_process -name create -argumentlist ‘rundll32 c:windowsidmucommonypprop.dll _XInitImageFuncPtrs’ -ComputerName WORKSTATION
- Rundll32:
C:WindowsSystem32rundll32.exe C:WindowsMicrosoft.NETFramework64[悪意のある .dll ファイル]、[さまざまなエクスポート]
Rundll32 を使用すると、侵害された各デバイスは、一意のバイナリ ハッシュ、一意のローカル ファイル システム パス、疑似一意のエクスポート、および一意の C2 ドメインを受け取ります。
バックドアは、攻撃者が Cobalt Strike ソフトウェア スイートの一部である第 2 段階のペイロードを配信することも可能にします。状況が明らかになるにつれて、Trojan:Win32/Solorigate.A!dha として検出されるこれらのペイロードの調査を続けます。
Microsoft Defender for Endpoint 製品と強化ガイダンス
セキュリティ業界では、 サプライ チェーンの侵害に対する懸念が高まり続けています。 Solorigate 事件は、この種の攻撃がネットワークの侵害に成功した場合、広範な影響と深刻な結果という有害な組み合わせをもたらす可能性があることを重大に思い出させます。お客様には引き続き次のことをお勧めします。
- これらの悪意のあるバイナリが検出されたデバイスを分離して調査する
- 影響を受けるデバイスで使用されたアカウントを特定し、侵害されたと見なします
- これらのエンドポイントがどのように侵害された可能性があるかを調査する
- デバイス侵害のタイムラインを調査して、ラテラル ムーブメントの兆候を確認する
攻撃面を減らし、強力な予防的保護を構築することによってネットワークを強化することは、組織を防御するための基本的な要件です。さらに、システムとネットワークのアクティビティを包括的に可視化することで、異常な動作や潜在的な侵害の兆候を早期に検出できます。さらに重要なことは、AI を介して信号を関連付ける機能により、より回避的な攻撃者の活動が表面化する可能性があることです。
Microsoft Defender for Endpointは、Solorigate 攻撃チェーン全体を包括的に検出します。これらの検出により、このインシデントに関連するアクティビティとアーティファクトの存在についてセキュリティ運用チームに通知するアラートが生成されます。この攻撃には正当なソフトウェアの侵害が含まれるため、サービスの中断を防ぐための自動修復は有効になっていません。ただし、検出により、攻撃活動を可視化できます。その後、アナリストは、Microsoft Defender エンドポイントの調査および修復ツールを使用して、詳細な調査と追加のハンティングを実行できます。
Microsoft 365 Defenderは、ドメイン全体 (ID、データ、クラウド アプリ、エンドポイント) からの脅威データを統合することで、エンドポイントを超えた可視性を提供し、この脅威に対する調整された防御を提供します。このクロスドメインの可視性により、Microsoft 365 Defender はシグナルを関連付けて、攻撃チェーン全体を包括的に解決できます。セキュリティ運用チームは、この豊富な脅威データを使用してハンティングし、ネットワークを侵害から強化するための洞察を得ることができます。 読む: Microsoft 365 Defender を使用して Solorigate から保護します。
図 8. Solorigate 攻撃チェーン全体での Microsoft Defender for Endpoint 検出
いくつかの Microsoft Defender for Endpoint 機能は、Solorigate 攻撃に関連しています。
次世代の保護
Windows 10 の既定のマルウェア対策ソリューションである Microsoft Defender ウイルス対策は、悪意のある DLL とその動作を検出してブロックします。プロセスが実行中であっても、マルウェアを隔離します。
バックドア化された SolarWinds.Orion.Core.BusinessLayer.dll ファイルの検出:
プロセス メモリ内の Cobalt Strike フラグメントを検出し、プロセスを停止します。
第 2 段階のペイロード (infinitysoftwares[.]com に接続する可能性のあるコバルト ストライク ビーコン) の検出。
データベースからマシン情報とともにハッシュと SolarWinds パスワードを取得する PowerShell ペイロードの検出:
図 9. Microsoft Defender for Endpoint が悪意のあるバイナリを防止
エンドポイントの検出と応答 (EDR)
Microsoft Defender セキュリティ センターと Microsoft 365 セキュリティ センターの次のタイトルのアラートは、ネットワーク上の脅威の活動を示している可能性があります。
- SolarWinds サプライ チェーン攻撃に関連する悪意のあるバイナリ
- SolarWinds サプライ チェーン攻撃に関連する侵害されたバイナリ
- サプライ チェーン攻撃に関連するドメインへのネットワーク トラフィック
Microsoft Defender セキュリティ センターおよび Microsoft 365 セキュリティ センターの次のタイトルのアラートは、このレポートの脅威アクティビティが発生したか、後で発生する可能性があることを示している可能性があります。これらのアラートは、他の悪意のある脅威に関連付けることもできます。
- ADFS 秘密鍵の抽出試行
- マスカレード Active Directory 探索ツール
- 疑わしいメールボックスのエクスポートまたはアクセスの変更
- ADFS キー マテリアルへのアクセス試行の可能性
- 疑わしい ADFS アダプター プロセスが作成されました
図 10. 疑わしい LDAP クエリが起動され、ADFS 秘密キーの抽出が試行されたことを検出する Microsoft Defender for Endpoint
図 11. Microsoft Defender for Endpoint アラートの説明と、ADFS キー マテリアルへのアクセス試行に対する推奨アクション
当社のセキュリティ テクノロジを通じてこれらの保護を提供する当社の能力は、この攻撃を直ちに調査し、インシデントの進展に合わせて調査を続ける当社のセキュリティ専門家によって支えられています。この場合、非常に意欲的で非常に高度な攻撃者に対処しているため、専門家による慎重な監視が重要です。 Microsoft の製品が相互に統合されてシグナルを統合および関連付けるのと同じように、マイクロソフト全体のセキュリティ エキスパートと脅威研究者が協力して、この高度な攻撃に対処し、お客様を確実に保護しています。
脅威分析レポート
このインシデントに関する包括的な脅威分析レポートを公開しました。脅威分析レポートは、防御側が攻撃を理解し、その影響を評価し、防御をレビューできるように設計された技術情報、検出の詳細、および推奨される軽減策を提供します。
図 12.Solorigate 攻撃に関する脅威分析レポート
高度な狩猟
Microsoft 365 Defender および Microsoft Defender for Endpoint のお客様は、高度な検索クエリを実行して、この攻撃で使用されている類似の TTP を検索できます。
メモリにロードされた悪意のある DLL
メモリにロードされた悪意のある DLL の存在または分布を特定するには、次のクエリを実行します
DeviceImageLoadEvents | | ("d130bd75645c2433f88ac03e73395fba172ef676" の SHA1 "1acf3108bf1e376c8848fbb25dc87424f2c2a39c","e257236206e99f5a5c62035c9c59c57206728b28", "6fdd82b7ca1c1f0ec67c05b36d14c9517065353b","2f1a5a7411d015d01aaee4535835400191645023", "bcb5a4dcbc60d26a5f619518f2cfc1b4bb4e4387","16505d0b929d80ad1680f993c02954cfd3772207", "d8938528d68aabe1e31df485eb3f75c8a925b5d9","395da6d4f3c890295f7584132ea73d759bd9d094", "c8b7f28230ea8fbf441c64fdd3feeba88607069e","2841391dfbffa02341333dd34f5298071730366a", "2546b0e82aecfe987c318c7ad1d00f9fa11cd305","e2152737bed988c0939c900037890d1244d9a30e") または SHA256 in ("ce77d116a074dab7a22a0fd4f2c1ab475f16eec42e1ded3c0b0aa8211fe858d6", "dab758bf98d9b36fa057a66cd0284737abf89857b73ca89280267ee7caf62f3b", "eb6fab5a2964c5817fb239a7a5079cabca0a00464fb3e07155f28b0a57a2c0ed", "ac1b2b89e60707a20e9eb1ca480bc3410ead40643b386d624c5d21b47c02917c", "019085a76ba7126fff22770d71bd901c325fc68ac55aa743327984e89f4b0134", "c09040d35630d75dfef0f804f320f8b3d16a481071076918e9b236a321c1ea77", "0f5d7e6dfdd62c83eb096ba193b5ae394001bac036745495674156ead6557589", "e0b9eda35f01c1540134aba9195e7e6393286dde3e001fce36fb661cc346b91d", "20e35055113dac104d2bb02d4e7e33413fae0e5a426e0eea0dfd2c1dce692fd9", "2b3445e42d64c85a5475bdbc88a50ba8c013febb53ea97119a11604b7595e53d", "a3efbc07068606ba1c19a7ef21f4de15d15b41ef680832d7bcba485143668f2d", "92bd1c3d2a11fc4aba2735d9547bd0261560fb20f36a0e7ca2f2d451f1b62690", "a58d02465e26bdd3a839fd90e4b317eece431d28cab203bbdde569e11247d9e2", "cc082d21b9e880ceb6c96db1c48a0375aaf06a5f444cb0144b70e01dc69048e6")
システムまたはローカルで作成された悪意のある DLL
システムまたはローカルで作成された悪意のある DLL の存在または配布を特定するには、次のクエリを実行します
DeviceFileEvents | | ("d130bd75645c2433f88ac03e73395fba172ef676" の SHA1 "1acf3108bf1e376c8848fbb25dc87424f2c2a39c","e257236206e99f5a5c62035c9c59c57206728b28", "6fdd82b7ca1c1f0ec67c05b36d14c9517065353b","2f1a5a7411d015d01aaee4535835400191645023", "bcb5a4dcbc60d26a5f619518f2cfc1b4bb4e4387","16505d0b929d80ad1680f993c02954cfd3772207", "d8938528d68aabe1e31df485eb3f75c8a925b5d9","395da6d4f3c890295f7584132ea73d759bd9d094", "c8b7f28230ea8fbf441c64fdd3feeba88607069e","2841391dfbffa02341333dd34f5298071730366a", "2546b0e82aecfe987c318c7ad1d00f9fa11cd305","e2152737bed988c0939c900037890d1244d9a30e") または SHA256 in ("ce77d116a074dab7a22a0fd4f2c1ab475f16eec42e1ded3c0b0aa8211fe858d6", "dab758bf98d9b36fa057a66cd0284737abf89857b73ca89280267ee7caf62f3b", "eb6fab5a2964c5817fb239a7a5079cabca0a00464fb3e07155f28b0a57a2c0ed", "ac1b2b89e60707a20e9eb1ca480bc3410ead40643b386d624c5d21b47c02917c", "019085a76ba7126fff22770d71bd901c325fc68ac55aa743327984e89f4b0134", "c09040d35630d75dfef0f804f320f8b3d16a481071076918e9b236a321c1ea77", "0f5d7e6dfdd62c83eb096ba193b5ae394001bac036745495674156ead6557589", "e0b9eda35f01c1540134aba9195e7e6393286dde3e001fce36fb661cc346b91d", "20e35055113dac104d2bb02d4e7e33413fae0e5a426e0eea0dfd2c1dce692fd9", "2b3445e42d64c85a5475bdbc88a50ba8c013febb53ea97119a11604b7595e53d", "a3efbc07068606ba1c19a7ef21f4de15d15b41ef680832d7bcba485143668f2d", "92bd1c3d2a11fc4aba2735d9547bd0261560fb20f36a0e7ca2f2d451f1b62690", "a58d02465e26bdd3a839fd90e4b317eece431d28cab203bbdde569e11247d9e2", "cc082d21b9e880ceb6c96db1c48a0375aaf06a5f444cb0144b70e01dc69048e6")
Base64 で PowerShell を起動する SolarWinds プロセス
Base64 でエンコードされた疑いのある PowerShell コマンドを生成する SolarWinds プロセスを特定するには、次のクエリを実行します。
DeviceProcessEvents | | where InitiatingProcessFileName =~ "SolarWinds.BusinessLayerHost.exe" | | where FileName =~ "powershell.exe"// base64 でエンコードされた文字列を抽出し、有効な base64 の長さを確認します| base64_extracted = extract('([A-Za-z0-9+/]{20,}[=]{0,3})', 1, ProcessCommandLine)| を拡張します。 base64_extracted を拡張 = サブストリング (base64_extracted, 0, (strlen(base64_extracted) / 4) * 4)| extend base64_decoded = replace(@'DeviceProcessEvents | where InitiatingProcessFileName =~ "SolarWinds.BusinessLayerHost.exe" | where FileName =~ "powershell.exe"// Extract base64 encoded string, ensure valid base64 length| extend base64_extracted = extract('([A-Za-z0-9+/]{20,}[=]{0,3})', 1, ProcessCommandLine)| extend base64_extracted = substring(base64_extracted, 0, (strlen(base64_extracted) / 4) * 4)| extend base64_decoded = replace(@'', '', make_string(base64_decode_toarray(base64_extracted)))// | where notempty(base64_extracted) and base64_extracted matches regex '[A-Z]' and base64_extracted matches regex '[0-9]'', '', make_string(base64_decode_toarray(base64_extracted)))//
| |ここで、notempty(base64_extracted) および base64_extracted は正規表現 '[AZ]' に一致し、base64_extracted は正規表現 '[0-9]' に一致しますSolarWinds プロセスがエコーで CMD を起動する
エコーで CMD を起動する SolarWinds プロセスを見つけるには、次のクエリを実行します。
DeviceProcessEvents | | where InitiatingProcessFileName =~ "SolarWinds.BusinessLayerHost.exe" | |ここで、FileName == "cmd.exe" および ProcessCommandLine には "echo" がありますC2通信
悪意のあるアクターのドメインへの DNS ルックアップを見つけるには、次のクエリを実行します。
デバイスイベント | | where ActionType == "DnsQueryResponse" //DNS Query Responseand AdditionalFields には ".avsvmcloud" があります悪意のあるアクターのドメインへの DNS ルックアップを見つけるには、次のクエリを実行します。
デバイス ネットワーク イベント | |ここで、RemoteUrl には「avsvmcloud.com」が含まれます | |どこで InitiatingProcessFileName != "chrome.exe" | |どこで InitiatingProcessFileName != "msedge.exe" | |どこで InitiatingProcessFileName != "iexplore.exe" | |どこで InitiatingProcessFileName != "firefox.exe" | |どこで InitiatingProcessFileName != "opera.exe"社内で SolarWinds Orion ソフトウェアを見つける
Threat and Vulnerability Management データを検索して、製品名で整理され、ソフトウェアがインストールされているデバイスの数で並べ替えられた SolarWinds Orion ソフトウェアを見つけるには、次のクエリを実行します。
DeviceTvmSoftwareInventory脆弱性 | |ここで、SoftwareVendor == 'solarwinds' | |ここで、SoftwareName は「orion」で始まります | | SoftwareName ごとに dcount(DeviceName) を要約する | | dcount_DeviceName desc で並べ替えADFS アダプター プロセスの生成
DeviceProcessEvents | | where InitiatingProcessFileName =~"Microsoft.IdentityServer.ServiceHost.exe" | | where FileName in~("werfault.exe", "csc.exe") | |ここで ProcessCommandLine !contains ("nameId")
付録
MITRE ATT&CK テクニックの観察
この脅威は、 MITRE ATT&CK フレームワークで文書化されている攻撃者の手法を利用します。
初期アクセス
実行
コマンドと制御
T1071.001 アプリケーション層プロトコル: Web プロトコル
持続性
防御回避
T1562.001 防御を損なう: ツールの無効化または変更
コレクション
追加のマルウェアが発見されました
興味深いことに、SolarWinds の侵害全体を調査した結果、SolarWinds Orion 製品にも影響を与える追加のマルウェアが発見されましたが、このマルウェアはこの侵害とは無関係である可能性が高く、別の攻撃者によって使用されていると判断されました。このマルウェアは、 App_Web_logoimagehandler.ashx.b6031896.dllという名前の DLL ファイルの形をした小さな持続性バックドアで構成されており、「inetpubSolarWindsbin」フォルダにインストールすると、SolarWinds Web アプリケーション サーバーを介してリモートでコードを実行できるようにプログラムされています。 . Solorigate とは異なり、この悪意のある DLL にはデジタル署名がないため、サプライ チェーンの侵害とは無関係である可能性があります。それにもかかわらず、感染した DLL には、Web 要求から C# スクリプトを受け取り、その場でコンパイルして実行できるメソッド ( DynamicRunという名前) が 1 つだけ含まれています。
図 13: 元の DLL
図 14: DynamicRun メソッドを呼び出す悪意のある追加
このコードにより、攻撃者は被害者のデバイス上で任意の C# プログラムを送信して実行できるようになります。 Microsoft Defender ウイルス対策は、この侵害された DLL を Trojan:MSIL/Solorigate.G!dha として検出します。
私たちに話してください
この話に関する質問、懸念、または洞察はありますか? Microsoft 365 Defender 技術コミュニティでのディスカッションに参加してください。
Microsoft セキュリティ インテリジェンスのブログ投稿をすべてお読みください。
Twitter @MsftSecIntelでフォローしてください。
Comments