Microsoft Exchange是全球最常用的Email服务器之一,主要用于对企业网络中的Email通信进行集中管理。它在互联网上普遍性和可访问性使其成为攻击者的首选目标之一。
近些年来,MS Exchange频频成为攻击者进入企业内网的入口之一,本文将主要介绍如何使用标准系统事件日志检测CVE-2020-0688,在后续文章中将会介绍如何监测分析CVE-2020-16875,CVE-2021-24085等漏洞利用行为。
客户端访问协议体系结构
Exchange邮箱服务器上的客户端访问服务负责接受所有形式的客户端连接。客户端访问 (前端) 服务将这些连接代理到目标邮箱服务器上的后端服务, (本地服务器或保存用户邮箱) 的活动副本的远程邮箱服务器。客户端不直接连接到后端服务。这种通信体系结构如下图所示:
客户端使用的协议决定了用于将请求代理到目标邮箱服务器上的后端服务的协议。例如,如果客户端使用的是HTTP连接,则邮箱服务器使用HTTP将请求代理到目标邮箱服务器(使用自签名证书通过SSL确保安全)。如果客户端使用的是IMAP或POP,则所使用的协议也是IMAP或POP。
MS Exchange使用的基本协议
协议类型 | 名称 | 作用 |
---|---|---|
客户端协议 | HTTP/HTTPS | 客户端(包括移动客户端)用于访问邮件、日历、通讯簿等的Exchange组件的协议 |
客户端协议 | MAPI | 用于处理邮件和其他组件的传输协议,Outlook客户端使用它与Exchange服务器进行通信 |
客户端协议 | RPC over HTTP | Outlook客户端和移动设备使用的备用传输协议 |
服务端协议 | SMTP | TCP/IP 网络上邮件的传输协议 |
服务端协议 | IMAP4/POP3 | 用于邮件访问的应用层协议 |
与活动目录服务进行数据交换的协议 | LDAP | 用于在分布式目录服务中查找和访问对象的协议 |
MS Exchange主要组成部分
Outlook Web Access(OWA):Exchange Server提供的一种Web访问方式,允许用户从Web浏览器中访问其Exchange Server上的邮件、日历、联系人等信息。OWA提供了一种方便、灵活的方式,使用户可以随时随地通过互联网连接到Exchange Server,并访问其邮件、日程和其他Exchange服务。
Exchange Control Panel (ECP) :Exchange Server提供的一种管理控制台,用于管理和配置Exchange Server上的邮件服务。ECP提供了一种直观、易用的方式,使管理员可以方便地监控和管理Exchange Server的运行状况、性能、安全性等方面。ECP还提供了一些高级功能,如备份和恢复、故障排除、安全设置等,使管理员可以更深入地管理和配置Exchange Server。
Autodiscover :Exchange Server提供的一种自动发现机制,用于自动发现和配置Exchange Server上的新邮件服务器。当用户尝试连接到Exchange Server时,Autodiscover会自动检测并连接到可用的邮件服务器,并提供用户所需的配置信息。Autodiscover还提供了一种快速、简单的方式来更新Exchange Server上的配置信息,如邮件服务器地址、端口号等。Autodiscover还可以用于检测和解决连接问题,以及检查Exchange Server的运行状况和安全性等方面。
Exchange Web Services (EWS) :Exchange Server提供的一种Web服务,用于在 Web浏览器和应用程序之间提供Exchange数据的访问和交互。EWS提供了一种简单、灵活的方式,使开发人员可以在其Web应用程序中集成Exchange数据和服务。
Exchange ActiveSync (EAS) :Exchange Server提供的一种同步协议,用于将移动设备上的Exchange数据同步到Exchange Server上。EAS提供了一种简单、高效的方式来管理移动设备和Exchange Server之间的数据同步,使用户可以轻松地管理和处理其移动设备上的Exchange数据。
Exchange RPC :Exchange Server提供的一种远程过程调用协议,用于在Exchange Server之间进行通信和数据交换。RPC提供了一种简单、高效的方式来管理Exchange Server之间的通信和数据同步,使用户可以轻松地管理和处理其Exchange数据。
Offline Address Book (OAB) :Exchange Server提供的一种离线访问方式,用于在Exchange Server关闭或网络连接中断时访问和管理其联系人数据。OAB提供了一种简单、高效的方式来管理Exchange Server上的联系人数据,使用户可以在Exchange Server关闭或网络连接中断时继续访问其联系人数据。
日志和事件
以下日志对于监测分析针对MS Exchange服务器的攻击行为具有一定的作用。
数据源 | 描述 | 路径 |
---|---|---|
Windows安全审核日志 | 安全日志存储在审核策略中配置的所有事件(进程启动、成功/失败登录等) | %SystemRoot%\System32\Winevt\Logs\Security.evtx |
Windows应用程序审核日志 | 应用程序日志包含有关Windows中应用程序性能的各种信息:启动错误、检测信号、配置更改等 | %SystemRoot%\System32\Winevt\Logs\Application.evtx |
PowerShell审核日志 | 记录有关PowerShell操作的详细信息,例如启动和停止引擎和提供程序,以及执行PowerShell命令 | %USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine |
Exchange服务器管理事件 | 记录Exchange服务器的各种状态和行为,包括邮件传输、用户活动、备份和恢复等 | MSExchange Management log |
IIS日志 | IIS Web服务器访问日志,其中包含部分接口的调用情况记录 | %SystemDrive%\inetpub\logs\LogFiles |
Sysmon日志 | 包含来自Sysmon的安全事件,通过在系统上安装Sysmon来进行高级日志记录 | Microsoft-Windows-Sysmon/Operational log |
CVE-2020-0688
漏洞利用
漏洞起于Microsoft Exchange服务器在安装时并没有正确创建唯一密钥,经过身份验证的攻击者可以欺骗目标服务器反序列化恶意创建的ViewState数据,使攻击者可以在Exchange Control Panel web应用上执行任意.net代码。
在Exchange Control Panel (ECP)组件中,所有Microsoft Exchange Server在安装后的web.config文件中都拥有相同的validationKey和decryptionKey。这些密钥用于保证ViewState的安全性,而ViewState是ASP.NET Web应用以序列化格式存储在客户机上的服务端数据。由于密钥是静态的,攻击者有了这两个密钥,就可以使用YSoSerial.net生成序列化后的ViewState数据,从而在Exchange Control Panel web应用上执行任意.net代码。
想要利用该漏洞我们需要知道四个参数:
--validationkey = CB2721ABDAF8E9DC516D621D8B8BF13A2C9E8689A25303BF(默认,漏洞产生原因)
--validationalg = SHA1(默认,漏洞产生原因)
--generator=B97B4E27(基本默认)
--viewstateuserkey = ASP.NET_SessionId(手工获取,变量,每次登陆都不一致)
获取到相关参数后,使用YSoSerial.net生成序列化后的恶意的ViewState数据,直接访问Url,导致服务器返回错误代码500。
具体漏洞分析利用细节可参考CVE-2020-0688:Exchange Server使用固定加密密钥远程代码执行漏洞修复通告
日志分析
在被攻击的Exchange服务器上,可利用IIS日志进行分析发现攻击行为。可疑日志如下:
2020-03-09 17:16:58 172.*.*.27 GET /ecp/default.aspx __VIEWSTATEGENERATOR=B97B4E27&__VIEWSTATE=%2FwEyhAYAAQAAAP%2F%2F%2F%2F8BAAAAAAAAAAwCAAAAXk1pY3Jvc29mdC5Qb3dlclNoZWxsLkVkaXRvciwgVmVyc2lvbj0zLjAuMC4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPTMxYmYzODU2YWQzNjRlMzUFAQAAAEJNaWNyb3NvZnQuVmlzdWFsU3R1ZGlvLlRleHQuRm-9ybWF0dGluZy5UZXh0Rm19ybWF0dGluZ1J1blByb3BlcnRpZXMBAAAAD0ZvcmVncm191bmRCcnVzaAECAAAABgMAAACmBDxSZXNvdXJjZURpY3Rpb25hcnkNCiAgeG1sbnM19Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sL3ByZXNlbnRhdGlvbiINCiAgeG1sbnM6eD0iaHR0cDovL3NjaGVtYXMubWljcm19zb2Z0LmNvbS93aW5meC8yMDA2L3hhbWwiDQogIHhtbG5zOlN5c3RlbT0iY2xyLW5hbWVzcGFjZTpTeXN0ZW07YXNzZW1ibHk9bXNjb3JsaWIiDQogIHhtbG5zOkRpYWc9ImNsci1uYW1lc3BhY2U6U3lzdGVtLkRpYWdub3N0aWNzO2Fzc2VtYmx5PXN5c3RlbSI%2BDQoJIDxPYmplY3REYXRhUHJvdmlkZXIgeDpLZXk9IiIgT2JqZWN0VHlwZSA9ICJ7IHg6VHlwZSBEaWFnOlByb2Nlc3N9IiBNZXRob2ROYW1lID0gIlN0YXJ0IiA%2BDQogICAgIDxPYmplY3REYXRhUHJvdmlkZXIuTWV0aG9kUGFyYW1ldGVycz4NCiAgICAgICAgPFN5c3RlbTpTdHJpbmc%2BY2FsYy5leGU8L1N5c3RlbTpTdHJpbmc%2BDQogICAgIDwvT2JqZWN0RGF0YVByb3ZpZGVyLk1ldGhvZFBhcmFtZXRlcnM%2BDQogICAgPC9PYmplY3REYXRhUHJvdmlkZXI%2BDQo8L1Jlc291cmNlRGljdGlvbmFyeT4LJ%2F5i3bVSrOTrkun3pNej4tluDK0%3D&CorrelationID=<empty>;&cafeReqId=e0874638-b142-4c77-84c1-c0434137e691; 443 limou 10.0.254.139 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+rv:73.0)+Gecko/20100101+Firefox/73.0 - 500 0 0 1502
对上述可疑日志中的VIEWSTATE内容进行解码,其调用了计算器进程。
根据IIS日志信息总结出0688漏洞利用日志分析要点:
HTTP请求方法:"GET"
HTTP请求路径:"/ecp/default.aspx"
请求路径中包含:"__VIEWSTATEGENERATOR"、"__VIEWSTATE"
HTTP状态代码:"500"
同样我们也可以在日志中定位到经过身份验证的用户账户是哪个?(limou)。在实际分析过程中,攻击者不可能简简单单的弹一个计算器就结束了,结合网上其他利用方法(如下)。
我们对其他方法也进行了总结,也可通过Windows安全日志对进程进行检测发现可疑行为,分析要点:Windows事件ID4688,父进程w3wp.exe(IIS)、子进程cmd.exe或者powershell.exe。
总结
在IIS日志中可利用请求方法、路径、状态码等特征进行监测分析;在Windows安全日志中可利用事件ID、子父进程名称进行监测分析,在实际应用过程中,利用IIS日志进行分析较为方便快捷。
参考链接
Exchange体系结构
CVE-2020-0688:Exchange Server使用固定加密密钥远程代码执行漏洞修复通告
CVE-2020-0688 exchange远程代码执行漏洞复现
https://www.freebuf.com/vuls/228735.html
关于日志记录-PowerShell