本文最后更新于 2024-07-26,文章内容可能已经过时。

CobaltStrike

一、CS功能介绍

image-20240613004919670

Cobalt Strike是一款美国Red Team开发的神器,常被业界人称为CS。以Metasploit为基础的GUI框架式工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等,与MSF框架的诸多功能是上完全一致或类似的。主要用于团队作战,可谓是团队必备神器,能让多个测试人员同时连接到团体服务器上,共享测试资源与目标信息和sessions。

Cobalt Strike分为客户端和服务器组件。该服务器称为团队服务器,是Beacon Payload 的控制器,也是Cobalt Strike社交工程功能的主机。团队服务器还存储Cobalt Strike收集的数据,并管理日志记录。

Cobalt Strike团队服务器必须在受支持的Linux系统上运行。要启动Cobalt Strike团队服务器,请使用Cobalt Strike Linux软件包附带的teamserver脚本。

4.0版本至少需要JDK1.8及以上版本,4.4版本至少需要JDK11及以上版本。

4.7版本至少需要JDK11及以上版本。

CS功能点:

Kali Java 17 上直接运行服务器端和客户端

服务器端 运行时 需要指定IP和访问密码

连接时间设定,默认为1分钟一次,可以用 sleep 3 修改为3秒

Windows和Linux客户端,只要安装了Java,均可以运行

截图:与MSF相同

bind_tcp正向连接木马, 用 connect ip port 命令连接 (与MSF相同)

http的payload,用Wireshark抓包理解期规律 (与MSF相同)

Python shell code -> Python加载器:与MSF相同

文件浏览:(MeterPreter中的ls命令或dir命令)

键盘监听:与MSF相同

内网代理:与MSF相同

站点克隆:复制一个一模一样的网页,MSF无此功能

Script Web Delivery:发布一个网站页面

交互式命令:与Meterpreter中执行命令类似

插件加载:可以加载第三方插件,如Ladon等

木马生成:主要专注于Windows内网环境,MSF更广泛

其他更多功能,请探索

只能用于操作windows

免责声明

⚠特别说明:此教程为纯技术教学!严禁利用本教程所提到的漏洞和技术进行非法攻击,本教程的目的仅仅作为学习,决不是为那些怀有不良动机的人提供技术支持!也不承担因为技术被滥用所产生的连带责任!⚠

二、安装

前置环境的安装:

windows安装JDK

jdk-17_windows-x64_bin.exe

  1. 双击安装程序

    image-20240409174648557

  2. 下一步

    image-20240409174741836

  3. 下一步

    image-20240409174845321

  4. 环境变量配置

    • 安装完成后,右击【我的电脑】,点击【属性】;

    • 选择【高级系统设置】选项卡,点击【环境变量】;

    • 在【系统变量】中,设置3项属性:(1)JAVA_HOME,(2)PATH,(3)CLASSPATH

      注:是系统变量,而不是用户变量

      • 【JAVA_HOME 】指明JDK安装路径就是刚才安装时所选择的路径,比如我的是:D:\Program Files\Java\jdk-17,此路径下包括lib,bin,jre等文件夹

        image-20240409175543674

      • 【PATH 】使得系统可以在任何路径下识别java命令,选中系统变量中的 Path点击编辑,然后点击新建,输入 %JAVA_HOME%\bin 即可,全部点击确定。

        image-20240409175800340

      • 【CLASSPATH】 为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,设为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar ,%JAVA_HOME%就是引用前面指定的JAVA_HOME;
        image-20240409175935723

  5. 验证配置

    打开cmd命令行 :

    image-20240409180135279

Linux安装JDK17

1)上传JDK17到Linux

image-20240119163008226

2)jdk解压缩

#解压命令:
tar -zxvf jdk-17_linux-x64_bin.tar.gz

3)配置jdk环境变量

