最近、私は Twitterで共有 Microsoft Defender Advanced Threat Protection (MDATP) を使用して、ユーザーが Outlook 内のリンクをクリックしたかどうかを検出するクエリを実行する方法を説明します。MDATP は Microsoft 365 E5 ライセンスで利用可能であり、従来の Windows Defender の拡張機能です。.
Microsoft Defender Advanced Threat Protection とは何ですか?
マイクロソフト 「Microsoft Defender Advanced Threat Protection は、企業ネットワークが高度な脅威を防止、検出、調査、対応できるように設計されたプラットフォームです」と説明されています。MDATP は、インシデント対応と脅威ハンティングの両方で活用できるエンドポイントを多数提供しています。.
公式 ドキュメント アラートとインジケーターの取得、作成、更新に使用できるAPIエンドポイントがいくつかあります。また、Microsoft Defender Advanced Threat Protection APIで取得できる情報や実行できるアクションの一部を以下に示します。
- ドメイン、ファイル、IP、マシン、またはユーザーに関連するすべてのアラートを取得します。.
- 特定のマシンにログオンしているユーザーに関する情報を取得します。.
- ドメインまたは IP が組織内で確認されたかどうかを判断します。.
これらは利用可能な興味深いAPIのほんの一部ですが、私にとって最も魅力的なのは、そしてこれからお話しするAPIです。 高度な狩猟.
Microsoft Defender Advanced Threat Protection の操作
私はMicrosoft Defender ATP APIエンドポイント全体をラップするSwimlane用の新しいバンドルを作成しましたが、非顧客向けに、Microsoft Defender ATP APIを両方で操作する方法を共有したいと思います。 PowerShell コア そして パイソン.
Microsoft Defender の高度な脅威保護 API を操作するには、次のものが必要です。
- Microsoft 365 E5 ライセンスまたは MDATP へのアクセス。.
- 少なくとも 1 つのエンドポイントに MDATP がインストールされ、実行されている必要があります。.
- Azure Active Directory で新しいアプリケーションを作成する機能。.
まず、Azure Active Directoryで新しいアプリケーションを作成しましょう。Azure ADのAzure Active Directoryセクションで新しいアプリケーションを作成し、 アプリ登録. クリックして 新規登録 ボタンをクリックし、アプリケーション名を入力します。 登録する.

コピーして保存 クライアントID そして テナントID 安全な場所に保管してください(この情報はすぐに必要になります)。次に、 API権限 セクションをクリックして 権限を追加する. 左側に新しい刃が付いているはずです。.
この新しいブレードが開いたら、 私の組織が使用するAPI タブ。検索バーでフィルターをかける必要があるかもしれませんが、 WindowsDefenderATP オプションとしてリストされています。リストされていない場合は、続行する前にこのAPIにアクセスできることを確認してください。.

選択してください WindowsDefenderATP APIを選択し、 アプリケーションの権限. 選択したら アプリケーションの権限、, 権限のリストが表示されます。この例では、利用可能なすべてのエンドポイントにアクセスできるように「すべて」を選択していますが、ご自身の判断で行ってください。.
必要な権限を選択したら、 権限を追加する 下部にあるメイン画面で、 グランド管理者の同意。.

