参考: https://blog.csdn.net/weixin_44604541/article/details/118413649
https://www.anquanke.com/post/id/195011
https://www.freebuf.com/articles/network/276159.html
https://www.cnblogs.com/0xl4k1d/p/15643269.html
https://www.freebuf.com/articles/web/271046.html
https://www.anquanke.com/post/id/260888
简介
Domain Fronting,中文译名 “域前置” 或 “域名前置”,是一种用于隐藏真实 C 2 服务器 IP 且同时能伪装为与高信誉域名通信的技术,多用于木马受控端和控制端之间的隐蔽通信。用来隐藏 Metasploit,Cobalt Strike 等团队控制服务器流量
技术重点:基于 https,需要 CDN 和高可信度域名
原理:同一个 cdn 厂商下倘若有两个域名 a.com 和 b.com,这时候我们使用 curl 命令访问第一个 a.com 并将 host 名改为 b.com 这时候,实际访问的是b.com 的内容。而一般的监测机制是不会检测 host 头的。
curl a.com -v -H "host:b.com"
一个可信域名(test.taobao.com),然后到 CDN 厂商中去创建一个 CDN,加速域名就是我们的可信域名(test.taobao.com),源站地址就是我们的 C 2 服务器地址。配置好后,CDN 厂商会自动分配一个随机域名(123asd.cdnv1.com),
curl 123asd.cdnv1.com -v -H "test.taobao.com"
curl CDN的ip -v -H "test.taobao.com"
CDN 的配置:回源 host 到源站地址这里获取资源,用户通过访问加速域名获取资源
加速域名:test.taobao.com
源站地址:c2.kacker.com(2.2.2.2)-这里只是做DNS解析,拿到ip地址而已,直接填2.2.2.2这个ip也可以。
回源host:c2.kacker.com
从流量的角度看是无法获取到真实的 host 的,因为整个流量都是被加密的,只能服务端(CDN 上)私钥解密。
如果拿到木马样本,可以逆向工程,查看真实请求的 host 地址。
关于 CDN 的知识
http 协议的 host 字段
当我们在发起 http 请求时,并不是依靠 host 字段值来进行 ip 地址的解析。
我们知道一个 IP 地址可以对应多个域名,比如假设我有这么几个域名 www.qiniu.com , www.taobao.com 和 www.jd.com 然后在域名提供商那通过 A 记录或者 CNAME 记录的方式最终都和我的虚拟机服务器 IP 111.111.111.111 关联起来,那么我通过任何一个域名去访问最终解析到的都是 IP 111.111.111.111。
那么我怎么来区分每次根据域名显示出不同的网站的内容呢,其实这就要用到请求头中 Host 的概念了,每个 Host 可以看做是我在服务器 111.111.111.111 上面的一个站点,每次我用那些域名访问的时候都是会解析同一个虚拟机没错,但是我通过不同的 Host 可以区分出我是访问这个虚拟机上的哪个站点。
简单的测试:jiexi.lanhuli.top 这个域名使用 CNAME 解析到 www.lanhuli.top 上面去。使用 curl 进行访问。
先访问 jiexi.lanhuli.top,返回 500。因为服务器上压根就没有这个站点,所以服务器根据 host 访问会失败。

还是访问这个域名,但是修改 host 为 www.lanhuli.top,返回 301 跳转。服务器根据 host 值进行访问站点。
