面向Azure的 滲透技術(shù)研究

來源: 信息安全與通信保密雜志社
作者:Cismag
時間:2020-12-22
16909
Azure是Microsoft推出的重要云服務(wù)平臺,為多種應(yīng)用場景提供了解決方案。按照滲透測試中信息收集、數(shù)據(jù)獲取、權(quán)限提升和權(quán)限維持的先后順序總結(jié)了面向Azure平臺的滲透測試技術(shù),涉及的云服務(wù)包括自動化、Azure存儲、Key Vault和App Service等,從理論體系上提煉總結(jié)了Azure云平臺滲透技術(shù)的研究思路。

隨著生產(chǎn)科技的快速發(fā)展、計算能力的不斷提高,以分布式、虛擬化、云計算為核心技術(shù)的云平臺及云服務(wù)器服務(wù)ECS、對象存儲服務(wù)OSS、內(nèi)容分發(fā)服務(wù)CDN等各類衍生服務(wù)飛速興起。云平臺使用基于互聯(lián)網(wǎng)的云計算技術(shù)為用戶提供虛擬信息技術(shù)服務(wù),其規(guī)模經(jīng)濟、快速供應(yīng)、彈性服務(wù)等特點讓用戶能夠以低廉的價格享受優(yōu)質(zhì)計算能力等虛擬資源服務(wù),從而提高了企業(yè)和個人信息的使用效益。

在新冠肺炎的影響下,遠程辦公需求激增,這也直接刺激了云計算行業(yè)的發(fā)展。根據(jù)Flexera公司的云計算趨勢報告,20%的企業(yè)每年在公有云上花費超過1200萬美元,59%的企業(yè)由于疫情影響,對云服務(wù)的使用需求超過了預計。而微軟推出的Azure云平臺更是被廣泛采用,其企業(yè)普及率目前已經(jīng)達到了69%,僅次于亞馬遜的AWS平臺。

隨著云上解決方案被全球企業(yè)逐步采用,其所具有的分布式、虛擬化等技術(shù)特性和高度網(wǎng)絡(luò)依賴性也帶來了網(wǎng)絡(luò)和數(shù)據(jù)方面新的安全風險,數(shù)據(jù)泄漏、非法濫用、針對服務(wù)和應(yīng)用漏洞的攻擊等問題層出不窮,在此背景下云平臺的安全研究顯得尤為重要。

01、Azure云平臺介紹

1.1 Azure的主要功能

無論是傳統(tǒng)的虛擬化、存儲等功能,還是前沿的區(qū)塊鏈、IoT、AI領(lǐng)域,Microsoft Azure都有較為完備的解決方案。目前,Azure平臺為用戶提供了豐富的服務(wù)種類,主要包括:

(1)計算服務(wù):虛擬機服務(wù)、桌面虛擬化服務(wù)、容器服務(wù)等。

(2)應(yīng)用服務(wù):支持Web和移動應(yīng)用的App服務(wù)、Serverless的Logic App服務(wù)、支持大型應(yīng)用的App Fabric等。

(3)存儲服務(wù):支持四種基本存儲類型的Azure Storage服務(wù)和支持Redis、SQL Server等多種數(shù)據(jù)庫種類的數(shù)據(jù)庫服務(wù)。

(4)分析服務(wù):數(shù)據(jù)獲?。‥vent Hub、Data Factory、Stream Analytics等)、數(shù)據(jù)分析(HDInsight、Machine Learning等)和數(shù)據(jù)存儲(Data Lake)。

(5)網(wǎng)絡(luò)服務(wù):VPN網(wǎng)關(guān)、應(yīng)用程序網(wǎng)關(guān)、CDN、防火墻等。

(6)身份標識:Azure AD、Azure AD外部標識等。

(7)管理服務(wù):Key Vault憑據(jù)管理器、自動化服務(wù)、Security Center等。

1.2 Azure的資源管理器模式

