【破解】CobaltStrike破解

前言

CobaltStrike的4.0~4.5版本破解

准备工作

CobaltStrike官方SHA256文件校验

cobaltstrike.jar文件SHA256

4.0:558f61bfab60ef5e6bec15c8a6434e94249621f53e7838868cdb3206168a093710fe0fcdb6b89604da379d9d6bca37b8279f372dc235bbaf721adfd83561f2b3
4.1:1f2c29099ba7de0f7f05e0ca0efb58b56ec422b65d1c64e66633fa9d8f469d4f
4.2:56a53682084c46813a5157d73d7917100c9979b67e94b05c1b3244469e7ee07a
4.3:02fa5afe9e58cb633328314b279762a03894df6b54c0129e8a979afcfca83d51c3c243e6218f7fbaaefb916943f500722644ec396cf91f31a30c777c2d559465
4.4:7af9c759ac78da920395debb443b9007fdf51fa66a48f0fbdaafb30b00a8a858
4.5:a5e980aac32d9c7af1d2326008537c66d55d7d9ccf777eb732b2a31f4f7ee523

破解

  • 将官方正版的cobaltstrike.jar放到CSAgent目录下
1
cp cobaltstrike.jar CSAgent
  • 修改CSAgent目录下的agscriptc2lintcobaltstrike.shcobaltstrike.batpecloneteamserver.sh文件,将密钥替换为对应版本的密钥

CS密钥

4.0:1be5be52c6255c33558e8a1cb667cb06
4.1:80e32a742060b884419ba0c171c9aa76
4.2:b20d487addd4713418f2d5a3ae02a7a0
4.3:3a4425490f389aeec312bdd758ad2b99
4.4:5e98194a01c6b48fa582a6a9fcbb92d6
4.5:f38eb3d1a335b252b58bc2acde81b542

通过Python脚本批量修改密钥

main.py
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# -*- coding: utf-8 -*-
# @Author : FeiJu
# @File : main.py

import sys
import re

# 定义默认的CSAgent目录路径
file_dir = "."
cs_version = ""

# 获取命令行参数
if len(sys.argv) == 3:
# 获取CSAgent目录路径
file_dir = sys.argv[1]
# 去除末尾`/`
file_dir = file_dir.replace("/", "")
# 获取CS版本
cs_version = sys.argv[2]
else:
# 参数不正确,提示使用方法
print("Usage:")
print(" python3 main.py <cs_agent_src> <cs_version>")
print("Example:")
print(" python3 main.py . 4.0")
print(" python3 main.py . 4.1")
print(" python3 main.py . 4.2")
print(" python3 main.py . 4.3")
print(" python3 main.py . 4.4")
print(" python3 main.py . 4.5")
print(" python3 main.py . default")
quit()

# 根据版本号获取密钥
cs_key = ""
if cs_version == "4.0":
cs_key = "1be5be52c6255c33558e8a1cb667cb06"
elif cs_version == "4.1":
cs_key = "80e32a742060b884419ba0c171c9aa76"
elif cs_version == "4.2":
cs_key = "b20d487addd4713418f2d5a3ae02a7a0"
elif cs_version == "4.3":
cs_key = "3a4425490f389aeec312bdd758ad2b99"
elif cs_version == "4.4":
cs_key = "5e98194a01c6b48fa582a6a9fcbb92d6"
elif cs_version == "4.5":
cs_key = "f38eb3d1a335b252b58bc2acde81b542"
else:
cs_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 修改agscript文件
file_src_agscript = f"{file_dir}/agscript"
# 读取文件内容,替换密钥
with open(file_src_agscript) as f:
file_content_agscript = f.read()
if file_content_agscript != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_agscript).span()
# 替换需要修改的位置
file_content_agscript = file_content_agscript.replace(file_content_agscript[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_agscript, "w") as f:
f.write(file_content_agscript)
print(f"文件 {file_src_agscript} 修改完成")

# 修改c2lint文件
file_src_c2lint = f"{file_dir}/c2lint"
# 读取文件内容,替换密钥
with open(file_src_c2lint) as f:
file_content_c2lint = f.read()
if file_content_c2lint != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_c2lint).span()
# 替换需要修改的位置
file_content_c2lint = file_content_c2lint.replace(file_content_c2lint[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_c2lint, "w") as f:
f.write(file_content_c2lint)
print(f"文件 {file_src_c2lint} 修改完成")

# 修改cobaltstrike.bat文件
file_src_cobaltstrike_bat = f"{file_dir}/cobaltstrike.bat"
# 读取文件内容,替换密钥
with open(file_src_cobaltstrike_bat) as f:
file_content_cobaltstrike_bat = f.read()
if file_content_cobaltstrike_bat != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_cobaltstrike_bat).span()
# 替换需要修改的位置
file_content_cobaltstrike_bat = file_content_cobaltstrike_bat.replace(file_content_cobaltstrike_bat[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_cobaltstrike_bat, "w") as f:
f.write(file_content_cobaltstrike_bat)
print(f"文件 {file_src_cobaltstrike_bat} 修改完成")

# 修改cobaltstrike.sh文件
file_src_cobaltstrike_sh = f"{file_dir}/cobaltstrike.sh"
# 读取文件内容,替换密钥
with open(file_src_cobaltstrike_sh) as f:
file_content_cobaltstrike_sh = f.read()
if file_content_cobaltstrike_sh != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_cobaltstrike_sh).span()
# 替换需要修改的位置
file_content_cobaltstrike_sh = file_content_cobaltstrike_sh.replace(file_content_cobaltstrike_sh[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_cobaltstrike_sh, "w") as f:
f.write(file_content_cobaltstrike_sh)
print(f"文件 {file_src_cobaltstrike_sh} 修改完成")

# 修改peclone文件
file_src_peclone = f"{file_dir}/peclone"
# 读取文件内容,替换密钥
with open(file_src_peclone) as f:
file_content_peclone = f.read()
if file_content_peclone != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_peclone).span()
# 替换需要修改的位置
file_content_peclone = file_content_peclone.replace(file_content_peclone[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_peclone, "w") as f:
f.write(file_content_peclone)
print(f"文件 {file_src_peclone} 修改完成")

# 修改teamserver文件
file_src_teamserver = f"{file_dir}/teamserver"
# 读取文件内容,替换密钥
with open(file_src_teamserver) as f:
file_content_teamserver = f.read()
if file_content_teamserver != "":
# 匹配需要修改的位置
start, end = re.search(r"-javaagent:CSAgent.jar=[\d\w]{32}", file_content_teamserver).span()
# 替换需要修改的位置
file_content_teamserver = file_content_teamserver.replace(file_content_teamserver[start:end], f"-javaagent:CSAgent.jar={cs_key}")
# 将替换密钥后的文件内容替换到原文件
with open(file_src_teamserver, "w") as f:
f.write(file_content_teamserver)
print(f"文件 {file_src_teamserver} 修改完成")

<cs_agent_src>:CSAgent目录路径
<cs_version>:CS版本

4.04.14.24.34.44.5
default:填充密钥为xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

1
python3 main.py <cs_agent_src> <cs_version>

去除中文翻译

  • 删除CSAgent/resourcesCSAgent/scripts目录
1
2
rm -rf <cs_agent_src>/resources
rm -rf <cs_agent_src>/scripts

通过CSAgent提供的脚本启动CobaltStrike

完成

参考文献

Twi1ight/CSAgent
雨苁