今天小编分享的互联网经验:云抢注:攻击者如何利用已删除的云资产进行攻击,欢迎阅读。
我们正处于云计算时代,虚拟伺服器和存储空间之类的资源常常在需要时通过部署脚本以编程方式提供。虽然启用这类资产的过程很快,但删除它们时就没有那么简单了,仅仅删除云资产,就可能为攻击者提供安全漏洞的风险。
设想一下这个场景:你想要为客户们策办一次特殊的节日活动,并决定创建一个微型网站来存放所有的促销材料和系統資料庫单等内容。开发人员开始设计网站,在 AWS 或任何云计算服务上申请配置一个新的虚拟伺服器来托管它,并配置用来存储网站数据的存储桶。云服务提供商将从其可重用 IP 地址池中为你的 EC2 实例分配一个可公开访问的 IP 地址,并在其網域名下为你的存储桶分配一个主机名:bucket-name.s3.region-code.amazonaws.com,那样你可以通过 API 访问它。
用户需要抵达你的网站和搜索引擎,机器人程式需要将该网站编入索引,所以下一步是在你的主網域名上为它创建一个子網域名,并将其指向 IP 地址,这样就可以从你的子網域名访问 Web 伺服器。然后为 S3 存储桶创建子網域,并创建 DNS CNAME 记录,将其指向存储桶的 AWS 主机名。
假设你还有一个移动应用程式向这个活动网站发送数据,那么主机名也会进入到应用程式的代码中。由于统计数据跟踪或数据库备份等原因,你还有其他内部应用程式和工具需要与该网站集成起来。
你现在创建的是处于不同位置的大量记录,它们指向的对象实际上是临时云资源。如果你曾因那些云资产已完成任务而删除它们,但却并未删除开发人员和基础设施工程师为它们创建的记录,你将面临很大的风险。
攻击者可以将你的子網域名用于钓鱼网站和分发恶意軟體
攻击者可以从亚马逊获得相同的 IP 地址,他们可以创建一个网络钓鱼网站或恶意軟體分发网站,用相同的名称注册一个 S3 存储桶,因为他们在你应用程式的代码中找到了一处引用,现在你的应用程式将敏感数据发送到攻击者拥有的存储桶。
这是安全工程师 Abdullah Al-Sultani 最近在举行的 DefCamp 安全大会上演示的场景,他把这种攻击称为 " 云抢注 "(cloud squatting)。这并不仅限于 DNS 记录,因为一旦帐户关闭,就重新分配资源和名称的云服务类型和数量非常广泛。公司规模越大,影子云记录问题就越严重。
大企业更难识别云抢注风险
Al-Sultani 在无意中发现了云抢注,他的团队很快意识到,试图找到所有过期的记录将是一项艰巨的任务,因为他们企业在全球许多国家拥有超过 10 万名员工以及开发和基础设施团队,它还为不同地区的不同应用程式提供了数千个網域名。
为了解决这个问题,安全团队构建了一个内部工具,该工具可以通过发送 HTTP 或 DNS 请求,迭代搜索该公司的所有網域名,并自动测试所有 CNAME 记录;识别指向属于云提供商(比如 AWS、Azure、谷歌云和其他第三方服务提供商)的 IP 范围的所有網域和子網域;然后检查这些 IP 记录是否仍然有效。幸运的是,该公司已经在内部数据库中跟踪云提供商分配给其资产的 IP 地址,但许多公司可能不会进行这种类型的跟踪。
Al-Sultani 不是第一个强调云抢注的人。去年,宾夕法尼亚州立大学的一组研究人员分析了公共云上 IP 重用的风险,他们在亚马逊的美国东部地区部署了 300 万台 EC2 伺服器,这些伺服器接收 150 万个独特的 IP 地址,约占该地区可用 IP 地址池的 56%。在进入到这些 IP 地址的流量中,研究人员发现了金融交易、GPS 定位数据以及个人身份信息。
源自第三方軟體的云抢注风险
云抢注问题的风险甚至可能源自第三方軟體组件。今年 6 月,有研究人员警告,攻击者在扫描 npm 軟體包,查找对 S3 存储桶的引用。如果攻击者发现有不再存在的存储桶,就注册它,在许多情况下,这些軟體包的开发人员选择使用 S3 存储桶来存储预编译的二进制檔案,这些檔案在軟體包安装期间下载并执行。因此,如果攻击者重新注册被丢弃的存储桶,就可以在信任受影响的 npm 軟體包的用户的系统上远程执行代码,因为他们可以托管自己的恶意二进制檔案。
今年早些时候 Aqua Security 的研究人员表明,已被删除或重命名的 GitHub 代码库可以被攻击者重新注册。如果应用程式或文档仍然指向它们,它们就可以用来分发恶意軟體。研究人员将这种攻击称为代码库劫持活动。
减轻云抢注风险
IP 重用和 DNS 场景可以通过几种方式来应对:使用来自云提供商的保留 IP 地址(这意味着它们不会被释放回到共享地址池中,直到明确释放它们),将自己的 IP 地址传输到云,在用户不需要直接访问伺服器时在服务之间使用私有(内部)IP 地址,或者使用云提供商提供的 IPv6 地址,因为地址数量如此之大,以至于它们不太可能被重用。
企业还应该执行一项策略,防止将 IP 地址硬编码到应用程式中,而是应该为所有服务使用 DNS 名称。还应定期维护这些记录,并删除过时记录,为可以通过 DNS 来寻址提供了集中管理点,不必追踪硬编码的 IP 地址。