• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

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


This Wind

Recommended Posts

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#environment

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、安装第三方包

需要以下三个:

[rihide]

(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#environment 实现全平台编译的批处理文件已上传至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正向和反向代理的工具。[/rihide]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now