ハンターズチームアクソン
Hunters の Team AXON は、「VEILDrive」と呼ばれる進行中の脅威キャンペーンを発見し、積極的に監視しています。顧客のインフラストラクチャにおける悪意のあるアクティビティの調査中に最初に発見された VEILDrive は、Microsoft の SaaS スイート (特に Teams、SharePoint、Quick Assist、OneDrive) を活用して戦術を実行します。脅威アクターが独自の方法で OneDrive ベースのコマンド アンド コントロール (C&C) 方式を使用し、侵害された環境に展開されるカスタム マルウェアに埋め込まれます。当社の分析では、このキャンペーンの起源はロシアである可能性が高いことが示されており、Team AXON は Microsoft と影響を受けた組織の両方に警告を発し、さらなる悪用を緩和するよう求めています。
私たちの調査は、米国の重要なインフラストラクチャ エンティティへの攻撃への対応を受けて、2024 年 9 月に開始されました。VEILDrive の攻撃手法は、一般的な脅威の行動とは明らかに異なります。スピア フィッシング キャンペーンを配布し、悪意のあるソフトウェアを保存するために、Microsoft の SaaS インフラストラクチャに大きく依存しています。この SaaS に依存する戦略は、リアルタイム検出を複雑にし、従来の防御を回避します。
VEILDrive に関連するマルウェアは、Java ベースの .jar ファイルであり、難読化がほとんど行われていないため、非常に読みやすく、構造化されています。そのシンプルさにもかかわらず、このマルウェアはトップクラスのエンドポイント検出および対応 (EDR) ツールと VirusTotal のすべてのセキュリティ エンジンによる検出を回避しました。これは重大なリスクを浮き彫りにしています。難読化されていない単純なコードでも、最新の検出メカニズムを回避できるため、高リスク環境では検出戦略を幅広く見直す必要があることを示しています。
このレポートでは、進化する脅威に対してサイバーセキュリティ コミュニティをより適切に備えられるよう、VEILDrive の方法論と現在の検出アプローチの限界についての洞察を提供します。
2024 年 9 月、Team AXON は米国の重要インフラ企業を狙ったインシデントに対応しました。この調査により、「VEILDrive」という独自の脅威キャンペーンが明らかになりました。このキャンペーンでは、同様のインシデントで通常見られるものとは大きく異なる、通常とは異なる戦術、技術、手順 (TTP) が使用されていました。
調査結果に基づき、VEILDrive キャンペーンは 2024 年 8 月初旬に始まり、本レポートの時点でも引き続き活動していると推定されます。攻撃者は、Teams、SharePoint、Quick Assist、OneDrive などの Microsoft SaaS サービスを活用して、以前に侵害を受けた組織の信頼できるインフラストラクチャを悪用し、スピアフィッシング攻撃を配布してマルウェアを保存しました。このクラウド中心の戦略により、脅威アクターは従来の監視システムによる検出を回避できました。
注目すべきは、VEILDrive が、侵害されたデバイスに展開された Java ベースのマルウェアに埋め込まれた、OneDrive ベースの新しいコマンド アンド コントロール (C&C) メソッドを導入したことです。マルウェア自体は .jar ファイルであり、次の 2 つの顕著な特徴があります。
これらの特徴は、高度な回避技術がなくても、巧妙に作成された難読化されていないマルウェアは最新の防御を回避できることを浮き彫りにしています。この調査は、現在の検出戦略のギャップを強調し、従来とは異なる攻撃アプローチに対する警戒の必要性を強調しています。
Team AXON は調査結果を Microsoft および影響を受けた組織と共有し、この進行中の脅威を軽減するための実用的な情報を提供しています。
2024 年 9 月初旬、Hunters の顧客の 1 社 (以下、「Org C」) が、アクティブなインシデントの処理について Team AXON にサポートを依頼しました。このケースは、ソーシャル エンジニアリングによって侵害された Org C 内の特定のデバイスに焦点が当てられていました。
組織 C の従業員のデバイス上で不審に作成されたスケジュールされたタスクによってアラートがトリガーされ、さらなる調査が促されました。ログを相関させ、影響を受けたユーザーと通信することで、チームは最初のアクセス方法を明らかにしました。
以下は、攻撃フローの概要を示す攻撃図です。
一連の出来事は次のように展開した。
悪意のある攻撃者は、Microsoft Teams を利用して、組織 C の選ばれた 4 人の従業員にメッセージを送信しました。これらの従業員は、役割に基づいて非技術者である以外には、他の明らかなつながりはありませんでした。攻撃者は IT チームのメンバーになりすまし、 Quick Assistリモート ユーティリティ ツールを使用して各従業員のデバイスへのアクセスを要求しました。
攻撃者は、なりすましのために新しく作成されたアカウントを使用するのではなく、以前の潜在的な被害者(ここでは「Org A」と呼ぶ)の侵害されたユーザー アカウントを利用しました。
M365 監査ログは、Microsoft Teams のスピアフィッシングを特定するために使用されました。
複数の「 MessageSent 」および「 ChatCreated 」イベントが特定されましたが、これらはすべて、脅威アクターが所有する組織Aの以前に侵害されたユーザーから発信されたものです。
4 人の従業員が標的となった一方で、組織Aの侵害を受けたユーザーを標的とした「 MemberAdded 」イベントは 1 件のみ特定されました。
上記の洞察は興味深く、価値があり、Microsoft Teams や同様のコミュニケーション ツールを介したフィッシングの増加を浮き彫りにしています。M365 監査ログを使用してフィッシングの成功と失敗を区別し、EDR ログと相関関係を調べることは、調査にとって非常に重要です。
組織 C の対象ユーザーが受信した Microsoft Teams メッセージは、Microsoft Teams の「 外部アクセス」機能によって可能になりました。この機能により、デフォルトで外部組織との 1 対 1 の通信が可能になります。
攻撃者は、組織 C の被害者を誘導して Microsoft の Quick Assist ツールを実行させ、Microsoft Teams 経由でアクセス コードを提供することに成功しました。これにより、脅威アクターは被害者のコンピューターにインタラクティブにアクセスできるようになりました。
その後、脅威アクターは別の組織の SharePoint へのダウンロード リンクを共有しました (被害者は、Microsoft Teams チャットを介したフィッシングに使用されたテナントとは別のテナントに属しており、ここでは「組織 B」と呼びます)。このリンクには、Client_v8.16L.zip という名前のパスワードで保護された .zip ファイルが含まれており、その中には追加の RMM ツールを含むさまざまなファイルが含まれていました。
このファイルは、すでにリモート アクセス機能を備えている攻撃者によって、explorer.exe のコンテキストで操作され、おそらく対話型の手段でダウンロードされ、リンクをクリックして必要に応じてツールをダウンロードできるようになりました。
調査中、Microsoft Teams メッセージ内の受信 URL に関する正確な情報を提供する M365 監査ログと被害者のホストの EDR テレメトリを相関させ、攻撃者の TTP を完全に理解できたことは特筆に値します。
リモート アクセスを介して手動で悪意のある操作を実行しようとする試みが複数回行われました。これらのアクティビティは主に、攻撃者がダウンロードしたファイルの 1 つである LiteManager (「ROMServer.exe」) と呼ばれる RMM ツールを繰り返し実行するためのスケジュールされたタスクの作成などの永続的な取り組みに関係していました。
schtasks /Create /TN "Perfomance monitoring" /SC MINUTE /TR C:\ProgramData\500000003\ROMServer.exe
上記のアクティビティに続いて、攻撃者はCliento.zip.
以前と同様に、リンクは被害者ユーザーと脅威アクター間のチャットで共有されました。この .zip ファイルには、メインの .JAR マルウェアと、.JAR マルウェアを実行するための Java 開発キット全体が含まれていました。
脅威アクターは、以下を使用して .JAR マルウェアを実行しました: C:\\ProgramData\\Cliento\\jdk-22_windows-x64_bin\\jdk-22.0.2\\bin\\javaw.exe -jar C:\\ProgramData\\Cliento\\Cliento.jar
悪意のある .JAR ファイルのコンテキストでは、次のような複数のネットワーク アクティビティとコマンド実行が特定されました。
→ safeshift390-my.sharepoint.com への複数の送信 DNS 要求/ネットワーク アクティビティ
→ graph.microsoft.com への複数の送信 DNS 要求/ネットワーク アクティビティ
複数の送信 DNS 要求/ネットワーク アクティビティ → login.microsoftonline.com
ローカル列挙コマンドの実行:
Systeminfo
net time
Get-WmiObject -Class
Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
{$_.interfacetype -eq \"USB\"}"
次のスクリーンショットは、悪意のあるアクティビティに関連するプロセス ツリーの主要部分を示しています。
攻撃者はまた、Java マルウェアを永続的に実行するために、レジストリに実行キーとして悪意のある JAR バイナリを追加しました。
コマンドライン:
Set-ItemProperty -Path \"HKCU:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" -Name \"current\" -Value \"C:\\ProgramData\\Cliento\\jdk-22_windows-x64_bin\\jdk-22.0.2\\bin\\javaw.exe -jar C:\\ProgramData\\Cliento\\Cliento.jar\" -ErrorAction Stop"
このインシデントの封じ込めと根絶は非常に迅速かつ効果的に行われ、私たちが入手した法医学的証拠によれば、攻撃者が被害者のホストと組織に重大な損害を与えた形跡はありませんでした。
上で詳述した攻撃フローから得られる重要な洞察の 1 つは、攻撃者が攻撃の一環として、よく知られ、一般的に使用されているさまざまな Microsoft サービスを使用したことです。これは、目に見えないようにするためと、おそらくは利便性のためでもありました。
次の表を使用して、脅威の攻撃者がこれまでに使用した Microsoft サービスを簡単にまとめてみましょう。
サービス | テナント | 目的 |
---|---|---|
マイクロソフトチーム | 組織Aから組織Cへ | 被害者を誘い出してリモート管理ツールをダウンロードさせ、実行させるためのスピアフィッシングメッセージ |
クイックアシスト | 組織C | 脅威アクターは、Microsoft Teamsメッセージを使用してクイックアシストコードを送信し、最初のリモート制御を取得します。 |
シェアポイント | 組織Bから組織Cへ | 悪意のあるファイルは組織 B の SharePoint テナントに「ホスト」されています。ダウンロード リンクは SharePoint メッセージを介して組織 C と共有され、攻撃者がクイック アシストを使用して開きます。 |
グラフAPI | 組織 C から N/A へ | 悪意のある cliento.jar によって開始された Microsoft Graph (graph[.]microsoft[.]com) への悪意のあるアクセスの兆候がありました。 |
この段階で、私たちは上記の 4 つの Microsoft サービス/アプリを特定しました。最初の 3 つの目的は理解できましたが、Graph API に向けたアクティビティは不明のままでした。その潜在的な目的についてはいくつかの仮定がありましたが、インシデント対応では仮定だけでは不十分ですよね?
OneDrive/SharePoint の .JAR マルウェア「Cliento.jar」について、より多くの情報を収集し、より深く理解するために (攻撃者が実行する可能性のあるアクションを評価し、その意図を把握するために)、マルウェアの詳細な分析を進めました。
Client.jar マルウェア (「ODC2」と名付けました) を逆コンパイルするために、「JDGUI」という Java 逆コンパイラを使用しました。
マルウェアを最初に大まかに調べただけでも、インシデント調査で確認した PowerShell 実行とすぐに相関関係があることがわかりました。これは、Java 用の PowerShell ラッパーである「 jPowerShell 」Java パッケージが含まれていたためです。
さらに、「コマンド」、「接続」、「ランチャー」、「または接続」などの追加パッケージも確認できました。これにより、マルウェアの構造を高レベルで理解することができました。
私たちは「launcher」パッケージの Main.class から始めて、マルウェアが使用するハードコードされた資格情報のセットを発見しました。これは私たちにとって少し意外でしたが、非常に興味深いものでした。
マルウェアをさらに分析すると (以下の詳細な分析で説明)、マルウェアがこれらの資格情報を使用して Entra ID への「代理」認証を実行していることがわかりました。この認証を実行するために、ハードコードされたリフレッシュ トークンがクライアント ID およびクライアント シークレットとともに使用され、アクセス トークンが要求されました。
この認証により、マルウェアは、攻撃者が所有しているとされるテナント内の特定の Entra ID ユーザーの OneDrive にアクセスし、このアクセスを C2 目的で悪用できるようになりました。
Main.class のメイン関数では、複数のスレッドを含むエントリ ポイント自体を確認できます。これには、関数「odThread1」と「mainThread1」の実行が含まれます。
「odThread1」には、認証用のハードコードされた資格情報の最初のセット(リフレッシュ トークンなど)を取得するコントローラーの「odRun」関数の実行が含まれます。
「odRun」接続設定には「40.90.196.221」 IPアドレスを使用します。
「実行」のIPアドレス「40.90.196.228」は、攻撃者のC2へのHTTPSソケットを初期化します。このIPはAzureのIPでもあり、仮想マシンである可能性が非常に高いです。このC2チャネルは、以下に詳述するように、より「古典的」であり、PowerShellコマンドの実行につながります。
これらの IP アドレスに関する詳細情報を取得するために、以下のスクリーンショットに示すように、ipinfo.io などの既知のリソースと、Microsoft が公開している Azure IP アドレスのサービス タグを確認しました。
また、このマルウェアで見つかった追加のハードコードされた IP アドレス (38.180.136.85) は、別のサービス プロバイダーが所有しており、ホスティング サービスに関連付けられているようです。私たちの調査によると、この IP アドレスはマルウェアによって積極的に使用されていませんでした。これは、従来の理由 (以前の C2 インフラストラクチャ) で存在していたものと推測されます。
「ctrl.run()」関数を実行する「mainThread1()」をもう少し詳しく調べると、run() 関数が接続を作成しようとし、接続がアクティブかどうかを定期的にチェックしていることがわかります。次に、「parseCommand」を試みて、無関係な部分をトリミングします。
この「run」関数は、「connect()」を使用して接続を設定/リセットします。これは、上で見たリモート IP アドレス 40.90.196.228 へのソケットを作成します。
この「実行」機能は「CommandManager」を使用します。これには、クライアントからサーバー、サーバーからクライアントへのファイル転送、ファイルの圧縮、スクリーンショット、ネットワーク接続の終了、そしてもちろんコマンドの実行など、このマルウェアが提供するさまざまな種類のコマンド/機能に対するさまざまな処理が含まれます。
受信したコマンドが空かどうか、または C2 サーバーから実際のコマンドが受信されたかどうかを確認します。
コマンドが見つかった場合は、それを解析して実行します。実行は基本的に PowerShell のコンテキストで行われます。
受信コマンドを PowerShell コマンドとして実行することは、前述の jPowerShell ラッパーを使用して実行されます。
OneDrive C2 機能の核心に迫る前に、マルウェアのコードの重要な部分が OneDrive ファイルの 3 つの特定の「タイプ」、つまり UUID、cf_UUID、rf_UUID に大きく依存していることに注意することが重要です。調査で確認されたように、コマンドGet-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
が実行され、デバイス ハードウェアの UUID が明らかになりました。この一意の識別子は、VEILDrive キャンペーンの各被害者を区別するために使用されます。
各ファイル タイプは、マルウェアの動作において異なる役割を果たします。次のスクリーンショットは、これらのファイルの例と、マルウェアの実行における主な役割を示しています。
OneDrive C2 機能のフローと、それらの UUID ファイルが実際にどのように使用されているかについて詳しく見てみましょう。
PowerShell を介した従来のリモート実行機能に加えて、「odRun」関数は、通信チャネルとして「OneDrive」に基づく別のスレッドを担当します。これがこのマルウェアのユニークな部分です。
「odRun」は、おそらく「OneDrive」(OneDriveRun) にちなんで名付けられており、最初のステップとして「Odconnect」関数を使用して OneDrive 接続を作成することが含まれます。
ご覧のとおり、最初に「machineUUID」文字列が空の文字列として設定されます。続いて「getMachineUUID()」関数が実行され、その名前が示すように、被害者のデバイスのマシン UUID を取得します。
次に、OneDrive 接続が「OdConnect」関数を使用して実行されていることがわかります。新しいアクセス トークンと更新トークンのセットの作成/更新のために、「login[.]microsoftonline[.]com」への接続が確立されています。
”checkFile”: この関数は、現在のユーザーのOneDriveのホームフォルダに== machineUUIDという名前のファイルがあるかどうかを確認します。
デバイスの machineUUID (プレフィックスなし) で名前が付けられた OneDrive ファイル。
cf_MachineUUID ファイルの内容が実行されます。
続いて、「 writeFileToOneDrive 」、最初に「rf_」+ machineUUID、実行応答の内容を使用して、OneDrive にファイルを書き込みます。
また、「 writeFileToOneDrive 」の別の使用法として、「cf_」ファイルを書き込んで空にすることで、基本的に同じコマンドが再度実行されるのを防ぎます(マルウェアはループ内で実行されるため)。
簡単にまとめると、このマルウェアは、次の 2 つの異なる C2 チャネルを操作できるようです。
HTTPS ソケット C2 : より古典的なアプローチ。リモートAzure VMからコマンドを受信し、PowerShell のコンテキストで実行します。
OneDrive ベースの C2 : これはよりユニークで、動作方法が少し複雑で独創的です。3 つの異なるファイルが含まれており、そのすべてに被害者のデバイスの UUID が含まれており、一部にはプレフィックス (rf_ および cf_) が付いています。脅威アクターが Microsoft Graph を使用してコマンドを簡単に送受信できるようにするためです。
注: このマルウェアには、ファイル転送などの標準コマンド実行の他に、追加機能があることを言及することが重要です。ただし、上記の詳細情報は、コマンド実行の側面のみに焦点を当てています。
この時点で、この攻撃は単純な手法と洗練された独自の戦術を巧みに組み合わせていることが明らかです。当社の初期調査で際立った特徴の 1 つは、キャンペーン全体を通じて統合された Microsoft インフラストラクチャとサービスの広範な使用でした。
マルウェアを分析し、新しい情報を調査の洞察と関連付けた結果、攻撃者がさまざまなサービスをどのように使用し、その目的があるのかをより明確に理解することができました。Microsoft のサービスとインフラストラクチャの利用は、当初考えられていたよりもさらに広範囲に及んでいることがわかりました。
簡単な概要については、以下の表をご覧ください。
サービス | テナント | 目的 |
---|---|---|
マイクロソフトチーム | 組織Aから組織Cへ | 被害者を誘い出してリモート管理ツールをダウンロードさせ、実行させるためのスピアフィッシングメッセージ |
クイックアシスト | 組織C | 脅威アクターは、Microsoft Teamsメッセージを使用してクイックアシストコードを送信し、最初のリモート制御を取得します。 |
シェアポイント | 組織Bから組織Cへ | 悪意のあるファイルは、組織 B の SharePoint テナントに「ホスト」されています。ダウンロード リンクは SharePoint メッセージを介して組織 C と共有され、攻撃者がクイック アシストを使用して開きます。 |
Azure VM | 攻撃者のインフラストラクチャ | マルウェアは、HTTPSソケットC2の目的で脅威アクターが所有するAzure仮想マシンと通信しました。 |
OneDrive (グラフ API) | 攻撃者の OneDrive と Org C ホスト間 | 脅威アクターは、OneDrive を追加の C2 チャネルとして使用し、Org C ホストをターゲットにして、コマンドのリモート実行、スクリーンショットの撮影、ファイルのダウンロード/アップロードなどの機能を取得しました。 |
Azure AD アプリ登録 | 攻撃者のOneDriveとOrg Cホスト間 | アプリケーションは、攻撃者が所有するAzure ADユーザーアカウントに代わって認証に使用され、OneDriveホームフォルダーにアクセスします。 |
C5f077f6-5f7e-41a3-8354-8e31d50ee4d
893e5862-3e08-434b-9067-3289bec85f7d
B686e964-b479-4ff5-bef6-e360321a9b65
2c73cab1-a8ee-4073-96fd-38245d976882
SafeShift390[.]onmicrosoft[.]com
GreenGuard036[.]onmicrosoft[.]com
a515634efa79685970e0930332233aee74ec95aed94271e674445712549dd254
1040aede16d944be8831518c68edb14ccbf255feae3ea200c9401186f62d2cc4
7f61ff9dc6bea9dee11edfbc641550015270b2e8230b6196e3e9e354ff39da0e
d6af24a340fe1a0c6265399bfb2823ac01782e17fc0f966554e01b6a1110473f
7f33398b98e225f56cd287060beff6773abb92404afc21436b0a20124919fe05
40.90.196[.]221
40.90.196[.]228
38.180.136[.]85
213.87.86[.]192
上記の特定のIOCに加えて、同じ攻撃者によって発信された攻撃、同じキャンペーンで実行された攻撃、または同様の特性(TTP)を共有する攻撃を検出するために使用できる複数の脅威ハンティングクエリを作成しました。
注: VEILDrive の推奨狩猟期間は 2024 年 7 月からとなります。
クエリ ロジック:分析中に、攻撃者のリモート アクセス ツール (RAT) が実行プロセスの一環として Powershell を使用してマシンの UUID を取得していることが判明しました。このクエリは、脅威アクターが使用する特定のコマンド ライン フラグを使用して javaw.exe によって生成される Powershell の異常なインスタンスを検出します。
クエリ:
SELECT EVENT_TIME, AGENT_ID, PARENT_PROCESS_NAME, PARENT_PROCESS_COMMANDLINE, INITIATING_PROCESS_NAME, INITIATING_PROCESS_COMMANDLINE, TARGET_PROCESS_NAME, TARGET_PROCESS_COMMANDLINE, TARGET_PROCESS_OS_PID FROM INVESTIGATION.EDR_PROCESS_CREATION_EVENTS WHERE 1=1 AND PARENT_PROCESS_NAME ILIKE '%javaw%' AND INITIATING_PROCESS_NAME ILIKE '%cmd%' AND TARGET_PROCESS_NAME ILIKE '%powershell%' AND TARGET_PROCESS_COMMANDLINE ILIKE 'powershell.exe -ExecutionPolicy Bypass -NoExit -NoProfile %' AND EVENT_TIME > current_timestamp - interval '60d'
クエリ ロジック:このクエリは、脅威アクターが永続化のために使用する ROM ツールの実行に登録するスケジュールされたタスクのインスタンスを検出します。
クエリ:
SELECT EVENT_TIME AS EVENT_TIME, AID AS AGENT_ID, CID AS COMPUTER_ID, EVENT_SIMPLE_NAME AS EVENT_NAME, RAW:TaskName AS TASK_NAME, RAW:TaskExecCommand AS TASK_EXEC_COMMAND, RAW:TaskAuthor AS TASK_AUTHOR, RAW:UserName AS USER_NAME --- Adjust according to your EDR of choice FROM RAW.CROWDSTRIKE_RAW_EVENTS WHERE EVENT_SIMPLE_NAME = 'ScheduledTaskRegistered' AND TASK_EXEC_COMMAND ILIKE '%romserver%' AND EVENT_TIME > CURRENT_TIMESTAMP - interval '60d'
SET YOUR_ORGANIZATION_NAME = 'hunters'; SELECT EVENT_TIME, ORGANIZATION_ID AS ORG_ID, OPERATION AS EVENT_TYPE, SPLIT_PART(LOWER(SPLIT_PART(USER_ID, '@', 2)), '.', 1) AS SENDER_ORG_DOMAIN, RECORD_SPECIFIC_DETAILS:message_ur_ls AS MESSAGE_URLS, WORKLOAD AS WORKLOAD, USER_ID AS USER_ID, RECORD_SPECIFIC_DETAILS:chat_thread_id AS CHAT_THREAD_ID, RECORD_SPECIFIC_DETAILS:communication_type AS COMMUNICATION_TYPE, RECORD_SPECIFIC_DETAILS:members[0].DisplayName AS MEMBER_DISPLAY_NAME, RECORD_SPECIFIC_DETAILS:members[0].UPN AS MEMBER_UPN, RECORD_SPECIFIC_DETAILS:members[0] AS MEMBERS, RECORD_SPECIFIC_DETAILS:resource_tenant_id AS RESOURCE_TENANT_ID, RECORD_SPECIFIC_DETAILS FROM RAW.O365_AUDIT_LOGS WHERE NOT USER_ID ILIKE '%' || $YOUR_ORGANIZATION_NAME || '%' AND (NOT (MESSAGE_URLS ILIKE '%' || SENDER_ORG_DOMAIN || '%') AND MESSAGE_URLS ILIKE '%sharepoint%') AND NOT MESSAGE_URLS ILIKE '%' || $YOUR_ORGANIZATION_NAME || '%' AND EVENT_TIME > CURRENT_TIMESTAMP - interval '60d'
クエリ ロジック:次のクエリは、非共通ドメインの外部ユーザーによる 1 対 1 のチャットで送信されたメッセージを検出します。このクエリは、過去のアクティビティに基づいて頻繁に使用されるドメインを除外し、フィッシング攻撃を行っている可能性があるチャットに追加された外部メンバーを識別します。
クエリ:
SET YOUR_DOMAIN_NAME = 'hunters'; --- GET EXTERNAL TEAMS AND ONEDRIVE USERS OF THE LAST 3 MONTHS - TO CLEAN EXTENSIVELY USED DOMAINS WITH COMMONLY_USED_DOMAINS AS ( SELECT LOWER(SPLIT_PART(USER_ID , '@', 2)) AS DOMAIN_COMMONLY_USED, MIN(EVENT_TIME) AS MIN_EVENT_TIME, MAX(EVENT_TIME) AS MAX_EVENT_TIME, ARRAY_AGG(DISTINCT OPERATION) AS OPERATIONS, COUNT(*) AS COUNTER FROM RAW.O365_AUDIT_LOGS WHERE WORKLOAD IN ('MicrosoftTeams', 'OneDrive') AND EVENT_TIME > CURRENT_TIMESTAMP - interval '90d' AND USER_ID ILIKE '%@%' GROUP BY DOMAIN_COMMONLY_USED HAVING COUNTER > 20 ), ---- Get List of External Domains that recently communicated with our organization using Microsoft Teams LATEST_EXTERNAL_DOMAINS AS ( SELECT USER_ID AS LATEST_EXT_USERS, LOWER(SPLIT_PART(USER_ID , '@', 2)) AS USER_DOMAIN, MIN(EVENT_TIME) AS MIN_EVENT_TIME, MAX(EVENT_TIME) AS MAX_EVENT_TIME, ARRAY_AGG(DISTINCT OPERATION) AS OPERATIONS, ARRAY_AGG(DISTINCT RECORD_SPECIFIC_DETAILS:communication_type) AS COMMUNICATION_TYPE, COUNT(*) AS COUNTER FROM RAW.O365_AUDIT_LOGS WHERE EVENT_TIME > CURRENT_TIMESTAMP - interval '50d' AND NOT USER_ID ILIKE '%' || $YOUR_DOMAIN_NAME || '%' AND NOT USER_ID IN ('app@sharepoint') AND USER_ID ILIKE '%@%' -- CLEAN-UP OF EXTENSIVELY USED DOMAINS AND USER_DOMAIN NOT IN (SELECT DISTINCT DOMAIN_COMMONLY_USED FROM COMMONLY_USED_DOMAINS) AND OPERATION IN ('MemberAdded', 'ChatCreated') AND RECORD_SPECIFIC_DETAILS:communication_type = 'OneOnOne' GROUP BY USER_ID HAVING COUNT(*) > 5 ) SELECT EVENT_TIME, ORGANIZATION_ID AS ORG_ID, WORKLOAD AS WORKLOAD, OPERATION AS OPERATION, USER_ID AS USER_ID, LOWER(SPLIT_PART(USER_ID , '@', 2)) AS USER_DOMAIN, RECORD_SPECIFIC_DETAILS:chat_thread_id AS CHAT_THREAD_ID, RECORD_SPECIFIC_DETAILS:communication_type AS COMMUNICATION_TYPE, RECORD_SPECIFIC_DETAILS:members[0].DisplayName AS MEMBER_DISPLAY_NAME_0, RECORD_SPECIFIC_DETAILS:members[0].UPN AS MEMBER_UPN_0, RECORD_SPECIFIC_DETAILS:members[0] AS MEMBERS_0, RECORD_SPECIFIC_DETAILS:members[1].DisplayName AS MEMBER_DISPLAY_NAME_2, RECORD_SPECIFIC_DETAILS:members[1].UPN AS MEMBER_UPN_2, RECORD_SPECIFIC_DETAILS:members[1] AS MEMBERS_2, RECORD_SPECIFIC_DETAILS:resource_tenant_id AS RESOURCE_TENANT_ID, RECORD_SPECIFIC_DETAILS, RAW:ClientIP AS CLIENT_IP FROM RAW.O365_AUDIT_LOGS WHERE 1=1 AND RECORD_SPECIFIC_DETAILS:communication_type = 'OneOnOne' AND ( RECORD_SPECIFIC_DETAILS:members[0].UPN IN (SELECT LATEST_EXT_USERS FROM LATEST_EXTERNAL_DOMAINS) OR RECORD_SPECIFIC_DETAILS:members[1].UPN IN (SELECT LATEST_EXT_USERS FROM LATEST_EXTERNAL_DOMAINS) ) AND USER_ID ILIKE '%' || $YOUR_DOMAIN_NAME || '%' AND OPERATION = 'MemberAdded' AND EVENT_TIME > CURRENT_TIMESTAMP - interval '50d';
詳細なクエリ ロジック:このクエリは少し複雑なので、ここでロジックを説明します。まず、Snowflake の「CTE」機能を使用して 2 つのビューを構築します。
最後に、LATEST_EXTERNAL_DOMAINS からフィルタリングされた結果を照会して、ユーザーとそれに関連付けられたドメインに関する詳細情報を取得します。
私たちは、攻撃者が使用した複数の攻撃手法に関連するハンティングと調査の側面について取り上げました。これらの悪意のある方法と手法の一部は、さまざまなキャンペーンでも使用されていることが知られています。
これらの脅威から組織を保護することで、組織のインフラストラクチャのさまざまな部分を標的とした攻撃が成功する可能性を大幅に減らすことができます。
セキュリティ体制を強化するために使用できる Hygiene Nuggets をいくつか紹介します。
VEILDrive はシンプルさと洗練さを兼ね備えています。OneDrive 経由の C2 と並行して従来の C2 特性が使用されていることや、従来のスケジュールされたタスク ベースの永続性と、一流の EDR では検出されないマルウェア実行が組み合わされていることは興味深いことです。
調査と脅威研究の一環として特定された特性は興味深いものであり、これにより、この脅威アクターがどのように機能するか、どの既知のサービスを悪用しているか、どのように悪用しているか、そしてその目的は何かをより深く理解することができました。
VEILDrive で C2 通信に OneDrive が悪用された方法には、独特の特徴がありました。ただし、C2 目的で OneDrive を悪用するという一般的な概念は、ここ数か月で増加しており、留意しておく必要があります。
Microsoft Teams、Slack などのコミュニケーション プラットフォームや類似のサービスでのスピア フィッシングによる初期アクセスがますます一般的になっています。
時間が経つにつれて、この傾向はさらに強くなると予想されます。したがって、この側面に関連する衛生と姿勢の対策(上記の「衛生ナゲット」で述べたように)が非常に重要です。
リモート管理ツールは、脅威アクターの間ですでに非常に人気があります。このようなツールを使用した不正アクセスの可能性を最小限に抑えるには、さまざまなアプローチを取ることができます。私たちの観点からすると、この分野で推奨されるアプローチは、ホワイトリスト (許可リスト) と堅牢な監視を組み合わせたものです。
同様の手法と特徴を採用した、この種の攻撃が今後もさらに発生すると予想されます。そのため、この種の脅威に対する継続的な監視と積極的な脅威ハンティングを強くお勧めします。
脅威ハンティングの調査、活動、クエリに関する最新情報を入手するには、Team Axon の X/Twitter アカウント ( @team__axon ) をフォローしてください。