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

幸运草
幸运草
幸运草
896
文章
3
评论
2020年3月28日18:34:56 评论 361
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依赖,否则安装时会提示:

gosrcgithub.comarmongo-socks5request.go:10:2: cannot find package "golang.o rg/x/net/context" in any of: C:Gosrcgolang.orgxnetcontext (from $GOROOT ) C:Usersagosrcgolang.orgxnetcontext (from $GOPATH)

在线安装:

go get golang.org/x/net/context

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

完整命令如下:

md %GOROOT%srcgolang.orgxcd %GOROOT%srcgolang.orgxgit clone https://github.com/golang/net.gitgo install golang.org/x/net/context

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

(2)安装go-socks5

在线安装:

go get github.com/armon/go-socks5

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

完整命令如下:

md %USERPROFILE%gosrc

cd %USERPROFILE%gosrc

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:Gosrcgo-socks5request.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

所有支持的系统如下:

· androidarm

· darwin386

· darwinamd64

· darwinarm

· darwinarm64

· dragonflyamd64

· freebsd386

· freebsdamd64

· freebsdarm

· linux386

· linuxamd64

· linuxarm

· linuxarm64

· linuxppc64

· linuxppc64le

· linuxmips

· linuxmipsle

· linuxmips64

· linuxmips64le

· linuxs390x

· netbsd386

· netbsdamd64

· netbsdarm

· openbsd386

· openbsdamd64

· openbsdarm

· plan9386

· plan9amd64

· solarisamd64

· windows386

· windowsamd64

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

本文来源于:渗透基础——使用Go语言开发socks代理工具-变化吧博客
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧博客观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。

转载请注明:{{title}}-变化吧
  • 赞助本站
  • 微信扫一扫
  • weinxin
  • 赞助本站
  • 支付宝扫一扫
  • weinxin
幸运草
当心!你的DNS可能被劫持了! 劫持

当心!你的DNS可能被劫持了!

百度疑遭神马流量劫持 搜索暗战又将爆发?近期,有网友在微博上爆料说,在使用百度搜索的时候,浏览完落地页返回搜索结果页时,会进入到一个虚假的百度移动搜索结果页,一眼看去与百度搜索并无差别,但仔细观察会发...
8种网络黑灰产作案工具 劫持

8种网络黑灰产作案工具

个人信息安全、黑灰产业链... 这些词语近年来高频出现 除了网络安全相关的专业人士 现在普通的网络用户 对网络安全的重视程度也越来越高 9月17日,2018国家网络安全宣传周——网络安全博览会揭幕。本...
网络诈骗就在我们身边,时刻提高警惕 劫持

网络诈骗就在我们身边,时刻提高警惕

为什么DNS监测能够让你的网络更加安全但由于极少有公司会出于安全目的监测DNS状态,DNS如今已成为攻击者理想的攻击手段。 在DNS层实施安全防御,可以有效检测和控制此类恶意软件感染。在恶意连接建立之...