早期Azure采用經(jīng)典模型管理云端資產(chǎn),在此模型中資源彼此獨立,因此在管理同一個解決方案時需要手動將資源組織到一起。

從2014年起,Azure引入了資源管理器模型,該模型通過“管理組、訂閱、資源組和資源”四種范圍管理了彼此有關(guān)聯(lián)的資產(chǎn),通過資源管理模板優(yōu)化了解決方案的基礎(chǔ)結(jié)構(gòu),通過資源間的依賴關(guān)系確保了資源部署的正確順序,通過基于角色的訪問控制(Role-Based Access Control,RBAC)限制了資源的訪問權(quán)限,有效改進了Azure云端資產(chǎn)的管理效率。

1.3 Azure的訪問控制

為了方便管理云上資源,Azure采用了基于角色的訪問控制(RBAC)。Azure RBAC的核心思想在于角色的分配,其中包含了三個要素:安全主體(Security Principal)、角色定義(Role Definition)和對象范圍(Scope),即安全主體在訪問某個范圍的對象時具備了哪些角色。

安全主體表示發(fā)起資源訪問請求的對象,可以是用戶、組、服務(wù)主體或托管標識。用戶表示Azure AD中的一個用戶賬戶;組代表一組用戶,當給用戶組分配角色時,組中每個用戶都將繼承得到該角色;服務(wù)主體是應(yīng)用程序或服務(wù)發(fā)起資源訪問時所使用的賬戶;托管標識用于云應(yīng)用程序向Azure服務(wù)進行身份認證。

角色定義用于列出某個安全主體所擁有的權(quán)限。Azure內(nèi)置了多種角色,最基礎(chǔ)的四種為:所有者(Owner)、參與者(Contributer)、讀取者(Reader)和用戶訪問管理員(User-access-administrator)。所有者具有所管理資源的完全訪問權(quán)限,參與者不擁有分配角色的權(quán)限,讀取者可以查看資源但不能修改,用戶訪問管理員僅管理其他用戶的訪問權(quán)限。除了內(nèi)置角色外,Azure還允許用戶創(chuàng)建自定義角色。

對象范圍采用父子關(guān)系結(jié)構(gòu),包括管理組、訂閱、資源組和資源四種范圍,用于定義所分配對象的范圍。父級別范圍分配的角色也會順次繼承給子范圍,同一范圍內(nèi)的角色采取疊加的計算方法。

02、信息收集

在滲透前期,信息收集是紅隊人員最常采用的手段之一。在對目標掌握線索較少的情況下,開展全面、準確的公開資產(chǎn)掃描往往能幫助紅隊建立對目標資產(chǎn)規(guī)模、業(yè)務(wù)類型等最直觀的認識。在了解目標大致的服務(wù)類型后,針對單個服務(wù)或功能可以進行進一步的細化掃描,從而收集服務(wù)版本、已注冊賬戶、敏感文件泄露或可利用的公開漏洞等信息,以建立目標的資產(chǎn)地圖,并確立大致的攻擊路徑。

2.1域名、服務(wù)信息收集

為了方便管理,Azure云平臺為常用的相關(guān)服務(wù)提供了用于便捷訪問的子域名。當用戶在Azure Portal添加服務(wù)時,Azure會自動分配一個相應(yīng)的子域名用于服務(wù)的訪問或管理。目前已整理的Azure專用子域名和服務(wù)的對應(yīng)關(guān)系如表1所示。

表1 Azure平臺子域名及對應(yīng)服務(wù)表

640.png

例如,想探測Testdance公司在Azure平臺托管了哪些服務(wù),則需要在上述子域名前加上該公司的專屬域名。若testdance.file.core.windows.net域名存在,則代表有用戶申請創(chuàng)建了名為testdance的文件存儲服務(wù),且有可能歸屬該公司。

在確認了目標所使用的服務(wù)類型后,有以下幾種思路可開展進一步利用。

