Récemment, partagé sur Twitter Voici comment exécuter une requête pour détecter si un utilisateur a cliqué sur un lien dans Outlook à l'aide de Microsoft Defender Advanced Threat Protection (MDATP). Pour rappel, MDATP est inclus dans votre licence Microsoft 365 E5 et constitue une amélioration de Windows Defender.
Qu'est-ce que Microsoft Defender Advanced Threat Protection ?
Microsoft Microsoft Defender Advanced Threat Protection est une plateforme conçue pour aider les réseaux d'entreprise à prévenir, détecter, analyser et contrer les menaces avancées. MDATP propose de nombreux terminaux utilisables pour la réponse aux incidents et la recherche de menaces.
Le responsable documentation Plusieurs points de terminaison d'API permettent d'obtenir, de créer et de mettre à jour des alertes et des indicateurs. Voici également une liste non exhaustive des informations que vous pouvez récupérer ou des actions que vous pouvez effectuer avec les API de protection avancée contre les menaces de Microsoft Defender :
- Recevez toutes les alertes relatives à un domaine, un fichier, une adresse IP, une machine ou un utilisateur.
- Récupérer des informations sur les personnes connectées à une machine donnée.
- Déterminez si un domaine ou une adresse IP a été repéré(e) au sein de votre organisation.
Ce ne sont là que quelques exemples des API intéressantes disponibles, mais pour moi, la plus convaincante – et celle dont nous allons parler – est chasse avancée.
Interaction avec Microsoft Defender Advanced Threat Protection
J'ai créé un nouveau module pour Swimlane qui encapsule l'ensemble des points de terminaison de l'API Microsoft Defender ATP. Cependant, pour ceux qui ne sont pas clients, je souhaite vous montrer comment interagir avec les API Microsoft Defender ATP en utilisant à la fois Noyau PowerShell et Python.
Pour interagir avec les API de protection avancée contre les menaces de Microsoft Defender, vous devez disposer des éléments suivants :
- Licence Microsoft 365 E5 ou accès à MDATP.
- Au moins un point de terminaison doit avoir MDATP installé et en cours d'exécution.
- La possibilité de créer une nouvelle application dans Azure Active Directory.
Commençons par créer une application dans Azure Active Directory. Vous pouvez créer une application dans Azure AD sous la section Azure Active Directory, puis en accédant à Inscriptions à l'application. Cliquez sur le . Nouvelle inscription Cliquez sur le bouton et donnez un nom à votre application. Ensuite, cliquez sur Registre.

Copiez et enregistrez votre ID client et Identifiant du locataire dans un endroit sûr (nous aurons besoin de cette information prochainement). Ensuite, sélectionnez le Autorisations API section et cliquez Ajouter une autorisation. Vous devriez avoir une nouvelle lame du côté gauche.
Lorsque cette nouvelle lame est ouverte, sélectionnez le API utilisées par mon organisation onglet. Vous devrez peut-être filtrer dans la barre de recherche, mais vous devriez voir Windows Defender ATP Cette option est proposée. Si vous ne l'avez pas, veuillez vérifier que vous avez accès à cette API avant de continuer.

Sélectionnez Windows Defender ATP API puis sélectionnez Autorisations de l'application. Une fois que vous avez sélectionné Autorisations de l'application, Une liste d'autorisations vous sera présentée. Dans cet exemple, je sélectionne toutes les autorisations afin d'avoir accès à tous les points de terminaison disponibles, mais veuillez faire preuve de discernement.
Une fois que vous avez sélectionné les autorisations souhaitées, cliquez Ajouter des autorisations En bas, puis sur l'écran principal, vous devrez vous assurer de sélectionner Consentement du Grand Administrateur.

Ensuite, allez à Certificats et secrets section et créer une Nouveau secret client. Une fois ce fichier créé, veuillez l'enregistrer avec les autres secrets que nous avons sauvegardés précédemment.
Maintenant que nous connaissons nos secrets, nous pouvons utiliser les deux fichiers que j'ai créés qui montrent comment utiliser les API MDATP pour récupérer un Jeton pour une authentification future ainsi que pour interagir directement avec l'API MDATP.
Noyau PowerShell
J'ai fourni un ps1 Ce fichier peut vous servir de référence. Il contient deux fonctions PowerShell, que nous appelons en fonction des besoins à la fin :
- Obtenir-MDATPToken: Effectue une authentification OAuth2 et récupère un jeton que nous utiliserons dans tous les appels ultérieurs aux points de terminaison de l'API MDATP.
- Invoquer-MDATPQuery: Invoque un chasse avancée requête adressée au MDATP requêtes avancées/exécuter point final.
En utilisant ces deux fonctions, nous pouvons exécuter des requêtes sur nos points de terminaison sur lesquels MDATP est installé.
Tout d'abord, récupérons notre jeton :
$Token = Get-MDATPToken -ClientId 'OUR_CLIENT_ID' -ClientSecret 'CLIENT_SECRET' -TenantId 'TENANT_ID''
Ensuite, nous pouvons définir une requête simple :
$query = @" "RegistryEvents | limit 10" "@
Ou des requêtes plus avancées, comme celle-ci permettant de vérifier si un utilisateur a cliqué sur un lien depuis son Outlook. Heureusement, Microsoft a fourni une ressource INCROYABLE de exemples de requêtes à votre disposition.
$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 Paramètres"]["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 "@
Maintenant que nous avons notre jeton et notre requête, nous pouvons exécuter notre requête en utilisant le Invoquer-MDATPQuery fonction:
Invoke-MDATPTQuery -Token $Token -Query $query
C'est ça!
Python
Tout comme dans notre exemple PowerShell, j'ai créé deux classes Python qui faciliteront l'authentification et l'exécution de requêtes avancées :
- Connecteur MDATP: Effectue une authentification OAuth2 et récupère un jeton que nous utiliserons dans tous les appels ultérieurs aux points de terminaison de l'API MDATP.
- MDATPQuery: Invoque un chasse avancée requête adressée au MDATP requêtes avancées/exécuter point final.
Commencez par créer un objet MDATPConnector en fournissant vos secrets :
connecteur = MDATPConnector( __CLIENT_ID__, __CLIENT_SECRET__, __TENANT_ID__ )
Ensuite, par souci de simplicité, exécutons cette requête plus courte :
requête = ''' "RegistryEvents | limit 10" ''''
Maintenant, nous devons transmettre notre objet MDATPConnector et notre requête à la classe MDATPQuery, puis exécuter :
mdatp = MDATPQuery(connecteur, requête) print(mdatp.execute())
C'est ça!
J'espère que vous avez apprécié cette présentation de Microsoft Defender Advanced Threat Protection ! Restez à l'affût de notre nouvelle offre groupée qui inclut Requêtes avancées et tous les autres points de terminaison disponibles dans l'API MDATP.
Demander une démo
Réservez une démonstration en direct de Swimlane Turbine avec nos experts ! Découvrez comment notre plateforme d’automatisation de la sécurité basée sur l’IA peut vous aider à résoudre les problèmes les plus complexes au sein de votre organisation de sécurité.

