邮件狙击手:快速搜索企业邮箱敏感数据的渗透测试工具

MailSniper是一款针对Microsoft Exchange环境的渗透测试工具,可通过Exchange Web Services API搜索所有用户邮箱中的密码、凭据等敏感数据,支持权限提升和批量扫描,有效帮助企业发现数据泄露风险。

介绍MailSniper:一款搜索所有用户邮箱敏感数据的工具

Beau Bullock //

摘要

MailSniper是一款针对Microsoft Exchange环境的渗透测试工具,用于搜索特定关键词(如密码、内部情报、网络架构信息等)。它可作为非管理员用户搜索自己的邮箱,或由Exchange管理员搜索域内所有用户的邮箱。

MailSniper下载地址:https://github.com/dafthack/MailSniper

概述

在渗透测试中,我们经常获得组织内的域管理员(Domain Admin)权限。但仅获得DA权限并不足以向管理层展示实际风险。最佳的风险演示方式是证明能够访问敏感数据。敏感数据因公司而异,常见类型包括客户信息、信用卡号、社保号、员工信息、知识产权、工业控制系统/SCADA、医疗数据等。

根据2016年Mandiant M-Trends报告,2015年组织被入侵后检测到漏洞的中位时间为146天。攻击者有充足时间缓慢获取操作意识、定位敏感数据并外泄。作为渗透测试人员,我们通常只有不到5天时间完成评估,如何快速展示类似风险?

本文将详细介绍我开发的新工具MailSniper,它通过搜索每位员工的邮箱关键词来协助定位网络中的敏感数据。

为何搜索邮箱?

现有工具如PowerView(Invoke-ShareFinder和Invoke-FileFinder)可搜索网络共享文件中的敏感数据,但在大型网络或攻击面较小时效果有限。邮箱作为组织内主要通信系统,常包含日常业务讨论、密码重置甚至企业策略信息。

搜索邮箱能高效发现敏感数据。例如:

  • 搜索"password“可能返回系统访问指令和凭据
  • 在能源公司搜索”scada“可能揭示ICS设备位置
  • 在金融机构搜索”credit card“可能发现明文发送的信用卡号
  • 在医疗组织搜索”SSN“可能暴露医疗数据

实际案例:搜索”database“发现系统管理员团队讨论KeePass数据库位置和密钥文件,最终获取了所有数据库、网络设备、安全产品、Windows管理员密码等凭据。

MailSniper.ps1

下载地址:https://github.com/dafthack/MailSniper

选择PowerShell开发的原因:

  • PowerShell脚本便携性强
  • 已有连接Exchange Web Services(EWS)的基础脚本

Microsoft Exchange Server 2007及以上版本实现了EWS API,允许远程访问日历、联系人和邮件数据。EWS提供高度灵活的远程搜索能力,无需交互会话(如RDP、VNC)。

研究过程中发现EWS的另一有用功能:搜索当前用户自身邮箱。因此,MailSniper包含两个主要功能:Invoke-GlobalMailSearch和Invoke-SelfSearch。

Invoke-SelfSearch

此功能搜索当前用户邮箱中的关键词。在渗透测试中,结合获取的其他用户凭据,搜索其邮箱成为新的权限提升向量。

使用方法:

  1. 使用-exec bypass选项打开PowerShell终端绕过执行策略
  2. 导入MailSniper.ps1模块
  3. 运行命令:
1
Invoke-SelfSearch -Mailbox user@domain.com

默认搜索最新100封邮件中的”pass"、"creds"、"credentials“关键词。

可选参数:

  • ExchHostname:Autodiscover失败时指定Exchange服务器主机名
  • Terms:搜索关键词,默认为”password"、"creds"、"credentials"
  • ExchangeVersion:指定Exchange服务器版本,默认为Exchange2010
  • OutputCsv:输出结果到CSV文件
  • MailsPerUser:搜索邮件数量,默认为100

Invoke-GlobalMailSearch

此功能搜索Exchange服务器上所有邮箱。需要"Exchange Organization Administrators"组权限(Exchange 2013中为"Organization Management")。

如果未获得Exchange管理员账户,域管理员可运行以下命令添加用户到组:

1
net groups "Exchange Organization Administrators" <username> /DOMAIN /ADD

研究发现了"ApplicationImpersonation"角色,允许用户模拟其他用户访问邮箱。可通过Exchange Management Shell授予:

1
New-ManagementRoleAssignment -Name:impersonationAssignmentName -Role:ApplicationImpersonation -User:username

Invoke-GlobalMailSearch通过PowerShell远程会话到Exchange服务器,授予指定用户ApplicationImpersonation角色,然后使用EWS搜索所有邮箱中的关键词。

使用方法:

1
Invoke-GlobalMailSearch -ImpersonationAccount current-username -ExchHostname Exch01 -OutputCsv global-email-search.csv

此命令连接到Exchange服务器,提示输入管理员凭据,建立PS远程会话,授予模拟角色,收集所有邮箱地址,搜索每个邮箱的最新100封邮件中的默认关键词,并输出到CSV文件。

完整参数列表:

  • ImpersonationAccount:当前用户名,将被授予ApplicationImpersonation角色
  • ExchHostname:Autodiscover失败时指定Exchange服务器
  • AutoDiscoverEmail:用于自动发现Exchange服务器的有效邮箱地址
  • AdminUserName:Exchange管理员用户名(含域)
  • AdminPassword:管理员密码
  • Terms:搜索关键词
  • ExchangeVersion:Exchange服务器版本
  • OutputCsv:输出CSV文件
  • MailsPerUser:搜索邮件数量
  • EmailList:要搜索的邮箱地址列表文件

演示视频

[视频链接]

结论

MailSniper使渗透测试人员能快速发现网络中的敏感数据,并可能用于权限提升。蓝队也可用它定期检查员工是否违反政策发送敏感信息。目前MailSniper处于测试阶段,未来发展目标已在规划中。

下载MailSniper:https://github.com/dafthack/MailSniper

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计