Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86373533

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

前言雲服務器(Cloud Virtual Machine,CVM)是一種較為常見的雲服務,為用戶提供安全可靠以及高效的計算服務。用戶可以靈活的擴展以及縮減計算資源,以適應變化的業務需求。使用雲服務器可以極大降低用戶的軟硬件採購成本以及IT 運維成本。

由於雲服務器中承載著用戶的業務以及數據,其安全性尤為重要而云服務器的風險往往來自於兩方面:雲廠商平台側的風險與用戶在使用雲服務器時的風險。與用戶側風險相比,平台側的漏洞往往帶來更廣泛的影響,例如於2018 披露的AWS Launching EC2s did not require specifying AMI owner漏洞(CVE-2018-15869)、2020年披露的AWS XSS on EC2 web console漏洞;而與平台側漏洞相比,用戶側漏洞更容易產生,並且可以對用戶資產代理嚴重影響,例如2020年美高梅(MGM.US)大規模客戶數據洩露為例,美高梅酒店由於錯誤配置,導致雲服務器可以在未經授權情況下訪問,導致1.42億有關客人的信息暗網上出售,這些數據包含客人的家庭住址、聯繫信息、出生日期、駕照號碼和護照號碼。

雲服務器的安全性至關重要,只有深入了解針對雲服務器的風險以及攻擊手段,才能夠有效的幫助雲廠商以及用戶在面對這些威脅時有效的識別並採取對應的防護手段,從而保護雲上業務以及數據的安全。

雲服務器攻防矩陣概覽騰訊安全雲鼎實驗室以公開的雲廠商歷史漏洞數據、安全事件,以及騰訊云自身的安全數據為基礎,抽像出針對雲的攻防矩陣,並於2021年9月26日西部雲安全峰會上發布的《云安全攻防矩阵v1.0》 中首次亮相。《云安全攻防矩阵v1.0》 由雲服務器、容器以及對象存儲服務攻防矩陣共同組成。

本文將詳細介紹《云安全攻防矩阵》 中關於雲服務器攻防矩陣部分內容,以幫助開發、運維以及安全人員了解雲服務器的安全風險。

计划.png

雲服務器攻防矩陣

雲服務器攻防矩陣詳解初始訪問云平台主API密鑰洩露

雲平台主API密鑰重要性等同於用戶的登錄密碼,其代表了賬號所有者的身份以及對應的權限。

API 密鑰由SecretId和SecretKey組成,用戶可以通過API密鑰來訪問云平台API進而管理賬號下的資源。在一些攻擊場景中,由於開發者不安全的開發以及配置導致憑據洩露;而在另一些針對設備的入侵場景中,攻擊者將入侵設備並獲取設備中存儲的雲平台憑據,例如2020年TeamTNT組織針對Docker的攻擊事件中,惡意程序將會掃描受感染系統的~/.aws/credentials和~/.aws/config文件並竊取,導致AWS 憑證洩露。

在攻擊者可以通過竊取到的雲平台主API 密鑰後,冒用賬號所有者的身份入侵雲平台,非法操作雲服務器,篡改其中業務代碼、添加後門程序或竊取其中數據。

雲平台賬號非法登錄

雲平台提供多種身份驗證機制以供用戶登錄,包括手機驗證、賬號密碼驗證、郵箱驗證等。在雲平台登錄環節,攻擊者通過多種手法進行攻擊以獲取用戶的登錄權限,並冒用用戶身份非法登錄,具體的技術包括使用弱口令、使用用戶洩露賬號數據、騙取用戶登錄手機驗證碼、盜取用戶登錄賬號等。攻擊者使用獲取到的賬號信息進行非法登錄雲平台後,即可操作雲服務器。

實例登錄信息洩露

在購買並創建雲服務器後,用戶可以自行配置雲服務器的登錄用戶名以及登錄密碼,Linux雲服務器往往支持用戶通過ssh的方式使用配置的用戶名密碼或SSH密鑰的方式遠程登錄雲服務器;在Windows服務器中,用戶可以通過RDP文件或是遠程桌面的形式登錄雲服務器。當上述這些雲服務器實例登錄信息被竊取後,攻擊者可以通過這些信息非法登錄雲服務器實例。

賬戶劫持