使用vi打开/etc/profile
在末尾行添加
	#set java environment
	JAVA_HOME=/opt/jdk-17.0.10
	CLASSPATH=.:$JAVA_HOME/lib.tools.jar
	PATH=$JAVA_HOME/bin:$PATH
	export JAVA_HOME CLASSPATH PATH
保存退出

重新加载环境变量

source /etc/profile

查看jdk版本

java -version

image-20240119163300282

Linux运行CobaltStrike服务端

1)上传CobaltStrike到Linux

image-20240119163515451

2)解压缩

unzip cobalt_strike_4.7.zip

3)修改权限

修改cobalt_strike_4.7中如下文件的权限为777

image-20240119164704312

启动服务器时 ,需要给两个文件设置执行权限

TeamServerImage 、teamserver

image-20240613010032609

4)启动

./teamserver 服务器端ip 密码
#1.teamserver 启动服务器的程序
#2. IP : 当前服务主机的IP 客户端链接的时候 需要设置这个IP
#3. 密码  在客户端链接链接的时候 需要设置这个密码
#4. 56a06a233bd30f693de25ef12cc19e8b2c92d3eb97dd969a2578df084c376478  发给客户端 ,客户端在连接时 需要验证一下这码

image-20240613005048733

kali运行CobaltStrike客户端

1)上传CobaltStrike到kali并解压缩

image-20240119165449353

2)启动kali客户端

./start.sh

image-20240613005225191

会打开一个界面,输入服务器ip和密码

image-20240613005319715

image-20240119165715358

windows上启动CobaltStrike客户端

image-20240119165832859

启动客户端 ,双击 ddosi.org.bat

要求当前主机上必须安装JDK ,并且配置JAVA_HOME=jdk的根目录

image-20240607111504251

image-20240607111909817

安装CobaltStrike客户端插件

插件是额外开发的功能,为CS框架提供的一些功能 。

image-20240607140448503

1)把插件上传到kali并解压缩

image-20240119165937477

2)安装插件

image-20240119170147636

等主机上线后,右击就可以看到插件的功能列表了

image-20240613005858236

第一次加载的时候 右键点击会出现乱码 ,解决乱码问题 。

修改CS的启动文件 在启动文件里加上 编码 。

ddosi.org.bat :

-Dfile.encoding=UTF-8

java -Dfile.encoding=UTF-8  -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike-client.jar

三、基本工作流程

1、名词解释

(1)C2:Command & Control Server 的简称,也就是命令与控制服务器;

(2)Beacon:植入到受感染系统中的恶意程序,可以请求C2服务器并在受感染系统中执行命令;

(3)Listener:攻击者在C2上运行的服务,可以监听Beacon的请求;

(4)Team Server:Cobalt Strike的服务器组件;

(5)Stager:stager其实是一段很简单的加载器,是socketedi协议请求的一段shellcode,它的作用是向teamserver(C2)请求一段数据,这些数据前是个字节是shellcode的长度,后面是shellcode。接收到数据后跳转到shellcode所在的内存处开始运行。

(6)Stage:stage是无阶段的stager,可以直接理解成,stage是stager与它所请求的数据的集合体。stage比stager更安全,但是体积更大。上述概念与MSF均有一一对应的关系;

(7)Check in:指的是 Beacon 回连主机,回传受害系统的元数据,准 备好进行任务数据通讯的状态。

2、创建监听器

打开“Cobalt Strike” -> "Listeners",在下部窗口中点击“Add”添加一个新的监听器(类似于MSF中的 exploit/multi/handler 模块功能)。内部监听器主要是CS自行使用,外部监听器则是为了与MSF进行配合(以),所以可以暂时不用关心外部监听器。

image-20240607112215158

image-20240219104142278

先创建一个HTTP的Beacon,为HTTP Host和TTP Stager配置相同的IP地址:192.168.112.188,端口和其他选项保持默认即可完成Beacon的创建。(HTTP Port(Bind)这一项是用于C2服务器的端口重定向),另外HTTPS的创建与HTTP除了加密之外,没有其他区别。

image-20240607112605795

2、生成木马

