如何使用Domain-Protect保护你的网站抵御子域名接管攻击?

关于Domain-Protect

Domain-Protect是一款功能强大的子域名安全保护工具,可以帮助广大研究人员更好地保护自己的网站抵御子域名接管攻击。该工具支持实现以下两个目标:

· 扫描一个AWS组织中的Amazon Route53,并获取存在安全问题的域名记录,然后尝试执行域名接管检测;

· 可以通过Domain Protect for GCP检测Google Cloud DNS中存在安全问题的域名;

子域名检测功能

· 扫描Amazon Route53以识别:

· 缺少S3源的CloudFront发行版的ALIAS记录;

· 缺少S3源的CloudFront发行版的CNAME记录;

· 存在接管漏洞的ElasticBeanstalk的ALIAS记录;

· 缺少托管区域的已注册域名;

· 易被接管的子域名;

· 易被接管的S3ALIAS记录;

· 易被接管的S3CNAME记录;

· Azure资源中存在安全问题的CNAME记录;

· 缺少Google云存储Bucket的CNAME记录;

可选的额外检测

这些额外的检测功能默认是关闭的,因为可能在扫描大型组织时会导致Lambda超时,比如说扫描缺少Google云存储Bucket的A记录。如需启用,请在你的tfvars文件或CI/CD管道中 创建下列Terraform变量:

lambdas = ["alias-cloudfront-s3", "alias-eb", "alias-s3", "cname-cloudfront-s3", "cname-eb", "cname-s3", "ns-domain", "ns-subdomain", "cname-azure", "cname-google", "a-storage"]

通知

针对扫描到的每种漏洞类型通过Slack通知 ,枚举出账号名称和漏洞域名;

订阅SNS主题,发送JSON格式的电子邮件通知,其中包含帐户名、帐户ID和存在安全问题的域名;

工具要求

· 需要AWS组织内的安全审计账号;

· 在组织中的每个AWS帐户都具有相同名称的安全审核只读角色;

· 针对Terraform状态文件的Storage Bucket;

· Terraform 1.0.x;

工具源码获取

广大研究人员可以通过下列命令将该项目源码克隆至本地:

git clone https://github.com/ovotech/domain-protect.git

工具使用

以下列命令形式替换Terraform状态S3 Bucket字段(TERRAFORM_STATE_BUCKET);

针对本地测试,拷贝项目中的tfvars.example,重命名并去掉.example后缀;

输入你组织相关的详情信息;

在你的CI/CD管道中输出Terraform变量;

AWS IAM策略

针对最小特权访问控制,项目提供了AWS IAM策略样例:

domain-protect audit policy

https://github.com/ovotech/domain-protect/blob/dev/aws-iam-policies/domain-protect-audit.json

domain-protect audit trust relationship

https://github.com/ovotech/domain-protect/blob/dev/aws-iam-policies/domain-protect-audit-trust.json

domain-protect audit trust relationship with External ID

https://github.com/ovotech/domain-protect/blob/dev/aws-iam-policies/domain-protect-audit-trust-external-id.json

domain-protect deploy policy

https://github.com/ovotech/domain-protect/blob/dev/aws-iam-policies/domain-protect-deploy.json

工具使用截图

部署至安全审计账号

扫描整个AWS组织

通过Slack或电子邮件接收提醒消息

通过笔记本电脑手动执行扫描任务

项目地址

https://github.com/ovotech/domain-protect

参考资料

https://github.com/ovotech/domain-protect-gcp

https://github.com/ovotech/domain-protect/blob/dev/manual-scans/README.md

https://github.com/ovotech/domain-protect/blob/dev/variables.tf

https://github.com/ovotech/domain-protect/blob/dev/aws-iam-policies/domain-protect-deploy.json