CobaltStrike
CSAgent
CSAgent 是破解 CobaltStrike 的补丁 ,将相应的 key 与其一起使用可获取到授权
脚本
Team Server sh
#!/bin/bash
#
# Start Cobalt Strike Team Server
#
# make pretty looking messages (thanks Carlos)
function print_good () {
echo -e "\x1B[01;32m[+]\x1B[0m $1"
}
function print_error () {
echo -e "\x1B[01;31m[-]\x1B[0m $1"
}
function print_info () {
echo -e "\x1B[01;34m[*]\x1B[0m $1"
}
# 检查是否是 root
if [ $UID -ne 0 ]; then
print_error "需要超级用户权限才能运行Team Server"
exit
fi
# 检查java是否可用
if [ $(command -v java) ]; then
true
else
print_error "java 不存在 \$PATH"
echo " 是否安装了 Java ?"
exit
fi
# 检查keytool是否可用
if [ $(command -v keytool) ]; then
true
else
print_error "keytool 不存在 \$PATH"
echo " 安装 Java Developer Kit"
exit
fi
# 生成证书
# 自然,我们欢迎你用你自己的永久证书来代替这个步骤。
# -Djavax.net.ssl.keyStore="/path/to/whatever"
# -Djavax.net.ssl.keyStorePassword="password"
# is printed so users may have a chance to verify they're not being owned.
# 只要确保把 -Djavax.net.ssl.keyStore="/path/to/whatever" 和 -Djavax.net.ssl.keyStorePassword="password" 传递给java。这用于设置一个 SSL 服务器套接字。另外,第一个证书的 SHA-1 摘要会被打印出来,这样用户就可以有机会验证是否被拥有。
if [ -e ./cobaltstrike.store ]; then
print_info "使用现有的 X509 证书和密钥库(用于SSL)"
else
print_info "生成 X509 证书和密钥库(用于SSL)"
keytool -keystore ./cobaltstrike.store -storepass Microsoft -keypass Microsoft -genkey -keyalg RSA -alias cobaltstrike -dname "CN=*.microsoft.com, OU=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=WA, C=US"
fi
# start the team server.
java -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Dcobaltstrike.server_bindto=0.0.0.0 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=Microsoft -server -XX:+AggressiveHeap -XX:+UseParallelGC -classpath ./cobaltstrike.jar -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en server.TeamServer $*
Team Server bat
在 Windows 虚拟主机中可能出现内存不够的情况,这就需要加上 -Xmx512M -Xms512M -XX:MaxPermSize=256M
来限制 JVM 的内存
:check_java
java -version >nul 2>&1
if %errorLevel% == 0 (
goto:check_permissions
) else (
echo [-] 是否安装了 Java ?
pause
goto:eof
)
:check_permissions
echo [+] 需要管理权限,检测权限...
set TempFile_Name=%SystemRoot%\System32\BatTestUACin_SysRt%Random%.batemp
(echo "BAT Test UAC in Temp" >%TempFile_Name% ) 1>nul 2>nul
if exist %TempFile_Name% (
echo [+] 成功:管理权限确认
del %TempFile_Name% 1>nul 2>nul
goto:check_certificate
) else (
echo [-] 失败:目前的权限不足
pause
goto:eof
)
:check_certificate
set certificate=".\cobaltstrike.store"
if exist %certificate% (
goto:test_arguments
) else (
echo [!] cobaltstrike.store 不存在 !
echo [!] 正在通过 keytool 生成 cobaltstrike.store !
echo [!] Command: keytool -keystore ./cobaltstrike.store -storepass roottoor -keypass roottoor -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth"
:: -keystore 指定密钥库的名称
:: -storepass roottoor 指定密钥库的密码为 roottoor
:: -keypass roottoor 指定别名条目的密码 roottoor
:: -genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名
:: mykey中包含用户的公钥、私钥和证书(在没有指定生成位置的情况下,keystore会存在用户系统默认目录)
:: -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
:: -alias 产生别名,每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写
:: -dname 指定证书拥有者信息
:: 例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"
keytool -keystore ./cobaltstrike.store -storepass roottoor -keypass roottoor -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth
)
:test_arguments
set argC=0
for %%x in (%*) do Set /A argC+=1
if %argC% LSS 2 (
echo [-] 命令格式 : teamserver.bat ^<host^> ^<password^> [/path/to/c2.profile] [YYYY-MM-DD]
echo ^<host^> : Cobalt Strike team server 默认IP地址
echo ^<password^> : 连接到服务的共享密码
echo [/path/to/c2.profile] : C2 profile 配置文件路径
echo [YYYY-MM-DD] : payloads 终止时间
:: 示例: teamserver.bat 192.168.56.7 root.com
pause
goto:eof
) else (
goto:run_cobal
)
:run_cobal
:: key
:: 4.0 1be5be52c6255c33558e8a1cb667cb06
:: 4.1 80e32a742060b884419ba0c171c9aa76
:: 4.2 b20d487addd4713418f2d5a3ae02a7a0
:: 4.3 3a4425490f389aeec312bdd758ad2b99
:: 4.4 5e98194a01c6b48fa582a6a9fcbb92d6
:: 4.5 f38eb3d1a335b252b58bc2acde81b542
java -Xmx512M -Xms512M -XX:MaxPermSize=256M -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Dcobaltstrike.server_bindto=0.0.0.0 -Djavax.net.ssl.keyStore=./cobaltstrike.store -Djavax.net.ssl.keyStorePassword=roottoor -server -XX:+AggressiveHeap -XX:+UseParallelGC --add-opens=java.base/java.lang.reflect=ALL-UNNAMED -classpath ./cobaltstrike.jar -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 server.TeamServer %*
Cobalt Strike Client sh
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en -jar cobaltstrike.jar $*
Cobalt Strike Client bat
在 Windows 虚拟主机中可能出现内存不够的情况,这就需要加上 -Xmx512M -Xms512M -XX:MaxPermSize=256M
来限制 JVM 的内存
java -Xmx512M -Xms512M -XX:MaxPermSize=256M -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en -jar cobaltstrike.jar
Windows 通过快捷方式运行
Team Server 启动脚本 start_server.bat
配置 IP
和 密码
chcp 65001
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c "^&chr(34)^&"%~s0"^&chr(34)^&" ::","%cd%","runas",1)(window.close)&&exit
cd %~dp0
teamserver.bat 192.168.1.105 roottoor
创建桌面快捷方式
CobaltStrikeClient
chcp 936
REM 设置936编码防止某些中文路径导致批处理失效
@echo off
setlocal enabledelayedexpansion
mode con cols=94 lines=30&color 0a&title 创建CobaltStrikeClient一键启动脚本快捷方式
echo [+] 获得当前路径:%~dp0
set path=%~dp0/cobaltstrike.bat
echo.
if exist %path% (
echo [+] 发现一键启动脚本 : cobaltstrike.bat
echo.
echo [+] 启动脚本路劲:
echo.
echo [+] %path%
echo.
goto :creat
) else (
echo [-] 注意,未发现启动脚本 cobaltstrike.bat ,请注意是否改名,程序退出...
echo.
pause
exit
)
:creat
echo [+] 开始创建快捷方式...
echo.
rem 设置程序的完整路径(必要)
set Program=%path%
rem 设置快捷方式名字(必要)
set LinkName=CobaltStrikeClient
rem 程序工作路径
set WorkDir=%~dp0
rem 设置快捷方式说明
set Desc=CobaltStrike4.4_Client一键启动
rem 设置快捷方式图标
set icon=%~dp0/cobaltstrike.ico
if not defined WorkDir call:GetWorkDir "%Program%"
(echo Set WshShell=CreateObject("WScript.Shell"^)
echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LinkName%.lnk"^)
echo oShellLink.TargetPath="%Program%"
echo oShellLink.WorkingDirectory="%WorkDir%"
echo oShellLink.WindowStyle=1
echo oShellLink.Description="%Desc%"
echo oShellLink.IconLocation="%icon%"
echo oShellLink.Save)>makelnk.vbs
echo [+] 桌面快捷方式创建成功!!
echo.
makelnk.vbs
del /f /q makelnk.vbs
pause
goto :eof
:GetWorkDir
set WorkDir=%~dp1
set WorkDir=%WorkDir:~,-1%
pause
goto :eof
CobaltStrikeServer
chcp 936
REM 设置936编码防止某些中文路径导致批处理失效
@echo off
setlocal enabledelayedexpansion
mode con cols=94 lines=30&color 0a&title 创建CobaltStrikeServer一键启动脚本快捷方式
echo [+] 获得当前路径:%~dp0
set path=%~dp0/teamserver.bat
set path2=%~dp0/start_server.bat
echo.
if exist %path% (
echo [+] 发现启动脚本 : teamserver.bat
echo [+] 启动脚本路劲:
echo [+] %path%
goto :start
)else (
echo [-] 注意,未发现启动脚本 teamserver.bat ,请注意是否改名...
pause
exit
)
:start
if exist %path2% (
echo [+] 发现一键启动脚本 : start_erver.bat
echo [+] 启动脚本路劲:
echo [+] %path2%
goto :creat
)else (
echo [-] 注意,未发现启动脚本 start_erver.bat ,请注意是否改名...
pause
exit
)
:creat
echo [+] 开始创建快捷方式...
echo.
rem 设置程序的完整路径(必要)
set Program=%path2%
rem 设置快捷方式名字(必要)
set LinkName=Start_CobaltStrikeServer
rem 程序工作路径
set WorkDir=%~dp0
rem 设置快捷方式说明
set Desc=CobaltStrike_Server一键启动
rem 设置快捷方式图标
set icon=%~dp0/teamserver.ico
if not defined WorkDir call:GetWorkDir "%Program%"
(echo Set WshShell=CreateObject("WScript.Shell"^)
echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LinkName%.lnk"^)
echo oShellLink.TargetPath="%Program%"
echo oShellLink.WorkingDirectory="%WorkDir%"
echo oShellLink.WindowStyle=1
echo oShellLink.Description="%Desc%"
echo oShellLink.IconLocation="%icon%"
echo oShellLink.Save)>makelnk.vbs
echo [+] 桌面快捷方式创建成功!!
echo.
makelnk.vbs
del /f /q makelnk.vbs
pause
goto :eof
:GetWorkDir
set WorkDir=%~dp1
set WorkDir=%WorkDir:~,-1%
pause
goto :eof