當前位置:
首頁 > 新聞 > 亞馬遜 S3 存儲桶勒索軟體攻防詳解(上)

亞馬遜 S3 存儲桶勒索軟體攻防詳解(上)

攻擊向量簡介

通過我們的雲安全研究,我們在犀牛安全實驗室(Rhino Security Lab)開發出了一個概念驗證的」雲勒索軟體",該勒索軟體使用 KMS 加密亞馬遜 S3存儲桶內的 AWS 帳戶對象。攻擊者利用這個勒索軟體獲得對受害者系統的訪問控制許可權,並對受害者系統上的敏感數據進行加密。與此同時,攻擊者還會威脅受害者,告知受害者,如果受害者不在某一時限內付款,就會刪除或公開發布數據。通常,這些攻擊的目標是伺服器、工作站和類似的設置,但與許多攻擊一樣,這種攻擊也有"雲等效"的性質。

S3勒索軟體是非常具有破壞性的,我們的研究和博客文章並不打算以任何方式協助攻擊者實施攻擊。由於這個原因,本博客只發布一個緩慢的概念驗證腳本,因此辯護者可以測試他們的防禦。對於防禦者和藍隊,我們在這篇文章的第二部分中討論了如何防止和防禦 S3勒索軟體。

亞馬遜 S3 和 AWS KMS

對於那些不熟悉 Amazon S3 的用戶來說,你們可以將 Amazon Simple Storage Service (簡稱 Amazon S3)理解為是一種通過 Amazon Web Services 提供的一個健壯的靜態文件託管服務。亞馬遜表示,S3可以用於"存儲和保護任何數量的數據,用於一系列用例,如網站、移動應用程序、備份和恢復、存檔、企業應用程序、物聯網設備和大數據分析"。在較高的級別上,S3由"桶(bucket)"和"對象(objects)"組成,其中對象是存儲在桶中的文件。

AWS 密鑰管理服務(AWS KMS)本質上是 AWS 提供的一種託管加密密鑰服務。亞馬遜將其定義為一種服務,"使你可以輕鬆地創建和管理密鑰,並在各種 AWS 服務和應用程序中控制加密的使用"。

S3 存儲桶

S3 bucket 不會自動在服務端進行加密,這意味著在沒有配置的情況下,所有文件都將以明文形式存儲在 亞馬遜的伺服器上。Bucket 可以有一個"默認"的加密設置,當某個人試圖上傳一個沒有加密的文件時,這個設置可以用作回滾機制。在這種情況下,默認的加密方法將生效,並確保文件沒有以明文的形式存儲在伺服器上。

S3 存儲對象

單個對象也可以與存儲桶上的"默認"加密分開加密,除非在存儲桶的策略中強制執行。這意味著,如果在 存儲桶上設置了默認加密方法(或者根本沒有) ,文件的上傳工具可以決定在上傳時如何加密文件,這將覆蓋 存儲桶 的默認設置。

KMS 加密

AWS KMS 與 S3對象加密集成在一起,因為你可以指定一個特定的 KMS 密鑰來加密存儲桶中的對象。在這種情況下,試圖在 S3中查看文件的用戶既需要特定的 S3對象的"S3: GetObject"許可權,也需要特定的 KMS 密鑰的"KMS: Decrypt"許可權。正確實施 KMS 密鑰策略可以阻止攻擊者讀取 S3中的敏感文件。如果攻擊者升級了他們的訪問許可權並獲得了"S3: GetObject"許可權,他們仍然可能無法讀取 S3中的文件,因為他們沒有正確的 KMS 密鑰的解密許可權。

KMS 密鑰也可以使用交叉帳戶,因此,如果攻擊者獲得了對你的 S3 存儲桶的訪問許可權,他們可以使用只為你提供"加密"許可權的交叉帳戶的 KMS 密鑰對你的存儲對象進行加密。因為你不能控制用於加密文件的 KMS 密鑰,這意味著你無法查看自己的文件。

攻擊路徑

作為這項研究的一部分,我們編寫了一個針對 S3存儲桶和對象執行勒索軟體攻擊的高級工具。該工具可以處理目標環境中的各種選項和配置,並且是專門為提高速度而編寫的。然而,因為我們的研究和發表博客文章的目的不是在協助攻擊者,因此,我們將不會發布該攻擊工具。相反,你可以在下面的"測試你的存儲桶"部分中找到一個測試腳本,該腳本旨在幫助防禦者和藍隊防範這種攻擊。