(1)攻擊Web應(yīng)用服務(wù)。如前所述,azurewebsites.net子域指向目標的Web站點,安全人員可以利用可能泄露的敏感信息或已知的公開漏洞對此服務(wù)開展常規(guī)內(nèi)容的滲透測試。

(2)查看數(shù)據(jù)庫服務(wù)。在管理員配置不當?shù)那闆r下,目標的數(shù)據(jù)庫服務(wù)很可能沒有對訪問IP采取較嚴的訪問控制,導致數(shù)據(jù)庫暴露在公網(wǎng)上,若其中恰好保存了一些登錄信息或身份憑證,就很可能成為紅隊攻下其他服務(wù)的敲門磚。

(3)子域名接管攻擊。由于Azure的Web服務(wù)子域名是可任意申請且唯一的,紅隊人員可以時刻關(guān)注目標子域名的過期情況,一旦發(fā)現(xiàn)有子域名指向失效的Azure域名,就可以主動重新申請失效域名,從而接管目標的一個有效子域名。

2.2文件存儲資源信息收集

Azure平臺中有四種存儲類型,分別是文件存儲、非結(jié)構(gòu)化Blob數(shù)據(jù)存儲、消息隊列Queue數(shù)據(jù)存儲和NoSql數(shù)據(jù)存儲,四種存儲方式由唯一的命名空間——Storage Account(存儲賬戶)確定。每個存儲賬戶在core.windows.net中擁有子域名,且根據(jù)存儲的數(shù)據(jù)類型不同,相應(yīng)的唯一子域名也不同。例如,目標擁有名為test的存儲賬戶,其用于存儲Blob類型數(shù)據(jù)的訪問接口為test.blob.core.windows.net。

Blob數(shù)據(jù)存儲服務(wù)常用于保存圖片、影音等多媒體數(shù)據(jù),因此往往是可以公開訪問的。Blob數(shù)據(jù)存儲的上級結(jié)構(gòu)稱為Container(容器),其本質(zhì)和文件夾類似。容器有三種訪問級別,當某個容器被賦予名為“Container”權(quán)限時,其中保存的所有文件不僅可以被訪問,還可以被枚舉。因此,若容器中保存了敏感文件,而訪問級別又被錯誤配置為“Container”,則其中的敏感文件就會面臨被枚舉和泄露的風險。

03、數(shù)據(jù)獲取

在獲取了一定的賬戶權(quán)限后,利用已有權(quán)限開展數(shù)據(jù)獲取工作是尤為重要的步驟,通過Portal進行交互操作、使用Azure Powershell命令集或?qū)Υ鎯橘|(zhì)和網(wǎng)絡(luò)傳輸流量進行取證等手段往往能搜集到應(yīng)用于Azure平臺各類服務(wù)和應(yīng)用的配置文件、登錄證書乃至用戶憑據(jù)。本節(jié)介紹了Azure平臺常見的憑據(jù)收集手段,在獲得了這些信息的條件下,就可以進一步擴展權(quán)限,加大對目標系統(tǒng)的了解和控制程度,從而為接下來的滲透提供便利。

3.1 Azure存儲服務(wù)

前文介紹了Azure存儲服務(wù)提供的四種存儲類型。常見的訪問存儲服務(wù)的方式有兩種,除了使用Azure Portal進行交互式操作,還可以針對四種不同的存儲方式使用其各自的REST API來進行操作。

存儲訪問密鑰被用于請求Azure提供的存儲REST API,并可以獲取存儲服務(wù)中的各類數(shù)據(jù)。這種訪問方法區(qū)別于Azure Portal的操作,既可以繞過MFA認證,也可以獲取對存儲賬戶的完全訪問權(quán)限,是較為理想的訪問手段。每個存儲賬戶都分配有兩對密鑰/連接字符串可用于存儲數(shù)據(jù)的完全訪問,當重新生成其中一組密鑰時,用戶程序可以使用另一組來保持和存儲賬戶的持續(xù)連接。該密鑰是由平臺自動生成的64字節(jié)數(shù)據(jù),并經(jīng)過Base64編碼,因此很容易在開發(fā)人員的項目代碼或配置文件中進行識別。由于存儲訪問密鑰默認不會自動過期,因此一旦被攻擊人員掌握,就很可能造成較為嚴重且持續(xù)的數(shù)據(jù)泄漏,從而危害云平臺其他服務(wù)的安全性。

