lantern的中文

在红队、渗透测试和入侵网络时经常出现的一个问题是,能否将流量代理到多个环境中。

lantern的中文

在红队、渗透测试和入侵网络时,经常出现的一个问题是代理或隧道流量进入多个环境。 最常见的方法是使用 SSH 端口转发或 Socket Secure (SOCKS) 代理。 本篇文章将深入探讨这两种方法以及利用它们的不同方式。

我将在这篇文章中详细介绍什么是 SOCKS,如果您不熟悉这个术语,这里有一个快速解释。 SOCKS 代理的工作原理是通过代理服务器引导流量,然后将信息传递到预定目的地。 SOCKS 协议通过首先与代理服务器建立 TCP 连接来实现这一目的。 建立连接后,您就可以向代理服务器发送数据,然后代理服务器会将数据传输到目的地。

我最初打算探索所有不同的方法,但我发现自己在使用 Cobalt Strike'SOCKS 代理的过程中更多地使用 SSH 端口转发和 Chisel,但 Chisel 和 SSH 是任何有抱负的或当前的渗透测试人员都应该了解的两种工具!

lantern的中文

lantern的中文

SSH 是渗透测试中最被低估的工具;它可以转发端口、打开隧道并施展各种魔法。 SSH 端口转发在以下情况下非常有用:你可能只能通过 SSH 访问一台机器,但又想通过代理流量进入一个环境以获得访问权。 或者,有严格的出站防火墙规则(如果你想知道如何锁定 SSH,我过去写过这方面的文章,并在此提供给你。可以在这里找到) 限制允许哪些协议和端口出站。

当你想通过 Linux 机器或在更现代的 Windows 环境中进行透视时,它也很有帮助。 有些 Windows 10 系统安装了 SSH! 说到 SSH,有几种不同类型的端口转发:本地静态端口转发、远程静态端口转发和动态端口转发。 但归根结底有静态和动态两种。

下面列出的所有命令的优点在于,无论你在哪个系统上运行,它们都能正常工作。 如上所述,Windows 10 主机开箱即带 SSH,因此无需其他程序!

lantern的中文

静态端口转发是指设置一个单一端口,通常是 SSH 主机可以访问的本地主机或远程主机。 本地端口转发和远程端口转发就是一个例子。 使用静态端口转发的典型情况是,主机在本地主机上运行一项服务,而你想通过 SSH 访问该服务;这可以在以下情况中实现:

ssh -L source_port:forward_too_host:destination_port via_host

服务器 X 在 localhost:31337 上运行一个应用程序,我想从我的机器 Y 访问它。-L指定本地(客户端)主机上的指定端口必须转发到远程端的指定主机和端口。 我可以使用以下命令 SSH 登录机器:

ssh -L 31337:localhost:31337 user@serverx

然后,从你的机器访问 localhost:31337 就能访问远程主机上的那个地址。 同样,如果你想跳过一台机器,我们可以执行以下命令:

ssh -L 443:10.10.20.21:8443 user@server

这将在本地计算机上打开 443,并通过远程服务器的 8443 端口将流量传输到主机 10.10.20.21;如果远程主机只能通过堡垒主机(如本例中的服务器)访问,这将非常有用。

ssh -R sourcePort:HostToForwardTrafficTo:onPort connectToHost

远程端口转发的工作原理与本地端口转发略有不同,它可以将所有连接转发到本地机器上的某个端口,并将其传递到远程主机。

它本质上是本地端口转发,只不过是反向转发,因此用户无需点击 localhost 并连接到远程服务器,而是可以点击远程服务器并转发到你的 localhost,这对于通过 NAT 和内部防火墙进行转发很有帮助。

lantern的中文

静态端口转发非常有用,而动态端口转发则非常有趣。 动态端口转发允许你创建一个 SOCKS 代理服务器,允许在一系列端口上通信,而不仅仅是一个单一的端口。

当客户端连接到该端口时,连接会被转发到远程(SSH 服务器)机器,然后被发送到目标机器上的动态端口,从而允许通过 SSH 主机发送各种流量。

符号与本地端口转发的符号非常相似;它使用-D标记来指定端口和主机:

ssh -D localip:localport user@server

localip:localport是本地计算机 IP 地址和端口号;可以是本地网络上的 IP,也可以是 localhost;如果不指定 IP,SSH 将默认使用 localhost,端口随你指定。

