
文章目录流程总结角色表CS为什么需要一个客户端和一个服务器1. 逻辑职责分离轻量化前端 重量级后端2. ⚡ 稳定性与“断线重连”核心生存机制3. 安全隔离保护核心“私钥”与基础设施CS生成baecon的详细流程1添加cs http beacon监听2生成木马Payload流程解释Beacon 的主要类型为什么要先用蚁剑再上传CS的马名词解释1. SMBServer Message Block服务器消息块协议2. PsExecPowershell Execute微软官方远程执行工具3. Mimikatz密码抓取神器4.Payload、Beacon、Loader 的定义域关系包含与被包含5.SOCKS流程总结攻击始于对外网Web服务器IP: 192.168.59.131的 Weblogic服务安全风险的利用成功注入蚁剑内存马后获取了该服务器的控制权限。随后上传Cobalt Strike木马建立了初始的Beacon命令控制通道并进一步完成本地提权及防火墙关闭操作巩固了攻击立足点。在控制Web跳板机后以其内网IP10.10.10.80为据点展开内网横向探测。通过端口扫描识别出核心资产域控制器DC, 10.10.10.10与内网办公主机PC, 10.10.10.201。接下来利用在跳板机上捕获的密码凭证结合专为内网横向移动设置的SMB监听器中转会话通过 PsExec 方式成功横向移动至域控制器并使其作为子Beacon上线至Cobalt Strike团队服务器标志着域控已沦陷。最终借助在域控制器上获取的域管理员凭据以同样的 PsExec 手法及 SMB监听器 路径实现对内网PC主机的控制。至此形成了一条从外部Web服务安全风险利用到内网域环境完全接管的完整攻击链。角色表本次渗透环境中攻击者从外网利用Weblogic安全风险向Web服务器 外网192.168.59.131/内网10.10.10.80植入蚁剑内存马并建立CS初始据点以内网Web服务器为跳板通过SMB监听中转和PsExec横向移动先后控制域控制器10.10.10.10和办公计算机10.10.10.201最终实现从外网突破到域控接管的完整攻击链。CS为什么需要一个客户端和一个服务器Cobalt Strike 采用客户端Client 服务器Team Server的分离架构是出于安全、协作、稳定三大核心实战需求。可以这样理解服务器是“大脑”和“四肢”负责干活客户端是“眼睛”和“手”负责指挥。具体原因可以从以下四个维度来深度拆解1. 逻辑职责分离轻量化前端 重量级后端服务器Team Server运行在Linux或Win上是一个纯Java控制台程序。它负责**“脏活累活”**维护所有Beacon的TCP/UDP/HTTP/SMB连接、处理任务队列、存储日志、解析C2配置文件Malleable C2。客户端GUI运行在任意系统上是一个Swing图形界面程序。它只负责**“展示”和“点选”**。当你点击“执行命令”时客户端只是把这条指令通过加密通道发给Team Server由Server去转发给Beacon。2. ⚡ 稳定性与“断线重连”核心生存机制红队攻击机你的笔记本电脑往往处于不稳定的网络环境中如移动热点、VPN切换、甚至需要关机下班。架构优势Team Server 必须是 24 小时不间断运行的。它驻留在云端VPS上拥有固定的公网IP和稳定的网络带宽。实战价值如果你的笔记本电脑死机、断网或关机已植入目标主机的 Beacon 完全不受影响它们依然会按心跳间隔回连VPS上的Team Server。等你重新打开客户端连上服务器你会发现所有会话依然在线可以继续下发命令。如果CS是单机版一旦断网所有木马上线通道全部断开目标主机直接脱管。3. 安全隔离保护核心“私钥”与基础设施Team Server 承载着最敏感的数据——私钥SSL证书、加密配置以及大量的日志记录。架构优势客户端只负责展示图形界面GUI不处理任何加密通信逻辑。所有Beacon的加解密、DNS解析、HTTP响应解析都在Team Server上完成。实战价值防溯源即使队员的电脑被反制或抓包由于客户端不存储私钥攻击者无法从客户端抓取的流量中逆向出Beacon的通信密钥。防误操作管理员可以对Team Server设置复杂的访问密码和配置文件profile即便客户端泄露对方不知道密码也连不上服务器无法获取已控主机列表。CS生成baecon的详细流程1添加cs http beacon监听添加cs监听器选择 payload 类型Beacon HTTP并配置回连的IP地址团队服务器的IP地址 192.168.59.128和端口10087任意不冲突即可监听器名称设为test。2生成木马Payloadpayload 是将要投放到目标主机上的可执行文件即Beacon代理。在菜单栏-有效载荷P的菜单下 选择“Windows 可执行文件Stageless”选择格式后会弹出一个配置窗口选择我们刚才创建的TEST监听器。流程解释Beacon 的生成简单来说就是在 C2 服务器上先定义好通信规则Listener然后将这些规则“嵌入”到一个核心的 Beacon DLL 模板中最后打包成一个可执行文件。这个过程可以分为三个核心步骤 第一步定义“信使”的规则——创建监听器 (Listener)在生成任何 Beacon 之前必须先创建监听器。它就像是为“信使”设定的行动指南决定了它将如何与“总部”Team Server联系。在 Cobalt Strike 的Cobalt Strike - Listeners菜单中可以创建。监听器需要定义的关键信息包括通信协议 (Payload Type)决定 Beacon 使用哪种“路线”与 C2 通信是后续生成不同类型 Beacon 的基础。C2 服务器信息包括 C2 服务器的 IP 地址或域名以及通信端口。其他配置如通信的加密方式、SMB Beacon 的管道名称Pipe Name、DNS Beacon 的 DNS 记录等。⚙️ 第二步锻造“信使”本体——Beacon 的生成流程当你配置好监听器并选择生成 payload 时Cobalt Strike 会在后台执行一个复杂的“锻造”过程将你的配置嵌入到一个通用的 Beacon 模板中。选取核心模板CS 会根据你选择的目标架构如 x86 或 x64从它的资源文件中提取一个核心的 Beacon DLL 文件。这是一个功能完整但未配置的通用 payload。嵌入配置 (Patching)这是最关键的步骤称为exportBeaconStage。程序会解析你创建的监听器配置C2Profile并将其转换成特定格式的数据。混淆与伪装为了防止被安全软件查杀CS 会对嵌入的配置数据进行混淆例如用随机字符填充剩余空间并逐字节进行异或加密。封装与打包处理完的 Beacon 会通过pe.process被进一步加工添加反射加载器Reflective Loader等核心组件。反射加载器能让 Beacon 在内存中直接加载并运行无需写入磁盘。生成最终文件最后CS 会将处理完成的 Beacon 与一个合适的Loader加载器结合生成你最终得到的.exe、.dll或.ps1文件。 第三步“信使”的激活与潜伏——Beacon 的运行机制生成的 Beacon 文件在目标主机上被执行后便开始了它的工作循环上线Beacon 会按照监听器中的配置尝试连接 C2 服务器并发送一个包含目标主机基本信息的“元数据 (Metadata)”数据包。进入睡眠 (Sleep)成功“报到”后Beacon 会立即进入睡眠状态静默等待。其间隔由Sleep时间如 60s和Jitter抖动用于随机化睡眠时间参数控制。任务循环睡眠结束后Beacon 会“醒来”并执行一次通信循环检查任务向 C2 服务器发送请求检查是否有待执行的任务。执行任务如果有任务如下载文件、执行命令Beacon 会下载并执行。回传结果执行完成后将结果回传给 C2 服务器。再次睡眠完成任务回传后Beacon 再次进入睡眠状态等待下一个循环。Beacon 的主要类型CS 支持多种 Beacon 类型它们在生成时主要区别在于选择的监听器类型不同。Beacon 类型通信方式与特点适用场景HTTP(S) Beacon使用 HTTP/HTTPS 协议通信。流量混杂在正常网页请求中其中 HTTPS 提供了加密信道。最常见的出网方式适用于大多数允许 Web 流量外发的环境。DNS Beacon使用 DNS 协议进行通信。通过 DNS 查询与响应来传递数据。网络出口限制严格只允许 DNS 流量通过的环境。SMB Beacon通过 Windows命名管道 (Named Pipe)进行通信。流量被封装在 SMB 协议中。内网横向移动。不能直接与 C2 通信必须通过一个父 Beacon 链接。TCP Beacon使用 TCP Socket 进行通信。同样是点到点Peer-to-Peer通信需要父 Beacon。与 SMB Beacon 类似用于内网环境但使用 TCP 协议。为什么要先用蚁剑再上传CS的马简单来说先用蚁剑AntSword是为了“站稳脚跟”再上传CSCobalt Strike是为了“扩大战场”。1. 漏洞利用的“一次性”与“不可靠性”在文章场景中攻击者是通过Weblogic的远程代码执行RCE漏洞打入的。这类漏洞的利用过程往往极不稳定执行链脆弱Weblogic的RCE通常通过反序列化数据包触发网络波动、特定的JDK版本、或WAFWeb应用防火墙拦截都可能导致利用失败。命令回显困难很多Java漏洞执行系统命令后没有回显攻击者很难确认命令是否执行成功。权限短暂利用漏洞执行的进程通常是临时的。如果直接在该漏洞利用链中投递CS木马一旦网络掉线或进程结束CS会话就会断开且无法再次触发漏洞进行重连。蚁剑的作用利用漏洞注入一个JSP内存马如文中所述相当于在Web应用的内存中建立了一个“永久后门”。只要Weblogic服务不重启攻击者随时可以通过蚁剑客户端连接进去执行命令和上传文件。这是一个稳定的据点不怕掉线。2. 文件传输的“大小”与“落地”限制CS木马Stager/Beacon无论是生成的artifact.exe还是.dll大小通常都在几百KB到几MB之间且需要落地写入磁盘并赋予执行权限。漏洞利用的限制Weblogic的RCE漏洞通常只能执行单条系统命令如whoami无法将多字节的二进制木马文件通过命令行完整地“吐”到目标磁盘上除非使用极其复杂的Base64编码拆分极易出错。蚁剑的作用蚁剑具有完整的虚拟终端和文件管理功能。拿到蚁剑权限后可以直接将CS木马从攻击机拖拽上传到目标服务器的磁盘目录如/tmp/或C:\temp\这是最稳定、最快捷的文件投递方式。利用漏洞建立蚁剑临时入口 - 通过蚁剑上传CS马并执行建立C2通道 - 即使后续漏洞修复或蚁剑马被删只要CS会话还在且进程存活攻击者依然能控制主机进行内网漫游。一句话归纳蚁剑解决“进不来的问题”初始突破CS解决“怎么动的问题”横向扩展。先用蚁剑是为了给CS提供一个安稳的“登陆场”和“投递员”避免把宝贵的漏洞利用机会浪费在一次性的木马下载上。名词解释1. SMBServer Message Block服务器消息块协议是什么这是Windows系统下最基本的文件共享、打印机共享、命名管道通信的底层协议默认使用445端口。你可以把它理解为Windows内网的“通用语”。在CS中的角色它不仅仅是用来访问共享文件夹的。CS利用SMB协议中的命名管道Named Pipe功能开发了SMB Beacon。这意味着Beacon之间的流量命令和回传数据是封装在SMB协议包里的混杂在正常的网络共享流量中极其隐蔽很难被防火墙拦截因为内网通常不会封堵445端口。2. PsExecPowershell Execute微软官方远程执行工具是什么这是微软Sysinternals套件中一个轻量级远程命令行执行工具。它的核心原理是将自身的一个服务程序PSEXESVC.exe通过SMB/Admin$共享管理员默认共享上传到目标机器的系统目录然后利用服务控制管理器SCM远程启动这个服务从而在目标机器上执行你指定的命令。在CS中的角色CS内部集成了PsExec的功能psexec模块。当你在CS中右键选择“横向移动 - PsExec”时CS会自动生成一个Beacon木马模仿PsExec的逻辑将其投递到内网其他机器上执行从而实现横向扩散。你文章中提到通过PsExec拿下域控用的就是这个原理。3. Mimikatz密码抓取神器是什么这是一款由法国安全研究员Benjamin Delpy开发的、专门用于从Windows内存中提取明文密码、NTLM哈希值、Kerberos票据的神器。它利用Windows的调试权限SeDebugPrivilege读取lsass.exe本地安全认证子系统服务进程内存。在CS中的角色CS将Mimikatz的核心功能封装到了内置命令中。你在Beacon中执行的logonpasswords命令或hashdump实际上就是CS在后台自动调用Mimikatz的模块把抓到的管理员密码如你文章中的1qazWSX直接显示在控制台上。有了明文密码才能配合PsExec去做横向移动。4.Payload、Beacon、Loader 的定义域关系包含与被包含这三个词属于程序代码层次的概念。它们不是并列关系而是**层层嵌套、一步步“唤醒”**的关系。我用集合的概念和“剥洋葱”的例子帮你理清1. 最大集合Payload有效载荷定义在网络安全中Payload泛指攻击者希望目标系统执行恶意功能的核心代码总称。关系它是一个总称全集。只要是具有恶意目的、被投递到目标主机上的代码片段都叫Payload。例子无论是勒索病毒的加密模块还是CS的木马都属于Payload。2. 子集BeaconCS特有的Payload形态定义Beacon 是 Cobalt Strike 专属的一种 Payload 类型。它的最大特点是采用“异步心跳”通信模式睡眠-唤醒-执行任务-回传。关系Beacon ∈ PayloadBeacon 是 Payload 的一个真子集。解释CS生成的恶意代码就是Beacon但Beacon只是所有恶意载荷Payloads中的一种。如果你写了一个Python反弹Shell那也叫Payload但不能叫Beacon。** 3. 最小的“容器”Loader加载器/壳**定义Loader是一段引导程序。它本身不具备具体的恶意功能不负责通信、不负责抓密码它的唯一职责是将真正的 Payload即 Beacon从磁盘、网络或内存中解密、解压并注入到内存中跳转执行。关系Loader 不是 Payload 的一部分而是 Payload 的“搬运工”和“保护壳”。三者结合成最终的 EXE 文件定义域关系图当你生成一个mooyuan2008-http-x64.exe文件时这个文件内部实际上包含两部分按顺序排列层级名称包含关系具体作用外层先执行Loader加载器包含包裹Beacon运行后先在内存中开辟一块空间把里面的Beacon代码解密修复导入表然后跳转执行。目的是绕过杀软的静态文件扫描因为Beacon被加密了。内层后执行Beacon核心逻辑属于Payload 的一种被Loader解压后开始执行CS特有的心跳循环连接你配置的监听器192.168.59.128。抽象称谓全集Payload有效载荷包含Beacon无论是Loader还是Beacon只要是恶意代码整体都可以统称为“Payload”。但严谨地说Payload指的是Beacon那一部分。 一句话总结它们的递进关系文件落地时最终的EXELoader壳Beacon核心。逻辑归属上Payload全集⊃BeaconCS的子集。执行顺序上操作系统先执行Loader- Loader再解包并加载- 内存中运行Beacon- Beacon利用SMB协议通信 - 调用PsExec横向移动 - 执行Mimikatz抓取密码。5.SOCKS在Cobalt Strike和内网渗透中SOCKS是一款让你“把攻击机的网络流量通过被控的跳板机转发进隔离内网”的代理协议。**为了让你彻底明白我从三个维度来拆解1. 它解决了什么“致命”痛点在红队实战中你通常遇到这样的困境跳板机比如那台 Windows Server 2008是一个生产环境它上面绝对不可能安装着你攻击机上的那些利器。你想扫端口跳板机上没有 Nmap也没有 Masscan。你想用 telnet 一个一个测黄花菜都凉了。你想打漏洞你找到了内网的一个 Web 应用想用 Burp Suite 或 Python 写脚本爆破。跳板机是 Windows大概率没有 Python 环境更别说装第三方库了。你想连数据库你发现了内网的 MySQL3306端口想用 Navicat 连上去看看。跳板机只是一个“看门人”的权限它不具备你那台 Kali 或 Win11 攻击机上庞大的黑客工具生态。SOCKS 的作用就是把你家攻击机的整个兵器库通过一条管道投射到内网去。有了 SOCKS 后你在跳板机上开启一个 SOCKS 代理把本机的扫描流量“塞”进这个隧道由跳板机转发给域控。域控看到的是跳板机在访问它而不是你的攻击机。SOCKS 的核心机制它是怎么“跑”流量的SOCKS通常指SOCKS5协议工作在会话层它不关心你传的是什么数据HTTP、HTTPS、SSH、甚至数据库协议都行它只负责“盲目转发”。它在CS中表现为一条“链式通道”你的攻击机工具–CS 团队服务器–跳板机上的 Beacon开启 socks–内网目标机器关键优势因为它是第5层会话层代理所以支持TCP 和 UDP协议SOCKS5支持UDP。这意味着你不仅可以用浏览器访问内网网页还可以用nmap做端口扫描甚至用mstsc远程桌面连接内网机器所有基于TCP/UDP的流量都能走这条隧道。