cobaltstrike 框架简述
关于cobalt strike,火起来也有好几年了,首先感谢大佬们慷慨相助愿意在网上分享和翻译相关资料,让这么好的渗透测试框架工具被更多人知道
那就来整理一下在使用这个框架的过程中我认为需要了解的小知识点
cobalt strike简称CS,是一款GUI框架式的渗透测试工具,集成了很多功能
最大的特点是可以团战,有一个服务器,多个客户端,每个客户端就是一个攻击者,攻击者通过连接到服务端来共享攻击资源和目标信息甚至session,服务器必须是Linux系统的
使用的大致流程是:创建团队服务器->客户端连接团队服务器->创建监听器->生成payload对应监听器->靶机运行后门上线->后渗透
运行cs需要先有Java环境
演示环境 team server kali 192.168.1.16 (有VPS最好)
客户端 win10 192.168.1.17
cs4.1 汉化版 (仅做功能演示和知识点小结,至于版本特征和后门不做讨论)
0x00前言
在演示一些基本操作之前,先把说明和常用命令写出来供参考,混个眼熟,后面演示会用到部分功能
选项卡说明(本例中汉化了,实际上是英文的,注意对应关系):
cobalt strike模块
New Connection # 新建连接,支持连接多个服务器端
Preferences # 偏好设置,设置Cobal Strike界面、控制台、以及输出报告样式、TeamServer连接记录
Visualization # 主要展示输出结果的视图,将主机以不同权限展示出来
VPN Interfaces # 设置VPN接口
Listenrs # 创建监听器
Script Manager # 脚本管理,可以通过AggressorScripts脚本来加强自身,能够扩展菜单栏,Beacon命令行,提权脚本等
Close # 退出连接,关闭于teamserver的连接
view模块
Applications # 显示受害主机的应用信息
Credentials # 显示所有以获取的受害主机的凭证,如hashdump、Mimikatz
Downloads # 查看已从受害主机中下载的文件
Event Log # 主机上线记录以及团队协作聊天记录操作记录
Keystrokes # 查看键盘记录结果
Proxy Pivots # 查看代理模块
Screenshots # 查看所有屏幕截图
Script Console #控制台,加载第三方脚本以增强功能
Targets # 显示所有受害主机
Web Log # 所有Web服务的日志
attack模块
packages模块
HTML Application # 基于HTML应用的payload模块,生成(executable/VBA/powershell)这三种原理实现的恶意HTA木马文件
MS Office Macro # 生成office宏病毒文件
Payload Generator # 生成各种语言版本的payload,如C ,C#,COM Scriptlet,Java,Perl,Python,PowerShell,Ruby,VBA.......
Windows Executable # 生成可执行exe木马
Windows Executable(Stageless) # 生成无状态的可执行exe木马
(有的版本packages模块还有USB/CD AutoPlay功能,用于生成利用自动播放运行的后门文件)
Web Drive-by模块
Manage # 对开启的web服务进行管理
Clone Site # 克隆网站,可以记录受害者提交的数据
Host File # 提供文件下载,可以选择Mime类型
Scripted Web Delivery #为payload提供web服务以便下载和执行,类似于Metasploit的web_delivery
Signed Applet Attack #使用java自签名的程序进行钓鱼攻击(该方法已过时)
Smart Applet Attack #自动检测java版本并进行攻击,针对Java 1.6.0_45以下以及Java 1.7.0_21以下版本(该方法已过时)
System Profiler #用来获取系统信息,如系统版本,Flash版本,浏览器版本等
Spear Phish # 鱼叉钓鱼邮件
reporting模块
Activity Report # 活动报告
Hosts Report # 主机报告
Indicators of Compromise # IOC报告:包括C2配置文件的流量分析、域名、IP和上传文件的MD5 hashes
Sessions Report # 会话报告
Social Engineering Report #社会工程报告:包括鱼叉钓鱼邮件及点击记录
Tactics, Techniques, and Procedures # 战术技术及相关程序报告:包括行动对应的每种战术的检测策略和缓解策略
Reset Data # 重置数据
Export Data # 导出数据,导出.tsv文件格式
help模块
Homepage # 官方主页
Support # 技术支持
Arsenal # 开发者
System information # 版本信息
About # 关于
工具栏说明:
1.新建连接
2.断开当前连接
3.监听器
4.改变视图为Pivot Graph(视图列表)
5.改变视图为Session Table(会话列表)
6.改变视图为Target Table(目标列表)
7.显示所有以获取的受害主机的凭证
8.查看已下载文件
9.查看键盘记录结果
10.查看屏幕截图
11.生成无状态的可执行exe木马
12.使用java自签名的程序进行钓鱼攻击
13.生成office宏病毒文件
14.为payload提供web服务以便下载和执行
15.提供文件下载,可以选择Mime类型
16.管理Cobalt Strike上运行的web服务
17.帮助
18.关于
beacon指令大全:
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 获取当前beacon包含的所有权限
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脚本
ps 显示进程列表
psexec 使用服务在主机上生成会话
psexec_psh 用powershell在主机上生成会话
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg Query the registry
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在主机上生成会话
argue 进程参数欺骗
0x01一个与目标主机交互的流程
1.部署teamserver
(前提是有Java环境啊,进入文件目录看看要用的文件有没有执行权限)
cs中有很多文件和文件夹:
agscript:拓展应用脚本
c2lient:用于检查profile的错误和异常
cobaltstrike&cobaltstrike.jar:客户端程序
logs:日志,包括很多内容比如web日志、beacon日志、截图日志、下载日志、键盘记录等等
update & update.jar :用于更新
data:用于保存当前CS的一些数据
启动服务器(正常是要把CS服务器部署到公网上的,穷啊,就部署在本地演示了)
连接密码 lcx123
2.客户端启动cobaltstrike.jar,这里用了bat脚本启动
主界面
3.建立listener
点耳机🎧图标打开listeners面板
4.执行payload
点击scripted web delivery,并选择刚刚生成的监听器
复制生成的payload
在目标机器192.168.1.17中运行生成的payload(当然这个操作正常来说会被目标机器的杀软拦截的)
可见目标机器上线了
5.与目标主机交互
右键目标机器,选择进入beacon,进入主机交互模式
然后就可以输入一些命令了,具体命令在前面写过了,比如shell whoami
就是我本人,执行成功
0x03 Cobalt Strike有哪些神奇的功能
1.Listener
这里的payload和3.1版本的有区别,dns、http、https、smb、tcp、extc2六种方式的监听器,foreign为外部监听器,区别在于传输方法不一样
有外部监听器就可以与msf或者empire联动将目标主机权限反弹给CS了,而内部监听器就是beacon
举个例子,比如说:通过CS反弹shell给msf
创建一个外部监听器
在msf中监听
进入之前上线的机器的beacon,在命令区输入spawn msf
可见msf中接收到了目标机器的反弹shell
2.Delivery
最主要的还是这个scripted web delivery,生成payload的
URL路径/URI Path 在访问URL时payload的位置
主机地址/local host team server服务器地址
端口/local port team server服务器开启的端口
监听器/listener 监听器
类型/type 即scripted web delivery的种类,共四种:bitsadmin\exe\powershell\python
3.Manage
忘了生成的payload也不要怕,点一下管理,copy一下URL即可
这个模块主要是管理团队服务器的,除了上边提到的scripted web delivery生成的payload,还可以有beacon的相关信息,还可以kill掉某个不顺眼的服务
4.Payload
还可以用另一种方法生成各种语言的shellcode,然后嵌入相应语言对应的代码(shellcode执行盒,这个可以自己写,写不了的GitHub上有很多很多,后续有时间想写的时候再写写这部分吧),在目标机器上执行代码,可以回弹一个beacon
还有windows executable用于生成exe格式的、基于服务的exe的(将文件添加到服务中)、dll的
额,还有,注意下面的那个windows executable(S)不太一样,有一些新选项
当然还可以生成别的什么东西,比如Windows宏病毒啥的
5.后渗透
后渗透要做的事情,比如提权、扫端口、横向移动、端口转发、权限持久化什么的,CS基本都能做
先看一下有啥功能
例如
当然也可以在beacon中执行如 elevate uac-token-duplication 用于bypassUAC
还有其他功能太多了,不演示了
总之可以利用黄金票据升到域管理员权限,或者令牌窃取,或者dump hashs,或者调用mimikatz,或者psexec横向,又或者调用socks,调用端口转发等等等等
网上也有不少文章讲这部分的内容,讲得很详细,我就不说了
6.beacon中常用的一些命令
上面前言部分有列举过beacon中的很多命令
列举几个挺有用的命令,仔细说一下:
sleep 更改回连时间,如sleep 2 就是2秒回连,不然默认beacon响应时间1分钟,在实际操作中会感受到特别漫长,懂的都懂
getuid 查看当前用户权限
getsystem 获得system权限,啊想法很好,msf中meterpreter也有此功能
getprivs 查看当前beacon包含的所有权限
(后续等我补充一些插件的使用)
未完待续......
----------------------------------------------------------------------------------------------------------
2021.5.13补充
鉴于包括CS在内的很多工具框架已经被识别标记了,如果不进行特征修改基本用不了
可尝试如下几种思路进行特征修改:
1.改默认端口
2.去除证书特征
3.设置混淆配置文件
4.部署nginx反向代理
5.https上线
详细参考:https://xz.aliyun.com/t/9542
随便转载,请标明作者出处