程序员开发实例大全宝库

网站首页 > 编程文章 正文

Cobalt Strike系列教程第二章:Beacon详解

zazugpt 2024-08-24 02:29:07 编程文章 14 ℃ 0 评论

上周更新了Cobalt Strike系列教程第一章:简介与安装,文章发布后,深受大家的喜爱,遂将该系列教程的其他章节与大家分享,提升更多实用技能!


第二章:Beacon详解

一、Beacon命令

大家通过上一篇内容的学习,配置好Listner,执行我们的Payload后,即可发现目标机已经上线。


右键目标interact来使用Beacon,我们用它来执行各种命令。


※在Cobalt Strike中它的心跳默认是60s(即sleep时间为60s,每一分钟目标主机与teamserver通信一次), 这会让我们执行命令或进行其他操作响应很慢。

如果sleep时间过长,在下载文件面前更为明显,所以在测试时会把时间降低一点 。拿到Beacon后,我一般先执行sleep 5,大家可以根据实战环境来调节,建议不要太快,不然流量会很明显。


注意:Beacon中不能直接输入cmd命令,比如要让目标机执行ipconfig这条cmd命令,对应的Beacon命令是shell ipconfig。


其他的Beacon命令,大家可以在Beacon中输入help来获取。


在这贴出一部分汉化的命令:

Beacon Commands
 Command Description
 ------- -----------
 browserpivot 注入受害者浏览器进程
 bypassuac 绕过UAC
 cancel 取消正在进行的下载
 cd 切换目录
 checkin 强制让被控端回连一次
 clear 清除beacon内部的任务队列
 connect Connect to a Beacon peer over TCP
 covertvpn 部署Covert VPN客户端
 cp 复制文件
 dcsync 从DC中提取密码哈希
 desktop 远程VNC
 dllinject 反射DLL注入进程
 dllload 使用LoadLibrary将DLL加载到进程中
 download 下载文件
 downloads 列出正在进行的文件下载
 drives 列出目标盘符
 elevate 尝试提权
 execute 在目标上执行程序(无输出)
 execute-assembly 在目标上内存中执行本地.NET程序
 exit 退出beacon
 getprivs Enable system privileges on current token
 getsystem 尝试获取SYSTEM权限
 getuid 获取用户ID
 hashdump 转储密码哈希值
 help 帮助
 inject 在特定进程中生成会话
 jobkill 杀死一个后台任务
 jobs 列出后台任务
 kerberos_ccache_use 从ccache文件中导入票据应用于此会话
 kerberos_ticket_purge 清除当前会话的票据
 kerberos_ticket_use 从ticket文件中导入票据应用于此会话
 keylogger 键盘记录
 kill 结束进程
 link Connect to a Beacon peer over a named pipe
 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 Set parent PID for spawned post-ex jobs
 ps 显示进程列表
 p**ec Use a service to spawn a session on a host
 p**ec_psh Use PowerShell to spawn a session on a host
 psinject 在特定进程中执行PowerShell命令
 pth 使用Mimikatz进行传递哈希
 pwd 当前目录位置
 reg Query the registry
 rev2self 恢复原始令牌
 rm 删除文件或文件夹
 rportfwd 端口转发
 run 在目标上执行程序(返回输出)
 runas 以另一个用户权限执行程序
 runasadmin 在高权限下执行程序
 runu Execute a program under another PID
 screenshot 屏幕截图
 setenv 设置环境变量
 shell cmd执行命令
 shinject 将shellcode注入进程
 shspawn 生成进程并将shellcode注入其中
 sleep 设置睡眠延迟时间
 socks 启动SOCKS4代理
 socks stop 停止SOCKS4
 spawn Spawn a session 
 spawnas Spawn a session as another user
 spawnto Set executable to spawn processes into
 spawnu Spawn a session under another PID
 ssh 使用ssh连接远程主机
 ssh-key 使用密钥连接远程主机
 steal_token 从进程中窃取令牌
 timestomp 将一个文件时间戳应用到另一个文件
 unlink Disconnect from parent Beacon
 upload 上传文件
 wdigest 使用mimikatz转储明文凭据
 winrm 使用WinRM在主机上生成会话
 wmi 使用WMI在主机上生成会话
 argue 进程参数欺骗

二、多种Beacon

以下Beacon使用前均需要开启对应的Listener。

Http Beacon&tcp Beacon

这两种Beacon都是比较普通的,个人感觉是主机与teamserver的通信协议不同而已。

SMB Beacon

1、简介

官网介绍:SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons连接后,子Beacon从父Beacon获取到任务并发送。

因为连接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。

这张图很好的诠释了SMB beacon的工作流程:

2、SMB Beacon使用

这种Beacon要求具有SMB Beacon的主机必须接受端口445上的连接。

派生一个SMB Beacon方法:在Listner生成SMB Beacon>目标主机>右键> spawn as>选中对应的Listener>上线

或在Beacon中使用命令spawn smb(smb为我的smb listener名字)


运行成功后外部可以看到∞∞这个字符,这就是派生的SMB Beacon。

当前是连接状态,你可以Beacon上用link <ip>命令链接它或者unlink <ip>命令断开它。


这种Beacon在内网横向渗透中运用的很多,横向渗透请关注公众号后续推送文章。在内网环境中可以使用ipc $生成的SMB Beacon上传到目标主机执行,但是目标主机并不会直接上线的,需要我们自己用链接命令(link <ip>)去连接它。

3、DNS Beacon

DNS Beacon在绕过防火墙 权限维持上非常有效,DNS beacon可谓是最受欢迎的Cobalt Strike功能之一。

官网给出的原理示意图如下:

使用DNS Beacon首先要有一个域名,域名建议用国外的,省去一些不必要的麻烦,也防止被查水表。域名使用一些通用平常的即可,整个配置过程非常简单,一条A记录和几条NS记录即可。

首先进入到域名管理界面(自己的域名过期了,用一下404师傅的图)

配置A记录指向服务器ip -->ns记录都指向A记录域名


配置好了我们可以用nslookup或者dig +trace来测试下是否成功:


如果返回的IP地址与你的服务器IP地址对应是正确的,那我们就可以开始配置dns beacon的监听器了。


Host那里最好填域名(A记录解析那个),不要填服务器的IP地址。


然后确定填上ns记录,英文逗号隔开,然后生成后门测试效果。


这是主机栏上出现了一个黑屏的logo,经过一段时间的等待,目标主机即可上线。

4、SSH beacon

当内网有Linux时Cobalt Strike也是考虑到的提供了SSH连接,大家可以通过metasploit爆破内网的SSH账号密码,然后用目标机的Beacon去连接就可以了。

目前有两种SSH Beacon连接方法:

①密码直接连接

Beacon命令: ssh [target:port] [user] [pass]

②SSH密匙连接

ssh [target:port] [user] [/path/to/key.pem]

连接成功后,如图就会出现一个子Beacon:

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表