3.2 Key Vault密鑰管理器

Key Vault是Azure提供的一項密鑰管理服務(wù),可用于各類密鑰、密碼和證書等憑證的安全存取。如果當前用戶具有足夠權(quán)限,那么使用Key Vault來收集憑據(jù)信息是最為直接和便捷的方法。除了使用portal進行管理,還可以使用Azure Powershell所提供的Get-AzureKeyVaultKey和Get-AzureKeyVaultSecret等方法查詢當前Key Vault中存儲的單個憑證信息,并且可以直接編寫腳本批量導出明文密碼,嘗試使用這些密碼訪問云中的其他服務(wù)。

3.3應(yīng)用程序服務(wù)

App Service是Azure用于快速部署Web應(yīng)用的一項服務(wù),其支持構(gòu)建云端原生Web應(yīng)用和遠程遷移兩種部署方式。用戶可以使用應(yīng)用服務(wù)快速管理Web應(yīng)用程序,并通過“應(yīng)用程序服務(wù)配置”來為Web應(yīng)用配置和推送諸如數(shù)據(jù)庫等服務(wù)的密碼。因此,在獲取了某個應(yīng)用程序參與者權(quán)限的情況下,可以利用“應(yīng)用程序服務(wù)配置”這項功能來收集Web應(yīng)用中的密碼。若要使用Portal來獲取該配置,可以在門戶頁面“App Service”服務(wù)的“獲取發(fā)布配置文件”處下載到。Azure Powershell中獲取App配置文件對應(yīng)的命令是Get-AzureRmWebAppPublishingProfile,若要批量導出所有應(yīng)用的配置文件,可以配合Get-AzureRmWebApp和Get-AzureRmResource兩個命令編寫用于遍歷查詢的腳本來實現(xiàn)。

3.4自動化服務(wù)

Azure自動化服務(wù)為用戶提供了定制化的管理功能,用戶可以通過部署Powershell或Python腳本來對云端資源進行管理,常見的工作場景包括虛擬機資源配置、定時云端資產(chǎn)檢索和篩查、部署合規(guī)性檢查以及設(shè)置安全保護觸發(fā)條件等。Runbook是Azure自動化的核心功能,其本質(zhì)是一段需要部署在Azure平臺上運行的計劃任務(wù)腳本,用戶可以通過制定腳本內(nèi)容、輸入輸出格式、運行間隔和觸發(fā)條件等參數(shù)來實現(xiàn)不同的功能。

由于自動化服務(wù)常被用于云端資產(chǎn)的管理,因此其中保存的密碼、證書等憑據(jù)也具有較高的價值。自動化賬戶中的憑據(jù)資產(chǎn)一旦添加,就只能查看名稱、介紹等基礎(chǔ)信息,要想查詢其明文密碼等詳細內(nèi)容,需要結(jié)合Get-AzAutomationCredential等Powershell命令并編寫runbook腳本進行查詢和導出。由于在申請新的自動化賬戶時,Azure會默認創(chuàng)建三個新手引導性質(zhì)的runbook腳本,因此在遠程部署runbook腳本時,可以將腳本名修改為“AzureAutomationTutorial”等類似的名稱,從而達到混淆視聽的目的。

04、權(quán)限提升

本節(jié)將介紹三種基于Azure平臺的權(quán)限提升思路,分別涉及自動化、Azure存儲和Cloud Shell三種服務(wù)。在大多數(shù)場景下,滲透往往是從一個低級別的漏洞,或是低權(quán)限賬戶展開的,在獲取到一定的普通權(quán)限后,權(quán)限提升是需要嘗試的路徑之一,若平臺管理員沒有配置好資源的權(quán)限設(shè)置,就很可能為他人留下可乘之機。