攻擊步驟

1. 攻擊者創建一個 KMS 密鑰在他們自己的"個人"AWS 帳戶(或其他被黑掉的帳戶) ,並提供」公開"訪問許可權,之後使用該 KMS 密鑰進行加密。這意味著任何 AWS 用戶 / 角色 / 帳戶都可以使用它進行加密,但是不能解密 S3 存儲桶中的對象。

2. 攻擊者確定一個 S3 存儲桶作為攻擊目標並獲得對它的寫操作訪問許可權,通過各種不同的手段是可以做到的。這可能包括利用已經公開曝光的配置不當的存儲桶 或者攻擊者獲得對 AWS 環境本身的訪問權。通常來說,攻擊者會將敏感信息作為攻擊目標,比如 PII、 PHI、日誌、備份數據等等

3. 攻擊者會檢查存儲桶的配置來確定它是否能成為勒索軟體的攻擊目標。檢查工作包括檢查是否啟用了 S3對象版本控制,是否啟用了雙重身份驗證刪除(MFA delete)。如果沒有啟用對象版本控制,那麼它們就可以將該存儲桶作為攻擊目標。如果啟用了對象版本控制,但禁用了 MFA 刪除,則攻擊者只能禁用對象版本控制。如果同時啟用了對象版本控制和 MFA 刪除,則需要很多額外的工作才能實現對指定存儲桶實施勒索軟體攻擊。

4. 攻擊者使用 AWS API 用自身的新副本替換存儲桶中的每個對象,注意這裡攻擊者是使用自己的 KMS 密鑰進行了加密。

5. 攻擊者定期刪除用於這次攻擊的 KMS 密鑰,給他們的目標設置一個7天的時間窗口,直到密鑰被完全刪除,那個時候,數據將會永遠丟失。

6. 攻擊者上傳最終文件例如:未加密的「ransom-note.txt」 ,在該文件中告訴受害者如何獲取他們自己的文件。

下面的屏幕截圖顯示了一個被勒索軟體攻擊或文件被加密的例子。如你所見,擁有用於加密對象的 KMS 密鑰的帳戶 ID (7 * * * * * * * * * * 2)與擁有對象的帳戶 ID (2 * * * * * * * * * 1)並不是同一個。

下一個屏幕截圖中顯示了當對象所有者使用預簽名 URL 試圖查看對象時發生的事情。訪問被拒絕,因為即使對象所有者擁有查看對象的許可權,他們也沒有使用 KMS 密鑰解密已經被加密的對象的許可權,因此系統阻止了對這些已經被加密了的對象的訪問。

攻擊特徵

為了測試這種攻擊並查看其可行性,我們對某個 S3存儲桶運行了 Rhino 開發的一個內部工具,該存儲桶存儲了大約2000個不同大小的文件,總共大約100GB 的數據。勒索軟體對整個存儲桶實施攻擊(加密每一個單獨的對象)的過程只需要1分47秒。

常見的 CloudTrail 日誌可能需要15分鐘才能傳遞到一個 S3存儲桶中,但在測試中發現,CloudTrail S3數據事件日誌的傳遞大約只需要5分鐘。5分鐘發送日誌比15分鐘好得多,但問題是5分鐘仍然太長。我們上面的測試顯示,大約2000個文件,總共大約100GB 的數據可以在1分鐘47秒內贖回,這遠遠低於5分鐘的限制。通過跟蹤這些數字(理論上——實際結果根據單個文件的大小而略有不同) ,攻擊者每秒可以對超過900 MB 的數據執行勒索攻擊。這意味著在5分鐘的時間內,他們可以在你有機會看到發生了什麼之前,就對大約270GB的數據執行勒索攻擊。

接下來要考慮的事情是,一旦你知道發生了什麼後,你的反應需要有多快。例如,從第一次日誌傳遞到攻擊者試圖勒索你的數據並阻止他們訪問你的環境,你可能需要5分鐘的時間來採取行動。基於這一點,攻擊開始10分鐘後,大約有540GB 的數據已經被加密。為了給出一些透視圖,下面的列表是根據「一個 G 的數據有多大?——來自 iClick」中的數據計算出來的。

540GB 的數據,以常見的文件類型表示如下:

