网站搜索

使用 PowerShell 将 Office 365 用户的登录历史记录导出到 CSV


登录是大多数攻击模式中的一种常见活动。跟踪 Office 365 用户的登录活动对于检测潜在的安全漏洞和可疑行为至关重要。

要获取 Office 365 用户登录历史记录,您可以使用 Office 365 安全性和合规性或 PowerShell。但在安全与合规中心,您可以单独获取成功登录尝试的历史记录。它不会跟踪失败的 Office 365 用户的登录尝试。即使您使用过滤器来获取失败的登录尝试,您也无法单独导出这些失败的登录尝试。

要审核 Office 365 用户所有成功和失败的登录尝试,PowerShell 是最佳解决方案。 PowerShell cmdletSearch-UnifiedAuditLog用于跟踪指定范围内的所有事件。您需要处理所有事件以过滤掉成功的登录尝试和失败的登录尝试。使用Search-UnifiedAuditLog获取审核日志并不是一件容易的事。它面临以下挑战。

注意:如果您依靠登录历史记录报告来检查用户的不活动情况,我们建议使用我们的专用脚本来生成不活动用户报告。该脚本提供有关交互式和非交互式登录的全面详细信息,确保对用户活动进行更全面的分析。

使用 Search-UnifiedAuditLog 的挑战:
  • 每次Search-UnifiedAuditLog调用最多可以获取 5000 条记录。它可以通过使用ResultSize参数来实现。即使您使用ResultSize,您也不能保证指定的范围有多少条记录。您需要使用SessionId一次又一次调用Search-UnifiedAuditLog,直到获得所有记录。
  • 即使您使用SessionId,您也可以获得给定时间段内的 50,000 条记录。如果超过限制,您将无法检索所有记录。
  • 获得结果后,您需要从大量审核条目中过滤掉用户的登录尝试(成功和失败的登录尝试)。

不用担心!我们为您制作了一个用户友好的 PowerShell 脚本 - Office 365 用户的登录历史记录报告,其中包含成功和失败的登录尝试。此外,该脚本还具有更高级的过滤选项,可以获取成功的登录尝试、失败的登录尝试、特定用户或用户列表的登录历史记录、特定时间段内的登录历史记录等。

下载脚本:O365UserLoginHistory.ps1

脚本亮点:
  • 该脚本使用新式身份验证连接到 Exchange Online。
  • 允许您根据成功和失败的登录尝试过滤结果。
  • 导出的报告包含您的 Office 365 用户登录的 IP 地址。
  • 此脚本可以使用启用 MFA 的帐户执行。
  • 您可以导出报告以选择“所有 Office 365 用户的登录尝试”或“特定 Office 用户的登录尝试”。
  • 通过使用高级过滤选项,您可以导出“Office 365 用户登录报告”和“可疑登录报告”。
  • 将报告结果导出为 CSV。
  • 在您确认后自动安装 EXO V2 模块(如果尚未安装)。
  • 此脚本适合调度程序。即,凭证可以作为参数传递,而不是保存在脚本内。
  • 我们的登录历史记录报告跟踪 AzureActiveDirectory (UserLoggedIn、UserLoginFailed)、ExchangeOnline (MailboxLogin) 和 MicrosoftTeams (TeamsSessionStarted) 中的登录事件。
示例输出:

导出的登录历史记录报告与下面的屏幕截图类似

注意:由于“Microsoft Teams”登录没有 IP 地址和结果状态列,因此显示为空。 Search-UnifiedAuditLog 中仅捕获成功的 Teams 登录。因此,如果导出的报告中存在“Microsoft Teams”登录信息,请将其视为成功的登录尝试。

如何:执行 Office 365 用户的登录历史记录 PowerShell 脚本:

方法 1:使用 MFA 或非 MFA 帐户执行脚本

./O365UserLoginHistory.ps1

方法 2:通过明确提及凭据来执行脚本(适合调度程序)。

./O365UserLoginHistory.ps1 -AdminName admin@contoso.com -Password XXX

释放“导出 O365 用户登录历史报告”脚本的全部潜力:

  • 导出Office 365用户过去90天的登录历史记录
  • 获取Office 365用户在特定时间间隔内的登录历史记录
  • 导出特定 Office 365 用户的登录历史记录
  • 列出特定用户的 Office 365 登录历史记录
  • 导出 Office 365 用户登录尝试失败报告
  • 导出 Office 365 用户的登录报告(成功的登录尝试)
  • 通过使用多个过滤参数,可以导出更精细的报告。
  • 安排 Office 365 用户的登录历史记录 PowerShell 脚本

导出过去 90 天的 Office 365 用户登录历史记录:

由于Search-UnifiedAuditLog拥有过去 90 天的数据,因此我们可以使用脚本获取最多过去 90 天的登录尝试。要导出过去 90 天的 Office 365 用户登录尝试,请按如下所述运行脚本。

./O365UserLoginHistory.ps1