當云廠商提供的控制台存在漏洞時,用戶的賬戶存在一定的劫持風險。以AWS 控制台更改歷史記錄功能模塊處XSS漏洞以及AWS 控制台實例tag處XSS為例,攻擊者可以通過這些XSS漏洞完成賬戶劫持攻擊,從而獲取雲服務器實例的控制權。

網絡釣魚

為了獲取雲服務器的訪問權限,攻擊者可採用網絡釣魚技術手段完成此階段攻擊。攻擊者通過向雲服務器管理人員以及運維人員發送特定主題的釣魚郵件、或是偽裝身份與管理人員以及運維人員通過聊天工具進行交流,通過竊取憑據、登錄信息或是安插後門的形式獲取雲服務器控制權。

應用程序漏洞

當云服務器實例中運行的應用程序存在漏洞、或是由於配置不當導致這些應用可以被非法訪問時,攻擊者可以通過掃描探測的方式發現並利用這些應用程序漏洞進行攻擊,從而獲取雲服務器實例的訪問權限。

使用惡意或存在漏洞的自定義鏡像

雲平台為用戶提供公共鏡像、自定義鏡像等鏡像服務以供用戶快速創建和此鏡像相同配置的雲服務器實例。這裡的鏡像雖然與Docker鏡像不同,其底層使用的是雲硬盤快照服務,但云服務器鏡像與Docker鏡像一樣存在著類似的風險,即惡意鏡像以及存在漏洞的鏡像風險。當用戶使用其他用戶共享的鏡像創建雲服務器實例時,雲平台無法保證這個共享鏡像的完整性或安全性。攻擊者可以通過這個方式,製作惡意自定義鏡像並通過共享的方式進行供應鏈攻擊。

實例元數據服務未授權訪問

雲服務器實例元數據服務是一種提供查詢運行中的實例內元數據的服務,雲服務器實例元數據服務運行在鏈路本地地址上,當實例向元數據服務發起請求時,該請求不會通過網絡傳輸,但是如果雲服務器上的應用存在RCE、SSRF等漏洞時,攻擊者可以通過漏洞訪問實例元數據服務。通過雲服務器實例元數據服務查詢,攻擊者除了可以獲取雲服務器實例的一些屬性之外,更重要的是可以獲取與實例綁定的擁有高權限的角色,並通過此角色獲取雲服務器的控制權。

執行通過控制台登錄實例執行

攻擊者在初始訪問階段獲取到平台登錄憑據後,可以利用平台憑據登錄雲平台,並直接使用雲平台提供的Web控制台登錄雲服務器實例,在成功登錄實例後,攻擊者可以在實例內部執行命令。

寫入userdata執行

Userdata是雲服務器為用戶提供的一項自定義數據服務,在創建雲服務器時,用戶可以通過指定自定義數據,進行配置實例。當云服務器啟動時,自定義數據將以文本的方式傳遞到雲服務器中,並執行該文本。

通過這一功能,攻擊者可以修改實例userdata並向其中寫入待執行的命令,這些代碼將會在實例每次啟動時自動執行。攻擊者可以通過重啟雲服務器實例的方式,加載userdata中命令並執行。

利用後門文件執行

攻擊者在雲服務器實例中部署後門文件的方式有多種,例如通過Web應用漏洞向雲服務器實例上傳後門文件、或是通過供應鏈攻擊的方式誘使目標使用存在後門的惡意鏡像,當後門文件部署成功後,攻擊者可以利用這些後門文件在雲服務器實例上執行命令

利用應用程序執行

雲服務器實例上部署的應用程序,可能會直接或者間接的提供命令執行功能,例如一些服務器管理類應用程序將直接提供在雲服務器上執行命令的功能,而另一些應用,例如數據庫服務,可以利用一些組件進行命令執行。當這些程序存在配置錯誤時,攻擊者可以直接利用這些應用程序在雲服務器實例上執行命令

利用SSH服務進入實例執行

雲服務器Linux實例上往往運行著SSH服務,當攻擊者在初始訪問階段成功獲取到有效的登錄憑據後,即可通過SSH登錄雲服務器實例並進行命令執行。

利用遠程代碼執行漏洞執行

當云服務器上部署的應用程序存在遠程代碼執行漏洞時,攻擊者將利用此脆弱的應用程序並通過編寫相應的EXP來進行遠程命令執行。

使用雲API執行

攻擊者利用初始訪問階段獲取到的擁有操作雲服務器權限的憑據,通過向雲平台API接口發送HTTP/HTTPS 請求,以實現與雲服務器實例的交互操作。

