暗度陈仓:基于国内某云的 Domain Fronting 技术实践
https://www.anquanke.com/post/id/195011?from=timeline
1.作者提到因为 CDN 的存在,访问网站时访问的实际上只是 CDN,而不是直接和网站的真实服务器进行通信,所以利用 CDN 的同时也可以隐藏真实C2服务器的 IP
2.作者总结下来,实施 Domain Fronting 大致分为以下几步: 申请域名;申请CDN,加速上一步申请的域名;使用 curl 加上 Host 头访问CDN,测试是否成功;编辑好 C2 Profile 文件,作为 teamserver 中的一个选项运行之;使用特制的 Agent Generator 生成 Payload;在目标主机中运行 Payload
https://www.anquanke.com/post/id/243146
域前置水太深,偷学六娃来隐身——域前置攻击复现
1.作者认为当听到域前置的时候,只需要认为攻击者将 HTTP Header 中的 Host 头变换为位于 CDN 后面的高信誉网站即可
2.在真正的应用场景中,HTTPS 在攻击中只是多了一层 TLS 验证,所以本文主要复现 HTTP 层的域前置攻击。HTTPS 其实同理,只需要在 CS 配置中填写 443 端口,以及在 CDN 厂商中设置增加证书和 443 端口即可
3.只要请求的是 CDN 加速域名或 IP,云厂商就会根据 Host 字段的域名进行回源,并请求 Host 字段的域名返回内容。
令人欣喜的是,在云厂商请求 Host 字段域名时,如果该域名在云厂商中使用了 CDN 加速服务,会使用内部解析器解析成 IP 并请求。
也就是说,假如在云厂商内部解析器中域名解析 IP 与实际 IP 不符,那么通过这种方法就可以返回与实际页面不同的内容。
4.作者提到无论是使用 CDN IP 改 Host 头还是 CDN 域名改 Host,都可以实现域前置攻击,只不过使用 CDN 域名时,通讯 IP 变成了该域名的解析 IP
https://www.freebuf.com/articles/web/271046.html
域前置之“中外差异”
1.作者提到了中外里解中的域名前置的一些差异,维基百科中对域前置的定义说的很明白。在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接、公布给审查者,而实际要连接的被封锁域名仅在创建 加密的HTTPS连接后发出,使其不以明文暴露给网络审查者。国内的做法一般是把CNAME接入的IP ping一下,然后填写到CS(cobal strike)的IP里。再去修改profile文件,然后指定host为某host,这种行为更像是“CDN非法接入”
2.作者提到CDN非法接入的一个流量特征是,发送的https请求没有server_name 且接受的证书是CDN默认证书
https://www.anquanke.com/post/id/260888
域前置溯源方法思考
作者提出了域前置溯源的一种思路:
1、根据已经拿到的资产获取Web指纹(开放的服务及版本、端口等)、Banner信息,分析获取测绘特征。
2、根据测绘特征在Zoomeye、Fofa、Shodan等平台搜索,通过时间、地区等条件初步筛选,获得资产列表,这个列表可能很大。
3、通过分析样本,获取通信特征(Uri、回包大小、Header等)向资产列表发通信包,动态过滤;根据已有资产规则(IP段分布、IDC服务商、域名构造特征、证书服务商等)人工静态过滤,得到较精确的网络资产列表。
在域前置的情况下,无论是从样本还是从流量中都无法获取Host4,所以只能从反面,也就是通过扫描探测获取信息与正面访问得到的Banner信息进行匹配,具体过程如下:
4.根据样本中获取到Host1与Host2,发请求包获取C2的Banner信息。
5.根据Banner信息Zoomeye、Fofa、Shodan等平台搜索,通过时间、地区等条件初步筛选,得到一个IP列表。
6.根据样本中特有的通信特征,向IP列表发包,根据返回确定是不是要找的Host4
一文搞明白域前置(Domain Fronting)技术
https://blog.csdn.net/weixin_44604541/article/details/118413649
1.作者提到Domain Fronting流量的一个显著特点是SNI和Host不相等。企业的防守方可以部署HTTPS流量解密设备,并对比流量中的SNI和Host是否相等,如果不相等则说明是该流量是Domain Fronting流量。这也是MITRE ATT&CK中建议的检测方式。并且,随着该技术不断在真实网络攻击中被使用,云厂商也逐渐意识到了Domain Fronting的危害,目前Cloudflare、AWS CloudFront、Google Cloud CDN等厂商也都纷纷禁用了这种隐蔽通信方法
一文搞明白 Domain Borrowing
https://www.icode9.com/content-4-1055411.html
1.作者提到当CDN无法找到SNI中的域名对应的证书时,通常有两种处理逻辑
大多数CDN会返回一个默认的证书给客户端
少数CDN会直接断开与客户端的TCP连接
在这种情况下,客户端可以选择忽略HTTPS证书验证并与CDN边缘节点进行HTTPS通信,这时HTTPS流量中SNI == Host == www.blackhat.com,可以绕过对Domain Fronting的检测
2.作者提到SNI和Host可以被设置为一个不存在的域名(即该域名没有IP地址)
在防火墙检测HTTPS SNI的DNS解析结果是否与通信的目标IP地址相同
总结:关于域名前置主要有2种
Domain fronting
使用恶意host和合法的SNI去请求CDN
局限:
SNI和Host不相等,企业的防守方可以部署HTTPS流量解密设备,并对比流量中的SNI和Host是否相等来检测
厂商已经意识到危害开始逐渐禁用这种方法
Domain borrowing
https://www.cnblogs.com/bonelee/p/15514432.html
通信时SNI和HOST为高信誉域名,需要通过漏洞获取证书
局限:需要在CDN上注册高信誉域名,且需要通过漏洞等方式获取有效的HTTPS证书,否则当CDN无法找到SNI中的域名对应的证书时,CDN会返回默认的证书给客户端
检测逻辑:比对sni是否和host一致,同时检测返回证书里的CN字段是否包含cdn或者default等默认证书字段