创建好HTTP Beacon后,在菜单“Payloads”下选择一个木马类型,比如“Windows Stager Payload”等,在弹窗中选择对应的Listener。

创建木马

点击菜单(Payloads)

image-20240607112711248

image-20240219104516363

点击“Generate”生成木马程序,直接保存木马:artifact.exe

image-20240219104556384

将上述木马程序复制到目标主机中,双击执行,完成木马上线。

设置一下木马的链接频率 测试实验 设置成 1s

右键选择 -->Sleep 设置 1 就可以 默认单位就是 秒

  1. 连接上之后,所有的功能操作,都是在右键上 ,选择功能 ,但是 功能有限 。

  2. 可以进如命令行操作 右键 -->interact

    使用命令行的时候,需要再命令前 加 shell

3、木马上线后操作

默认情况下,Beacon上线后,每60秒执行一次指令,如果要进行更快的操作,建议进入Interact命令行交互界面,运行命令“sleep 1"调整为每1秒钟执行一次指令连接。

Beacon Commands
===============

    Command                   Description
    -------                   -----------
    help                      帮助,不跟参数则查看所有命令,help command则查看该命令的用法
    argue                     进程参数欺骗
    blockdlls                 在子进程中阻止非Microsoft的DLLs文件
    browserpivot              注入受害者浏览器进程
    bypassuac                 绕过UAC
    cancel                    取消正在进行的下载
    cd                        切换目录
    checkin                   强制让被控端回连一次
    clear                     清除beacon内部的任务队列
    connect                   通过TCP连接到Beacon
    covertvpn                 部署Covert VPN客户端
    cp                        复制文件
    dcsync                    从DC中提取密码哈希
    desktop                   远程VNC
    dllinject                 反射DLL注入进程
    dllload                   使用LoadLibrary将DLL加载到进程中
    download                  下载文件
    downloads                 列出正在进行的文件下载
    drives                    列出目标盘符
    elevate                   尝试提权
    execute                   在目标上执行程序(无输出)
    execute-assembly          在目标上内存中执行本地.NET程序
    exit                      退出beacon
    getprivs                  对当前令牌启用系统权限
    getsystem                 尝试获取SYSTEM权限
    getuid                    获取用户ID
    hashdump                  转储密码哈希值
    inject                    在特定进程中生成会话
    jobkill                   杀死一个后台任务
    jobs                      列出后台任务
    kerberos_ccache_use       从ccache文件中导入票据应用于此会话
    kerberos_ticket_purge     清除当前会话的票据
    kerberos_ticket_use       从ticket文件中导入票据应用于此会话
    keylogger                 键盘记录,这是一个后台任务,在View菜单的KeyStrokes中查看
    kill                      结束进程
    link                      通过命名管道连接到Beacon
    logonpasswords            使用mimikatz转储凭据和哈希值
    ls                        列出文件
    make_token                创建令牌以传递凭据
    mimikatz                  运行mimikatz
    mkdir                     创建一个目录
    mode dns                  使用DNS A作为通信通道(仅限DNS beacon)
    mode dns-txt              使用DNS TXT作为通信通道(仅限D beacon)
    mode dns6                 使用DNS AAAA作为通信通道(仅限DNS beacon)
    mode http                 使用HTTP作为通信通道
    mv                        移动文件
    net                       net命令
    note                      给当前目标机器备注   
    portscan                  进行端口扫描
    powerpick                 通过Unmanaged PowerShell执行命令
    powershell                通过powershell.exe执行命令
    powershell-import         导入powershell脚本
    ppid                      为生成的post-ex任务设置父PID
    ps                        显示进程列表
    psexec                    使用服务在主机上生成会话
    psexec_psh                使用PowerShell在主机上生成会话
    psinject                  在特定进程中执行PowerShell命令
    pth                       使用Mimikatz进行传递哈希
    pwd                       当前目录位置
    reg                       查询注册表
    rev2self                  恢复原始令牌
    rm                        删除文件或文件夹
    rportfwd                  端口转发
    run                       在目标上执行程序(返回输出)
    runas                     以另一个用户权限执行程序
    runasadmin                在高权限下执行程序
    runu                      在另一个PID下执行程序
    screenshot                屏幕截图
    setenv                    设置环境变量
    shell                     cmd执行命令,如shell ipconfig
    shinject                  将shellcode注入进程
    shspawn                   生成进程并将shellcode注入其中
    sleep                     设置睡眠延迟时间
    socks                     启动SOCKS4a/5代理
    socks stop                停止SOCKS4a/5代理
    spawn                     生成一个会话 
    spawnas                   以其他用户身份生成会话
    spawnto                   将可执行程序注入进程
    spawnu                    在另一个PID下生成会话
    ssh                       使用ssh连接远程主机
    ssh-key                   使用密钥连接远程主机
    steal_token               从进程中窃取令牌
    timestomp                 将一个文件时间戳应用到另一个文件
    unlink                    断开与Beacon的连接
    upload                    上传文件
    wdigest                   使用mimikatz转储明文凭据
    winrm                     使用WinRM在主机上生成会话
    wmi                       使用WMI在主机上生成会话
