최근에 저는 트위터에 공유됨 Microsoft Defender Advanced Threat Protection(MDATP)을 사용하여 사용자가 Outlook 내 링크를 클릭했는지 감지하는 쿼리를 실행하는 방법을 설명합니다. MDATP는 Microsoft 365 E5 라이선스에 포함되어 있으며 기존 Windows Defender를 향상시킨 기능입니다.
Microsoft Defender Advanced Threat Protection이란 무엇입니까?
마이크로소프트 Microsoft Defender Advanced Threat Protection(MDATP)은 기업 네트워크가 고급 위협을 예방, 탐지, 조사 및 대응할 수 있도록 설계된 플랫폼이라고 설명합니다. MDATP는 사고 대응 및 위협 탐지에 활용할 수 있는 다양한 엔드포인트를 제공합니다.
공식 선적 서류 비치 Microsoft Defender 고급 위협 방지 API는 경고 및 표시기를 가져오고, 생성하고, 업데이트하는 데 사용할 수 있는 여러 API 엔드포인트를 제공합니다. 또한 다음은 Microsoft Defender 고급 위협 방지 API를 통해 검색할 수 있는 정보 또는 수행할 수 있는 작업의 일부 목록입니다.
- 도메인, 파일, IP 주소, 컴퓨터 또는 사용자와 관련된 모든 알림을 받으세요.
- 특정 컴퓨터에 로그인한 사용자에 대한 정보를 검색합니다.
- 조직에서 특정 도메인이나 IP 주소가 사용된 적이 있는지 확인하십시오.
이것들은 사용 가능한 흥미로운 API 중 일부에 불과하지만, 제게 가장 매력적인 API이자 우리가 오늘 이야기할 API는 바로 이것입니다. 고급 사냥.
Microsoft Defender 고급 위협 방지 기능과 상호 작용하기
저는 Swimlane용으로 Microsoft Defender ATP API 엔드포인트 전체를 래핑하는 새로운 번들을 작성했습니다. 하지만 저희 고객이 아니신 분들을 위해 두 가지 방법을 모두 사용하여 Microsoft Defender ATP API와 상호 작용하는 방법을 공유하고 싶습니다. PowerShell 코어 그리고 파이썬.
Microsoft Defender 고급 위협 방지 API와 상호 작용하려면 다음이 필요합니다.
- Microsoft 365 E5 라이선스 또는 MDATP 액세스 권한이 필요합니다.
- 최소 하나의 엔드포인트에 MDATP가 설치되어 실행 중이어야 합니다.
- Azure Active Directory에서 새 애플리케이션을 생성할 수 있는 기능.
먼저 Azure Active Directory에 새 애플리케이션을 만들어 보겠습니다. Azure Active Directory 섹션에서 새 애플리케이션을 만들 수 있으며, 다음 경로로 이동하면 됩니다. 앱 등록. 클릭하세요 신규 등록 버튼을 클릭하고 애플리케이션 이름을 지정하세요. 그런 다음 클릭하세요. 등록하다.

복사해서 저장하세요 클라이언트 ID 그리고 임차인 ID 안전한 곳에 보관하세요 (이 정보는 곧 필요합니다). 다음으로 선택하세요. API 권한 해당 섹션을 클릭하세요 권한을 추가하세요. 왼쪽에는 새 칼날이 장착되어 있어야 합니다.
이 새 블레이드가 열리면 선택하십시오. 내 조직에서 사용하는 API 탭입니다. 검색창에서 필터링해야 할 수도 있지만, 다음과 같은 내용이 표시될 것입니다. WindowsDefenderATP 옵션으로 나열되어 있습니다. 만약 그렇지 않다면, 진행하기 전에 이 API에 대한 접근 권한이 있는지 확인하십시오.

선택하세요 WindowsDefenderATP API를 선택한 다음 선택하세요. 애플리케이션 권한. 선택을 마치면 애플리케이션 권한, 권한 목록이 표시됩니다. 이 예시에서는 사용 가능한 모든 엔드포인트에 액세스할 수 있도록 '모두'를 선택했지만, 필요에 따라 적절히 선택하십시오.
원하는 권한을 선택했으면 클릭하세요. 권한 추가 화면 하단에서 메인 화면을 확인하시고, 다음 항목을 선택했는지 확인하시기 바랍니다. 총괄 관리자의 동의를 구합니다.

다음으로 이동하세요. 인증서와 비밀 섹션을 만들고 생성하세요 새로운 고객 비밀. 이것이 생성되면 이전에 저장했던 다른 비밀 정보들과 함께 저장해 주세요.
이제 비밀 키를 얻었으니, 제가 만든 두 개의 파일을 사용하여 MDATP API를 이용해 데이터를 검색하는 방법을 보여드리겠습니다. 토큰 향후 인증뿐만 아니라 MDATP API와 직접 상호 작용하는 데에도 사용할 수 있습니다.
PowerShell 코어
제가 제공했습니다 PS1 참고용으로 사용할 수 있는 파일입니다. 이 파일에는 두 개의 PowerShell 함수가 포함되어 있으며, 하단에서 필요에 따라 이러한 함수를 호출합니다.
- Get-MDATPTokenOAuth2 인증을 수행하고 MDATP API 엔드포인트에 대한 모든 후속 호출에 사용할 토큰을 가져옵니다.
- Invoke-MDATPQuery: 호출합니다 고급 사냥 MDATP에 대한 질의 고급 쿼리/실행 종점.
이 두 가지 기능을 사용하면 MDATP가 설치된 엔드포인트에서 쿼리를 실행할 수 있습니다.
먼저 토큰을 얻어봅시다.
$Token = Get-MDATPToken -ClientId 'OUR_CLIENT_ID' -ClientSecret 'CLIENT_SECRET' -TenantId 'TENANT_ID''
다음으로 간단한 쿼리를 정의할 수 있습니다.
$query = @" "RegistryEvents | limit 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 매개변수"]["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 예제와 마찬가지로 인증 및 고급 쿼리 실행을 지원하는 두 개의 Python 클래스를 만들었습니다.
- MDATP 커넥터OAuth2 인증을 수행하고 MDATP API 엔드포인트에 대한 모든 후속 호출에 사용할 토큰을 가져옵니다.
- MDATPQuery: 호출합니다 고급 사냥 MDATP에 대한 질의 고급 쿼리/실행 종점.
먼저, 비밀 키를 제공하여 MDATPConnector 객체를 생성합니다.
connector = MDATPConnector( __CLIENT_ID__, __CLIENT_SECRET__, __TENANT_ID__ )
다음으로, 간단하게 하기 위해 다음과 같은 더 작은 쿼리를 실행해 보겠습니다.
쿼리 = ''' "RegistryEvents | limit 10" ''''
이제 MDATPConnector 객체와 쿼리를 MDATPQuery 클래스에 전달한 다음 실행해야 합니다.
mdatp = MDATPQuery(connector, query) print(mdatp.execute())
그게 다예요!
Microsoft Defender Advanced Threat Protection에 대해 알아보는 시간이 즐거우셨기를 바랍니다! 곧 출시될 새로운 번들 상품도 기대해 주세요. 고급 쿼리 MDATP API 내에서 사용 가능한 기타 모든 엔드포인트도 포함됩니다.
데모 요청하기
전문가와 함께 스윔레인 터빈 라이브 데모를 예약하세요! 당사의 AI 기반 보안 자동화 플랫폼이 조직 전체의 보안 문제를 해결하는 데 어떻게 도움이 되는지 알아보세요.

