Cobalt Strike 4.8 用户指南-第九节 Pivoting(跳板)
9.1、什么是Pivoting
Pivoting
,在本手册中,指的是"将一个受害机器转为其他攻击和工具的跳板"。Cobalt Strike
的 Beacon
提供了多种 pivoting
选项。前提是 Beacon
处于交互模式。交互模式意味着一个 Beacon
每秒内多次连接到团队服务器。使用 sleep 0
命令来使Beacon
进入交互模式。
# 9.2、Socks代理
转到[beacon] -> Pivoting -> SOCKS Server
在你的团队服务器上设置 SOCKS4
或 SOCKS5
代理服务器。或者,使用socks 8080
命令在端口8080(或你选择的任何其他端口)上设置SOCKS
代理服务器。
所有经过这些 SOCKS
服务器的连接都将被转变为让相关联 Beacon
执行的连接、读写和关闭任务。你可以通过任何类型的 Beacon
经由SOCKS
隧道传输(甚至一个 SMB Beacon
)。
beacon
的 HTTP
数据通道是响应速度最快的 pivoting
方法。如果你想通过 DNS
中继流量,使用 DNS TXT
记录的通信模式。
使用socks [port] [socks4 | socks5] [enableNoAuth | disableNoAuth] [user] [password] [enableLogging | disableLogging]
在指定端口上启动 SOCKS4a
(未指定服务器版本时默认)或 SOCKS5
服务器。该服务器将通过此beacon
转发连接。
SOCKS5
服务器可配置为NoAuth
身份验证(默认)、用户/密码身份验证和一些附加日志记录。
SOCKS5
服务器当前不支持 GSSAPI
身份验证和 IPV6
。
要查看当前已经配置的SOCKS
服务器,通过View -> Proxy Pivots
。
使用socks stop
命令停止SOCKS
服务器并终止现有连接。
当 Beacon
处于睡眠状态时,流量不会中继。使用 sleep
命令更改睡眠时间以减少延迟。
# Proxychains
proxychains
工具将强制外部程序使用你指定的 SOCKS
代理服务器。你可以使用proxychains
强制第三方工具经过 Cobalt Strike
的 SOCKS
服务器。要了解有关proxychains
的更多信息,请访问:http://proxychains.sourceforge.net/
# Metasploit
你也可以通过 Beacon
来隧道传输 Metasploit
框架的漏洞利用和模块。创建Beacon SOCKS
代理服务器(如上所述),然后将以下内容粘贴到你的 Metasploit
框架控制台中:
setg Proxies socks4:team server IP:proxy port
setg ReverseAllowProxy true
这些命令将指示 Metasploit
框架将你的代理选项应用于从此时开始所有的执行的模块。以此种方式通过 Beacon
进行中继,完成操作后,使用 unsetg Proxies
停止中继。
如果你觉得上面的操作很难被记住,通过 View -> Proxy Pivots
。选中你设置的代理中继然后按Tunnel
按钮。 Tunnel
按钮将提供通过你的 Beacon
隧道传输至 Metasploit
框架所需的 setg Proxies
语法。
# 9.3、反向端口转发
可以使用以下命令:
在 Beacon 控制台中键入 help 以查看可用的命令。键入 help,后跟命令名称以查看详细帮助。
rportfwd
-通过 Beacon
设置一个反向跳板。 rportfwd
命令会绑定受害主机上的一个端 口。任何到此端口的连接将会导致你的 Cobalt Strike
服务器启动一个到另一个主机和端口的连接,并中继这两个连接之间的流量。Cobalt Strike
通过 Beacon
隧道传输流量。
rportfwd
的语法是:rportfwd [bind port] [forward host] [forward port]
。
rportfwd_local
-通过 Beacon
设置一个反向跳板。该功能可从 Cobalt Strike
客户端启动与转发主机/端口的连接。转发流量通过Cobalt Strike
客户端与团队服务器的连接进行通信。
rportfwd stop [bind port]
- 用于停用反向端口转发。
# 9.4、派生与隧道
使用 spunnel
命令在临时进程中派生第三方工具,并为其创建反向端口转发。语法是:spunnel [x86 or x64] [controller host] [controller port] [/path/to/agent.bin]
。此命令要求代理文件是位置无关的 shellcode
(通常是来自其他攻击平台的原始输出)。spunnel_local
命令与 spunnel
相同,唯一的区别是它从你的 Cobalt Strike
客户端发起控制器连接。spunnel_local
流量通过你的 Cobalt Strike
客户端与其团队服务器的连接进行传输。
# Agent部署:与Core Impact联动
Spunnel
命令专门设计用于通过 Cobalt Strike
的Beacon
对 Core Impact
的代理进行隧道传输。Core Impact
是一种渗透测试工具和漏洞利用框架,也可从Fortra
获得许可,网址是 https://www.coresecurity.com/products/core-impact。
从 Core Impact
导出原始Agent
文件:
1、单击 Core Impact
用户界面中的Modules选项卡
2、搜索 Package and Register Agent
3、双击这个模块
4、更改Platform为Windows
5、更改Architecture 为 x86-64
6、更改Binary Type为raw
7、单击Target File,然后按...以决定输出结果的保存位置。
8、转到Advanced
9、更改Encrypt Code为false
10、转到 Agent Connection
11、将Connection Method改为Connect from Target
12、将Connect Back Hostname 改为 127.0.0.1
12、将Port 更改为某个值(例如 9000)并记住它。
13、点击OK
以上操作将以原始文件形式生成 Core Impact Agent
。你可以使用spunnel x64
或 spunnel_local x64
运行该Agent
,并将其传回 Core Impact
。
我们经常在可连接互联网的基础设施上使用 Cobalt Strike
,而 Core Impact
则经常在本地 Windows
虚拟机上使用。因此,我们使用 spunnel_local
。我们建议你在安装 Core Impact
的同一 Windows
系统上运行 Cobalt Strike
客户端。
在此设置中,你可以运行 spunnel_local x64 127.0.0.1 9000 c:\path\to\agent.bin
。连接建立后,你将听到著名的“Agent Deployed”wav 文件。
在目标系统上部署 Impact agent
后,你可以使用多种模块进行权限提升、扫描和信息收集、执行远程漏洞利用,并通过Beacon
连接将其他 Impact agent
进行链式连接。
# 9.5、Pivot监听器
限制从目标网络到命令与控制基础设施的直接连接的数量是一种很好的技巧。一个 pivot
监听器允许你创建一个绑定到 Beacon
或者SSH
会话的监听器。这样,你可以创建新的反向会话,而不需与命令和控制基础设施建立更多直接连接。
要设置pivot
监听器,通过[beacon] -> Pivoting -> Listener….
这将打开一个对话框,你可以在其中设置新的pivot
监听器。
一个 pivot
监听器将绑定到指定会话上的侦听端口。 Listen Host
(监听主机)字段的值配置你的反向 TCP payload
会用来连接到这个监听器的地址。
现在,唯一的 payload
选项是 windows/beacon_reverse_tcp
。这是一个没有stager
的监听器。这意味着你无法将此payload
嵌入到需要stagers
的命令和自动化中。你可以选择导出stageless payload
,并运行它来交付反向TCP payload
。
Pivot
监听器不会更改pivot
主机的防火墙配置。如果一个pivot
主机有一个基于主机的防火墙,这可能会干扰你的监听器。你作为操作者需要预测这种情况并采取正确的措施。
要移除pivot
监听器,通过Cobalt Strike -> Listeners来在那里移除监听器。如果会话仍可访问,Cobalt Strike
将发送一个任务来移除监听的 socket
。
# 9.6、隐蔽VPN
如何部署
VPN Pivoting
是一种灵活的隧道传输方式,这种方式不受代理 pivot
的那些限制。Cobalt Strike
通过其隐蔽 VPN
功能提供 VPN Pivoting
。隐蔽VPN创建一个在 Cobalt Strike
系统上的网络接口并将此接口桥接进目标的网络中。
要激活隐蔽 VPN,右键单击被控主机,进入 [beacon] -> Pivoting -> Deploy VPN
。选择你希望隐蔽VPN绑定的远程接口。。如果当前没有本地接口,点击Add
按钮来创建一个。
选中 Clone host MAC address
(克隆主机 MAC 地址)可使本地接口与远程接口具有相同的 MAC 地址。选中此选项最为安全。
点击Deploy
在目标上启动隐蔽VPN客户端。隐蔽VPN需要管理员权限才能部署。
激活隐蔽 VPN 接口后,你可以像使用你的系统上的任何物理接口一样使用它。使用ifconfig
来配置其 IP 地址。如果目标网络具有 DHCP
服务器,则你可以使用你的操作系统内置工具向其请求IP地址。
管理接口
要管理你的隐蔽 VPN 接口,请转到 Cobalt Strike -> VPN Interfaces
。在这里Cobalt Strike
会展示隐蔽 VPN 接口、它们的配置方式以及通过每个接口传输和接收了多少字节。
选中一个接口然后点击 Remove
按钮来删除此接口并关闭这个远程隐蔽 VPN
客户端。隐蔽 VPN
会在重启时移除它的临时文件,并立即撤销任何系统更改。
点击 Add
按钮来配置一个新的隐蔽 VPN
接口。
配置接口
隐蔽 VPN 接口由一个网络分流器和一个通过以太网帧进行通信的通道组成。要配置接口,请填写一个接口名称(稍后通过 ifconfig 进行操作的名称)和一个 MAC 地址。
你还必须为接口配置隐蔽VPN 通信通道。隐蔽 VPN 可以通过UDP
连接、TCP
连接、ICMP
或HTTP
协议进行以太网帧通信。TCP(Reverse)
通道可以让目标连接到你的 Cobalt Strike
实例。TCP(Bind)
通道让Cobalt Strike
通过 Beacon
与VPN
建立隧道通信。
Cobalt Strike
将根据你选择的 Local Port
(本地端口) 和Channel
(通道)建立和管理与隐蔽VPN客户端之间的通信。
隐蔽VPN
的 HTTP
通道使用 Cobalt Strike Web
服务器。你可以在同一端口上托管其他 Cobalt Strike Web
应用程序和多个 隐蔽VPN
HTTP 通道。
要获得最佳性能,请使用UDP
通道。与TCP
和 HTTP
通道相比,UDP
通道的开销最小。如果需要通过限制性防火墙,请使用 ICMP
、HTTP
或 TCP(Bind)
通道。
虽然隐蔽VPN具有灵活性优势,但是具体选择使用 VPN pivot
还是代理 pivot
这取决于具体环境。隐蔽 VPN 需要管理员访问权限。代理 pivot 则不需要。隐蔽 VPN 需要创建新的通信通道。代理 pivot 则不会。你应该首先使用代理 pivot,然后在需要时移至 VPN pivot
。
# 说明
本文由笔者在Cobalt Strike官方用户指南原文(https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm)基础上编译,如需转载请注明来源。
原文地址:https://blog.csdn.net/YJ_12340/article/details/143803275
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!