内容简介:在上篇文章本文将要介绍以下内容:·Windows系统下Go语言开发环境的搭建
0x00 前言
在上篇文章 《渗透基础——端口转发与代理》 提到了使用 go 语言分别实现正向和反向socks代理的方法,不仅开发效率高,而且能够很方便的实现跨平台编译。 本文将要进一步介绍Windows系统和Kali系统下使用Go语言开发的完整过程,并基于开源代码,实现一个socks正向和反向代理的工具,记录细节。
0x01 简介
本文将要介绍以下内容:
·Windows系统下Go语言开发环境的搭建
· Kali系统下Go语言开发环境的搭建
· 工具代码细节
· 开源完整实现代码
0x02 Windows系统下Go语言开发环境的搭建
测试系统: Win7x64
1、安装Go
下载安装:
或者
2、安装git
用来下载第三方开发包
0x03 代码实现与Windows系统下的跨平台编译
1、安装第三方包
需要以下三个:
· https://github.com/armon/go-socks5
· https://github.com/hashicorp/yamux
安装流程如下:
(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、安装第三方包
需要以下三个:
· https://github.com/armon/go-socks5
· https://github.com/hashicorp/yamux
(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、正向代理
如下图:
Client:
frsocks -sockstype fsocks -listen 1080
使用代理工具连接Client的1080端口
2、反向代理
如下图:
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正向和反向代理的工具。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
产品的视角:从热闹到门道
后显慧 / 机械工业出版社 / 2016-1-1 / 69.00
本书在创造性的提出互联网产品定义的基础上,为读者提供了一个从0基础到产品操盘手的产品思维培养方法! 全书以互联网产品定义为基础,提出了产品思维学习的RAC模型,通过认识产品、还原产品和创造产品三个阶段去培养产品思维和产品认知。 通过大量的图片和视觉引导的方法,作者像零基础的用户深入浅出的描绘了一条产品经理的自我修养路径,并且提供了知识地图(knowledge map)和阅读雷达等工具,......一起来看看 《产品的视角:从热闹到门道》 这本书的介绍吧!