攻擊者瞄準AWS EC2 工作負載以竊取憑證
前言
最近,我們遇到了利用監控和可視化工具Weave Scope通過環境變量和 IMDS 端點從 Elastic Compute Cloud (EC2) 實例枚舉 Amazon Web Services (AWS) 實例元數據服務 ( IMDS ) 的利用嘗試。濫用此工具可能允許將訪問密鑰和令牌泄露到可能由攻擊者擁有的域中,并在 AWS 擁有的域amazonaws.com上使用一種稱為域名仿冒的過時技術。隨后使用 masscan 和 zgrab 來查找 Weave Scope 用戶界面 (UI) 實例并泄露所找到的 IP 地址和端口。我們建議用戶加強、加強和定制各自的云安全策略、以開發人員為中心的工具和措施,以減輕威脅和攻擊的危害。
執行流程
我們之前曾報道過出于惡意目的濫用合法工具,特別是濫用 Weave Scope。在對我們的蜜罐進行的這次嘗試中,我們觀察到攻擊者通過暴露的 Docker REST API 服務器獲得了訪問權限,眾所周知,TeamTNT等威脅參與者利用了該服務器。在本示例中,攻擊者創建了一個容器,并將底層主機的根目錄掛載到容器內的路徑< /host>中。之后,在創建容器時執行了一個名為init.sh的腳本,即使沒有提供任何其他命令來執行。

圖 1. 為從執行的 init.sh 腳本發出的子進程設置環境變量。
HOME環境變量設置為/root ,以便從該腳本發出的其他進程將/root目錄視為HOME變量。沒有記錄命令歷史,后來環境變量本身被刪除。PATH變量還包含路徑< /root/.local/bin > 。設置了特定于語言本地化的參數,以強制語言在整個腳本執行過程中保持統一。
之后,使用 Alpine Package Keeper 或 apk 安裝使攻擊者的腳本能夠執行的某些工具,以在基于 alpine 的容器映像的基礎映像中安裝wget、curl、jq、masscan、libpcap-dev和docker 。聲明了以下兩個變量:
- SCOPE_SH,一個安裝 Weave Scope 的 Base64 編碼字符串
- WS_TOKEN,一個秘密訪問令牌,可用于將host包含在隊列中
腳本函數
在分析腳本時,我們觀察并分解了為攻擊中的各種實現設計的四個函數:main、wssetup、checkkey 和 getrange。
main
主函數依次調用其他三個函數。最初,nohup執行 Docker 守護程序 (dockerd )以保持進程運行,即使在退出 shell 后也是如此。流 STDOUT 和 STDERR 通過管道傳送到/dev/null以在執行時在屏幕上不顯示任何輸出。

圖 2. 函數 main
wssetup
此函數使用實用程序base64解碼變量 SCOPE_SH 的內容。wssetup 還會靜默執行命令行scope launch –service-token=$WS_TOKEN以使主機成為攻擊者 Weave Scope 艦隊的一部分。
早些時候,我們觀察到對 Docker REST API 的利用,其中范圍令牌是從攻擊者的基礎設施中獲取的。但是,在這種情況下,令牌本身在腳本中是硬編碼的。

圖 3. 函數 wssetup
checkkey
此函數檢查文件“ /host/root/.aws/credentials ”。有趣的是,容器中的路徑/host映射回主機上的根目錄“/”。如果文件存在,則通過curl請求將其發送到攻擊者的端點。

圖 4. 函數 checkkey
如果函數在本地文件系統和遠程文件共享中找不到憑據(Mitre ID T1552.001 Unsecured Credentials: Credentials In Files),則使用curl或wget查詢 IMDS 端點是否可用。通過一系列grep和sed操作處理輸出,并將輸出累積在隱藏文件“ .iam ”和“.iam”中。ec2 ”(Mitre ID T1564.001隱藏工件:隱藏文件和目錄)。
一旦收集了憑據,它們就會被合并到一個名為“ .aws ”的隱藏文件中,由兩個新行分隔,同時刪除原始文件。隨后通過“AWS”或“EC2”搜索各個進程的環境變量,并附加到文件“. aws ”添加了兩個新行。
一旦 < $HOME/…aws > 中的文件準備好收集所有憑據,該文件將通過curl泄露到域“amazon2aws.com” ,然后被刪除。

圖 5. 在每個進程的環境變量中搜索提及 AWS 或 EC2

圖 6. 泄漏收集的憑據
getrange和rangescan
該函數接受一個參數RANGE,稍后將其傳遞給另一個名為rangescan的函數。第二個函數使用 zgrab 掃描RANGE中的 IP 地址,以查找端口 80、443 和 4040 上可訪問的 Weave Scope UI,這是 Weave Scope UI 使用的默認端口。

圖 7. 函數getrange和rangescan
我們的觀察表明沒有提供給getrange 的值。**相反,它從ipranges.txt中獲取 IP 地址,其中包含要掃描的 Weave Scope UI 實例的無類域間路由 (CIDR)。masscan和zgrab等網絡枚舉工具用于查找 IP 地址和 UI 實例。當找到 Weave Scope UI 的可訪問實例時,使用curl將相應的 IP 地址和端口泄露到攻擊者控制的服務器amazon2aws.com。
域名轉移
在分析攻擊者控制的服務器時,我們遇到了Amazon.com, Inc. 的研發子公司 Amazon Technologies, Inc. 對注冊人 Nice IT Services Group Inc./Customer Domain Admin 提出的投訴,即前所有者惡意仿冒域名。統一域名爭議解決政策(UDRP) 是解決注冊人之間域名爭議的法律框架。審查行政小組的決定,我們注意到該域名后來于 2022 年 6 月在“調查結果”部分轉移給了 Amazon Technologies, Inc.:

圖 8. 結果部分中的決定
通過 VirusTotal 檢查用于解析域的 IP 地址,我們觀察到 amazon2aws[.]com 和 teamtnt[.]red 的記錄歷史可能與威脅參與者組 TeamTNT 有關。

圖 9. 兩個域解析到的公共 IP 地址
結論
盡管根據 Shodan 掃描結果減少了 Docker REST API 的暴露,但重要的是要知道上述技術和過程可以與目標系統中的其他已知或未知漏洞相結合。攻擊者不斷地在他們的武器庫上工作,測試和構建不同的工具,經常濫用合法的工具和平臺。我們還觀察到查詢AWS IMDS 的嘗試。

圖 10. 暴露的 Docker REST API 上的 Shodan 掃描結果