Cobalt Strike

一些概念

Cobalt Strike简称cs,是一款渗透神器,主要用团队作战,由一个服务端和多个客户端组成,能让多个攻击者同时连接到团队服务器上,共享攻击资源与目标信息。是一款GUI的框架式渗透工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,win exe木马生成,win dll木马生成,java木马生成,office宏病毒生成,木马捆绑;钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等等。

关于Beacon 深入了解 Beacon 种类及其原理 - 先知社区 (aliyun.com)

Beacon 是 Cobalt Strike 运行在目标主机上的 Payload ,我们可以将它视为 “窃听器” ,可以配合各种方式(可执行文件、Word 文档、目标主机上的漏洞)最终组成一个我们熟悉的名词 —— 木马,最终送达到目标主机上,长期的控制它

![1728993921865](Cobalt Strike/1728993921865.png)

Cobalt Strike安装及beacon上线

参考这篇文章:

红队内网渗透神器–CobaltStrike安装教程-CSDN博客

下载下来以后是这个界面

![1728999224414](Cobalt Strike/1728999224414.png)

首先我们要先运行下teamserver.bat

1
teamserver.bat ipv4地址 密码

teamserver.bat 启动后,会在指定的服务器上运行一个后台服务,管理所有 Beacon 的通信和命令执行。团队服务器负责协调客户端的各种操作(如生成 Payload、管理 Beacon、执行攻击任务等)。

要以管理员权限启动,成功以后长这样

![1728999331902](Cobalt Strike/1728999331902.png)

显示正在监听端口50050,用于与 Cobalt Strike 客户端(GUI)建立通信。
还有 SSL 证书的 SHA256 哈希值,用来确认,防止中间人攻击

接下来我们启动客户端 cs.bat

双击就可以启动了,配置下信息,密码就是之前自己设置的
![1728999561492](Cobalt Strike/1728999561492.png)

成功进入Cobalt Strike的客户端

![1728999646290](Cobalt Strike/1728999646290.png)

现在我们来生成一个Beacon,然后让靶机运行,看看效果
点击这里生成一个EXE

![1728999718775](Cobalt Strike/1728999718775.png)

这里自己配置一下

![1728999768885](Cobalt Strike/1728999768885.png)

然后保存一下生成出来的beacon保存一下

![1728999803735](Cobalt Strike/1728999803735.png)

然后丢到靶机里面运行一下(关闭杀软)
![1728999897790](Cobalt Strike/1728999897790.png)

可以发现已经成功上线了

![1728999868345](Cobalt Strike/1728999868345.png)

除了直接生成我们windows可执行程序外,cobalt strike还提供了一种更适合我们做免杀的方式,那就 是shellcode的形式。

![1729001194564](Cobalt Strike/1729001194564.png)

stage&stageless

想要把beacon植入到目标机器上,那么无非就是两种情况:

1.钓鱼

2.webshell上传beacon

那么问题就来了,我们现在的beacon由于配置文件等各种问题,生成出来的beacon较大,目标环境又 因为各种限制问题,比如不出网,那么这个时候你需要做代理,这个代理也不一定稳定等各种问题,导致了你无法将一个较大的文件上传。这个时候分阶段(stage)的思想就应运而生:我们还是植入一个 beacon,并不包含配置信息,或者各种功能等等,功能仅仅是从服务端(teamserver)拉取更多的配 置文件信息和一些其他的功能实现。这样的好处在于我们投递beacon是一个相对来说体积较小的文件,从而规避了网络带来的各种影响。

在cobalt strike中,直观的感受,生成的windows可执行程序载荷中,后缀有一个(s)的,即为stageless的beacon。同样生成的beacon,他们的体积有十倍多的差距。

![1729000070499](Cobalt Strike/1729000070499.png)

两个beacon都可以上线,但是实际上他们的上线方式是不一样的。

stage 流程

  1. 申请一个块儿内存(allocate memory)

  2. 复制Stager去这一块儿内存里

  3. 创建一个线程,运行这个Stager

  4. 这个Stager会再次申请一块儿内存(allocate memory)

  5. Stager去下载加密的payload,写入申请的内存中

  6. Stager把执行流程转递给这个加密的payload

  7. 加密的payload自解密成Reflective DLL

  8. 然后把执行流程传递给Reflective DLL

  9. Reflective DLL 申请一个块儿内存(allocate memory)

  10. 然后初始化自己在新的内存里面

  11. 最后reflective DLL 调用payload的入口点函数

stageless 流程

  1. 申请一个块儿内存(allocate memory)

  2. 复制stageless去这一块儿内存里

  3. 创建一个线程,运行这个stageless

  4. 这个Stager会再次申请一块儿内存(allocate memory)

  5. Stager去下载加密的payload,写入申请的内存中

  6. Stager把执行流程转递给这个加密的payload

  7. 加密的payload自解密成Reflective DLL

  8. 然后把执行流程传递给Reflective DLL9. Reflective DLL 申请一个块儿内存(allocate memory)

  9. Reflective DLL 申请一个块儿内存(allocate memory)

  10. 然后初始化自己在新的内存里面

  11. 最后reflective DLL 调用payload的入口点函数

stage和stageless的优缺点

stage的优点:初始 Stager 通常很小,能够快速传输和执行,减少被检测的风险。

stage的缺点: 需要稳定的网络连接来下载后续有效载荷,如果网络连接被中断,攻击可能失败。 尤其是以windows defender和一些其他国外的杀软会重点关注stage拉去更多的shellcode这个过程,我们是需要尽量避免的。

反过来就是stageless的优缺点

c2profile

它可以自定义一些功能,比如你的流量特征,shellcode中一些字符串的替换,pe文件的敏感标识替换,包括申请内存,注入等等使用的 winapi,shellcode的混淆,对一系列功能的自定义。在一些免杀视频中,你会发现他们的shellcode生成出来并未经过处理,但杀软似乎对此无动于衷,而你手中的cs生成的shellcode一落地就被杀,很有可能是因为别人配置了profile的原因,有了自定义的选项,启动teamserver