CobaltStrike简介与使用
0x00 简介
1. 什么是CobaltStrike?可以用来做什么?
CobatStrike是一款基于java编写的全平台多方协同后渗透攻击框架。CobaltStrike集成了端口转发、端口扫描、socket代理、提权、钓鱼、远控木马等功能。该工具几乎覆盖了APT攻击链中所需要用到的各个技术环节。
2. CobaltStrike的文件结构
│ agscript 拓展应用的脚本 │ c2lint 检查profile的错误异常 │ cobaltstrike │ cobaltstrike.jar 客户端程序 │ icon.jpg │ license.pdf │ readme.txt │ releasenotes.txt │ teamserver 服务端程序 │ update │ update.jar │ └─third-party 第三方工具 README.vncdll.txt vncdll.x64.dll vncdll.x86.dll
3. CobaltStrike支持个人定制
- 修改源码进行深度的裁剪定制(如免杀)
- 修改c2配置,改变协议原本流量特征以躲避各种ids/ips拦截
- 使用AggressorScript脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等
- 可以引用其他的通讯框架ExternalC2,ExternalC2是由Cobalt Strike提出的一套规范/框架,它允许黑客根据需要对框架提供的默认HTTP(S)/DNS/SMB C2 通信通道进行扩展。
0x01 使用CobaltStrike
以下为CobaltStrike软件包里面所包含的内容,要开始使用运行软件包里的程序,需要在服务器和客户端都安装并配置好java运行环境
1. 启动CobaltStrike
CobaltStrike分为客户端和服务端。Cobalt Strike 需要团队服务器才能使用,服务端被称为团队服务器,是Beacon有效负载的控制器,团队服务器还会存储CobaltStrike收集的数据,并管理日志记录teamserver就为服务端的运行程序。
1) 启动teamserver
CobaltStrike团队服务器teamserver必须以root身份运行在所支持的操作系统上。 需要文件 teamserver 与 cobaltstrike.jar。
要启动团队服务器,必须以root方式启动运行,如下:
sudo ./teamserver [/path/to/c2.profile] [YYYY-MM-DD]
# 执行./teamserver的时候,有两个必要参数和两个可选参数
# :是团队服务器的 IP 地址。Cobalt Strike 使用此值作为其默认的服务器主机
# :是团队成员用于将 Cobalt Strike 客户端连接到团队服务器的密码
# [/path/to/c2.profile] :指定 Malleable C2 通信配置文件
# [YYYY-MM-DD] :此参数指定以 YYYY-MM-DD 为格式的结束日期。团队服务器会将此结束日期嵌入其生成的每个 Beacon 中。 Beacon 有效负载将拒绝在此结束日期或之后运行。如果 Beacon 有效载荷在此结束日期或之后唤醒,它也将被运行退出。
备注:如上截图,当团队服务器启动时,它将发布团队服务器 SSL 证书的 SHA256 哈希值。您应 该将此哈希值分发给您的团队成员。当您的团队成员连接时, Cobalt Strike 客户端会在向团队服务器进行身份验证之前询问是否验证此哈希。这是防止中间人攻击的重要保护。
2) 启动Cobalt Strike Client
使用Cobalt Strike 客户端(也就是安装包里的cobaltstrike.jar程序)连接到团队服务器 ,运行的时候不用添加任何参数。具体方式如下:
java -jar cpbaltstrike.jar # 直接双击或者执行该命令
备注:客户端需要填入参数的含义
Host:指定团队服务器的 ip 地址
Port: 默认端口是 50050.很少有人更改此设置。
User:团队服务器上的用户名称,此处可任意填写自己想使用的用户名。
Password:填入团队服务器的密码,也就是我们启动团队服务器使得第二个参数值。
点击Connect 连接到 CobaltStrike 团队服务器。如果这是您与此团队服务器的第一次连接, Cobalt Strike将询问您是否识别此团队服务器的 SSL 证书的 SHA256 哈希值。如果需要,请点击 OK, Cobalt Strike 客户端将连接到服务器。 Cobalt Strike 还会记住这个SHA256 哈希,以便以后方便连接。
可以通过 Cobalt Strike - > Preferences - > Fingerprints 管理这些哈希值。
Cobalt Strike 会跟踪您连接的团队服务器并记住您的信息。从连接对话框的左侧选择其中一个团队服务器配置文件,以使用其信息自动填充连接对话框。我们也可以通过 Cobalt Strike - > Preferences - > Team Servers 修改此连接。
到此呢,对于CobaltStrike的服务端和客户端都已经启动完成。接下来就是对CobaltStrike的各个功能模块进行详细的了解。
0x02 参考来源
404师傅:https://github.com/aleenzz/Cobalt_Strike_wiki
backlion师傅:https://www.cnblogs.com/backlion/
klion师傅:https://t.zsxq.com/JufyZzj