您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關深入Exchange Server在網絡滲透下的利用方法是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
在滲透測試中,往往會遇到企業內網環境中使用的一些常用組件,這些組件對內或對外提供了服務與接口,也給滲透測試人員與黑客提供了新的可嘗試的攻擊面,合理的利用組件服務提供的功能和接口,可以幫助滲透測試人員完成信息收集、環境偵測,甚至通過其漏洞弱點、配置缺陷、功能濫用直接拿下權限,在滲透測試與后滲透階段達到事半功倍的效果。 Windows Exchange Server,應該是國內外應用都非常廣泛的郵件服務器了,本文將圍繞Exchange展開,介紹在滲透測試中對Exchange服務器的攻擊利用。
正式開始之前,我們先對Exchange相關的一些概念與基礎知識進行梳理簡介,便于對Exchange有簡單初步的了解。
域環境:fb.com
域控:10.0.83.93,masterdc,Windows 2012 R2
Exchange服務器:10.0.83.94,test2k12,Windows 2012 R2,安裝Exchange Server 2013 SP1
域內工作機:10.0.83.80,testwin7,Windows 7,安裝Outlook 2013 SP1
Microsoft Exchange Server is a mail server and calendaring server developed by Microsoft. It runs exclusively on Windows Server operating systems. —— wikipedia
如維基百科對Exchange Server的描述,Exchange是由微軟推出的用于企業環境中部署的郵件服務器。微軟對外發布的第一個Exchange版本是Exchange 4.0,最開始Exchange使用X.400目錄服務,隨后轉向使用微軟的活動目錄,最開始的時候微軟還提供了Microsoft Exchange Client,即Exchange郵件客戶端,隨后被Outlook取代,時至今日,微軟已經發布了10個大版本號的Exchange,今年10月份,微軟推出了最新版本的Exchange Server 2019。在不同的企業環境中部署使用的Exchange版本不一,各版本提供的架構、功能、服務、接口都各有不同,本文將以Exchange Server 2013為例展開敘述。
Exchange Server是一種本地化部署的形式,除此之外還有以SaaS的在線服務模式,這兩種部署模式即各種文檔或資料中常說的Exchange On-premise和Exchange Online,另外,Exchange還支持本地化部署與云端部署共存的部署方式,即混合部署(Exchange Hybrid)。
Exchange是一個功能完整而龐大的郵件服務器,實際上Exchange背負的不僅僅是傳統的郵件收發處理、郵件路由等基本的郵件功能,在微軟背景下Exchange與活動目錄域服務、全局編排目錄及其他微軟相關服務和組件也有著眾多聯系。Exchange郵件服務器在企業環境中使用占比非常高,其通過劃分不同的服務器角色、執行各自的組件和服務以及相互之間的依存調用使得郵件處理形成一個強大、豐富、穩定、同時又復雜的過程。Exchange在邏輯上分為三個層次:網絡層(network layer)、目錄層(directory layer)、消息層(messaging layer),服務器角色正是在消息層上的一個細分。
Exchange Server 2013包含三個服務器角色,我們往前推進一個版本到Exchange Server 2010,來介紹Exchange服務器角色的演變和功能簡述。
Exchange Server 2010包含五個服務器角色,分別是郵箱服務器(mailbox server)、集線傳輸服務器(hub transport server)、客戶端訪問服務器(client access server)、邊緣傳輸服務器(edge transport server)、統一消息服務器(unified messaging server),除了邊緣傳輸服務器以外其他角色都可以在同一臺主機上進行部署添加,其中郵箱服務器、集線傳輸服務器、客戶端訪問服務器是核心服務器角色,部署這三個角色就能提供基本的郵件處理功能。
郵箱服務器(mailbox server):該角色是提供托管郵箱、公共文件夾以及相關的消息數據(如地址列表)的后端組件,是必選的服務器角色。
客戶端訪問服務器(client access server):接收和處理來自于不同客戶端的請求的中間層服務器角色,該角色服務器提供了對使用不同協議進行訪問的支持,每個Exchange環境中至少需要部署一個客戶端訪問服務器,客戶端訪問服務器提供了對以下不同接口訪問Exchange服務器的處理。
MAPI訪問 POP3和IMAP4訪問 Outlook Web App訪問(OWA) Outlook Anywhere訪問 Autodiscover自動發現服務 可用性服務
集線傳輸服務器(hub transport server):或稱中心傳輸服務器,該服務器角色的核心服務就是Microsoft Exchange Transport,負責處理Mail Flow(這又是Exchange中的一大知識點,Exchange管理員需要通過MailFlow實現郵件出站與進站配置)、對郵件進行路由、以及在Exchange組織中進行分發,該服務器角色處理所有發往屬于本地郵箱的郵件和發往外部郵箱的郵件,并確保郵件發送者和接收者的地址被正確解析并執行特定策略(如郵件地址過濾、內容過濾、格式轉換等),同時,還可以進行記錄、審計、添加免責聲明等,正如Hub transport的含義,該服務器角色相當于一個郵件傳輸的中繼站點,每個Exchange環境中至少需要部署一個集線傳輸服務器。
統一消息服務器(unified messaging server):將專用交換機(private branch exchange/PBX) 和Exchange Server集成在一起,以允許郵箱用戶可以在郵件中發送存儲語音消息和傳真消息,可選角色。
邊緣傳輸服務器(edge transport server):該服務器角色作為專用服務器可以用于路由發往內部或外部的郵件,通常部署于網絡邊界并用于設置安全邊界。其接受來自內部組織的郵件和來自外部可信服務器的郵件,然后應用特定的反垃圾郵件、反病毒策略,最后將通過策略篩選的郵件路由到內部的集線傳輸服務器,可選角色。
在Exchange Server 2013中,服務器角色精簡為三個,分別是郵箱服務器、客戶端訪問服務器和邊緣傳輸服務器,其中郵箱服務器角色和客戶端訪問服務器角色通常被安裝在同一臺服務器中。
郵箱服務器:負責認證、重定向、代理來自外部不同客戶端的訪問請求,主要包含客戶端訪問服務(Client Access service)和前端傳輸服務(Front End Transport service)兩大組件。
客戶端訪問服務器:托管郵箱、公共文件夾等數據,主要包含集線傳輸服務(Hub Transport service)和郵箱傳輸服務(Mailbox Transport service)兩大組件服務。
邊緣傳輸服務器:負責路由出站與入站郵件、策略應用等。
在Exchange Server 2016和2019中,只有兩種服務器角色,分別是郵箱服務器和邊緣傳輸服務器,所有關鍵角色和組件都融入到郵箱服務器中。
郵件通信分為郵件發送和郵件接收,其中郵件發送使用統一的通信協議,即SMTP,而郵件的收取則有多種協議標準,如由早期的POP發展至今的POP3,如今使用廣泛的IMAP,Exchange開發了私有的MAPI協議用于收取郵件,較新版本的Outlook通常使用MAPI與Exchange進行交互,除此之外早期的Outlook還使用稱為Outlook Anywhere的RPC交互。下面介紹Exchange提供支持的訪問接口和協議。
Outlook Web App(OWA)
Exchange提供的Web郵箱,地址通常為 http://DOAMIN/owa/
Exchange Administrative Center(ECP)
Exchange管理中心,管理員用于管理組織中的Exchange的Web控制臺,地址通常為 http://DOMAIN/ecp/
Outlook Anywhere(RPC-over-HTTP,RPC/HTTP)
前身為RPC-over-HTTP,隨后在Exchange 2007和Exchange 2010中被重命名為Outlook Anywhere。RPC-over-HTTP是在Exchange 2003被提出的,在此之前,外網用戶使用Exchange郵箱需要先通過VPN連接到企業內部網絡中,隨后微軟在Outlook中推出新特性Outlook Anywhere,外網用戶可以直接通過Outlook Anywhere連接使用Exchange郵箱而無需使用VPN,內網用戶則通過RPC協議連接使用Exchange。從Exchange 2013開始,Outlook不再區分內外網環境,統一使用Outlook Anywhere,同時,不需要開放單獨的RPC端口。Outlook Anywhere在Exchange Server 2013中默認開啟。
在Outlook中使用RPC-over-HTTP的連接方式連接Exchange(在協議中顯示為RPC/HTTP):
MAPI(MAPI-over-HTTP,MAPI/HTTP)
一種Outlook與Exchange交互的新的傳輸協議,于Exchange 2013 SP1和Outlook 2013 SP1中被提出。
在Outlook中使用MAPI-over-HTTP的連接方式連接Exchange(在協議中顯示為HTTP):
Exchange ActiveSync(EAS,XML/HTTP)
ActiveSync是一種允許用戶通過移動設備或其他便攜式設備訪問和管理郵件、聯系人、日歷等Exchange功能的同步協議,在Windows上使用時其進程名稱為wcesomm.exe。
Exchange Web Service(EWS,SOAP-over-HTTP)
Exchange提供了一套API編程接口可供開發者調用,用于訪問Exchange服務器,與郵件、聯系人、日歷等功能進行交互和管理操作,在Exchange Server 2007中被提出。微軟基于標準的Web Service開發EWS,EWS實現的客戶端與服務端之間通過基于HTTP的SOAP交互。
自動發現(Autodiscover)
Autodiscover自動發現是自Exchange Server 2007開始推出的一項自動服務,用于自動配置用戶在Outlook中郵箱的相關設置,簡化用戶登陸使用郵箱的流程。如果用戶賬戶是域賬戶且當前位于域環境中,通過自動發現功能用戶無需輸入任何憑證信息即可登陸郵箱。自動發現服務運行于客戶端訪問服務器(Client Access Server)上,其實質是Outlook客戶端通過LDAP查詢、DNS查詢等,連接到指定域的Exchange的客戶端訪問服務器(Client Access Server)上。
自動發現的過程首先需要獲取自動配置文件,然后根據配置文件進行連接和配置,獲取自動配置文件的過程不展開細說了,簡單來說它將找到提供自動發現服務的客戶端訪問服務器、訪問/autodiscover/autodiscover.xml獲得配置文件。
這里有個關鍵地方,即正確配置DNS解析,使得Outlook客戶端不管是在域環境主機上還是外部網絡環境,都可以正確找到自動發現服務所在的服務器。
配置名稱autodiscover指向客戶端訪問服務器:
配置autodiscover的SRV記錄:
域用戶在加入域的主機上使用Outlook自動發現功能:
域用戶在工作組主機上使用Outlook自動發現功能:
全局地址列表(GAL)
地址列表(Address List)記錄了用戶在域活動目錄中的基本信息和在Exchange中的郵箱地址,用于將用戶在活動目錄中的屬性對象與郵件地址形成關聯。在Exchange中管理員可以創建不同的地址列表,用于方便管理維護組織,也方便郵箱用戶通過地址列表查找特定的聯系人郵箱,Exchange默認會創建一些內置的地址列表,其中包含了一個Default Global Address List(默認全局地址列表),所有郵箱用戶都會被加入到這個地址列表中。
下面,我們進入正題
這里我們將會用到兩個知名度最高的Exchange利用工具,一個是Sensepost用Go實現的與Exchange進行命令行交互的工具Ruler,Ruler可以通過RPC/HTTP或者MAPI/HTTP的方式與Exchange進行交互,只要擁有合法的用戶憑證,就可以利用Ruler執行一系列的信息偵察、定向攻擊等操作。另一個是Powershell實現的MailSniper,主要用于后滲透階段的一些信息收集和獲取。關于工具的詳細介紹與用法可以去Github跟Freebuf上自行查找。
在滲透測試中,當進行信息收集與環境偵察時,發現與識別Exchange及其相關服務,可以有多種方法與途徑,或者說,當你在執行一些端口掃描、名稱查詢等過程時,當發現如下舉例的一些跡象和掃描結果時,你應該意識到,該環境中可能存在Exchange組件。
Exchange的正常運行,如上一章節所列舉的,需要多個服務與功能組件之間相互依賴與協調,因此,安裝了Exchange的服務器上會開放某些端口對外提供服務,不同的服務與端口可能取決于服務器所安裝的角色、服務器進行的配置、以及網絡環境與訪問控制的安全配置等。通過端口發現服務,來識別確認服務器上安裝了Exchange,是最常規也是最簡易的方法。如下是執行了一次端口掃描的結果報告。
root@kali:~# nmap -A -O -sV -Pn 10.0.83.94 Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-24 14:14 CST Nmap scan report for 10.0.83.94 Host is up (0.00043s latency). Not shown: 974 filtered ports PORT STATE SERVICE VERSION 25/tcp open smtp Microsoft Exchange smtpd | smtp-commands: test2k12.fb.com Hello [10.0.83.11], SIZE 37748736, PIPELINING, DSN, ENHANCEDSTATUSCODES, STARTTLS, X-ANONYMOUSTLS, AUTH NTLM, X-EXPS GSSAPI NTLM, 8BITMIME, BINARYMIME, CHUNKING, XRDST, |_ This server supports the following commands: HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT | smtp-ntlm-info: | Target_Name: FB | NetBIOS_Domain_Name: FB | NetBIOS_Computer_Name: TEST2K12 | DNS_Domain_Name: fb.com | DNS_Computer_Name: test2k12.fb.com | DNS_Tree_Name: fb.com |_ Product_Version: 6.3.9600 |_ssl-date: 2018-12-24T06:17:42+00:00; +49s from scanner time. 80/tcp open http Microsoft IIS httpd 8.5 |_http-server-header: Microsoft-IIS/8.5 |_http-title: 403 - \xBD\xFB\xD6\xB9\xB7\xC3\xCE\xCA: \xB7\xC3\xCE\xCA\xB1\xBB\xBE\xDC\xBE\xF8\xA1\xA3 81/tcp open http Microsoft IIS httpd 8.5 |_http-server-header: Microsoft-IIS/8.5 |_http-title: 403 - \xBD\xFB\xD6\xB9\xB7\xC3\xCE\xCA: \xB7\xC3\xCE\xCA\xB1\xBB\xBE\xDC\xBE\xF8\xA1\xA3 …… 465/tcp open smtp Microsoft Exchange smtpd | smtp-commands: test2k12.fb.com Hello [10.0.83.11], SIZE 36700160, PIPELINING, DSN, ENHANCEDSTATUSCODES, STARTTLS, X-ANONYMOUSTLS, AUTH GSSAPI NTLM, X-EXPS GSSAPI NTLM, 8BITMIME, BINARYMIME, CHUNKING, XEXCH50, XRDST, XSHADOWREQUEST, |_ This server supports the following commands: HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT | smtp-ntlm-info: | Target_Name: FB | NetBIOS_Domain_Name: FB | NetBIOS_Computer_Name: TEST2K12 | DNS_Domain_Name: fb.com | DNS_Computer_Name: test2k12.fb.com | DNS_Tree_Name: fb.com |_ Product_Version: 6.3.9600 |_ssl-date: 2018-12-24T06:17:37+00:00; +49s from scanner time. 587/tcp open smtp Microsoft Exchange smtpd | smtp-commands: test2k12.fb.com Hello [10.0.83.11], SIZE 36700160, PIPELINING, DSN, ENHANCEDSTATUSCODES, STARTTLS, AUTH GSSAPI NTLM, 8BITMIME, BINARYMIME, CHUNKING, |_ This server supports the following commands: HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT | smtp-ntlm-info: | Target_Name: FB | NetBIOS_Domain_Name: FB | NetBIOS_Computer_Name: TEST2K12 | DNS_Domain_Name: fb.com | DNS_Computer_Name: test2k12.fb.com | DNS_Tree_Name: fb.com |_ Product_Version: 6.3.9600 |_ssl-date: 2018-12-24T06:17:39+00:00; +49s from scanner time. …… 2525/tcp open smtp Microsoft Exchange smtpd | smtp-commands: test2k12.fb.com Hello [10.0.83.11], SIZE, PIPELINING, DSN, ENHANCEDSTATUSCODES, STARTTLS, X-ANONYMOUSTLS, AUTH NTLM, X-EXPS GSSAPI NTLM, 8BITMIME, BINARYMIME, CHUNKING, XEXCH50, XRDST, XSHADOWREQUEST, |_ This server supports the following commands: HELO EHLO STARTTLS RCPT DATA RSET MAIL QUIT HELP AUTH BDAT |_smtp-ntlm-info: ERROR: Script execution failed (use -d to debug) |_ssl-date: 2018-12-24T06:17:48+00:00; +50s from scanner time. ……
80端口上的IIS、25/587/2525端口上的SMTP,及其其上詳細的指紋信息,可以幫助我們確定該主機上正運行著Exchange服務。
端口掃描是信息收集階段最常用的手段,端口掃描通過與目標主機之間的TCP/UDP協議交互,根據返回的各種信息判斷端口開放情況和服務軟件,這需要直接的與目標主機進行通信,且往往會產生規模較大的流量通信。除了端口掃描之外,對于熟悉內網滲透的同學來說,通過SPN來發現服務應該也是必備伎倆了,這種方法在Windows環境中尤其有效,因為其不需要與各個主機進行通信,而是通過已有的普通用戶權限,查詢活動目錄數據庫,枚舉得到SPN,從而獲知各個主機上運行著哪些服務應用。
SPN(Service Principal Name),是Kerberos認證中不可缺少的,每一個啟用Kerberos認證的服務都擁有一個SPN,如文件共享服務的SPN為cifs/domain_name,LDAP服務的SPN為ldap/domain_name,在Kerberos認證過程,客戶端通過指定SPN讓KDC知曉客戶端請求訪問的是哪個具體服務,并使用該服務對應的服務賬號的密鑰來對最終票據進行加密。關于Kerberos和SPN的更多信息不在此展開講,有興趣的同學可以自行查閱資料。
在活動目錄數據庫中,每一個計算機對象有一個屬性名為servicePrincipalName,該屬性的值是一個列表,存儲著該計算機啟用Kerberos認證的每一個服務名稱。安裝在Windows域環境中的Exchange服務同樣會接入Kerberos認證,因此,Exchange相關的多個服務,應該都可以從該屬性中找到對應的SPN。
執行SPN名稱查找的工具和方法有很多,這里直接以域內的一臺工作機,通過setspn.exe查詢獲得。
可以看到,exchangeRFR/exchangeAB/exchangeMDB/SMTP/SMTPSvc等,涉及SMTP服務、郵件地址簿服務、客戶端訪問服務器角色服務等,都是Exchange注冊的服務。
再次強調,SPN是啟用Kerberos的服務所注冊的便于KDC查找的服務名稱,這些SPN名稱信息被記錄在活動目錄數據庫中,只要服務安裝完成,這些SPN名稱就已經存在,除非卸載或刪除,SPN名稱查詢與當前服務是否啟動沒有關系(如Exchange服務器的IMAP/POP等部分服務默認是不啟動的,但其SPN名稱同樣存在)。
除此之外,有時候通過其他一些方法同樣可以幫助探測確認Exchange服務,如發現OWA、EWS接口、自動發現服務、DNS域名記錄等等,Exchange是一個龐大復雜的組件服務,各種配置信息和公開服務都可以幫助我們進行信息收集。
上文提到,Exchange提供了多種客戶端郵箱接口和服務接口,對于滲透測試人員而言,這些接口就是踏入Exchange內部的第一道關卡,提供服務的接口需要有效的用戶憑證信息,顯然,用戶名與密碼破解是擺在面前的第一個嘗試。在企業域環境中,Exchange與域服務集合,域用戶賬戶密碼就是Exchange郵箱的賬戶密碼,因此,如果我們通過暴力破解等手段成功獲取了郵箱用戶密碼,在通常情況下也就間接獲得了域用戶密碼。
Autodiscover自動發現服務使用Autodiscover.xml配置文件來對用戶進行自動設置,獲取該自動配置文件需要用戶認證,如訪問http://test2k12.fb.com/Autodiscover/Autodiscover.xml文件將提示需要認證,如下為認證通過,將獲取到如下的XML文件內容:
利用這個接口,可以對郵箱賬號做暴力破解。Ruler提供了對Exchange的自動配置文件接口進行認證的暴力破解,通過配置線程數、間隔時間可以限制破解速度防止多次登陸失敗觸發告警或賬戶被封禁。
password spray同樣是一種破解賬戶密碼的方法,與常規的暴力破解方法不同的是,password spary針對一批賬戶進行破解,每次對單個用戶賬戶進行一次或少數次登陸嘗試后換用下一個用戶進行嘗試,如此反復進行并間隔一定時間,以此方法躲避多次暴力破解的檢測和賬戶鎖定的風險。
mailsniper提供分別針對OWA接口、EWS接口和ActiveSync接口的password spray。
當滲透測試人員已成功取得某些用戶的合法郵箱憑證,或者拿到與郵箱認證相同的域賬戶憑證,該用戶憑證可能是通過暴力破解用戶名密碼得到的,可能是dump到了用戶明文密碼或哈希值,或者通過其他途徑取得的合法有效憑證,可以幫助滲透測試人員進一步進行后滲透攻擊,收集更多的敏感信息、利用合法功能與服務進行擴展。
Outlook是Office辦公軟件中用于管理電子郵件的專用軟件,Exchange郵箱用戶使用Outlook進行郵件管理可以體驗Exchange專用的各種功能,也是應用非常廣泛的辦公軟件之一。Outlook功能非常強大,其中的一些合法功能由于其特殊性,當攻擊者利用一些靈活(而猥瑣)的伎倆時往往可達成意想不到的效果。
規則和通知功能的濫用
Outlook提供了一項 ”規則和通知“ (Rules and Alerts)的功能,可以設置郵件接收和發送的策略,分為規則條件和動作,即用戶定義當郵件滿足某些條件時(如郵件主題包含特定詞語),觸發一個特定的動作,這個動作可以是對郵件的管理、處置,甚至是啟動應用程序。
當攻擊者擁有合法郵箱用戶憑證的情況下,可以利用該功能在正常用戶收到符合某種條件的郵件時執行特定的命令,例如反彈一個shell。該利用方法需要注意:
攻擊者已擁有有效的郵箱用戶憑證;
當觸發動作為啟動應用程序時,只能直接調用可執行程序,如啟動一個exe程序,但無法為應用程序傳遞參數,即無法利用powershell執行一句話代碼進行反彈shell(因為只能執行powershell.exe而無法傳遞后面的命令行參數);
用戶需要在開啟Outlook的情況下觸發規則條件才有效,在未使用Outlook的情況下無法觸發動作;但是,用戶通過其他客戶端(如OWA)接收瀏覽了該郵件,而后打開了Outlook,仍然可以觸發該動作發生(只要這封郵件沒有在打開Outlook之前刪除);
規則和通知可以通過Outlook進行創建、管理和刪除,OWA對規則和通知的操作可用項較少(無法創建 ”啟動應用程序“ 的動作);
手動新建一個規則及其觸發動作,當收件主題中包含 ”pwn“ 時,啟動計算器程序(calc.exe)。
發送一封郵件主題包含單詞 ”pwn“ 的郵件,當用戶使用Outlook時,收到該郵件之后,觸發規則,彈出計算器。
從上面的嘗試可以證明,該功能可以實現根據郵件主題或內容匹配啟動指定應用程序,因此,可以作為一個合適的攻擊面,在滿足一定條件的情況下進行利用。總結一下該攻擊需要滿足的條件:
攻擊者需要擁有合法的郵箱用戶憑證,且該用戶使用Outlook進行郵件管理;
攻擊者需要通過Outlook登陸用戶郵箱,然后為其創建一條合適的規則,將要執行的應用程序要么位于用戶使用Outlook的主機上,要么位于主機可訪問到的位置(如內網共享文件夾、WebDAV目錄下等);
Ruler也提供了利用上述規則和通知功能,可以通過命令行創建規則、發送郵件觸發規則。通過結合Empire、共享文件夾、ruler,對該功能進行利用。
使用Empire啟用一個監聽器,創建一句話的powershell木馬。
將生成的一句話木馬通過工具生成一個exe,并把該可執行文件放到內網一臺機器的共享目錄中。
利用ruler和已擁有的合法郵箱憑證,在目標郵箱賬戶中創建一條規則,規則觸發字符是 ”tcc“,規則觸發動作指向共享目錄中的可執行文件。
利用ruler發送一封包含 ”tcc“ 字符串的主題的郵件,ruler將使用用戶自己的郵箱給自己發送一封郵件,從而觸發規則(這一步可以在上一步驟中同時完成)。
當用戶使用Outlook收發郵件時,將觸發規則,并從共享目錄中拉取可執行木馬文件并執行,該過程沒有任何異樣。木馬執行后shell已經成功回彈。
完事之后刪掉規則。
主頁設置功能的濫用
在Outlook中,提供了一個功能允許用戶在使用Outlook的時候設置收件箱界面的主頁,可以通過收件箱的屬性來設置加載外部URL,渲染收件箱界面。
收件箱主頁URL作為收件箱的設置屬性,會在客戶端Outlook和Exchange服務端之間進行同步,而通過MAPI/HTTP協議與Exchange服務端的交互,可以直接設置該屬性。因此,當已擁有合法郵箱憑證的前提下,可以利用該功能,為郵箱用戶設置收件箱主頁URL屬性,將其指向包含惡意代碼的頁面,當用戶在Outlook中瀏覽刷新收件箱時,將觸發加載惡意頁面,執行惡意腳本代碼,形成遠程命令執行。
Outlook收件箱主頁指向的URL在Outlook中通過iframe標簽加載,其執行wscript或vbscript受沙箱環境限制,無法使用腳本代碼創建敏感的惡意對象,即無法直接通過CreateObject("Wscript.Shell")的方式執行命令。但是,此處可以通過載入與Outlook視圖相關的ActiveX組件,然后獲取ViewCtl1對象,通過該對象獲取應用程序對象OutlookApplication,該對象即表示整個Outlook應用程序,從而逃出Outlook沙箱的限制,接著,就可以直接通過Outlook應用程序對象調用CreateObject方法,來創建新的應用程序對象Wscript.Shell,執行任意命令。該利用方法詳情可參考 鏈接1、鏈接2、鏈接3。
Set Application = ViewCtl1.OutlookApplication # 取得頂層的Outlook應用程序對象,實現逃逸 Set cmd = Application.CreateObject("Wscript.Shell") # 利用Outlook應用程序對象創建新的對象,執行系統命令 cmd.Run("cmd.exe")
實現該攻擊需要的前提條件:
攻擊者需要擁有合法的郵箱用戶憑證,且該用戶使用Outlook進行郵件管理;
攻擊者通過Outlook登陸用戶郵箱,為其收件箱屬性設置主頁URL,指向包含惡意腳本代碼的頁面;
ruler提供了通過MAPI/HTTP的協議交互,利用合法的郵箱憑證向服務端寫入收件箱主頁URL屬性,當用戶使用Outlook并從Exchange服務端同步該設置時,其隨后對收件箱的刷新瀏覽將觸發加載惡意網頁,并執行惡意代碼。
使用empire生成powershell一句話木馬,通過Web服務器托管包含該一句話木馬的惡意網頁。
利用ruler和已有的合法郵箱憑證,在目標郵箱中設置收件箱主頁URL,指向Web服務器上的惡意網頁。
隨后,用戶通過Outlook瀏覽收件箱,empire將接收到反彈shell,該過程Outlook收件箱可能會提示已阻止不安全的ActiveX控件,實際上命令已經執行完成。
完事之后,刪除該屬性設置,如果不清除該設置,用戶隨后的多次瀏覽收件箱都將觸發命令執行,造成empire接收多個反彈shell。
MailSniper可以被用戶或管理員用于檢索查找自己郵箱和文件夾信息,而攻擊者利用該工具,也可以在獲得合法郵箱憑證之后,通過檢索郵箱文件夾來嘗試發現和竊取包含敏感信息的郵件數據。Mailsniper包含兩個主要的cmdlet,分別是Invoke-SelfSearch和Invoke-GlobalMailSearch,用于檢索郵件中的關鍵字。
檢索當前用戶的Exchange郵箱數據
# 查找郵件內容中包含pwn字符串的郵件,-Folder參數可以指定要搜索的文件夾,默認是inbox,使用時最好指定要搜索的文件夾名稱(或者指定all查找所有文件),因為該工具是外國人寫的,Exchange英文版收件箱為Inbox,當Exchange使用中文版時收件箱不為英文名,默認查找inbox文件夾會因找不到該文件而出錯 Invoke-SelfSearch -Mailbox zhangsan@fb.com -Terms *機密* -Folder 收件箱 -ExchangeVersion Exchange2013_SP1
檢索用戶zhangsan@fb.com的收件箱中包含關鍵字 “機密” 的郵件。
檢索所有用戶的Exchange郵箱數據
利用已掌握的Exchange最高權限組成員用戶,為普通用戶分配ApplicationImpersonation角色,使得該普通用戶可以以當前用戶身份合法偽裝其他郵箱用戶,進而獲得查詢所有郵箱用戶郵件的權限。更多關于ApplicationImpersonation role,可以查看 鏈接。
# 利用administrator管理員用戶為普通用戶zhangsan分配ApplicationImpersonation角色,檢索所有郵箱用戶的郵件中,包括“內部郵件”關鍵字的內容 Invoke-GlobalMailSearch -ImpersonationAccount zhangsan -ExchHostname test2k12 -AdminUserName fb.com\administrator -ExchangeVersion Exchange2013_SP1 -Term "*內部郵件*" -Folder 收件箱
執行該檢索的過程中,利用管理員權限為用戶zhangsan@fb.com分配ApplicationImpersonation角色,然后獲取組織中所有郵件地址列表,并通過角色委派通過EWS服務接口逐一檢索各個郵箱賬戶,任務結束后,ApplicationImpersonation角色分配也被刪除。
利用已掌握的合法郵箱憑證,可以利用OWA或者EWS接口查詢獲取到Exchange組織中所有的郵箱用戶的郵件地址,即全局地址列表。
Get-GlobalAddressList -ExchHostname test2k12 -UserName zhangsan -ExchangeVersion Exchange2013_SP1
郵箱用戶可以通過Outlook設置自己郵箱各個文件夾的權限,通過權限設置可以委派給其他用戶訪問郵箱文件夾的權限,默認情況下存在兩條訪問規則,分別是默認規則和匿名規則,但其權限等級都為“無”。如果用戶通過該屬性設置了郵箱文件夾(如收件箱、發件箱等)的委派權限給其他用戶,但權限委派過于寬泛時,可能導致攻擊者利用有權限的用戶,間接獲得目標郵箱用戶的郵件訪問權。如下,用戶zhangsan@fb.com設置了默認所有人對收件箱具有讀取的權限。
Invoke-OpenInboxFinder用于查找和發現指定郵箱用戶的文件夾是否存在危險的權限委派。
Invoke-OpenInboxFinder -ExchangeVersion Exchange2013_SP1 -ExchHostname test2k12.fb.com -EmailList .\users.txt
當通過Invoke-OpenInboxFinder發現某些郵箱用戶存在可讀取郵件權限后,可以利用上面提到的Invoke-SelfSearch,檢索該郵箱用戶是否存在包含敏感詞的郵件,使用Invoke-SelfSearch時需要添加-OtherUserMailbox選項參數,該選項表示通過權限委派缺陷檢索非當前用戶郵箱數據。
NTLM Relay,又一個有趣的話題。NTLM是一種基于挑戰-響應的認證交互協議,被Windows上的多種應用層協議用于身份認證,如SMB、HTTP、MSSQL等。NTLM中繼攻擊,是指攻擊者在NTLM交互過程中充當中間人的角色,在請求認證的客戶端與服務端之間傳遞交互信息,將客戶端提交的Net-NTLM哈希截獲并在隨后將其重放到認證目標方,以中繼重放的中間人攻擊實現無需破解用戶名密碼而獲取權限。關于NTLM中繼攻擊的安全研究及相關工具已有很多,也有各種新玩法層出不窮,有興趣的可以自行查閱研究,有時間再另作文章討論。
NTLM中繼攻擊在SMB、HTTP協議中的應用討論得比較多,其實質是應用協議通過NTLM認證的方式進行身份驗證,因此,利用NTLM進行認證的應用都可能遭受NTLM中繼攻擊。Exchange服務器提供RPC/HTTP、MAPI/HTTP、EWS等接口,都是基于HTTP構建的上層協議,其登陸方式通過NTLM進行,因此,NTLM中繼同樣適用與Exchange。
Exchange的NTLM中繼攻擊由William Martin于Defcon26的演講中提出并實現了利用工具ExchangeRelayx,可以看 這里。
ExchangeRelayx由python實現,依賴安裝完成并啟動后,會啟動SMB服務和2個HTTP服務,SMB服務和監聽在80端口的HTTP服務用于接收受害者主機發送的認證,監聽在8000端口的HTTP服務是一個管理后臺,用于管理重放攻擊成功的Exchange會話。該工具實現了將獲取到的Net-NTLM哈希重放到真實Exchange服務器的EWS接口進行認證,通過EWS獲取用戶郵箱的郵件信息、附件下載、創建轉發規則、查詢GAL等。
啟動ExchangeRelayx,將管理后臺監聽在本地8000端口。
隨后,攻擊者給目標用戶發送釣魚郵件,郵件內容包含一個惡意外鏈,該鏈接可以是指向攻擊服務器80端口上的Web Server,或者是指向攻擊服務器上的SMB共享,當用戶點擊該鏈接時,當前用戶的NTLM認證將被發往攻擊服務器,攻擊服務器取得該Net-NTLM哈希時,將其重放到真實Exchange服務器以訪問EWS接口,重放認證通過,管理后臺可看到Exchange會話已經上線。
攻擊服務器上ExchangeRelayx的SMB服務接收到受害者的NTLM認證,并將其重放進行攻擊。
點擊Go to Portal,ExchangeRelayx提供了一個類OWA的郵件管理界面,可以查看用戶所有郵件和文件夾。
可以查詢聯系人信息,獲取到更多郵箱用戶的郵件地址。
可以下載附件,導出地址簿聯系人,還可以創建郵件轉發規則,將該用戶的郵件自動轉發到指定郵箱。
可以看到,利用NTLM中繼攻擊Exchange用戶郵箱并不復雜,其原理與NTLM中繼應用于其他協議并無不同,ExchangeRelayx這套框架實現了將截獲的Net-NTLM哈希重放到真實Exchange服務器的EWS服務接口上,利用該認證憑證成功取得了一個Exchange用戶郵箱會話,從而實現了讀取用戶郵件、查看聯系人列表等操作。該攻擊方式需要釣魚郵件的配合,或者配合Responde、Inveigh等工具實施名稱查詢欺騙來完成。
以上就是深入Exchange Server在網絡滲透下的利用方法是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。