域名伪装与CloudFront实战示例
本文是《域名伪装入门指南》的配套文章,将逐步指导如何设置用于域名伪装的站点及被伪装的站点。
演练环境角色
- 伪装主机名:fronted.digi.ninja
- “正常”源站:digi.ninja
- “正常”CloudFront域名:d1pticz0uvhz4n.cloudfront.net(后续说明来源)
- “恶意”源站:frontme.vuln-demo.com
- “恶意”CloudFront域名:d1sdh26o090vk5.cloudfront.net(后续说明来源)
设置“正常”源站
若已有CloudFront托管站点可跳过此步,直接配置被伪装站点。
登录AWS账户,从服务菜单选择CloudFront,点击“创建分发”并选择“Web”选项。
在“源站设置”部分:
- 在“源站域名”框中输入现有站点主机名(digi.ninja)
- 在“源ID”框中为配置指定唯一名称
- 注意:默认“源站协议策略”为“仅HTTP”。若源站支持HTTPS(如digi.ninja同时监听HTTP/HTTPS并启用HSTS重定向),必须修改此设置,否则通过伪装域名访问时将返回403错误
“默认缓存行为设置”中的所有选项可保持默认。
在“分发设置”部分:
- 为增强真实性,将“SSL证书”改为“自定义SSL证书(example.com)”
- 通过“使用ACM请求或导入证书”生成证书(支持DNS或邮件验证)
- 在“备用域名(CNAME)”框中输入用于访问站点的主机名(fronted.digi.ninja)。未设置此项同样会导致通过主机名访问时返回403错误
完成配置后点击“创建分发”,系统将开始部署(状态显示“进行中”)。部署期间需为域名(fronted.digi.ninja)创建CNAME记录,指向CloudFront分配域名(如d1pticz0uvhz4n.cloudfront.net)。部署完成后状态变为“已部署”,即可通过自定义DNS名称和CloudFront域名访问。
若CloudFront URL可访问但自定义域名失败,需检查配置错误。每次重新部署可能耗时10-15分钟。
设置“恶意”源站
此步骤与前述类似:
- 在“源站域名”字段输入要伪装的站点(frontme.vuln-demo.com)
- 由于不直接通过自身名称或CloudFront名称访问,无需修改“分发设置”
- 完成流程并开始部署
部署后应能通过分配的CloudFront域名(d1sdh26o090vk5.cloudfront.net)浏览站点。出现错误时需调试。
为何不设置“备用域名”?
- 非必需:可在Host头中使用CloudFront域名而非真实源站引用
- 安全优势:匿名CloudFront主机名比暴露真实源站更隐蔽。若活动被发现时源站已下线,调查方仅能获得无意义的随机字符串
测试域名伪装
所有组件就绪后,即可进行域名伪装!原理是:
- 使用“正常”主机名(fronted.digi.ninja)建立网络连接
- 在Host头中指定“恶意”CloudFront主机名(d1sdh26o090vk5.cloudfront.net)
使用curl测试:
|
|
结果成功! 基于DNS查询的连接检查显示请求发往“正常”站点(fronted.digi.ninja),但CloudFront收到HTTP请求后,根据Host头中的“恶意”CloudFront主机名返回数据。
寻找可用域名
若不想自行设置域名,可寻找现有资源。推荐工具与文章:
- 《我如何识别93k个可伪装CloudFront域名》
- 《通过CloudFront备用域名实现域名伪装》
- FindFrontableDomains工具
相关文章
- 《域名伪装入门指南》
- 《使用Cloudflare实现域名伪装》
- 《利用HTTP管道化隐藏请求》