1、购买域名和测试域名
购买平台godaddy
价格方面只要不续费第一年最便宜只要10多元倒是比较便宜,另外此网站购买的域名不需要实名
购买方面我就不赘述了,购买完后到管理页面
有个A记录这个记录就是dns解析到的ip,这里就指定我们的c2地址
绑定成功后可以尝试访问确实可以解析到ip那就说明域名购买成功了
2、注册cloudflare并配置DNS
然后注册一个cloudflare账号并且把输入自己的域名在这个页面
点击继续后会提供一些方案,因为cloudflare有免费的cdn,就先用这种方式玩一玩,选择下面的这个0元的
继续后发现提示还未在这上面激活
往下翻可以找到两个它提供的dns服务器
然后到godaddy这边来修改dns服务器
选择使用自己的,将上面两个地址复制过来
配置完成后cloudflare会发一封邮件提示修改成功
这个时候我们的域名相当于被cloudflare管理了,因为我们使用了它提供的权威名称服务器,所有的请求都会到他这里来解析,所以需要重新配置dns解析在cloudflare上,这里的ip地址就是c2的ip地址
配置完成后等待一会然后就可以使用超级ping来测试是否成功了
完美配置好cdn,可以本机nslookup解析一下ip是不是c2的ip,不是也能说明配置成功了
3、修改cs配置文件
接下里是修改profile文件
首先添加一个header host 为购买的域名 ,一般修改一下get和post请求,如果设置了stager也可以修改一下
然后在超级ping的那里记录那几个ip
同时可以将这几个ip进行反查域名
使用cs生成马子
http host 全部填之前超级ping出来的ip和ip反查的域名
http stager填反查出来的域名
http header 填自己买的真实域名
然后上线cs,上线后会发现那个外部ip会一直变化,说明就是对的,因为外部ip一直是显示的我们的布置的cdn服务器
抓个包看看数据
不过数据包中还是很明显的显示的我们自己购买的域名地址
但是任然实现了通过cdn上线的方式,在蓝队溯源的时候需要绕过cdn找到我们的真实ip
4、使用https达到更进一步的隐藏
因为cloudflare应该是不支持域前置了但是还是顺便说一下域前置和CDN的一些区别,我在网上看了部分的文章域前置需要配合https才可以,因为有两个host头一个在外面一个在里面在不同的数据层,外层被展示出来的是高信誉的域名,内部是我们的真实域名,两者之间的关系是高信誉域名也是用的和我们域名一样的cdn节点,也就是节点的ip是一致的,所以高信誉域名是通过反查cdn节点获取的。
为什么还要使用https协议,因为传输的内容是加密的哪怕会出现dns查找到我们的真实域名这样没办法,所以我这里还是做了https上线的实验。
域前置技术
域前置(Domain fronting),在红蓝攻防中已经不是一种新技术了,但是依旧实用。它是一种能够隐藏连接真实端点来规避互联网审查的技术。
在应用层上运作时,域前置使用户能通过 HTTPS 连接到被屏蔽的服务,而表面上像是在与另一个完全不同的站点通信。
此技术的原理为在不同通信层使用不同的域名:
- 在明文的DNS请求和TLS服务器名称指示(SNI)中使用无害的域名来初始化连接、公布给审查者
- 实际要连接的“敏感”域名仅在建立加密的HTTPS连接后发出,使其不以明文暴露给网络审查者
参考
首先需要配置证书
使用cloudflare他生成的即可
分别将这个两个文件保存pem的后缀
然后使用openssl和keytool进行生成,keytool是jdk自带的工具
openssl pkcs12 -export -in cloudflare.pem -inkey cloudflare_key.pem -out keystore.p12 -name cloudflare -passout pass:123456
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore cloudflare.store -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias cloudflare
就可以得到一个cloudflare.store了
在profile文件中添加
如果是使用的域前置这里的host列表就可以填反查出来的高信誉域名,这里我就没做演示了。
成功的上线后外部地址也是变化的
到处基本完成了本次实验的目的成功的将真实地址隐藏在了cdn后面(虽然暴露了我们的域名),当然,使用cdn并不是可以完美的隐藏,但是蓝队想找到真实ip也得花费不少的时间。