雲服務器實例提供了豐富的API接口以共用戶使用,攻擊者可以通過使用這些API接口並構造相應的參數,以此執行對應的操作指令,例如重啟實例、修改實例賬號密碼、刪除實例等。

使用雲廠商工具執行

除了使用雲API接口完成雲服務器命令執行之外,還可以選擇使用雲平台提供的可視化或命令行工具進行操作。在配置完成雲服務器實例信息以及憑據後,攻擊者即可使用這類工具進行服務器實例的管理以及執行相應命令。

持久化利用遠程控制軟件

為了方便管理雲服務器實例,管理員有可能在實例中安裝有遠程控制軟件,這種情況在windows實例中居多。攻擊者可以在服務器中搜索此類遠程控制軟件,並獲取連接憑據,進行持久化。攻擊者也可以在實例中安裝遠控軟件以達成持久化的目的。

在userdata中添加後門

正如“執行”階段所介紹,攻擊者可以利用雲服務器提供的userdata服務進行持久化操作,攻擊者可以通過調用雲API接口的方式在userdata中寫入後門代碼,每當服務器重啟時,後門代碼將會自動執行,從而實現了隱蔽的持久化操作目的

在雲函數中添加後門

雲函數是是一種計算服務,可以為企業和開發者們提供的無服務器執行環境。用戶只需使用平台支持的語言編寫核心代碼並設置代碼運行的條件,即可彈性、安全地運行代碼,由平台完成服務器和操作系統維護、容量配置和自動擴展、代碼監控和日誌記錄等工作。

以AWS Lambda為例,用戶可以創建一個IAM角色並賦予其相應的權限並在創建函數時提供該角色作為此函數的執行角色,當函數被調用時,Lambda 代入該角色,如果函數綁定的角色權限過高,攻擊者可以在其中插入後門代碼,例如在調用該函數後創建一個新用戶,以此進行持久化操作。

在自定義鏡像庫中導入後門鏡像

在攻擊者獲取雲服務器控制台權限後,可以對用戶自定義鏡像倉庫中的鏡像進行導入、刪除等操作,攻擊者可以將其構造的存在後門的鏡像上傳至用戶鏡像倉庫。此外,為了提高攻擊成功率,攻擊者還可以使用後門鏡像替換用戶鏡像倉庫中原有鏡像。當用戶使用後門鏡像進行實例創建時,即可觸發惡意代碼以完成持久化操作。

給現有的用戶分配額外的API密鑰

API密鑰是構建騰訊雲API 請求的重要憑證,雲平台運行用戶創建多個API密鑰,通過此功能,擁有API密鑰管理權限的攻擊者可以為賬戶下所有用戶分配一個額外的API密鑰,並使用這些API密鑰進行攻擊。

建立輔助賬號登錄

擁有訪問管理權限的攻擊者可以通過建立子賬號的形式進行持久化操作,攻擊者可以將建立的子賬號關聯等同於主賬號的策略,並通過子賬號進行後續的攻擊行為。

權限提升通過訪問管理提權

錯誤的授予雲平台子賬號過高的權限,也可能會導致子賬號通過訪問管理功能進行提權操作。由於錯誤的授予雲平台子賬號過高的操作訪問管理功能的權限,子賬號用戶可以通過訪問管理功能自行授權策略。通過此攻擊手段,攻擊者可以通過在訪問管理中修改其云服務器的權限策略,以達到權限提升。

利用應用程序提權

攻擊者通過雲服務器中運行的Docker容器中應用漏洞,成功獲取Docker容器的權限,攻擊者可以通過Docker漏洞或錯誤配置進行容器逃逸,並獲取雲主機的控制權,從而實現權限提升。當然,攻擊者也可以通過其他應用程序進行提權。

創建高權限角色

當攻擊者擁有訪問管理中新建角色的權限時,可以通過調用雲API接口的方式,建立一個新的角色,並為這個角色賦予高權限的策略,攻擊者可以通過利用此角色進行後續的攻擊行為。

利用操作系統漏洞進行提權

與傳統主機安全問題相似,雲服務器實例也同樣可能存在操作系統漏洞,攻擊者可以利用操作系統漏洞,進行權限提升。

防禦繞過關閉安全監控服務

