type
Post
status
Published
date
May 18, 2022
slug
cobaltstrike
summary
tags
学习
category
学习思考
icon
password

java环境安装

windows安装java

JDK的下载与安装
jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择与电脑系统匹配的版本进行下载(Windows系统如果是32位下载Windows x86,64位下载Windows x64)
Java安装步骤很简单,如跟你不想改变安装路径,就直接点击下一步即可,安装时要记住自己安装路径,因为后面需要用到 默认路径是:C:\Program Files\Java\jdk1.8.0_333和C:\Program Files\Java\jre1.8.0_333,第一个是jdk(开发)的路径,第二个是jre(运行)路径,如果你不想安装在默认路径,安装在其他路径建议将这两个安装在同一个目录下。
notion image
JAVA环境变量配置
打开此电脑右击鼠标,选择属性打开系统设置,点击高级程序设置
notion image
打开环境变量以后点击系统变量的新建(不要使用用户变量)
notion image
我这里提前配置好了,所以变量都在这里面.
JAVA_HOME变量
下一步就是开始新建JAVA_HOME变量(单词大写,符合是英文),如果你是用默认安装路径可以直接复制使用。我的版本是jdk1.8.0_333,不同版本后面的不一样。
notion image
JAVA_HOME
C:\\Program Files\\Java\\jdk1.8.0_333
Path变量
找到系统变量中的Path变量,选中然后点击编辑
notion image
然后点击新建,这里都一样,可以直接复制使用
%JAVA_HOME%\\bin
继续点击新建,为了确保jre在运行时不会出现问题
%JAVA_HOME%\\jre\\bin
notion image
ClassPath环境变量
点击系统变量新建然后在新建系统变量框里面输入下面内容即可
Classpath
.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%\\lib\\tools.jar;
⚠️
注意前面有“.”和“;”一定是英文状态下的符号
notion image
最后点击确定,然后关闭,环境变量到此就设置完成了
JAVA运行环境验证
打开cmd,输入java -version,点击回车
notion image
这样就证明你环境变量设置成功。

Linux安装java

下面是几种常见的 Linux 发行版的安装命令
# Debian/Ubuntu sudo apt-get install -y default-jre-headless
#CentOS 8.0+ sudo dnf install -y java-1.8.0-openjdk #对于 CentOS 8.0 以下的服务器,请输入下面的命令 #sudo yum install -y java-1.8.0-openjdk
#Arch Linux sudo pacman -S --noconfirm jdk8-openjdk

CS下载、破解与汉化

官方包下载

官方hash验证地址: https://verify.cobaltstrike.com/
notion image
windows 验证命令
certutil -hashfile cobaltstrike.jar SHA256
notion image
sha256校验码一致,说明文件为官网版本(原版)

破解与汉化

下载CobaltStrike 4.x通用白嫖及汉化加载器CSAgent

采用javaagent+javassist的方式动态修改jar包,可直接加载原版cobaltstrike.jar,理论上支持到目前为止的所有4.x版本

把文件放在一起

解压CSAgent.zip,将原版cobaltstrike.jar放到解压目录中,确保CSAgent.jar、resources文件夹、scripts文件夹和cobaltstrike.jar处于同级目录

CS启动与连接

服务端启动

linux

启动参数 ./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD] 必填参数host 本服务器外网IP/域名 必填参数password Client GUI连接时需要输入的密码 可选参数Malleable C2 communication profile 指定C2通信配置文件 该功能体现了CS的强大扩展性 可选参数kill date 指定所有payload的终止日期 这里用 ./teamserver 192.168.0.120(本机ip) 123456(登入密码)

windows

windows启动服务端
命令行启动teamserver.bat,参数与linux一致
新建 teamserver.bat 文件 内容如下:
@echo off :check_java   java -version >nul 2>&1   if %errorLevel% == 0 (       goto:check_permissions   ) else (       echo [-] is Java installed?       goto:eof   ) :check_permissions   echo [+] Administrative permissions required. Detecting permissions...   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 [+] Success: Administrative permissions confirmed. del %TempFile_Name% 1>nul 2>nul       goto:check_certificate   ) else (       echo [-] Failure: Current permissions inadequate.       goto:eof   ) :check_certificate   set certificate=".\cobaltstrike.store"   if exist %certificate% (       goto:test_arguments   ) else (       echo [!] cobaltstrike.store not fond!       echo [!] generating the cobaltstrike.store!       echo [!] Command: keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=Major Cobalt Strike, OU=AdvancedPenTesting, O=cobaltstrike, L=Somewhere, S=Cyberspace, C=Earth" keytool -keystore ./cobaltstrike.store -storepass 123456 -keypass 123456 -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 ^<host^> ^<password^> [/path/to/c2.profile] [YYYY-MM-DD]       echo     ^<host^> is the default IP address of this Cobalt Strike team server       echo     ^<password^> is the shared password to connect to this server       echo     [/path/to/c2.profile] is your Malleable C2 profile       echo     [YYYY-MM-DD] is a kill date for Beacon payloads run from this server       goto:eof   ) else (       goto:run_cobal   ) :run_cobal   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=123456 -server -XX:+AggressiveHeap -XX:+UseParallelGC --add-opens=java.base/java.lang.reflect=ALL-UNNAMED -classpath ./cobaltstrike.jar -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 server.TeamServer %*

客户端连接

windows

cobalstrike.bat 直接双击启动
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en -jar cobaltstrike.jar
无窗口启动
@echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin REM java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -Duser.language=en -jar cobaltstrike.jar

linux

start.sh
java -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -javaagent:CSAgent.jar=5e98194a01c6b48fa582a6a9fcbb92d6 -jar cobaltstrike.jar $*

C2隐藏

无论是权限维持还是增加溯源成本, C2 隐藏 、流量加密,在实际的攻防对抗中还是很有必要的

1.修改默认端口

cobalt strike 服务端 默认50050端口,修改也很简单。只需要编辑teamserver文件,将50050修改为想要更改的端口即可。
vim your_cs_path/teamserver

2.流量特征混淆

我们cs的客户端/服务端的流量通信,大部分流量审计软件,都能检测到cs默认的通信流量。
 
从零开始的白加黑免杀VMware虚拟机安装ESD镜像文件