Windows/Linux端口复用工具

admin 2024年9月25日18:34:29评论47 views字数 941阅读3分8秒阅读模式
02

文章正文

工具简介

port_reuse是用golang实现的windows and linux 端口复用工具,主要是在项目中遇到以下问题时使用(以均不出网得场景下):

  • 外网打点遇到内网不出网,代理慢的一批,不管是rdp、ssh还是http等连接均卡得不行。

  • 内网环境遇到强隔离,双方只有个别端口能通无法做二层代理。使用Neo-reGeorg代理又太慢,尤其是正向加正向代理。
我的解决思路是遇到jsp还好可以使用suo5(新版已支持.NET),遇到别的语言确实只能使用Neo-reGeorg。在网上也看到了端口分流的工具,但是依赖于防火墙进行流量转发,所以就衍生了以下工具。
https://github.com/zema1/suo5
工具实现

首先来看代码我们可以通过"golang.org/x/sys/windows"库来指定SO_REUSEADDR。

var lc = net.ListenConfig{  Control: func(network, address string, c syscall.RawConn) error {    var opErr error    if err := c.Control(func(fd uintptr) {      opErr = windows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_REUSEADDR, 1)    }); err != nil {      return err    }    return opErr  },}
接着我们直接监听,运行测试以下
l, err := lc.Listen(context.Background(), "tcp", laddr)
Windows/Linux端口复用工具

我们可以看出以上不同的进程来监听同一个程序。那么端口复用到底又什么用的。我们可以进行以下实验。

首先我们80端口启动一个web服务,来模拟实战环境下内网不出网,同时只能访问web端口的情况。
Windows/Linux端口复用工具
我们通过mstsc来连接80端口,正常情况下是肯定连接不通的。
Windows/Linux端口复用工具
当我们开启端口复用的时候同时来复用3389端口来看看。可以看出我们通过连接192.168.255.128:80也能跟3389建立连接。
Windows/Linux端口复用工具
同时也不影响web端口的正常服务使用
Windows/Linux端口复用工具
Windows/Linux端口复用工具
 

原文始发于微信公众号(安全之眼SecEye):Windows/Linux端口复用工具

 

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月25日18:34:29
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows/Linux端口复用工具http://cn-sec.com/archives/3126483.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息