4、探索右键功能

木马在线后,右键点击目标主机,可以看到很多与Armitage和MSF类似的快捷功能。

image-20211207224203363

四、Attacks菜单功能

1、Packages
HTML Application   # 生成(executable/VBA/powershell)这三种原理实现的恶意HTA木马文件
MS Office Macro   # 生成office宏病毒文件
Payload Generator   # 生成各种语言版本的payload
USB/CD AutoPlay   # 生成利用自动播放运行的木马文件
Windows Dropper   # 捆绑器能够对任意的正常文件进行捆绑(免杀效果差)
Windows Executable   # 生成可执行exe木马
Windows Executable(Stageless)   # 生成无状态的可执行exe木马
2、Web Drive-by
Manage   # 对开启的web服务进行管理
Clone Site   # 克隆网站,可以记录受害者提交的数据
Host File   # 提供文件下载,可以选择Mime类型
Scripted Web Delivery   # 为payload提供web服务以便下载和执行,类似于Metasploit的web_delivery 
Signed Applet Attack   # 使用java自签名的程序进行钓鱼攻击(该方法已过时)
Smart Applet Attack   # 自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本(该方法已过时)
System Profiler   # 用来获取系统信息,如系统版本,Flash版本,浏览器版本等
3、Spear Phish 鱼叉钓鱼邮件

image-20220426011749775

五、特色功能

1、IE进程注入

在上线主机上右键,选择“”->通过注入IE进程,并设置浏览器代理,可以直接获取浏览器的Cookie权限。

(1)先利用Process List进程列表,获取到IE的进程,并设置为PPID。

image-20211208011605407

(2)在上线主机上右键选择“Browser Pivot“,并在弹窗中设置代理端口号(保持默认也可以)。

image-20211208011349011

image-20211208011823224

(3)确认输出的代理地址和端口。

image-20211208010346954

(4)在Kali的浏览器上设置代理,并使用Kali浏览器访问目标主机同一个网站,获取网站登录后的权限。

(5)在任意能够访问Kali的主机上,将浏览器代理设置为 192.168.0.148:4133,均可以同步目标主机上的用户权限。

image-20211208020818087

2、站点克隆

image-20220426014134085

并可以记录站点输入的内容,在Web Log中查看即可。

3、内网穿透

image-20211206022643993

在CS上为Windows2016开启Socks5代理,并在Kali浏览器在配置代理地址CS-Server-IP:XXX,类型为Socks V5

image-20211208043734881

完成代理后,直接在Kali上访问:http://10.10.10.129/dashboard/phpinfo.php,如果是非HTTP服务,则直接编辑/etc/proxychains4.conf文件,配置为系统代理即可。

4、插件管理

在CS菜单中选择Script Manager,然后点击Load,加载插件主目录下的cna文件, 即可正常加载插件。(以下展示的是TaoWu插件的功能界面)。

