MS Exchange攻擊日志分析一
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 HTTPOutlook客戶端和移動設備使用的備用傳輸協議服務端協議SMTPTCP/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.evtxWindows應用程序審核日志應用程序日志包含有關Windows中應用程序性能的各種信息:啟動錯誤、檢測信號、配置更改等%SystemRoot%\System32\Winevt\Logs\Application.evtxPowerShell審核日志記錄有關PowerShell操作的詳細信息,例如啟動和停止引擎和提供程序,以及執行PowerShell命令%USERPROFILE%\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLineExchange服務器管理事件記錄Exchange服務器的各種狀態和行為,包括郵件傳輸、用戶活動、備份和恢復等MSExchange Management logIIS日志IIS Web服務器訪問日志,其中包含部分接口的調用情況記錄%SystemDrive%\inetpub\logs\LogFilesSysmon日志包含來自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日志進行分析較為方便快捷。