·3 60,000張 1.5 MB 照片

·360部1.5 GB 的電影

·135,0004mb 的歌曲

當然,這只是一個估值,還有許多因素需要考慮,但這只是給出了一個關於540GB 數據實際上是多少的概念。上面的列表表明,無論你的響應速度有多快,攻擊者仍然能夠對大量的數據執行勒索軟體攻擊。這就是為什麼除了實施事件響應計劃之外,你還需要儘可能的防禦這種攻擊,這一點是極其重要的。

S3勒索軟體概念證明(PoC)

我們還編寫了一個簡單的概念驗證腳本來演示這種攻擊,以便防禦者能夠測試它,並希望能夠圍繞它構建檢測方案。此腳本只對禁用了對象版本控制的存儲桶有效。

這個腳本可以在我們的 GitHub 上找到,它會執行以下操作:

1. 收集存儲桶中的前100個對象(如果存儲桶中的對象少於100個,則收集所有對象)

2. 使用新的 KMS 加密密鑰一個一個地覆蓋每個對象

腳本使用

要使用 PoC 腳本,請修改"aws_cli_profile"、"bucket_name"和"kms_key_arn"的值以匹配你的環境,然後使用 Python 3.6 運行該腳本。

變數說明:

·aws_cli_profile:用於 AWS 身份認證的 AWS CLI 配置文件 (~/.aws/credentials).

·bucket_name:目標 S3 存儲桶的名稱

·kms_key_arn: 用於攻擊的 KMS 密鑰的 ARN

下面是腳本運行和輸出的屏幕截圖:

因為你指定了要使用的 KMS 密鑰和要使用的 S3存儲桶,所以你不應該失去對數據的訪問許可權(例如,如果一個真正的攻擊者在你的 S3存儲桶上使用了自己的 KMS 密鑰)。但是要謹慎,不要針對生產環境或重要數據運行此腳本。

結論和防禦性控制

勒索軟體是一種極具威脅性的攻擊載體,近年來變得越來越流行。攻擊者可以在短時間內勒索軟體的數據量是非常重要的。攻擊者在持續前進,因此防禦者需要領先一步,以防止一些傳統的攻擊方式變成基於雲的攻擊。

S3勒索軟體對於一個組織來說是非常危險的,但是防禦者可以使用各種簡單和複雜的防禦機制來防止這種攻擊。

注意: 這篇文章不僅討論了針對 S3勒索軟體的防禦機制,還提到了一些重要的且常見的安全問題,你應該在 AWS 賬戶中遵循這個原則。

S3 勒索軟體概述

正如本博文的前文所闡述的,S3勒索軟體是一種可以對公司造成極大影響的攻擊。S3勒索軟體是指攻擊者能夠訪問受害者的 S3 存儲桶,然後用自身的新副本替換每個對象,但用攻擊者的 KMS 密鑰進行加密。受害者將不再能夠訪問他們自己的 S3對象,需要服從攻擊者的要求才能獲得這些對象(或者花費額外的時間成本冒著去當局或 AWS 進行事件響應的風險)。

S3勒索軟體安全控制

雖然 S3勒索軟體對於攻擊者來說可以相當直接地執行,但是如果有正確的防禦措施,你可以保護自己。有許多不同的方法來防禦和預防 S3勒索軟體攻擊,下文旨在概述這些不同的方法。

防禦及預防攻擊的方法

考慮到每種方法本身的成本、努力和影響,在預防和防禦 S3勒索軟體時,沒有某個單一的方法可以作為"防禦銀彈"。相反,下面的方法意味著要遵循一系列良好的實踐。並不是每個方法都適用於每個環境,因此理解所有方法並能夠選擇在自己的環境中實現的最佳方法非常重要。

方法#1: 遵循安全最佳實踐來防止對你的帳戶的未經授權的訪問

這是針對勒索攻擊最明顯的防禦,因為它本質上意味著"不要讓未經授權的人進入你的環境",但這說起來容易做起來難。對於這種辯護,有很多事情要做,我在這裡列出了一些比較重要的事情:

·讓所有用戶使用臨時的方法,而不是使用長期有效的憑證(使用 IAM 角色而不是 IAM 用戶)訪問環境

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

FIN8重出江湖!或預示新一輪全球POS系統攻擊浪潮
Comodo殺毒軟體爆多個漏洞

TAG:嘶吼RoarTalk |