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

栏目: Go · 发布时间: 7年前

内容简介:在上篇文章本文将要介绍以下内容:·Windows系统下Go语言开发环境的搭建

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

需要以下三个:

·  golang.org/x/net/context

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

需要以下三个:

·  golang.org/x/net/context

·  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、正向代理

如下图:

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

Client:

frsocks -sockstype fsocks -listen 1080

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

2、反向代理

如下图:

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

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正向和反向代理的工具。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

复杂网络理论及其应用

复杂网络理论及其应用

汪小帆、李翔、陈关荣 / 清华大学出版社 / 2006 / 45.00元

国内首部复杂网络专著 【图书目录】 第1章 引论 1.1 引言 1.2 复杂网络研究简史 1.3 基本概念 1.4 本书内容简介 参考文献 第2章 网络拓扑基本模型及其性质 2.1 引言 2.2 规则网络 2.3 随机图 2.4 小世界网络模型 2.5 无标度网络模型 ......一起来看看 《复杂网络理论及其应用》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具