当你的才华
还撑不起你的野心时
那你就应该静下心来学习
目录
一般情况下,出于节约IPv4地址资源和方便网络管控的目的,公司搭建局域网时往往采用NAT技术来实现局域网内机器对外网的访问。通过NAT技术可以实现局域网中机器对互联网的访问,但互联网主机无法主动访问局域网中的特定机器。因此在渗透测试中经常遇到目标服务器出于内网,互联网主机无法直接访问的问题,以端口转发和端口映射技术为主要内容的代理技术能够很好的解决这一问题。代理技术按代理流量在TCP/IP协议栈中所处的位置可以分为HTTP代理和socks代理。
Linux环境下搭建代理与windows环境不同,在linux环境下需要编译、安装代理工具,并且有时甚至需要根据linux环境及编译器的版本修改代理程序源码。socks代理速度优于HTTP代理,并且socks代理中继技术可以快速的解决多个内网之间互联互通的问题,因此通常情况下优先选择socks代理。我们来说一下,linux环境下的socks代理搭建和socks代理中继问题。
环境配置
首先安装
Proxychains
安装git执行
yum install git
安装make环境
yum -y install gcc automake autoconf libtool make
下载proxychains4执行git clone https://github.com/rofl0r/proxychains-ng.git
cd proxychains-ng
# configure and install
./configure --prefix=/usr --sysconfdir=/etc
make sudo
make install
sudo make install-config # installs /etc/proxychains.conf
注意:如果执行make && make install时提示make: cc: Command not found错误,这是由于新安装的Linux系统没有安装gcc环境,需要安装gcc,yum install gcc
proxychains实现流量代理时需要读取代理服务器配置信息,该信息存储于proxychains.conf文件中,proxychains每次启动都会按照如下顺序搜索proxychains.conf配置文件:
1)./proxychains.conf
2)$(HOME)/.proxychains/proxychains.conf
3)/etc/proxychains.conf
在编译安装proxychains的过程中会自动生成/etc/proxychains.conf文件,其它两个配置文件需要自己创建,我们直接以/etc/proxychains.conf作为配置文件即可,如需额外配置的朋友可网上自行了解。
默认proxychains.conf文件在/opt/proxychains/src/proxychains.conf下,需要将它拷贝到/etc/proxychains.conf 这个路径下才能生效;
安装完成后,可以通过proxychains application args命令来完成application应用的流量代理,比如:执行proxychains ssh 10.1.1.12 后ssh连接10.1.1.12的所有流量都会发给proxychains配置的代理服务器。
Proxychains配置说明列:
strict_chain(默认开启)
按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的。dynamic_chain(默认关闭)
按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的。random_chain(默认关闭)
列表中的任何一个代理服务器都可能被选择使用,这种方式很适合网络扫描操作(参数chain_len只对random_chain有效)。proxy_dns(默认开启)
代理dns请求ProxyList
添加代理列表,如http、socks4/5、auth user/pass
修改配置文件–proxychains.conf
vim /etc/proxychains.conf
最后一行是重点(115行)默认的9050端口改成相应的代理端口;
附上一个简单的配置例子:
strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
socks4 192.168.2.1 1080
socks5 10.9.17.96 1080
socks5 135.251.134.71 1080 alus asb#2345
实验环境网络拓扑图
为了更好环境演示,我们先关闭防火墙
service iptables stop
使用xsocks+proxychains搭建代理
0x01 前言
xsocks是一款开源socks5代理工具,该工具在windows下和linux下都可以编译运行。下面将讲述如何使用xsocks搭建socks正向代理和反向代理
工具搜集
首先需要明确的是该Web服务器是Windows Server 2008 R2系统,所以选用的SOCKS代理软件服务端必须能够在Windows平台上正常运行,并且尽可能不需要安装其他依赖软件。同时,如果我们处于渗透测试的过程中,尽可能使用无GUI界面的工具。必须使用GUI界面配置和启动的SOCKS服务端程序将会放在最后考虑。
按照这两条标准进行搜集,我发现下面几款工具,推荐一下!
1、Earthworm
作者:rootkiter 工具网址:http://rootkiter.com/EarthWorm
Earthworm不仅具备SOCKSv5的功能,还具备反弹式SOCKS代理和lcx端口转发、映射的全部功能(listen、tran、slave)。同时提供了多种可执行文件,以适用不同的操作系统,Linux、Windows、MacOS、Arm-Linux。命令行操作,无GUI,适合渗透测试使用。
2、xsocks
作者:5loyd 工具网址:https://github.com/5loyd/xsocks
xsocks是一款能在Windows和Linux系统上运行的反弹式SOCKS代理服务端。命令行操作,无GUI,适合渗透测试使用。当然使用前需要从github上下载代码编译,Windows用VS2010及以上版本即可编译。
3、ShadowSOCKS(影梭)
作者:@clowwindy等 工具网址:https://github.com/shadowSOCKS 还有官网呀:http://shadowsocks.org
ShadowSOCKS是一个开源 SOCKS5 代理项目。如其官网所言,它是 “A secure SOCKS5proxy, designed to protect your Internet traffic” (一个安全的 SOCKS5 代理)。其作用,亦如该项目主页的 wiki中所说,“A fast tunnel proxy that helps you bypass firewalls” (一个可穿透防火墙的快速代理)。
ShadowSOCKS有python、nodejs等诸多版本,还有移动版。
在Windows平台下,推荐使用libQtShadowSOCKS,用C++编写并使用了Qt 5框架。
Release版本地址:https://github.com/shadowSOCKS/libQtShadowSOCKS/releases
无GUI界面,命令行版,支持x86和x64系统,相当好用。
后面会详细介绍这款代理服务端程序的使用。
前面主要是代理服务端程序的推荐,当然我们还需要客户端。
4、SocksCap64
作者:Taro 工具网址:http://www.sockscap64.com
一般浏览器是支持代理设置的,但如果是渗透测试,肯定要使用很多不同的工具,但这些工具并不能保证都支持代理设置。因此我们需要使用应用程序外壳代理软件来使不能设置代理的软件和程序的网络数据流量通过代理。
推荐SocksCap64,比较靠谱的一个软件,可在Windows系统下使用。
SocksCap64是由Taro Labs开发的一款免费的应用程序外壳代理软件。SocksCap64可以使Windows应用程序通过SOCKS代理服务器来访问网络而不需要对这些应用程序做任何修改, 即使某些本身不支持SOCKS代理的应用程序通过SocksCap64之后都可以完美的实现代理访问。例如: Web Browsers, IM程序, FTP Clients, e-mail programs or games。
(1)完美支持SOCKS4/5/Http/Shadowsocks代理协议。 (2)完美支持TCP& UDP网络协议。 (3)支持远程SOCKS代理解析域名。
1. xsocks源码:https://github.com/5loyd/xsocks
2. ssocks源码:https://sourceforge.net/projects/ssocks/
3. proxychains 源码:http://proxychains.sourceforge.net/
4. socks5 RFC:http://www.ietf.org/rfc/rfc1928.txt
0x02 操作演示
编译xsocks
1.查看g++版本命令
g++ -v
解压xsocks文件,并编译xsocks命令
xsocks
作者:5loyd 工具网址:https://github.com/5loyd/xsocks
xsocks是一款能在Windows和Linux系统上运行的反弹式SOCKS代理服务端。命令行操作,无GUI,适合渗透测试使用。当然使用前需要从github上下载代码编译,Windows用VS2010及以上版本即可编译。
unzip xsocks-master.zip
cd xscoks-master
make && make install
怕一些小伙伴又搞忘记了Linux 的一些命令,我重新再写一下好了。
需要学习Linux 一些常用基础命令的话,请前往如下链接:
https://blog.csdn.net/God_XiangYu/article/details/89703615
• & 表示任务在后台执行,如要在后台运行
如: [root@localhost local]# java -jar test.jar > log.txt & 运行 test.jar程序 ,并且置于后台执行,执行的日志重定向 到当前默认的log.txt文件中
• && 表示前一条命令执行成功时,才执行后一条命令
如: [root@localhost tmp]# ls -l && cd .. 总用量 4 -rw-r–r–. 1 root root 2252 1月 4 22:25 log.txt -rw——-. 1 root root 0 1月 3 23:23 yum.log [root@localhost /]#
• | 表示管道,上一条命令的输出,作为下一条命令参数(输入)
如 : [root@localhost ~]# ps -aux | grep aux Warning: bad syntax, perhaps a bogus ‘-‘? See /usr/share/doc/procps-3.2.8/FAQ root 53 0.0 0.0 0 0 ? S 16:33 0:00 [ata_aux] root 2379 4.0 0.1 110224 1172 pts/2 R+ 22:55 0:00 ps -aux root 2380 0.0 0.0 103316 868 pts/2 D+ 22:55 0:00 grep aux 查询全部进程后输出结果在进行过滤跟 进行中包含aux的进程。
• || 表示上一条命令执行失败后,才执行下一条命令,
如: [root@localhost tmp]# als -l || cd .. -bash: als: command not found [root@localhost /]#
• 来看>符号是指:将正常信息重定向
如: find / -name “*.txt” > /tmp/log.txt 在跟目录下根据名字来查找*.tx输入的日志放置/tmp/log.txt文件中
• &>可以将错误信息或者普通信息都重定向输出
进入后编译xscoks ,发现报错。
如何解决上面报错的问题?此时,我们只需要修改源:将src/stdafx.h第13行、24行注释掉;修改 src/common/CommonDefines.h中BOOL 为bool
:set nu 一下显示行号
src/stdafx.h修改如下:
修改好后按ESC键,然后输入:wq 最后Enter一下保存
src/common/CommonDefines.h修改如下:
返回xscoks-master目录下,如下图
创建bin 目录,然后编译运行
mkdir bin
make && make install
使用xsocks搭建正向代理
备注:此处假设内网服务器有公网IP,可以直接搭建正向代理,所有xsocks命令都是在xsocks/bin目录下执行的。
1. 在内网服务器,执行如下命令创建一个socks5代理,该代理监听6020端口
./xsocks -l 6020
2. 在攻击主机编辑proxychains代理配置文件,添加代理配置信息:socks5 proxy_ip proxy_port ,其中 proxy_ip是代理服务器ip,proxy_port是代理端口
vi /etc/proxychains.conf
将socks4 127.0.0.1 9050 替换为socks5 内网IP地址 端口
执行如下命令,连接内网服务器,查看ip得知代理成功。
proxychains ssh 127.0.0.1
使用xsocks搭建逆向代理
备注:此处内网服务器没有公网IP,代理主机有公网IP,攻击主机也没有公网IP,所有xsocks命令都是在xsocks/bin目录下执行的。
1.代理主机执行如下命令,实现6020端口流量向6010端口的转发
./xsocks -t -p1 6010 -p2 6020
2.内网主机执行,如下命令建立代理服务器并反向连接代理主机6010端口2
./xsocks -r 10.1.1.32:6010
3.在攻击主机编辑proxychains代理配置文件,添加代理配置信息:socks5 10.1.1.32 6020
vi /etc/proxychains.conf
4.执行如下命令,连接内网服务器,查看ip得知代理成功。
proxychains ssh 127.0.0.1
参考链接:
http://www.hetianlab.com/expc.do?ce=bb9cf6a8-53f4-4336-8cd9-ce3ef1624fa6
我不需要自由,只想背着她的梦
一步步向前走,她给的永远不重