使用 socks 实现反向 ssh 隧道

使用 socks 实现反向 ssh 隧道

我的情况如下:

  • 防火墙后面的工作 Mac,名为“受害者”。(High Sierra 10.13.3)
  • 网络上的 Ubuntu VHS,名为“服务器”。其 ssh 在端口 2222 上运行。(Ubuntu 16.04)
  • 其他 Mac 也位于防火墙后面,被称为“攻击者”。(High Sierra 10.13.3)

我想使用 socks 访问只有“受害者”才能访问的内部网站。

当我从“受害者”执行 ssh 并从攻击者进入“服务器”并运行时,我就可以从攻击者获得受害者的 shell 访问权限。ssh -R 5555:localhost:22 [email protected] -P 2222ssh victim@localhost -p 5555

我需要实现的是使用 socks 访问只能从“受害者”访问的网站。

我知道我应该设置一个从受害者到服务器的反向隧道,并在服务器上设置从传入端口到反向连接端口的一些转发,还要在攻击者上设置从本地主机到远程(连接到服务器)的转发,但我该怎么做呢?

当我从攻击者直接设置到服务器的 socks 时,我只需在 Firefox 中运行并设置代理 socks v5 localhost:8080,但我不明白如何在服务器上设置转发...ssh -D 8080 [email protected] -p 2222

谁能给我解释一下?谢谢

答案1

显然没有人能回答这个问题,没关系因为我自己找到了答案。

以下是答案:

  • 受害者ssh -N -f -R 5555:localhost:22 -p <port_of_serv> <ip_of_serv>
  • 攻击者#1:ssh (-N -f) -L 4444:localhost:5555 -p <port_of_serv> <ip_of_serv>
  • 攻击者#2:ssh -p 4444 -D localhost:3333 user_on_victim@localhost
  • 攻击者#3:在 Firefox 或 irc 中,甚至对于常规网络设置:Socks (v5) 代理设置:127.0.0.1 端口 3333

你为主机 localhost 设置的每个应用程序都将通过 serv 隧道传输到受害者,当你访问类似http://myip.com您将看到受害者的 IP/主机。从这里开始,您甚至可以在攻击者(如果你为特定应用程序或整个系统设置了 socks 设置)将通过以下方式进行隧道传输服務受害者你将扮演受害者像这样。

我在思维过程中犯的错误是,我并没有真正理解反向端口方案的样子,我会尝试用简单的术语来解释它。

受害者行动

ssh -N -f -R 5555:localhost:22 -p <port_of_serv> <ip_of_serv>
  • -N= 我不会在 shell 中运行命令
  • -f= 将进程置于后台(这样您就可以关闭终端窗口)
  • -R= 反向隧道
  • 5555:localhost:22= 5555 是服务器内部监听的端口,用于将数据转发到端口 22受害者。如果您已将受害者设置为在端口 2222 上运行 ssh,则应将 22 更改为 2222。
  • -p= ssh 所在的端口服務在跑。

第一次攻击行动

ssh (-N -f) -L 4444:localhost:5555 -p <port_of_serv> <ip_of_serv>`

你执行的第一个命令攻击者( -L 4444:localhost:5555) 将设置一个隧道,以便您与第三个命令的连接将通过隧道直接传输到受害者. (这仅适用于动态端口转发/Socks 应用程序)

如果你只想拥有 shell 访问权限受害者除了这个命令之外,您还应该直接 ssh 登录到 serv 并运行命令:“ssh user_on_victim@localhost -p 5555”。

但是我们不想进行 shell 访问,我们希望动态地传输所有数据,因此我们必须进行端口转发。

或者示意图

  • -L= 本地端口转发(开启服務
  • - 4444:localhost:5555将所有来自端口 4444 的数据放入端口 5555。

第二次攻击行动

你执行的第二条命令攻击者

ssh -p 4444 -D 本地主机:3333 用户_on_victim@localhost

是实际的命令,它将初始化通过 2 个隧道的连接。您要做的就是:连接到端口 4444,并将所有通过(本地主机端口 3333)传入的数据放入 4444。(这些数据将在本地通过服務到端口 5555 -> 将被推送到端口 22受害者

或者示意图

  • -D= 动态转发
  • localhost:3333= 监听端口 3333 并通过 ssh 连接将数据推送到端口 4444 以进行服务。
  • -p 4444= 端口服務正在监听将数据转发到端口 5555,然后发送到端口 22受害者

第三次攻击行动

设置您的应用程序甚至整个系统以使用 SOCKS (v5) 代理服务器,地址:localhost 端口:3333。这些应用程序在哪个端口上正常运行并不重要,因为这将由代理服务器处理。理论上,每个应用程序都可以通过 socks 代理动态端口转发运行。您只需进行设置即可。:)

第三次行动攻击者你要传输的实际数据是受害者。这是什么数据或应用程序并不重要,这就是为什么它是动态转发,这些应用程序在哪个端口上运行并不重要,因为这将由 SOCKS 处理。

我希望有人能从我的解释中得到帮助。

祝你今天过得愉快....

相关内容