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

参考资料

域前置技术的原理以及在CS上的实现
malleable_profile配置概述


原理

假设有两个主机,域名分别为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上的实现

  • 准备一个自带域名的teamserver

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

    在这里插入图片描述

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

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

在这里插入图片描述
在http-config模块还要将trust_x_forwarded_for 属性设置为true:
在这里插入图片描述

  • 创建listener,将http hosts设置为任意的cdn的安全域名或者ip。
    在这里插入图片描述

获得安全域名或者cdn ip的方式

在站长之家有个ping的工具,在网址那一栏填写分配给你的cdn的域名即可:
在这里插入图片描述
获取到cdn代理到ip后,使用curl ip -H "Host: c2的域名" -v测试一下看是否可以连接通。

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

CS的profile文件的配置可以看我的另一篇文章malleable_profile配置概述
隐藏源IP,提高溯源难度的几种方案

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shanfenglan7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值