导出给定时间间隔内 Office 365 用户的登录历史记录:

要获取特定时间段内用户的登录尝试,您需要在脚本执行期间提及开始和结束时间。可以通过传递-StartDate和-EndDate参数来实现。

./O365UserLoginHistory.ps1 -StartDate 11/20/19 -EndDate 11/25/19

日期格式应遵循 MM/DD/YY 格式。上述脚本将导出2019年11月20日至2019年11月25日期间所有Office 365用户的登录尝试。

导出单个用户的登录历史报告:

要导出特定用户的登录历史记录,请使用 -UserName 参数执行脚本。

./O365UserLoginHistory.ps1 -UserName john@contoso.com

导出的报告包含 john@contoso.com 的登录历史记录。

导出特定用户的 Office 365 登录历史记录:

如果您想要获取多个用户的 Office 365 登录历史记录,您可以使用 -UserName 参数作为逗号分隔值来传递用户名。

./O365UserLoginHistory.ps1 -UserName "admin@contoso.com,hr@contoso.com"

导出的报告包含管理员和 hr 用户的登录历史记录。

导出 Office 365 用户的登录尝试失败报告:

Office 365 用户的登录尝试失败报告对于分析可疑活动最有用。要导出失败的登录尝试,请使用 -Failed 开关参数执行脚本。

./O365UserLoginHistory.ps1 -Failed

默认情况下,它将返回过去 90 天的审核记录。如果您想缩小报告范围,可以使用 -StartDate 和 -EndDate 参数指定时间间隔。

使用 Office 365 登录 IP 地址,您可以跟踪用户/攻击者尝试登录 Office 365 的位置。

导出 Office 365 用户的登录报告:

Office 365 用户的登录报告包含用户成功登录 Office 365 的情况。要导出 Office 365 用户的登录报告,您需要使用 -Success 开关参数运行脚本。

./O365UserLoginHistory.ps1 -Success

使用多个过滤器导出 Office 365 用户的登录历史记录报告:

默认情况下,此 PowerShell 脚本支持多个高级过滤选项。您可以在执行期间使用一个或多个过滤器。我在这里列出了一些用例。

  • 要导出特定 O365 用户上周执行的所有成功和失败的登录尝试,您可以执行以下脚本。
./O365UserLoginHistory.ps1 -UserName Admin@Contoso.com -StartDate 11/21/19 -EndDate 11/28/19
  • 导出所有 Office 365 用户在特定时间内执行的失败登录尝试。
./O365UserLoginHistory.ps1 -Failed -StartDate “11/28/19 12 AM" -EndDate “11/28/19 6 PM"

安排 Office 365 用户的登录历史记录 PowerShell 脚本:

由于Search-UnifiedAuditLog拥有过去 90 天的数据,因此您可能需要旧的审核日志进行分析。在这种情况下,调度就发挥着重要作用。

您可以使用任务计划程序“自动执行 O365 用户的登录历史 PowerShell 脚本”。如果您安排脚本每 90 天运行一次,您可以随时访问导出的报告。因此,您可以对存储多年的审核日志进行进一步分析。

在安排时,您可以使用 -AdminName 和 -Password 参数传递凭据。

./O365UserLoginHistory.ps1 -AdminName Admin@contoso.com -Password XXXXXXX

要了解有关调度 Powershell 脚本的更多信息,请参阅我们的博客:使用任务计划程序调度 PowerShell 脚本。

获取更详细的 Office 365 登录报告:

获取更详细的 Office 365 登录报告

    • 用户登录

      • 所有用户登录
      • 用户登录失败
      • 用户登录成功
      • 用户上次登录时间
      • 用户一天中首次登录时间
      • 用户每月登录次数汇总
    • 安全

      • 管理员登录
      • 访客登录
      • 有风险的登录尝试
      • 未能通过 MFA 挑战
      • 旧版/基本身份验证登录尝试
    • 基于 Office 365 服务的登录

      • Outlook 登录历史记录
      • 邮箱 PowerShell 登录
      • 团队登录
      • Teams 外部用户登录活动

您可以查看AdminDroid Microsoft 365 报告和审核工具。

此外,AdminDroid 还提供1500+ 预构建报告和 20 个具有视觉吸引力的智能仪表板,让您一目了然地了解您的 Office 365 环境。该工具提供有关 Office 365 报告、审计、分析、使用统计、安全性和合规性等的报告。

此外,AdminDroid 完全免费提供 100 多个报告和一些仪表板。它包括有关用户、许可证、组、组成员、设备、登录活动、密码更改、许可证更改等的报告。免费版在自定义、计划和导出等报告功能上没有任何限制。为了满足您的 Azure AD 报告和审核需求,您可以下载 AdminDroid 提供的免费 Office 365 报告工具,看看它如何为您提供帮助。

我希望这个博客对于分析成功和可疑的登录尝试有用。如果您有任何疑问或要求,请通过评论部分与我们分享。

相关文章