CobaltStrike基本功能与使用

君子藏器于身待时而动,安全不露圭角覆盂之安。

——AnonySec

https://payloads.cn

55B71DC6-89EC-4F34-A342-36C176E8C523

前言

Cobalt Strike 一款以Metasploit为基础的GUI框架式渗透测试工具,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,exe、powershell木马生成等。

钓鱼攻击包括:站点克隆,目标信息获取,java执行,浏览器自动攻击等。

Cobalt Strike 主要用于团队作战,可谓是团队渗透神器,能让多个攻击者同时连接到团体服务器上,共享攻击资源与目标信息和sessions。

Cobalt Strike 作为一款协同APT工具,针对内网的渗透测试和作为apt的控制终端功能,使其变成众多APT组织的首选。

image-20191101191551808

image-20191031214110757

基本功能

安装

Cobalt Strike 分为客户端和服务端,可分布式操作、协同作战。服务器端只能运行在Linux系统中,可搭建在VPS上。

服务端

服务端关键的文件是teamserver以及cobaltstrike.jar,将这两个文件放到服务器上同一个目录,然后运行:

1
chmod +x teamserver
2
./teamserver 10.11.42.202 test123  
3
# 服务端真实IP(不能使用0.0.0.0或127.0.0.1)和连接密码

31C02820-E5DA-492F-8E75-76F7CFE4FE98

客户端

客户端在Windows、Linux、Mac下都可以运行 (需要配置好Java环境)。启动Cobalt Strike客户端,输入服务端的IP以及端口、连接密码,用户名可以任意设置。

9802F98B-8DB1-44DC-A37D-2B39FA82526F

在控制台所有操作指令都会被记录保留在Cobalt Strike目录logs下。

参数详情

Cobalt Strike

8AB767AA-5B0D-4C2B-AFC9-5B5098BDE2E1
1
New Connection #新的连接(支持连接多个服务器端)
2
Preferences #偏好设置(设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录等)
3
Visualization #窗口视图模式(展示输出结果的形式)
4
VPN Interfaces #VPN接入
5
Listenrs #监听器(创建Listener)
6
Script Manager #脚本管理
7
Close #关闭

View

660DF5D1-4266-4FBD-8465-D8B021BE4B6D
1
Applications #应用(显示受害者机器的应用信息)
2
Credentials #凭证(通过hashdump或Mimikatz抓取过的密码都会储存在这里)
3
Downloads #下载文件
4
Event Log #事件日志(主机上线记录以及团队协作聊天记录)
5
Keystrokes #键盘记录
6
Proxy Pivots #代理模块
7
Screenshots #截图
8
Script Console #脚本控制台(可以加载各种脚本,增强功能https://github.com/rsmudge/cortana-scripts)
9
Targets #显示目标主机
10
Web Log #Web日志

Attacks

Packages
F804D870-8767-4FD1-8763-10AD8F2B9804
1
HTML Application #生成恶意的HTA木马文件
2
MS Office Macro #生成office宏病毒文件
3
Payload Generator #生成各种语言版本的payload
4
USB/CD AutoPlay #生成利用自动播放运行的木马文件
5
Windows Dropper #捆绑器,能够对文档类进行捆绑
6
Windows Executable #生成可执行Payload
7
Windows Executable(S) #把包含payload,Stageless生成可执行文件(包含多数功能)
Web Drive-by
4D5969D3-3765-4E58-9C28-851D1A02618B
1
Manage #对开启的web服务进行管理
2
Clone Site #克隆网站(可记录受害者提交的数据)
3
Host File #提供Web以供下载某文件
4
Scripted Web Delivery #提供Web服务,便于下载和执行PowerShell Payload,类似于Metasploit的web_delivery 
5
Signed Applet Attack #启动一个Web服务以提供自签名Java Applet的运行环境
6
Smart Applet Attack #自动检测Java版本并利用已知的exploits绕过security
7
System Profiler #用来获取一些系统信息,比如系统版本,Flash版本,浏览器版本等

Reporting

0864F9DB-40F9-47F7-8A41-5C734776F146
1
0. Activity report #活动报告
2
1. Hosts report #主机报告
3
2. Indicators of Compromise #威胁报告
4
3. Sessions report #会话报告
5
4. Social engineering report #社会工程学报告
6
5. Tactics, Techniques, and Procedures #策略、技巧和程序  
7
Reset Data #重置数据
8
Export Data #导出数据

Help

4B6F39ED-0ED0-48DD-AFD4-1BC89BD3012F
1
Homepage #官方主页
2
Support #技术支持
3
Arsenal #开发者
4
System information #版本信息
5
About #关于

右键菜单

F5A42EBD-5984-418C-A412-90C5CBC5EA04

Access

1
Dump Hashes #获取hash
2
Elevate #提权
3
Golden Ticket #生成黄金票据注入当前会话
4
Make token #凭证转换
5
Run Mimikatz #运行 Mimikatz 
6
Spawn As #用其他用户生成Cobalt Strike侦听器

Explore

1
Browser Pivot #劫持目标浏览器进程
2
Desktop(VNC) #桌面交互
3
File Browser #文件浏览器
4
Net View #命令Net View
5
Port Scan #端口扫描
6
Process List #进程列表
7
Screenshot #截图

Pivoting

1
SOCKS Server #代理服务
2
Listener #反向端口转发
3
Deploy VPN #部署VPN

Spawn

外部监听器(如指派给MSF,获取meterpreter权限)

Session

1
Note #备注
2
Remove #删除
3
Sleep #指定被控端休眠时间,默认60秒一次回传,让被控端每10秒来下载一次任务。实际中频率不宜过快,容易被发现。
4
Exit #退出

Interact(打开beacon)

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

使用

Listeners简介

在本版本Cobalt Strike 3.14中,提供了如图9种 Listener (监听器)。

F3B8D0D4-482C-4158-BD7B-3D7E901FC464
1
windows/beacon_dns/reverse_dns_txt
2
windows/beacon_dns/reverse_http
3
windows/beacon_http/reverse_http
4
windows/beacon_https/reverse_https
5
windows/beacon_smb/bind_pipe
6
windows/beacon_tcp/bind_tcp
7
windows/foreign/reverse_http
8
windows/foreign/reverse_https
9
windows/foreign/reverse_tcp (3.13版后增加,支持linuxSSH会话)
  • beacon_xx 系列为Cobalt Strike自身,包括 dns、http、https、smb 四种方式的监听器。
  • foreign 系列为外部监听器,通常与MSF或者Armitage联动。

在Cobalt Strike 3.13版本后增加了一个新的 Listeners (windows/beacon_tcp/bind_tcp) ,它支持linuxSSH会话。具体更新内容可以查阅 官网

创建一个服务

首先配置一个监听器

9802F98B-8DB1-44DC-A37D-2B39FA82526F

选择 Attacks > Packages > Windows Executable

E1AA708F-1F73-463B-94D1-E9AD5E1FFB8A

上线成功,在 Event Log 处出现上线信息。

F53C92E0-BB8C-42E5-A99C-398D3FFE4BA4

Beacon

右键目标interact来使用Beacon,用它来执行各种命令。在Cobalt Strike中,默认心跳为60s,执行命令的响应很慢,在下载文件时更加明显,所以根据实战环境把时间降低,建议不要太快,否则流量会相对明显,在这里设置sleep 10

D4883587-7593-468B-85C7-2C5AC6135A63

同时在beacon中,如果想对目标进行命令管理,需要在前面加上shell,如shell whoamishell ipconfig等。

总结

这里只是简单描述CobaltStrike的用法,其中还有很多功能的使用,需要实际操作中去发现。更核心的地方在于理解CobaltStrike的Beacon在内网中的通信过程,这对于渗透者能否更进一步深入内网起到重要作用,也是神器的价值所在。

在渗透过程中,不要仅限于单一模式的思路,根据实际的情况,选择更优的方法来进行下一步的渗透测试。


xq