AWS
系统管理器通过创建SSM
文档在AWS
资源上自动执行操作任务。以JSON
或YAML
创建的SSM
文档包含AWS
系统管理器将在云资产上执行的操作。默认情况下,SSM
文档是私有的,但可以配置为与其他AWS账户共享或公开共享。AWS
提供了共享SSM
文档的最佳实践。
Check Point CloudGuard
研究团队分析了由其所有者配置为公开共享的SSM
文档。研究团队发现,出现了一些对该服务的基本误解,同时缺乏正确的参数使用(如AWS
最佳实践中定义的)。正如本报告所介绍的,一个配置错误的公共SSM
文件可以给攻击者提供关于账户内部资源和操作的宝贵信息。这不仅可以作为社会工程攻击的基础,而且可以导致更多资源的暴露。SSM
文件可以提供一个进入受害者环境的初始立足点,有时甚至可以让攻击者看到账户的部署过程、资源和备份程序。
在这项研究中,CPR
检测到几个SSM
文件,导致发现了几个公司的500多万条个人身份信息(PII)记录和信用卡交易。Check Point
研究人员总共发现了3000多份可能与这一趋势有关的公共SSM文件。 CPR
与AWS Security
合作,为客户提供必要的指导方针,帮助他们的商业信息更加安全。
删除敏感信息
让我们从一个包含激活密钥和相应的客户密钥的SSM
文档的例子开始。无论是在SSM文档还是源代码中,诸如用户名、密码或访问密钥等信息都不应该被硬编码。如果在SSM
文档中需要这些值,AWS
建议你在文档中使用并引用系统管理器参数库。如下图所示,我们能够检测到几个公开的SSM
文档,其SSM
内容中存在硬编码的凭证。
一个包含激活密钥和相应的客户密钥的SSM
文件的例子:
CPR
检测到几个公开的SSM
文件,在SSM
内容中带有硬编码的凭证:
删除无关的信息
当攻击者评估一个目标时,即使是非敏感信息也可能是有用的。由于SSM
文档包含了基础设施及其操作的摘要,它可以成为有用的情报来源,即使SSM
文档不包含任何硬编码的秘密。
例如,下面的SSM
文档包含一个AWS IAM
用户名。IAM
用户的包含本身并不产生安全风险。然而,攻击者仍然可以利用它来发挥自己的优势。
包含AWS IAM
用户名的SSM
文件--攻击者可以利用这一点:
该用户名是电子邮件地址的格式,可以成为开源情报(OSINT
)调查的开始。攻击者可能会发现关于这个IAM
用户的信息,如他的职业、城市、国家和他的雇主。这种详细的信息可以作为社会工程或鱼叉式钓鱼攻击的起点。
当你准备公开使用的SSM文件时
,删除那些看似无害但可能对攻击者有帮助的信息--任何有助于社会工程攻击或滥用错误配置的云资源的信息。
下面是分享无关信息的另一个例子:
SSM
文件列出了与该AWS
账户相关的ECR
端点资源名称(第一部分以绿色勾勒)。在ECR
内,可能有docker
图像。如果攻击者可以访问容器注册表,他就可以访问这些图像。注意,用户名是不仅应该使用密码,还应该使用用户名和ECR
端点的参数。虽然共享资源ARN
不是一个安全问题,但最好还是避免它。
文本/注释可能包含敏感信息
资源名称通常与它们的任务有关。虽然共享一个资源名称通常不是一个安全问题,但最好的做法是避免这种情况。例如,如果你把EC2
命名为 "Access_to_DB
",这就提醒攻击者,这是一个非常有价值的资源。
该文件描述中出现了 "连接Payer-账户 "的短语,这可能会提醒攻击者注意到一个机会:
在上面的例子中,有一个带有 "连接Payer-账户 "短语的文件描述。就像资源名称一样,公共文档中包含的任何文本或描述都可能提醒攻击者注意到一个机会。吸引人的描述和下面显示的S3桶的组合,足以让大多数攻击者将他们的努力集中在这个文件上。
保持备份程序的隐私性
攻击者可以从公共SSM
文件中获得的最有价值的信息可能是与AWS
账户中的部署和备份有关的程序。下面介绍的流程是不需要的数据暴露的一个实例。
注意 - 截图是来源实验室环境的:
在上述SSM文件中,我们看到一个备份进程似乎每小时都在运行。该进程从S3桶中下载一个文件并在本地执行。让我们试着下载它:
再一次,ExtractTool.jar
包含大量的文件。然而,经过对这些内容的分析,我们能够检测到一个名为 "backup.sh
"的备份脚本。
分析它发现了这个同步命令:
我们统计了找到的S3 bucket后,我们能够找到备份的内容。 这泄露了几个DB备份,每个备份的大小都超过了1Gb(包含数万条PII记录)。
总结 共享SSM文件在工作环境中可能是非常有用的。然而,客户应该意识到,攻击者可以利用SSM文档中的信息进行攻击,从而导致数据暴露。为防止在账户级别创建公共SSM文档,请使用新发布的阻止SSM文档的公共访问。Check Point研究部向计划使用公共SSM文档的公司提供以下指南:
- 参数的使用是至关重要的。激活密钥、用户名、电子邮件等信息不应该是明确的文本,而应该是带有参数的。
- 对你发布到公共SSM文件中的信息保持警惕。即使它看起来很小,也可能为攻击者提供信息。
- 不要分享部署过程和备份程序
- 审查SSM文件中包含的任何AWS资源,以确保其配置的安全性。
备注: 原文信息:May 11, 2021 原文地址:checkpoint 原文标题:The Need to Protect Public AWS SSM Documents – What the Research Shows