域前置技术的原理与CS上的实现

时间:2024-04-09 20:00:42

原理

参考资料:域前置技术的原理以及在CS上的实现


假设有两个主机,域名分别为www.a.com与www.b.com。这两个主机都是被ip为1.1.1.1的cdn进行加速的。

这时候使用curl命令请求cdn 1.1.1.1,并自定义host段为www.b.com的话。就会返回www.b.com的页面。

命令为:curl 1.1.1.1 -H "Host: www.b.com" -v

同理请求同样的cdn,但是将host改为www.a.com,这时候就会返回A页面的信息。

如果将curl 后请求的ip改为 www.a.com, host 改为 www.b.com。命令为:

Curl www.a.com -H "Host: www.b.com" -v

上述命令还是显示的是www.b.com的页面,所以最终请求的还是www.b.com。

所以,域前置技术的核心基础设施是cdn。

当使用https的时候(一般都会使用https,http明文流量容易被检测到),技术实现的核心是在不同的通信层使用不同的域名,DNS解析的时候跟TLS服务器名称指示(sin),的时候使用的是合法的CDN的域名或者ip(建议使用域名),但实际访问域名却是host上写的域名.

host头对于检查器是不可见的,但是对于接受https请求的前端服务器是可见的。

这里借用一张图片来表示:
域前置技术的原理与CS上的实现

CS上的实现

  • 准备一个自带域名的teamserver

    tips:因为挂了cdn,所以无法通过域名直接找到c2端

  • 给teamserver配置一个cdn,并记录一个cdn上的安全的ip/域名

    域前置技术的原理与CS上的实现

    如上图所示,申请完cdn后,cdn厂商会给你一个cdn上的域名,如上图,用户访问这个域名的时候会反问到真正的C2服务器。合法域名则通常可以从相关CDN子域进行寻找,我们可以采用一些知名网站或网络安全公司相关的域名来逃避检测。

  • 配置profile总的http get与http post块总 设置header头为teamserver的域名。

域前置技术的原理与CS上的实现

上图为将host设置为fuck.microsoft.com。

  • 如果木马无法上线,则关闭系统自带的防火墙,让外部能访问进来。 Ubuntu 16.04执行 ufw disable 就把防火墙关掉了。

  • 创建listener,将host设置为CDN分配给你的域名或者你自己的域名。

  • 填写beacon通信地址的时候直接填写任意一个cdn地址即可。