雲平台為了保護用戶雲主機的安全,往往會提供一些安全監控產品用以監控和驗證活動事件的真實性,並且以此辨識安全事件,檢測未經授權的訪問。攻擊者可以通過在攻擊流程中關閉安全監控產品以進行防禦繞過,以AWS CloudTrail為例,攻擊者可以通過如下指令指令關閉CloudTrail監控:

aws cloudtrail delete-trail --name [my-trail]

但是進行此操作會在CloudTrail控制台或GuardDuty中觸發告警,也可以通過配置禁用多區域日誌記錄功能,並在監控區域外進行攻擊,以AWS CloudTrail為例,攻擊者可以通過如下指令關閉多區域日誌記錄功能:

aws cloudtrail update-trail --name [my-trail] --no-is-multi-region-trail --no-include-global-service-events

監控區域外進行攻擊

雲平台提供的安全監控服務,默認情況下是進行全區域安全監控,但是在一些場景中可能出現一些監控盲區,例如用戶在使用安全監控服務時,關閉了全區域監控,僅開啟部分區域的監控,以AWS CloudTrail為例,可以使用如下指令來查看CloudTrail的監控範圍,並尋找監控外的雲主機進行攻擊以防止觸發安全告警:

aws cloudtrail describe-trails

禁用日誌記錄

與直接關閉安全監控服務相比,攻擊者可以通過禁用平台監控告警日誌的方式進行防禦繞過,並在攻擊流程結束後再次開啟告警日誌。以AWS CloudTrail為例,攻擊者可以通過使用如下指令關閉CloudTrail日誌

aws cloudtrail stop-logging --name [my-trail]

並在攻擊完成後,使用如下指令再次開啟日誌記錄功能:

aws cloudtrail start-logging --name [my-trail]

日誌清理

攻擊者在完成攻擊流程後,可以刪除監控服務日誌以及雲主機上的日誌,以防攻擊行為暴露。

通過代理訪問

大多數雲服務器提供操作日誌記錄功能,將記錄時間、操作內容等。攻擊者可以利用代理服務器來隱藏他們真實IP。

竊取憑證獲取服務器實例登錄憑據

當攻擊者獲取雲服務器實例的控制權後,可以通過一些方式獲取服務器上用戶的登錄憑據,例如使用mimikatz抓取Windows憑證,並將獲取到的這些登錄憑據應用到後續的攻擊流程中。

元數據服務獲取角色臨時憑據

雲服務器為用戶提供了一種每名實例元數據的服務,元數據即表示實例的相關數據,可以用來配置或管理正在運行的實例。用戶可以通過元數據服務在運行中的實例內查看實例的元數據。以AWS舉例,可以在實例內部訪問如下地址來查看所有類別的實例元數據:

http://169.254.169.254/latest/meta-data/

在雲服務器使用過程中,戶可以將角色關聯到雲服務器實例。使用元數據服務可以查詢到此角色名稱以及角色的臨時憑據,以AWS為例,可以通過如下請求獲取角色名稱:

http://169.254.169.254/latest/meta-data/iam/info

在獲取到角色名稱後,可以通過以下鏈接取角色的臨時憑證:

http://169.254.169.254/latest/metadata/iam/security-credentials/rolename

獲取配置文件中的應用憑證

雲服務器應用中的配置文件中可能存儲著一些敏感信息,例如一些應用的訪問憑據或是登錄密碼,攻擊者可以在雲服務器中搜尋這些配置文件,並將其中的敏感數據進行竊取並在後續的攻擊中加以利用。

雲服務憑證洩露

在雲服務器實例中運行應用程序中,往往使用環境變量或是硬編碼的方式明文存儲雲服務憑據,應用程序使用這些憑據調用其他雲上服務的憑據,攻擊者可以通過讀取環境變量中的參數,或是分析應用程序代碼的方式獲取這些憑據,以此獲取其他雲服務的憑據,甚至是雲平台主API密鑰。

用戶賬號數據洩露

在一些場景中,開發者使用對象存儲服務存儲其業務中的用戶數據,例如用戶的姓名、身份證號碼、電話等敏感數據,當然也會包含用戶賬號密碼等憑據信息。

攻擊者通過對存儲桶中用戶數據的提取與分析以竊取這些用戶的憑據數據,並通過獲取的信息進行後續的攻擊。

探測雲資產探測

攻擊者在探測階段,會尋找環境中一切可用的資源,例如實例、存儲以及數據庫服務等。

