Exchange是由微软推出的用于企业环境中部署的邮件服务器。Exchange在逻辑上分为三个层次:网络层(network layer)、目录层(directory layer)、消息层(messaging layer),服务器角色正是在消息层上的一个细分。Exchange Server 2010包含五个服务器角色,分别是邮箱服务器(mailbox server)、集线传输服务器(hub transport server)、客户端访问服务器(client access server)、边缘传输服务器(edge transport server)、统一消息服务器(unified messaging server),除了边缘传输服务器以外其他角色都可以在同一台主机上进行部署添加,其中邮箱服务器、集线传输服务器、客户端访问服务器是核心服务器角色,部署这三个角色就能提供基本的邮件处理功能。
- 邮箱服务器(mailbox server):该角色是提供托管邮箱、公共文件夹以及相关的消息数据(如地址列表)的后端组件,是必选的服务器角色。
- 客户端访问服务器(client access server):接收和处理来自于不同客户端的请求的中间层服务器角色,该角色服务器提供了对使用不同协议进行访问的支持,每个Exchange环境中至少需要部署一个客户端访问服务器,客户端访问服务器提供了对以下不同接口访问Exchange服务器的处理。
- 集线传输服务器(hub transport server):或称中心传输服务器,该服务器角色的核心服务就是Microsoft Exchange Transport,负责处理Mail Flow(这又是Exchange中的一大知识点,Exchange管理员需要通过MailFlow实现邮件出站与进站配置)、对邮件进行路由、以及在Exchange组织中进行分发,该服务器角色处理所有发往属于本地邮箱的邮件和发往外部邮箱的邮件,并确保邮件发送者和接收者的地址被正确解析并执行特定策略(如邮件地址过滤、内容过滤、格式转换等),同时,还可以进行记录、审计、添加免责声明等,正如Hub transport的含义,该服务器角色相当于一个邮件传输的中继站点,每个Exchange环境中至少需要部署一个集线传输服务器。
- 统一消息服务器(unified messaging server):将专用交换机(private branch exchange/PBX) 和Exchange Server集成在一起,以允许邮箱用户可以在邮件中发送存储语音消息和传真消息,可选角色。
- 边缘传输服务器(edge transport server):该服务器角色作为专用服务器可以用于路由发往内部或外部的邮件,通常部署于网络边界并用于设置安全边界。其接受来自内部组织的邮件和来自外部可信服务器的邮件,然后应用特定的反垃圾邮件、反病毒策略,最后将通过策略筛选的邮件路由到内部的集线传输服务器,可选角色。
一、 Exchange服务发现
1.基于端口扫描发现
使用nmap扫描端口寻找Exchange服务器,需要与主机进行交互产生大量流量很容易造成IDS告警。
nmap -A -O -sV 192.168.190.138
2.SPN 查询
在安装Exchange时,SPN就被注册在活动目录中了,在域环境中,可以通过SPN来发现Exchange服务器。
获取SPN记录可以使用powershell脚本,或者通过windows自带的setspn.exe获取,命令如下:
setspn -T payload.com -F -Q */*
其中,ExchangeRFR、ExchangeAB、ExchangeMDB等都是Exchange注册的服务。
二、Exchange的基本操作
Exchange数据库后缀为.edb,通过Exchange发送和接受的邮件都会保存在Exchange数据库中。
1.查看邮件数据库
使用“-Server”参数,可以在指定服务器上进行查询。在powershell命令行下输入如下命令:
Get-MailboxDatabase -server "DC"
在正常的powershell中,上面的命令是没有的,需要输入如下命令,将Exchange管理单元添加到当前会话中。
add-pssnapin microsoft.exchange*
可以指定一个数据库,对其详细信息进行查询,例如输入如下命令,查询数据库的物理路径。
Get-MailboxDatabase -Identity 'Mailbox Database 1942140972' | Format-List Name,EdbFil
ePath,LogFolderPath
2.获取现有用户的邮件地址
Get-Mailbox | Format-table Name,WindowsEmailAddress
3.查看指定用户的邮箱使用信息
输入如下命令,查询指定用户的邮箱空间和最后登录时间。
Get-Mailboxstatistics -identity administrator | Select Dispayname,ItemCount,TotalItemSize,TotalTimeSize,LastLogonTime
4.获取用户邮箱中的邮件数量
Get-Mailbox -ResultSize Unlimited | Get-Mailboxstatistics | Sort-Object TotalItemSize -Descend
三、 导出指定的电子邮件
Exchange邮件文件的后缀为“.pst”。
1.配置用户的导入导出权限
(1)查看用于权限
Get-ManagementRoleAssignment -role "Mailbox Import Export" | Format-List RoleAssigneName
(2)添加权限
将administrator用户加入Mailbox Import Export角色组中,就可以通过powershell导出用户的邮件了,将用户添加到角色组后,需要重启Exchange服务才能执行导出操作。
New-ManagementRoleAssignment -Name "Import Export_Domain Admins" -User "Administrator
" -Role "Mailbox Import Export"
(3)删除权限
导出工作完成后,可以将刚刚添加的Mailbox Import Export角色组中的用户删除。
Remove-ManagementRoleAssignment "Import Export_Domain Admins" -Confire:false
2.设置网络共享文件夹
不论使用哪种方式导出邮件,都需要将文件放置在UNC(Universal Naming Convention,通用命名规则,也称通用命名规范)路径下。类似于“\hostnamesharename”、“\ipaddresssharename”的网络路径下,sharename为网络共享名称。
首先开启共享,将C盘inetpub文件夹设置为everyone可读写。执行如下命令:
net share inetpub=c:inetpub /grant:everyone,full
3.导出用户的电子邮件
(1)使用powershell导出电子邮件
用户的电子邮箱目录一般为Inbox(收件箱)、SentItems(已发送邮件)、DeleteItems(已删除邮件)、Drafts(草稿)等。
使用New-MailboxExportRequest命令,将指定用户所有的电子邮件导出。
New-MailboxExportRequest -Mailbox administrator -FilePath \192.168.190.138inetpubadministrator.pst
可以看到,两个用户的邮件都已经被导出到C:inetpub目录下了。
(2)通过图形化界面导出电子邮件
访问https://192.168.190.138ecp,打开Exchange管理中心的登录界面。输入账号密码进入Exchange管理中心,点击收件人右边的“+”号可以将当前用户加入管理员组中,然后右键刷新按钮右边的更多,即可进行导出操作。
4.管理导出请求
无论是通过Powershell导出还是通过图形化的方式导出,都会在Exchange中生成一条告警信息,
输入如下命令,查看之前的导出请求记录信息。
Get-MailboxExportRequest
使用如下命令,可以将指定用户已经完成的导出请求删除。
Remove-MailboxExportRequest -Identity Administratormailboxexport
使用如下命令,删除所有已完成的导出请求。
Remove-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest