渗透基础——使用 Go 语言开发 socks 代理工具

发布于 2024-12-09 01:51:04 字数 7674 浏览 3 评论 0

0x00 前言

在上篇文章 《渗透基础——端口转发与代理》 提到了使用 go 语言分别实现正向和反向 socks 代理的方法,不仅开发效率高,而且能够很方便的实现跨平台编译。 本文将要进一步介绍 Windows 系统和 Kali 系统下使用 Go 语言开发的完整过程,并基于开源代码,实现一个 socks 正向和反向代理的工具,记录细节。

0x01 简介

本文将要介绍以下内容:

  • Windows 系统下 Go 语言开发环境的搭建
  • Kali 系统下 Go 语言开发环境的搭建
  • 工具代码细节
  • 开源完整实现代码

0x02 Windows 系统下 Go 语言开发环境的搭建

测试系统: Win7x64

1、安装 Go

下载安装:https://golang.org/dl

或者

https://studygolang.com/dl

2、安装 git

https://gitforwindows.org/

用来下载第三方开发包

0x03 代码实现与 Windows 系统下的跨平台编译

1、安装第三方包

需要以下三个:

安装流程如下:

(1) 安装 golang.org/x/net/context

go-socks5 依赖,否则安装时会提示:

go\src\github.com\armon\go-socks5\request.go:10:2: cannot find package "golang.o rg/x/net/context" in any of: C:\Go\src\golang.org\x\net\context (from $GOROOT ) C:\Users\a\go\src\golang.org\x\net\context (from $GOPATH)

在线安装:

go get golang.org/x/net/context

通常会失败,这里可以先从 github 下载再离线安装

完整命令如下:

md %GOROOT%\src\golang.org\x
cd %GOROOT%\src\golang.org\x
git clone https://github.com/golang/net.git
go install golang.org/x/net/context

注意这里使用的路径为 GOROOT,默认路径为 C:\Go ,可通过输入 go env 查看

(2) 安装 go-socks5

在线安装:

go get github.com/armon/go-socks5

如果安装失败,同样先从 github 下载再离线安装

完整命令如下:

md %USERPROFILE%\go\src\
cd %USERPROFILE%\go\src\
git clone https://github.com/armon/go-socks5.git
go install go-socks5

需要注意这里使用的路径为 %USERPROFILE%\go\ ,即 GOPATH,而不是 GOROOT,可通过输入 go env 查看

如果使用 GOROOT,会出现如下错误:

can't load package: C:\Go\src\go-socks5\request.go:10:2: non-standard import "go lang.org/x/net/context" in standard package "go-socks5"

(3) 安装 yamux

在线安装:

go get github.com/hashicorp/yamux

离线安装:

cd %GOROOT%\src\
git clone https://github.com/hashicorp/yamux
go install yamux

2、实现代码

我这里参考了 https://github.com/brimstone/rsocks

添加了正向代理的功能,并在结构上做了调整,区分正向和反向代理

完整实现代码:https://github.com/3gstudent/Homework-of-Go/blob/master/frsocks.go

3、跨平台编译

正常编译命令如下:

go build frsocks.go

编译成功后生成文件 frsocks.exe

想要指定输出文件名,这里需要先将 frsocks.go 重命名为 main.go,再分别使用以下代码进行跨平台编译

(1)Windows 32 位

SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=386
go build -o frsocks_windows_386

(2)Windows 64 位

SET CGO_ENABLED=0
SET GOOS=windows
SET GOARCH=amd64
go build -o frsocks_windows_adm64

(3)linux arm64

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build -o frsocks_linux_amd64

所有支持的系统如下:

  • android arm
  • darwin 386
  • darwin amd64
  • darwin arm
  • darwin arm64
  • dragonfly amd64
  • freebsd 386
  • freebsd amd64
  • freebsd arm
  • linux 386
  • linux amd64
  • linux arm
  • linux arm64
  • linux ppc64
  • linux ppc64le
  • linux mips
  • linux mipsle
  • linux mips64
  • linux mips64le
  • linux s390x
  • netbsd 386
  • netbsd amd64
  • netbsd arm
  • openbsd 386
  • openbsd amd64
  • openbsd arm
  • plan9 386
  • plan9 amd64
  • solaris amd64
  • windows 386
  • windows amd64

来自 https://golang.org/doc/install/source

0x04 Kali 系统下 Go 语言开发环境的搭建

测试系统: Kali2

1、安装 Go

下载:

wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz

或者

wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz

安装:

tar -xzf go1.11.linux-amd64.tar.gz -C /usr/local

测试:

cd /usr/local/go
echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
source /etc/profile
go

0x05 代码实现与 Kali 系统下的跨平台编译

1、安装第三方包

需要以下三个:

(1) 安装 golang.org/x/net/context

mkdir /usr/local/go/src/golang.org/
mkdir /usr/local/go/src/golang.org/x
cd /usr/local/go/src/golang.org/x
git clone https://github.com/golang/net.git
go install golang.org/x/net/context

(2) 安装 go-socks5

mkdir /root/go
mkdir /root/go/src
cd /root/go/src
git clone https://github.com/armon/go-socks5.git
go install go-socks5

(3) 安装 yamux

cd /usr/local/go/src/
git clone https://github.com/hashicorp/yamux
go install yamux

2、实现代码

https://github.com/3gstudent/Homework-of-Go/blob/master/frsocks.go

3、跨平台编译

正常编译命令如下:

go build frsocks.go

编译成功后生成文件 frsocks

想要指定输出文件名,这里需要先将 frsocks.go 重命名为 main.go,再分别使用以下代码进行跨平台编译

(1)Windows 32 位

CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -o frsocks_windows_386.exe

(2)Windows 64 位

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o frsocks_windows_amd64.exe

(3)linux arm64

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o frsocks_linux_amd64

其它环境见 https://golang.org/doc/install/source

实现全平台编译的批处理文件已上传至 github,地址如下:https://github.com/3gstudent/Homework-of-Go/blob/master/windows_build.bat

0x06 工具测试

1、正向代理

如下图

Alt text

Client:

frsocks -sockstype fsocks -listen 1080

使用代理工具连接 Client 的 1080 端口

2、反向代理

如下图

Alt text

Client:

frsocks -sockstype rsocks -listen 1111 -socks 127.0.0.1:2222

Transit server:

frsocks -sockstype rsocks -connect 1.1.1.1:1111

使用代理工具连接 Client 的 2222 端口

0x07 小结

本文介绍了 Windows 系统和 Kali 系统下使用 Go 语言开发的完整过程,基于开源代码,实现了一个 socks 正向和反向代理的工具。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

送舟行

暂无简介

文章
评论
25 人气
更多

推荐作者

mb_TnrMmzAf

文章 0 评论 0

_1999

文章 0 评论 0

grace999

文章 0 评论 0

混浊又暗下来

文章 0 评论 0

像极了他

文章 0 评论 0

情何以堪。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文