次に、 証明書と秘密 セクションを作成し、 新しいクライアントシークレット. 作成されたら、先ほど保存した他のシークレットと一緒に保存してください。.
秘密が分かったので、MDATP APIを使ってデータを取得する方法を示す2つの異なるファイルを使用することができます。 トークン 将来の認証に使用したり、MDATP API と直接やり取りしたりすることもできます。.
PowerShell コア
私は プレイステーション1 参照として使用できるファイルです。このファイルには2つのPowerShell関数が含まれており、ファイル下部で必要に応じてこれらの関数を呼び出しています。
- Get-MDATPToken: OAuth2 認証を実行し、MDATP API エンドポイントへの後続のすべての呼び出しで使用するトークンを取得します。.
- Invoke-MDATPQuery: 呼び出し 高度な狩猟 MDATPへの問い合わせ 高度なクエリ/実行 終点。.
これら 2 つの関数を使用することで、MDATP がインストールされているエンドポイントでクエリを実行できます。.
まず、トークンを取得しましょう:
$Token = Get-MDATPToken -ClientId 'OUR_CLIENT_ID' -ClientSecret 'CLIENT_SECRET' -TenantId 'TENANT_ID''
次に、簡単なクエリを定義します。
$query = @" "レジストリイベント | 制限 10" "@
あるいは、ユーザーがOutlookからリンクをクリックしたかどうかを確認するための、より高度なクエリもあります。幸いなことに、, マイクロソフト 素晴らしいリソースを提供してくれました クエリの例 あなたが使用するために。.
$query = @" let minTimeRange = ago(7d); let outlookLinks = MiscEvents | where EventTime > minTimeRange and ActionType == "BrowserLaunchedToOpenUrl" and isnotempty(RemoteUrl) | where InitiatingProcessFileName =~ "outlook.exe" or InitiatingProcessFileName =~ "runtimebroker.exe" | project EventTime, MachineId, ComputerName, RemoteUrl, InitiatingProcessFileName, ParsedUrl=parse_url(RemoteUrl) | extend WasOutlookSafeLink=(tostring(ParsedUrl.Host) endswith "safelinks.protection.outlook.com") | project EventTime, MachineId, ComputerName, WasOutlookSafeLink, InitiatingProcessFileName, OpenedLink=iff(WasOutlookSafeLink, url_decode(tostring(ParsedUrl["Query Parameters"]["url"])), RemoteUrl); let alerts = AlertEvents | summarize (FirstDetectedActivity, Title)=argmin(EventTime, Title) by AlertId, MachineId | where FirstDetectedActivity > minTimeRange; alerts | join kind=inner (outlookLinks) on MachineId | where FirstDetectedActivity - EventTime between (0min..3min) | summarize FirstDetectedActivity=min(FirstDetectedActivity), AlertTitles=makeset(Title) by OpenedLink, InitiatingProcessFileName, EventTime=bin(EventTime, 1tick), ComputerName, MachineId, WasOutlookSafeLink "@
トークンとクエリが準備できたので、 Invoke-MDATPQuery 関数:
Invoke-MDATPTQuery -Token $Token -Query $query
それでおしまい!
パイソン
PowerShell の例と同様に、認証と高度なクエリの実行に役立つ 2 つの Python クラスを作成しました。
- MDATPコネクタ: OAuth2 認証を実行し、MDATP API エンドポイントへの後続のすべての呼び出しで使用するトークンを取得します。.
- MDATPクエリ: 呼び出し 高度な狩猟 MDATPへの問い合わせ 高度なクエリ/実行 終点。.
まず、秘密を指定して MDATPConnector オブジェクトを作成します。
コネクタ = MDATPConnector( __CLIENT_ID__, __CLIENT_SECRET__, __TENANT_ID__ )
次に、簡単にするために、次の小さなクエリを実行してみましょう。
クエリ = ''' "RegistryEvents | 制限 10" ''''
ここで、MDATPConnector オブジェクトとクエリを MDATPQuery クラスに渡して実行する必要があります。
mdatp = MDATPQuery(コネクタ、クエリ) print(mdatp.execute())
それでおしまい!
Microsoft Defender Advanced Threat Protectionについて学んでいただけたでしょうか?新しいバンドルにご注目ください。 高度なクエリ MDATP API 内で利用可能なその他すべてのエンドポイント。.
デモのリクエスト
専門家によるSwimlane Turbineのライブデモをご予約ください。AI対応のセキュリティ自動化プラットフォームが、セキュリティ組織全体の最も困難な課題の解決にどのように役立つかをご覧ください。.