现在,在主机上打开端口是件好事,但如果我们想启动一个 SOCKS 代理,并将其作为后台进程而不是交互式 shell 运行,下面的命令就能在打开端口上的 SOCKS 代理的同时实现这一目的。1337.

ssh -D 1337 -N -f user@server

  • -D在 localhost 的 1337 端口打开动态端口转发
  • none关闭交互式 shell 访问、
  • -f将进程推至后台,使 SSh 作为进程而非交互式运行。

动态端口转发的一个典型例子是通过 SSH 服务器传输网络浏览器流量。 要访问内部网络或类似网络。

lantern的中文

除 SSH 外、凿子是我在环境代理方面的新发现,只要有 HTTPS 或 SSH 对外可用,就可以打开 SOCKS 代理。 操作步骤如下:

  1. 用 VPS 设置服务器:chisel server -p 443 -reverse -v --socks5

  2. 用以下命令在目标主机上设置客户端chisel 客户端 <SERVERIP 或 HOSTNAME>:443 R:socks

  3. 在 VPS 上设置代理链进行测试nano /etc/proxychains.conf附加 :socks5 127.0.0.1 1080

  4. 如果/当您想使用代理链通过攻击者服务器进行代理时,请执行以下操作:
    ssh -L 1080:127.0.0.1:1080 root@ATTACKERSERVER- 注意不必是 root 用户。

  5. 然后,您可以在您已经 s'd FROM 的攻击机器上重复步骤 3,从您的机器上代理链socks5 127.0.0.1 1080

  6. 最后,使用代理链来传递任何你想要的流量,或者如果你在 Windows 主机上,你可以使用 Proxifier,它也能很好地进行 RDP 和基于浏览器的代理。代理链 rdesktop internalIP

Chisel 和其他 SOCKS 代理服务器与 Proxifier 和 Proxychains 结合使用效果非常好,这两种代理服务器都能在多个平台上使用;我对 Proxifier 有了新的认识,因为它能让你代理特定的应用程序,并将其他程序发送到标准线路上。

这对 RDP 和 SSH 等应用特别有用,因为在这些应用中,特定主机可被添加到允许连接的主机列表中。 不过值得注意的是,Proxifier 需要付费,而且只适用于 MacOS 和 Windows,Linux 上还有其他解决方案。

lantern的中文

了解 SSH、SOCKS 代理和端口转发都很重要,但如果没有实例,你怎么知道常见的用例? 当你处于攻击性安全环境中时,你会想到一些例子:数据出口和入口、防火墙旁路和通过堡垒主机的安全隧道。 我想到的一个典型例子是,如果你在网络内部安装了一台机器,并希望通过这台被入侵的机器从你的主机传输流量,你可以利用 SSH 或 SOCKS 代理将流量传输到内部网络。

例如,使用类似 MSTSC.exe(也称作 Windows 内置的远程桌面协议(RDP)软件)的软件,通过 SOCKS 访问远程网络上的主机,这可以通过 SOCKS 代理和使用 Proxifier 等软件将流量传递到远程盒子,从而实现无缝体验,就像连接到 VPN 或与目标机器在同一网络上一样。

Nettitude 实验室在其博文中对此做了很好的说明,博文的主题是SharpSocks它演示了使用 SOCKS 代理通过 C2 植入物和 SOCKS 引导 RDP 流量。

lantern的中文

lantern的中文

代理和逃避出口过滤的工具有很多。 我已经介绍过 Chisel 及其独特属性,以及如何利用它将流量代理到环境之外。 下面的列表显示了我以前使用过的一些值得一试的工具;每个工具还深入介绍了使用它们的具体方法和语法。

在这篇文章中,我不会具体深入探讨这些工具以及如何使用它们,因为业内人士对它们都有同样精彩的解释,但希望通过了解它们,你可以在未来的参与中利用它们。 Specter Ops 有一个伟大的职位介绍如何利用 proxifier 和其他工具通过 SOCKS 代理信息。

lantern的中文

您已经读到这里了,感谢您的阅读,希望这篇文章能给您提供一些可以进一步探索的领域。 这不是一份完整的指南,因为我不想重写别人已经写过的优秀文章。 不过,这篇文章围绕应注意的方面提供了一些指导,还提供了一些你以前可能没有考虑过的代理流量的关键工具,以及如何更好地使用 SSH。

lantern的中文

lantern的中文

lantern的中文

lantern的中文