- N +

物理隔绝网络的第N种死法使用DNS在AWS云环境进行穿透

  流向AmazonProvidedDNS的流量是针对AWS管理基础架构的流量绑定,不会通过与标准客户流量相同的网络链接流出,也不会被安全组评估。使用DNS泄露,可以将数据从隔离网络中泄露出来。

  DNS溢出允许攻击者绕过防火墙,并通过仅使用DNS协议来泄漏数据或执行外部服务的命令和控制活动。在这种情况下,如果AWS管理的DNS基础架构未被禁用,则甚至可以使用DNS Exfiltration从隔离的VPC中泄露数据。

  内部DNS服务器被配置为将外部请求转发给上游DNS服务器,DNS就会溢出。在所有VPCs中,AWS允许使用其预先配置的DNS基础设施。攻击者可以利用这个通道在允许的环境之外发送和接收数据。AWS用户可以通过使用他们自己的DNS服务器并关闭亚马逊DNS基础架构的预配置来降低这种风险。

  在许多组织中,网络将在防火墙上阻塞端口53(DNS)外带通信,并且将有一个内部DNS服务器来解析外部域。内部DNS服务器通常会将端口53向一个更高级别的DNS服务器开放,以防止内部服务器无法解析。让我们来看一下DNS服务器如何第一次找到域“。

  DNS服务器必须首先解析顶级域名“”的位置。为此,DNS服务器向ROOT服务器请求.COM DNS服务器。

  一旦找到域名服务器,DNS服务器就会发出一个请求,询问yo.dejandayoff.com的A记录

  我要提醒大家注意可能还有其他的DNS服务器(比如你的ISP的DNS服务器和上游的DNS服务器)。

  如果攻击者可以控制某个域名的域名服务器,那么他们可以为任何子域名查询记录请求并制作响应。虽然域名服务器必须接受标准的DNS协议请求,但是它对数据的处理并不一定是标准的。

  为了证明这一点,我们假设一个内部不满的员工希望从外部互联网无法访问的生产网络中泄露出数千个信用卡号码。一种选择是使用DNS出口,其中SSN预先加入域查找。例如:

  当yo.dejandayoff.com的域名服务器收到这个请求时,它可以简单地记录请求并用一个随机的IP来响应。攻击者甚至可以在每个请求中包含多个片段,或者压缩并发送编码数据,以尽量减少必须发送的请求数量。无论采用哪种方法,攻击者都可以通过内部DNS服务器来解析外部域,从而实现双向通信。

  这里的选项是无穷无尽的,攻击者可以创建一个本地http代理,该代理仅通过DNS或一个本地网络接口进行通信,该接口可以通过DNS解析所有类型的通信。事实上,有一个工具是为这个原因而建立的。

  在非AWS环境中,一个选项是阻止所有出站DNS连接(如果你不关心可用性)。另一个选择是将允许解决的域列入白名单。最简单的办法是监视DNS日志的异常情况(请求域的频率,请求的大小等)。

  AWS允许在每个子网(VPC IPv4网络范围,加上两个)中分配一个IP,以简化架构管理员的使用,只允许在每个子网中启用和禁用DNS基础设施。

  向AmazonProvidedDNS发出的请求是管理流量,不会通过与标准用户流量相同的网络链接出站,也不会被安全组评估。以下是创建VPC时的默认DNS配置及其设置的映像:

  但是,使用上述方法,攻击者可以通过使用AmazonProvidedDNS绕过这些限制。为了演示这个漏洞,我创建了一个有公有子网和私有子网的网络。公有子网唯一的目的是能够进入私有子网(堡垒主机)。公有子网确实有一个互联网网关(以方便ssh进入堡垒主机)。私有子网不包含互联网网关或NAT(仅默认情况下,Amazon在所有子网中打开的DNS IP)。私有子网中主机上的安全组配置只允许从堡垒主机进入SSH,并且绝对不包含出站规则。这个网络布局可以在下面找到:

  一旦环境设置,我创建另一个服务器在一个单独的VPC将运行iodine服务。接下来,专用服务器使用它的iodine客户端连接到服务器:

  连接iodine后,我可以使用以下命令在端口8080上创建一个ssh隧道(通过iodine DNS隧道)到

  在谷歌图片中响应重定向,演示的目的是显示没有出站规则的服务器,没有internet网关能够到达外部站点。从这里,攻击者可以自由地从一个孤立的系统传输数据,而无需检测。

  幸运的是,亚马逊允许用户禁用VPC设置中的AmazonProvidedDNS。一旦禁用,用户将不得不使用任何他们想要的软件在网络中创建自己的DNS服务器。从这里,自定义的DNS服务器将能够记录相关的数据和并列出合法网站。

返回列表
上一篇:
下一篇:
评论列表 (暂无评论,共612人参与)

还没有评论,来说两句吧...

发表评论

验证码