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
随便转载,请标明作者出处
cobaltstrike 框架简述的更多相关文章
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...
- pycaffe︱caffe中fine-tuning模型三重天(函数详解、框架简述)
本文主要参考caffe官方文档[<Fine-tuning a Pretrained Network for Style Recognition>](http://nbviewer.jupy ...
- .NET Framework 框架简述01
NET技术可以以规范和实现两部分来划分. 规范: 公共语言架构(Common Language Infrastructure, CLI),主要包括 1.通用类型系统(Common Type S ...
- Pop框架简述
Facebook发布了Paper之后,进一步开源了其背后的动画引擎Pop,此框架并不满足于苹果自身的动画单调性,致力于给用户一种逼真的动画效果,可以减少用户对于苹果原生Core Animation 复 ...
- java自动化-juint框架简述
本人使用的是java的juint框架来组织的自动化测试,故我这边需要简单介绍一下juint框架 首先,建议自行百度一下juint框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...
- java自动化-junit框架简述
本人使用的是java的junit框架来组织的自动化测试,故我这边需要简单介绍一下junit框架 首先,建议自行百度一下junit框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...
- QTP自动化测试框架简述
1.使用框架的原因? 框架是一组自动化测试的规范.测试脚本的基础代码,以及测试思想.惯例的集合,从而减少冗余的代码.提高代码生产率,重用性和可维护性. 2.自动化测试框架的架构 脚本层(业务组件开发) ...
- HTTP及WEB框架简述
HTTP介绍 Hyper Text Transfer Protocol,超文本传输书协议,是万维网数据通信的基础,规定了请求和响应标准. HTTP工作原理 HTTP 请求以及响应的步骤 客户端连接到W ...
- Hibernate框架简述 内部资料 请勿转载 谢谢合作
Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.c ...
随机推荐
- mysql 的基础操作
1.建表 create table 表名( 字段一 数据类型 [列属性] , 字段二 数据类型 [列属性], ......... )[表类型][表字符集][注释]; 注意:MySQL命令终止符为分号 ...
- 使用Hugo框架搭建博客的过程 - 部署
前言 完成前期的准备工作后,在部署阶段需要配置服务器或对象存储服务. 对象存储和服务器对比 对象存储平台 国内有阿里云OSS.腾讯COS.又拍云.七牛云等.国外有Github Pages.Netlif ...
- etcd的使用
etcd的使用 什么是etcd etcd的特点 etcd的应用场景 服务注册与发现 消息发布和订阅 负载均衡 分布式通知与协调 分布式锁 分布式队列 集群监控与Leader竞选 参考 etcd的使用 ...
- EXCEL中的多个条件同时成立写法
=IF(AND($B2>0,$C2>0,$D2>0,$E2>0),(($B2*1000/$C2/60/$D2)*$E2),0)点击F2,粘贴上边的公式选择F2到f200ctrl ...
- C语言:赋值
#include <stdio.h> //=赋值运算符 //具有方向性,只能将赋值号右边的表达式的值给左边的变量 //赋值语句具有计算功能,赋值号右边可以是常量,变量或表达式都可以 //赋 ...
- Java基础00-内部类23
1. 内部类 内部类 1.1 内部类概述 代码示例: 1.2 成员内部类 代码示例: 创建一个成员内部类:定义时没有小括号是因为类是没有形参的.在类的成员位置,就是成员内部类了 创建测试类:这里发现不 ...
- 怎么实现系统调用wait和exit
例程 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/wai ...
- VirtualBox 修改Android x86虚拟机的分辨率
首先说明一下,本人使用的是Windows下的VirtualBox,android x86使用的是9.0-r2版本 一.查看virtualbox中已有的分辨率 启动虚拟机后,连续按两次E键,进入下面页面 ...
- Java 加载、操作和保存WPS文字文档
本文通过Java程序代码来展示如何来加载.操作及保存WPS格式的文字文档. 一.基本步骤:加载时,通过流加载WPS文字文档,完成相关文字操作后,再将结果文档保存到流,将流写入WPS文档,闭关闭流. 二 ...
- Lniux上的tomcat部署web项目路径问题
一.项目路径及部署.启动位置 1.在tomcat下部署应用,部署路径:一般直接部署在tomcat/webapps/ROOT下即可.2.默认访问路径:tomcat的默认访问路径为webapps/ROOT ...