显而易见却被忽视:利用Office 365 Activities API实现...

作者:API传播员 · 2025-12-16 · 阅读时间:6分钟

更新:虽然本文最初讨论了Office 365活动API,但自2018年6月6日起,该功能已被微软禁用。然而,在Office 365中仍然存在其他数据源,可以帮助调查商业电子邮件泄露(BEC)事件。以下内容将探讨如何利用这些数据源进行威胁检测和响应。


简介

通过分析Office 365 API返回的数据,可以深入了解威胁行为者的技术、战术和程序(TTP)。这些信息对于检测和响应BEC攻击至关重要。


如何访问API

在Outlook REST API中,有一个未公开的API子集,称为Activities API。此API子集适用于Outlook REST API的所有版本(v1.0、v2.0和beta),本文重点介绍v2.0版本的实现。

身份验证方式

调用Activities API需要进行身份验证,可选择以下两种方式:

  • OAuth 2.0:支持所有版本的Outlook REST API。
  • 基本身份验证:支持v1.0版本,但从2018年11月1日起不再受支持。

以下是API端点示例:

  • 使用OAuth 2.0:

    https://outlook.office.com/api/v2.0/{user_context}/Activities
  • 使用基本身份验证:

    https://outlook.office365.com/api/v1.0/{user_context}/Activities

请求头要求

所有对Activities API的请求都必须包含以下HTTP头:

  • Authorization:用于提供有效的访问凭据。
  Authorization: Bearer 
  • Accept:建议设置为application/json,以确保返回JSON格式数据。

限制说明

Activities API的全局限制:每个目标用户、每个应用程序在10分钟内最多可发出10,000次请求。超过此限制的请求将返回“HTTP 429 Too Many Requests”响应。


检索活动数据

基本调用

最简单的API调用无需任何参数,默认返回当前用户最近10个邮箱活动:

GET https://outlook.office.com/api/v2.0/me/Activities

使用curl命令示例(OAuth 2.0):

curl -H "Authorization: Bearer " 
-H "Accept: application/json"
https://outlook.office.com/api/v2.0/me/Activities

检索其他用户的活动

要检索其他用户的邮箱活动,可通过以下两种方式获取权限:

  1. 共享邮箱方法

    • 配置应用程序以请求“Mail.Read.Shared”权限。
    • 为调用用户分配目标邮箱的“FullAccess”权限。
  2. 应用程序权限方法

    • 配置应用程序以请求“Mail.Read”应用程序权限。
    • 需要租户管理员的授权同意。

请求参数

Activities API支持多种请求参数,用于过滤和排序返回结果:

  • $orderby:指定排序规则。例如,按时间戳升序排序:

    GET https://outlook.office.com/api/v2.0/Users('victim@contoso.com')/Activities?$orderby=TimeStamp asc
  • $filter:过滤结果。例如,查询2018年1月的活动:

    GET https://outlook.office.com/api/v2.0/Users('victim@contoso.com')/Activities?$filter=(TimeStamp ge 2018-01-01T00:00:00Z and TimeStamp le 2018-01-31T23:59:59Z)
  • $select:指定返回的属性子集。例如,仅返回时间戳和活动类型:

    GET https://outlook.office.com/api/v2.0/Users('victim@contoso.com')/Activities?$select=TimeStamp,ActivityIdType
  • $top:设置返回活动的数量,范围为1到1000。


活动类型及其分析

Activities API支持多种活动类型,以下是一些常见且有用的类型:

  • MessageDelivered:邮件送达活动,包含发件人、收件人、主题等关键信息。
  • ReadingPaneDisplayStart:邮件在阅读窗格中被选中。
  • SearchResult:邮箱中执行的搜索查询。
  • ServerLogon:邮箱登录事件,记录源IP地址、用户名、结果等信息。

自定义属性

每种活动类型可能包含独特的自定义属性。例如:

  • ServerLogon活动中的ClientIP属性记录了登录的源IP地址。
  • MessageDelivered活动中的AttachmentDetail属性列出了邮件附件的类型。

发现攻击者活动的技巧

以下是一些识别攻击者活动的有效方法:

  1. IP地理位置分析

    • 检查登录活动的源IP地址是否与邮箱所有者的地理位置一致。
    • 利用IP地理定位工具快速识别异常登录。
  2. 搜索查询分析

    • 分析SearchResult活动中涉及的搜索词,例如“电汇”、“发票”等。
  3. 异常客户端类型

    • 识别不常见的应用程序类型(如IMAP4或Web客户端)是否执行了可疑活动。
  4. DKIM/DMARC/SPF验证失败

    • 检查邮件标题中的验证结果,识别可能的伪造邮件。
  5. 恶意附件类型

    • 扫描MessageDelivered活动中的附件类型,查找与恶意软件相关的文件(如EXE、PDF)。

结论

尽管Office 365 Activities API已被禁用,但其提供的功能为邮箱日志记录和事件响应带来了巨大价值。通过分析API返回的数据,组织可以更好地应对BEC攻击、追踪威胁行为者,并提升整体安全态势。

在实际操作中,结合地理位置分析、搜索查询分析和异常活动检测等技术,可以有效发现并阻止攻击者活动。对于复杂的安全事件,建议进行全面的威胁狩猎和妥协评估,以确保环境的安全性。

原文链接: https://www.crowdstrike.com/en-us/blog/hiding-in-plain-sight-using-the-office-365-activities-api-to-investigate-business-email-compromises/