Cobalt Strike(持续更新)
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 流程
申请一个块儿内存(allocate memory)
复制Stager去这一块儿内存里
创建一个线程,运行这个Stager
这个Stager会再次申请一块儿内存(allocate memory)
Stager去下载加密的payload,写入申请的内存中
Stager把执行流程转递给这个加密的payload
加密的payload自解密成Reflective DLL
然后把执行流程传递给Reflective DLL
Reflective DLL 申请一个块儿内存(allocate memory)
然后初始化自己在新的内存里面
最后reflective DLL 调用payload的入口点函数
stageless 流程
申请一个块儿内存(allocate memory)
复制stageless去这一块儿内存里
创建一个线程,运行这个stageless
这个Stager会再次申请一块儿内存(allocate memory)Stager去下载加密的payload,写入申请的内存中Stager把执行流程转递给这个加密的payload加密的payload自解密成Reflective DLL然后把执行流程传递给Reflective DLL9. Reflective DLL 申请一个块儿内存(allocate memory)Reflective DLL 申请一个块儿内存(allocate memory)
然后初始化自己在新的内存里面
最后reflective DLL 调用payload的入口点函数
stage和stageless的优缺点
stage的优点:初始 Stager 通常很小,能够快速传输和执行,减少被检测的风险。
stage的缺点: 需要稳定的网络连接来下载后续有效载荷,如果网络连接被中断,攻击可能失败。 尤其是以windows defender和一些其他国外的杀软会重点关注stage拉去更多的shellcode这个过程,我们是需要尽量避免的。
反过来就是stageless的优缺点
c2profile
它可以自定义一些功能,比如你的流量特征,shellcode中一些字符串的替换,pe文件的敏感标识替换,包括申请内存,注入等等使用的 winapi,shellcode的混淆,对一系列功能的自定义。在一些免杀视频中,你会发现他们的shellcode生成出来并未经过处理,但杀软似乎对此无动于衷,而你手中的cs生成的shellcode一落地就被杀,很有可能是因为别人配置了profile的原因,有了自定义的选项,启动teamserver