Cobalt Strike使用学习
基本使用
Cobalt Strike使用C/S架构,Cobalt Strike的客户端连接到团队服务器,团队服务器连接到目标,也就是说Cobalt Strike的客户端不与目标服务器进行交互。
启动服务端
服务端一般设在公网ip的服务器上
1 | # ./teamserver your_ip your_passowrd [config_file] |
启动客户端
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 | windows/beacon_http/reverse_http |
测试一下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监听器对“提升权限”和“横向渗透”中很有用。
新建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 | use exploit/multi/handler |
CS配置一个Foreign HTTP,要与msf的端口、ip、payload一致
spawn msf 派生给msf,msf会收到会话
不知道为什么没有复现成功
msf派生会话给cs
生成监听器
msf派生会话
1 | use exploit/windows/local/payload_inject |