2024-11-13🌱湖州: ⛅️ 🌡️+20°C 🌬️↖19km/h

修改证书

参考链接:https://blog.csdn.net/weixin_42282667/article/details/123356104

下载配置cloudflare的证书

  • 将加密方式修改成full

  • 创建证书

创建一个新的证书

  • 点击创建

  • 将生成的证书和私钥储存好

生成store格式的证书对

  • 将上面保存的证书储存到cloudflare.pem文件中

  • 将私钥保存到cloudflare.key中

  • 生成keystore文件

    使用openssl将pem证书和key私钥导出为P12格式的证书

1
2
3
openssl pkcs12 -export -in pem证书 -inkey key私钥 -out p12文件 -name 域名 -passout pass:密码

openssl pkcs12 -export -in cloudflare.pem -inkey cloudflare.key -out cloudflare.p12 -name your-domain -passout pass:csissohard
  • 使用keytool生成store格式的证书对
    1
    2
    3
    4
    keytool -importkeystore -deststorepass pass -destkeypass pass -destkeystore store文件 -srckeystore P12格式证书 -srcstoretype PKCS12 -srcstorepass pass -alias 域名

    keytool -importkeystore -deststorepass csissohard -destkeypass csissohard -destkeystore clouflare.store -srckeystore cloudflare.p12 -srcstoretype PKCS12 -srcstorepass csissohard -alias your-domain

    生成成功,查看store文件的信息
    1
    2
    keytool -list -v -keystore clouflare.store
    # 要求输入的密码就是自己设置的

cs证书配置

cs启动时会加载一个默认的配置文件,里面配置了证书文件、证书密码、心跳时间等等。配置文件中还可以修改特定的请求和响应让cs的通信在流量中看起来更像合法的请求。

要在teamserver使用另外的keystore证书文件,还需要重新写个配置文件(profile)引用证书。CS profile文件地址:https://github.com/rsmudge/Malleable-C2-Profiles/
https Beacon的证书配置如下:

1
2
3
4
5
https-certificate {
set keystore "store证书";
set password "密码";
}

因为我是cs4.9,所以直接下载上面网站的对应的版本的文件即可

  • 修改完成后,可以用自带的c2lint检查配置文件是否正确,只要不报错就可以正常使用
1
./c2lint 1.profile

我的c2lint出问题了,一直报错

  • 修改teamserver的证书

证书名称和密码修改一下即可

使用cloudflare的cdn隐藏c2的ip(已失效)

使用cloudflare绑定域名,并且解析A我们的vps的IP

点击对应的域名,然后找到caching中的configuration,打开开发模式

打开页面规则,添加如下的规则

在pofile中的如下位置添加如下的header
header "Content-Type" "application/*; charset=utf-8"

在pofile中的如下位置添加如下的header,这个设置可以获得上线主机的真实IP
set trust_x_forwarded_for "true";

经过测试这种方法已经失效,我能成功上线,但是一会就会掉线,而且一直无法执行命令,不知道是否是我的操作有误,欢迎交流学习

使用nginx和Certbot隐藏

下载nginx和Cerbot

1
2
apt install nginx -y
apt install certbot python3-certbot-nginx -y

配置nginx

Nginx 配置文件通常在 /etc/nginx/sites-available/default

1
2
3
4
5
6
7
8
9
10
11
12
13
server {
listen 80;
server_name teamserver.example.com;

location / {
proxy_pass http://localhost:7000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

  • 一般是会新建一个配置文件/etc/nginx/sites-available/your-domain.conf
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
server {
# 接收 HTTP 流量并重定向到 HTTPS
listen 80;
server_name your-domain;

return 301 https://$host$request_uri;
}

server {
# 接收 HTTPS 流量
listen 443 ssl;
server_name your-domain;

# SSL 证书配置
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

# 强制使用现代加密协议
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;

# 配置cs服务端连接端口
location /7000/ {
proxy_pass http://localhost:7000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}

  • 创建符号链接以启用配置
1
2
sudo ln -s /etc/nginx/sites-available/your-domain.conf /etc/nginx/sites-enabled/

申请证书

  • 使用 Certbot 为域名生成证书

    1
    2
    certbot certonly --standalone -d teamserver.example.com
    sudo certbot --nginx -d teamserver.example.com
  • 自动续期证书: Certbot 会自动设置续期任务,检查是否运行

1
sudo systemctl list-timers | grep certbot
  • 重启nginx
    1
    sudo systemctl restart nginx

感觉这种方法配置太麻烦了,而且只设置了一个反代,作用好像不是很大,弃用弃用!!!

使用RedGuard隐藏C2(推荐)

项目地址

https://github.com/wikiZ/RedGuard/blob/main/doc/README_CN.md

我是直接下载好编译好的版本,然后赋予执行权限

1
chmod +x ./RedGuard&&./RedGuard

这个项目相当于是一个有着防火墙功能的nginx,它默认将80端口转发到本地的8080端口,将443端口转达到本地的4433端口

随机生成了一个证书,可以修改成自己的证书,我是用的是cloudflare的证书,将它的格式改成ca.key和ca.cert的格式即可

起到了一定的隐藏作用,防止我们的vps被标记和攻击,还是非常有作用的

其他的参考我的文章:RedGuard的使用方法

域前置技术

参考:
https://cloud.tencent.com/developer/article/1785562
https://blog.csdn.net/q20010619/article/details/122001830

前提:配置好了dns解析,并且将域名托管到cloudflare,这里使用免费的计划

使用cloudflare的话访问我们的域名就会先转到cloudflare的cdn,通过cdn交流

然而我们可能和一个高信誉的域名使用同一个cdn的ip,它使用http头的host来判断是哪一个域名需要加速

  • 首先超级ping我们的域名,收集解析的cdn的ip
  • 反查cdn的ip的网站,就能找到和我们使用同一个ip加速的网站,找一个信誉度高的
  • 测试方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    104.21.72.159 tset.com
    172.67.152.185
    124.236.16.201


    显示我们网站的内容
    curl 34.107.221.82 -H "Host: you-domain" -v

    显示高信誉的网站的内容
    curl 34.107.221.82 -H "Host: test.com" -v

    显示高信誉的网站的内容
    curl you-domain -H "Host: test.com" -v

然后cobaltstrike配置监听器的时候将所有的cdn的ip地址都添加到HTTP Hosts

将HTTP Host(Stager)填高信誉的域名xjzhw.com

然后填写好上线的端口HTTP Port(C2)

监听端口不填的话就是上线的端口HTTP Port(Bind)

host Header填自己的域名地址

  • 修改profile文件中所有get和post请求的host为自己的域名

然后注意各个cdn厂商支持的端口,cloudflare的htp协议默认是支持80、8080、2095等,https协议默认支持443、2096等

2024-12-12 但是经过我的实验,cloudflare现在好像是做了限制,不能直接使用这个cdn来隐藏c2的流量了,主机能够上线,但是一会儿就断线了,命令也执行不了

其他的厂商的cdn没有测试过,以后有机会再尝试下