Cobalt Strike上手学习

Cobalt Strike是一款非常优秀的后渗透平台,基于Java。

日常的Cobalt Strike学习,Cobalt Strike提供的UI界面,使得很多操作都很容易理解,所以使得很多操作变得更加的简单。

监听器

beacon
1
2
3
是Cobalt Strike内嵌的监听器,也就是说,当在目标系统成功执行payload后,
会弹会一个beacon的shell给Cobalt Strike,
该shell所支持的通信协议主要包括dns、https、http、smp[pipe]。

实战中尽可能使用dns,或者,不用IP而使用域名。

foreign
1
2
3
提供给外部使用的一些监听器,
比如你想利用Cobalt Strike派生一个Meterpreter的shell进行内网渗透,
这就需要用到foreign。

使用powershell

第一种方式:在beacon shell中导入外部ps脚本到远程机器上

1
2
powershell-import /root/Desktop/PowerView.ps1
powershell Get-NetGroup -GroupName *admin*

第二种方式:在beacon shell中直接执行powershell代码

1
powerpick Get-NetGroup

socks

为了让CS和msf互相间联通使用,在目标机器上开启socks4a代理。

[Beacon]–>[Pivoting]–>[SOCKS Server] 或者直接在beacon中执行socks post

第一种利用方式:利用各种socks代理客户端直接把各类渗透工具带进目标进网

1
2
3
# vi /etc/proxychains.conf
socks4 lhost 2333
# proxychains msfconsole

第二种利用方式:直接利用隧道把整个msf带进目标内网

1
2
# msfconsole
setg Proxies socks4:lhost:2333

SSH登陆

使用uploaddownload进行上传下载。也可以通过socks代理进行登陆。

权限提升

[Beacon]–>[access]–>[Elevate]

Cobalt Strike 内嵌了两个提权exp,ms14-058是个老提权漏洞利用方式,可利用于Windows 7系统。

uac-dll是一种Bypass UAC攻击,是由本地管理员运行payload从中等权限往最高权限提升的过程,适用于windows 7windows 10

可以通过导入cna文件进行丰富漏洞库。项目地址为:ElevateKit

Spawn

可使用spawn功能孵化出n个shell,shell与shell之间相当于以一种级联的形式存在。

作用:将公网某团队服务器的beacon shell 派生到本地团队服务器指定的监听器上,或是派生到msf。

派生至本地团队服务器

建立好监听器,返回到左边的公网团队服务器使用spawn功能,选择刚刚建立的监听器。

过一会儿就能看到shell被正常弹到本地团队服务器指定的监听器上。

派生至Meterpreter

在公网团队服务器上创建一个外部foreign监听器(本地msf与CS使用的协议无比相同)

横向移动

首先,要决定用哪种方法来横向移动(当前环境需要高度完整的管理员权限才能完成正常操作)。

  • 如果想使用token作用于某个Beacon,那就选中当前会话的Token框,

  • 如果想使用证书或哈希来横向移动,就从凭证存储库中选择凭据或填充用户、密码和域等字段,Beacon会将此信息作为需要的令牌。

  • 选择用于横向移动的Listener,通常这个会选择使用HTTPS。

  • 最后选择Session,这选项只需要选择同个内网机器Session即可(已上线)。

PS:

Cobalt Strike的异步进攻模式要求每一次攻击都是以当前一个受损系统(已控)为跳板执行的。如果存在多台已控机器,则优先考虑Windows系统作为跳板机,且利用所有的凭证或哈希,攻击成功则会反馈在Beacon控制台中。

查看官方操作,与日常操作方式不太一样。

转发

通过红色区域(指已获取beacon shell的机器)做一个重定向到蓝色区域(没有取得控制权的目标机器)有漏洞的机器。

查看说明

1
2
3
4
5
6
7
beacon> help rportfwd
Use: rportfwd [bind port] [forward host] [forward port]
rportfwd stop [bind port]
Binds the specified port on the target host. When a connection comes in,
Cobalt Strike will make a connection to the forwarded host/port and use Beacon
to relay traffic between the two connections.

第一个参数为监听端口,第二个参数是转发主机和转发端口。注意:目标主机都会有防火墙拦截链接(弹框提示)。

becon shell 内置了端口转发功能,把本机的某个端口转发到公网(如3389)。

[Beacon]–>[Pivoting]–>[Listener]

接下来正常链接x.35这台的2333端口即可。

内网机器

在Beacon shell中建立一条新的监听规则。

1
2
3
4
5
beacon> shell netstat -ano | findstr "7878"
[*] Tasked beacon to run: netstat -ano | findstr "7878"
[+] host called home, sent: 37 bytes
[+] received output:
TCP 0.0.0.0:7878 0.0.0.0:0 LISTENING 3516

在Cobalt Strike当中新建一个Listener,内容如图所示:

上线的Listener选择新建的rportfwd-listener即可。

黄金票据

使用域管理员权限伪造一张黄金票据是最常见的方法。

制作黄金票据的前提条件:

  • 想要伪造票据的用户
  • 为其创建票据的域名
  • 域的SID(whomai /user)
  • 域控制器上krbtgt用户的NTLM哈希值

PS

首先要使用klist /purge清除缓存的授权票据。

Malleable-C2

自从Cobalt Strike更新至3.6版本后,官方给出了一个Malleable-C2,也就是在启动团队服务器(服务端)的时候加载一些配置文件,这是一个非常棒的功能,可以帮助我们伪装流量、SSL加密通讯,达到隐匿的效果,值得一用。

1
2
3
cd /opt/cobaltstrike/
git clone https://github.com/rsmudge/Malleable-C2-Profiles
# 使用方法:./teamserver [external IP] [password] [/path/to/my.profile]

参考:Cobalt Strike-help

!坚持技术分享,您的支持将鼓励我继续创作!