4.1 runbook腳本提權(quán)

如前文所述,Key Vualt是Azure平臺極為重要的憑據(jù)管理服務(wù),若能導出其中信息,將對后續(xù)滲透提供極大的便利。而在實戰(zhàn)環(huán)境中,管理員很可能對用戶賬戶做了訪問控制,如紅隊人員可能控制了某個參與者賬戶A,但該A賬戶被限制了對Key Vault的訪問權(quán)限。由于缺少角色分配權(quán),該賬戶無法給自己授予對Key Vault的訪問權(quán)限。但如果管理員錯誤地配置了權(quán)限,將該A賬戶添加為某個可以訪問Key Vault的自動化賬戶的參與者,則紅隊人員就可以利用該自動化賬戶創(chuàng)建或修改一個代理Runbook腳本并運行,用間接的方法提升賬戶A的權(quán)限,從而批量導出Key Vault存儲的憑據(jù)信息。

4.2從VHD到遠程登錄

在獲得存儲賬戶密鑰的前提下。紅隊人員可以通過獲取未被全盤加密的VHD副本,利用相關(guān)取證手段獲得虛擬硬盤中存儲的憑據(jù)或證書,并進一步控制虛擬機。需要注意的是,若虛擬機正在運行,則虛擬硬盤可能處于占用狀態(tài),此時需要首先使用Azure的快照API為虛擬硬盤創(chuàng)建一個副本文件。在獲取到虛擬硬盤的副本后,可以獲取硬盤中的SAM和SYSTEM文件用于本地hash的導出。若通過hash得到了虛擬機的明文密碼,則可以嘗試連接運行中的虛擬機。

獲取虛擬機連接地址的方式有兩種:一是直接從虛擬硬盤的名稱中提取,如下載的虛擬硬盤文件名為testvolume20200101000001.vhd,則虛擬機的主機名稱通常為testvolume.cloudapp.net;二是直接通過虛擬硬盤副本中保存的注冊表鍵值獲取,虛擬機的主機名通常位于注冊表的computerName鍵下。獲得虛擬機的主機名稱后,即可使用憑據(jù)連接虛擬機,并獲得進一步的控制權(quán)限。

4.3 Azure Cloud Shell提權(quán)

Azure Cloud Shell服務(wù)是Azure Portal提供的命令行工具,可以幫助用戶通過瀏覽器快捷地操作云端資源,在首次啟用該服務(wù)時,Azure會創(chuàng)建一個虛擬環(huán)境,并新建一個專屬于該用戶的存儲賬戶用于容器鏡像的存儲。若管理員為某個賬戶配置了對存儲服務(wù)的參與者權(quán)限,則該賬戶就可讀取存儲服務(wù)下的所有存儲賬戶,因此該賬戶也擁有了對該訂閱下所有其他用戶Cloud Shell鏡像存儲的訪問和修改權(quán)限。若要查找其他用戶可能存在的信息泄漏,可以讀取他人鏡像文件下的.bash_history和ConsoleHost_history.txt等文件內(nèi)容;若要獲得其他用戶Cloud Shell的執(zhí)行權(quán)限,則可以通過修改.bashrc或Microsoft.Powershell_ profile.ps1等開機啟動腳本中的代碼來實現(xiàn)。

05、權(quán)限維持

本節(jié)將介紹兩種基于Azure云平臺的權(quán)限維持手段。在獲取目標系統(tǒng)一定的權(quán)限以后,很可能因為某些攻擊痕跡被發(fā)現(xiàn)或?qū)Ψ綗o意中進行了修改密碼、更新系統(tǒng)等操作而丟失已有的攻擊成果,而防止這種情況發(fā)生的最好辦法即是把握攻守中的主導權(quán),采取一些權(quán)限維持手段來加強控制。