通常攻擊者可以使用雲平台提供的API或工具來完成雲資產探測,通過發出命令等方法來蒐集基礎設施的信息。以AWS API接口為例,可以使用DescribeInstances接口來查詢賬戶中一個或多個實例的信息,或是使用ListBuckets API接口來查詢目標存儲桶列表信息。

網絡掃描

與傳統的內網掃描類似,攻擊者在此階段也會嘗試發現在其他雲主機上運行的服務,攻擊者使用系統自帶的或上傳至雲服務實例的工具進行端口掃描和漏洞掃描以發現那些容易受到遠程攻擊的服務。此外,如果目標雲環境與非雲環境連同,攻擊者也可能能夠識別在非雲系統上運行的服務。

橫向移動使用實例賬號爆破

當攻擊者在竊取憑據階段,在實例中成功獲取了有效的賬號信息後,攻擊者可以利用這些賬號數據製作賬號字典並嘗試爆破目標的雲資產或非雲資產,並橫向移動到這些資產中。

通過控制台權限橫向移動

當攻擊者獲取了目標控制台權限後,可以通過控制台提供的功能,橫向移動到目標用戶的其他雲資產中。

竊取角色臨時憑據橫向訪問

攻擊者通過實例元數據服務,可以獲取與實例綁定的角色的臨時憑據,攻擊者可以利用獲取的角色臨時憑據,橫向移動到角色權限範圍內的雲資產中。

竊取憑據訪問云服務

通過雲服務器中Web應用程序源代碼的分析,攻擊者可能會從Web應用程序的配置文件中獲取的應用開發者用來調用其他雲上服務的憑據。攻擊者利用獲取到的雲憑據,橫向移動到用戶的其他雲上業務中。如果攻擊者獲取到的憑據為雲平台主API密鑰,攻擊者可以通過此密鑰橫向移動到用戶的其他雲資產中。

竊取用戶賬號攻擊其他應用

攻擊者通過從雲服務器中竊取的用戶賬號數據,用以橫向移動至用戶的其他應用中,包括用戶的非雲上應用。

影響竊取項目源碼

攻擊者通過下載雲服務器中的應用程序源碼,造成源碼洩露事件發生。通過對源碼的分析,攻擊者可以獲取更多的可利用信息。

竊取用戶數據

當用雲服務器中以文件、數據庫或者其他形式保存用戶數據時,攻擊者通過攻擊雲服務器以竊取用戶敏感數據,這些信息可能包含用戶的姓名、證件號碼、電話、賬號信息等,當用戶敏感信息洩露事件發生後,將會造成嚴重的影響。

破壞文件

攻擊者在獲取雲服務器控制權後,可能試圖對雲服務器中的文件進行刪除或者覆蓋,以達到破壞服務的目的。

c

除了刪除以及覆蓋雲服務器文件之外,攻擊者可以對雲服務器中文件進行篡改,通過修改應用程序代碼、文本內容、圖片等對像以達到攻擊效果。在一些場景中,用戶使用雲服務器部署靜態網站,攻擊者通過篡改其中頁面內的文本內容以及圖片,對目標站點造成不良的影響。

植入後門

攻擊者在雲服務器應用中插入惡意代碼,或者在項目目錄中插入後門文件,攻擊者可以利用這些後門發起進一步的攻擊。

加密勒索

在獲取雲服務器控制權後,攻擊者可能會對雲服務器上的文件進行加密處理,從而勒索用戶,向用戶索要贖金。

寫在後面雲服務器作為一個基礎而又重要的雲產品,面臨著眾多的安全挑戰。深入了解雲服務器存在的風險點以及對應的攻擊手段,可以有效的保障用戶在使用雲服務器時的安全性。

在騰訊安全雲鼎實驗室推出《云安全攻防矩阵》 中,用戶可以根據矩陣中所展示的內容,了解當前環境中所面臨的威脅,並以此制定監測手段用以發現風險,詳見騰訊安全雲鼎實驗室攻防組官網:

https://cloudsec.tencent.com/#/home

除《云安全攻防矩阵v1.0》 中已包含的產品外,騰訊安全雲鼎實驗室制定了雲安全攻防矩陣未來發布計劃,以雲產品以及業務為切入點,陸續發布雲數據庫、人工智能、雲物聯網等雲安全攻防矩陣。

云服务器攻防矩阵.png