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

创建桌面快捷方式

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
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