Skip to main content

多重跳板

众所周知,企业网络的边界所在的主机,往往具有多个网络适配器,1个面向公共网络,至少1个面向企业内部网络,因此在我们进入边界之后需要以此主机作为跳板,访问内部网络。然而,企业内部也有多个网段,也会有存在着多个适配器的主机。考虑以下这种情况:

面向公网的主机 WEB01具有两张网卡,一张面向公网,一张的网段是 192.168.1.1/24。
内网中的一台主机 Vault01 也具有两张网卡,一张的网段是 192.168.1.1/24,另一张为 10.10.10.1/24。
除此之外,还有主机可以连接至更深的内网网段中。

在这种情况下,我们可以通过什么样的方法从C2 服务器访问到 10.10.10.1/24 网段甚至其他更深层次的主机呢?我们可以充分利用工具、C2特性、以及计算机网络知识。


Socks 链

Socks + 端口转发

 

多重 Socks 链

我们在 C2 主机上设置了第一个 SOCKS 代理 127.0.0.1:1080
在内网主机 Vault01 上设置第二个 SOCKS代理 10.10.10.10:9050

修改 /etc/proxychains4.conf 文件的代理链
[ProxyList]
socks5  127.0.0.1 1080
socks5  10.10.10.10 9050


C2特性

TCP Beacon

 

C2特性SMB Beacon

 

Pivot Beacon

 

一些 C2 框架的内置功能可以让代理变得更加得心应手,例如 CobaltStrike 的 P2P 监听器,有 TCP 监听器、SMB 监听器、 Pivot 监听器。TCP、SMB 监听器与 Pivot 监听器的方向相反,但是对于我们渗透进入更深的网段的帮助都是同样有效的。

P2P监听器允许Beacon之间将它们的通信连接起来形成一条链,在Cobalt Strike中分为TCP与SMB。连接 Beacon 在跳板、特权提升、以及任何需要额外生成一个新的Beacon的时候特别有用。如果手动在受害主机上执行P2P载荷,那么除非使用link或者connect命令,否则不会出现在UI上。

image.png

image.png

实际上,存在另外一种P2P监听器。跳板监听器与TCP监听器的工作原理相反。当生成一个TCP监听器的Beacon,Beacon作为TCP服务器并且等待连接进来的现存Beacon,即TCP客户端。跳板监听器并不在监听器菜单中创建,而是绑定在个体Beacon。现存的Beacon会绑定一个端口并且监听前来的连接,即作为TCP服务器,而使用了跳板监听器的Beacon载荷则是客户端。

image.png

image.png

为什么这很有用呢?在一些场合例如GPO的利用,我们不知道载荷何时被执行然后再使用connect命令进行连接,而当我们使用跳板监听器的话,新的Beacon会立刻显示而不用手动连接。

 

系统特性

WinRM

 

SSH