image-20230813205713768

5、键盘监听

先进入交互式命令行,运行keylogger,这是一个后台任务,可以使用jobs命令查看。然后在视图中打开KeyStrokes查看。

image-20230813211436606

6、删除数据

在CS服务器目录下删除data目录即可删除所有数据。

其他用法:

Cobalt Strike|发送钓鱼邮件:https://www.secpulse.com/archives/124891.html

https://blog.csdn.net/weixin_39527911/article/details/111223494

基础用法介绍:https://cloud.tencent.com/developer/article/1759944

巨龙拉冬:http://k8gege.org/

下载4.4版本:https://www.cnblogs.com/mantou0/p/16061147.html

yunzhongzhuan.com/#sharefile=cZ5voWkm_9644
解压密码: www.ddosi.org

汉化下载CSAgent.zip

github地址https://github.com/Twi1ight/CSAgent.zip

知乎的较全的教程:https://zhuanlan.zhihu.com/p/359251293

CS加载插件,Script Manager中Load .cna文件

https://github.com/harleyQu1nn/AggressorScripts

https://github.com/bluscreenofjeff/AggressorScripts

https://github.com/michalkoczwara/aggressor_scripts_collection

https://github.com/vysecurity/Aggressor-VYSEC

https://github.com/killswitch-GUI/CobaltStrike-ToolKit

https://github.com/ramen0x3f/AggressorScripts

https://github.com/FortyNorthSecurity/AggressorAssessor

https://github.com/threatexpress/persistence-aggressor-script

https://github.com/threatexpress/aggressor-scripts

https://github.com/branthale/CobaltStrikeCNA

https://github.com/gaudard/scripts/tree/master/red-team/aggressor

https://github.com/001SPARTaN/aggressor_scripts

https://github.com/Und3rf10w/Aggressor-scripts

https://github.com/rasta-mouse/Aggressor-Script

https://github.com/vysec/Aggressor-VYSEC

https://github.com/threatexpress/aggressor-scripts

https://github.com/threatexpress/red-team-scripts

https://github.com/rsmudge/ElevateKit

https://github.com/vysec/CVE-2018-4878

https://github.com/harleyQu1nn/AggressorScripts

https://github.com/bluscreenofjeff/AggressorScripts

https://github.com/360-A-Team/CobaltStrike-Toolset

https://github.com/ars3n11/Aggressor-Scripts

https://github.com/michalkoczwara/aggressor_scripts_collection

https://github.com/killswitch-GUI/CobaltStrike-ToolKit

https://github.com/ZonkSec/persistence-aggressor-script

https://github.com/rasta-mouse/Aggressor-Script

https://github.com/RhinoSecurityLabs/Aggressor-Scripts

https://github.com/Kevin-Robertson/Inveigh

https://github.com/Genetic-Malware/Ebowla

https://github.com/001SPARTaN/aggressor_scripts

https://github.com/gaudard/scripts/tree/master/red-team/aggressor

https://github.com/branthale/CobaltStrikeCNA

https://github.com/oldb00t/AggressorScripts

https://github.com/p292/Phant0m_cobaltstrike

https://github.com/p292/DDEAutoCS

https://github.com/secgroundzero/CS-Aggressor-Scripts

https://github.com/skyleronken/Aggressor-Scripts

https://github.com/tevora-threat/aggressor-powerview

https://github.com/tevora-threat/PowerView3-Aggressor

https://github.com/threatexpress/persistence-aggressor-script

https://github.com/FortyNorthSecurity/AggressorAssessor

https://github.com/mdsecactivebreach/CACTUSTORCH

https://github.com/C0axx/AggressorScripts

https://github.com/offsecginger/AggressorScripts

https://github.com/tomsteele/cs-magik

https://github.com/bitsadmin/nopowershell

https://github.com/SpiderLabs/SharpCompile

https://github.com/realoriginal/reflectivepotato