graph LR
A[client]--发送https的流量其中SNI显示位信任域名-->B[CDN]
B[CDN]--经过解析过后的恶意流量发送到c2-->C[cobalt strike]
客户端请求dns获取到cdn的域名,把https数据包发送给CDN。CDN打开HTTPS后根据host字段xxx.evile.com选择将包发给C2
你的域名和你想仿冒的域名必须处于同一cdn服务商下。
在这之前需要大家了解一些东西
具体原理网上很多这里就不重说占篇幅了。只说一点。
cdn怎么确定client访问的是哪个域名呢?他是怎么判断的?
可以通过这两张图对比可以看出来,cdn是通过http头部中的host字段来确认客户需要访问的网站是哪个。也就是说两个同样的网站访问的都是cdn的节点,区别只是host字段。
这里就不用某云特性了来实现域前置了,虽然好用。
首先你的域名和你想用的高信任域名必须处在同一cdn服务商。
其次cdn要使用tsl/ssl加密方式加密http包。如果不加密可以通过http包看到host头部字段暴露你自己的域名。(这个我没做到)
两处host字段填写你找到的高信任度域名(我这里是随便找了个域名)host header填写你自己的域名(4.0版本可以直接填写host字段,当然推荐使用profile,毕竟可以更改流量痕迹,我这里是偷了个懒--)
可以看到请求的域名不是我们的,但请求cdn的host头则是我们的域名。这样还是不行。所以需要ssl/tsl加密http流量。
但我这里没有成功利用cdn的https,根据抓包的分析。
http的beacon访问cdn的443端口是http协议,导致400的http错误代码。如果换成https的beacon,流量监测不到……就不知道怎么实习。原理明白了复现不了,这个是腾讯云,是因为腾讯云的问题还是我自身的问题啊。求大哥们带带。