自学内容网 自学内容网

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 代理服务器。

image-20241106160818564

image-20241106160851059

image-20241106160926248

所有经过这些 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

image-20241106161842549

使用socks stop命令停止SOCKS 服务器并终止现有连接。

image-20241106161901960

 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

image-20241106163056392

这些命令将指示 Metasploit 框架将你的代理选项应用于从此时开始所有的执行的模块。以此种方式通过 Beacon 进行中继,完成操作后,使用 unsetg Proxies 停止中继。

如果你觉得上面的操作很难被记住,通过 View -> Proxy Pivots 。选中你设置的代理中继然后按Tunnel按钮。 Tunnel 按钮将提供通过你的 Beacon 隧道传输至 Metasploit 框架所需的 setg Proxies 语法。

image-20241106163514842

image-20241106162945922

# 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监听器。

image-20241106171502837

一个 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 按钮来创建一个。

image-20241111095152667

image-20241111095222001

image-20241111095248670

选中 Clone host MAC address(克隆主机 MAC 地址)可使本地接口与远程接口具有相同的 MAC 地址。选中此选项最为安全。

点击Deploy在目标上启动隐蔽VPN客户端。隐蔽VPN需要管理员权限才能部署。

激活隐蔽 VPN 接口后,你可以像使用你的系统上的任何物理接口一样使用它。使用ifconfig来配置其 IP 地址。如果目标网络具有 DHCP 服务器,则你可以使用你的操作系统内置工具向其请求IP地址。

管理接口

要管理你的隐蔽 VPN 接口,请转到 Cobalt Strike -> VPN Interfaces 。在这里Cobalt Strike会展示隐蔽 VPN 接口、它们的配置方式以及通过每个接口传输和接收了多少字节。

image-20241111101229332

选中一个接口然后点击 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 应用程序和多个 隐蔽VPNHTTP 通道。

要获得最佳性能,请使用UDP通道。与TCP和 HTTP 通道相比,UDP 通道的开销最小。如果需要通过限制性防火墙,请使用 ICMPHTTP 或 TCP(Bind)通道。

虽然隐蔽VPN具有灵活性优势,但是具体选择使用 VPN pivot 还是代理 pivot 这取决于具体环境。隐蔽 VPN 需要管理员访问权限。代理 pivot 则不需要。隐蔽 VPN 需要创建新的通信通道。代理 pivot 则不会。你应该首先使用代理 pivot,然后在需要时移至 VPN pivot

image-20241111131551072

# 说明

本文由笔者在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)!