5.1登錄繞過

在部分場景下,只要獲得了目標賬戶的權(quán)限,或者用戶名和明文密碼,就可以維持長時間的控制。但隨著安全防護手段的升級,目前很多廠商都不再局限于僅驗證用戶名和密碼,如Azure Portal就默認開啟了MFA功能,若要登錄門戶獲取用戶權(quán)限,則需要至少使用短信、郵箱、Windows Hello之一的方式進行二次認證。

顯而易見的是,在有MFA的前提下想要直接通過Web交互來獲取賬戶權(quán)限是較不現(xiàn)實的,但Azure除了Web端以外,還支持了另一種基于Token的身份認證方式。為了便于開發(fā)人員的測試和管理,Azure提供了Azure Powershell工具集用于直接從命令行管理Azure資產(chǎn)。當用戶在命令行中使用Connect-AzAccount登錄賬號以獲取相應(yīng)權(quán)限時,該工具集會自動將認證成功賬戶的上下文信息保存到$HOME/.Azure/AzureRmContext.json文件中,該文件中的TokenCache字段是一段經(jīng)過Base64編碼的用戶憑據(jù)。將這段憑據(jù)保存到文件中,并調(diào)用Import-AzureRmContext方法導入本地Powershell環(huán)境,即可繞過MFA直接獲取目標賬戶的操作權(quán)限。

另一種繞過登錄的手段需要利用自動化賬戶。前文介紹了如何利用自動化賬戶的runbook功能導出用戶憑據(jù)的明文密碼,而runbook還支持另一類憑據(jù)利用方式,即RunAsConnection和RunAsCertificate,本節(jié)主要介紹后者的利用。在自動化服務(wù)中添加新的RunAs證書資源時,Azure會自動為其創(chuàng)建一個服務(wù)主體賬戶,并賦予其Azure AD的參與者權(quán)限。由于Azure支持用證書進行基于服務(wù)主體的身份認證,因此紅隊人員可以利用Get-AutomationCertificate等方法導出已存在證書的相關(guān)信息,并在必要的情況下使用Import-PfxCertificate方法和ServicePrincipal選項進行身份認證,從而達到繞過用戶名密碼獲取訪問權(quán)限的目的。

5.2后門部署

創(chuàng)建后門權(quán)限是較為常用的權(quán)限維持手段之一。后門則要具備一定的隱蔽性和潛伏性,WebHook機制正是Azure平臺中具備此條件的一項功能,該功能可以創(chuàng)建一個用于接受POST請求的Url地址,并將該地址鏈接到某個runbook腳本上。紅隊人員可以創(chuàng)建用于添加新用戶的后門Runbook腳本,并使用WebHook機制獲取綁定的Url。在當前權(quán)限丟失且需要重新奪取權(quán)限時,只需向該Url發(fā)送一個POST包,即可觸發(fā)后門,令runbook腳本自動運行。

06、結(jié)語

隨著基礎(chǔ)設(shè)施的進一步完善,云平臺解決方案逐漸成為用戶更加傾心的選擇。本文介紹了Azure云平臺的主要功能、管理模式和訪問控制等基本信息,并嘗試將常見的Azure云平臺滲透技術(shù)按照信息收集、數(shù)據(jù)獲取、權(quán)限提升以及權(quán)限維持這四個滲透測試的步驟進行總結(jié)和分類,其中涉及了Azure的自動化、存儲、Key Vault和App Service等一些服務(wù)。雖然Azure平臺的滲透技術(shù)已受到了部分安全研究人員的關(guān)注,但由于云平臺安全研究開始時間較晚,且Azure平臺各類服務(wù)更新快、關(guān)聯(lián)多、學習成本高,因此目前該領(lǐng)域還缺乏較為完備的理論指導,而Azure平臺滲透技術(shù)體系的即時性、完整性和系統(tǒng)性也仍需進一步的完善。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于信息安全與通信保密雜志社,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多