隧道穿透:端口转发、socket隧道代理

18 篇文章 0 订阅
16 篇文章 1 订阅

目录

端口转发

lcx工具

Lcx工具正向连接

Lcx工具反向连接

SOCKET隧道代理

socks常见利用场景

Proxifier

SocksCap64

Proxychains


端口转发

本篇会和搭建介绍一下端口转发和socket隧道代理的概念和简单演示

lcx工具

lcx工具是一个红队人员在内网渗透测试中最典型的端口转发工具,lcx工具可分为Windows和Linux两个版本,这里以lcx工具为例,以转发3389端口为目的演示端口转发功能。

本次实验环境表如表1所示。

端口转发实验环境表

类型IP配置
攻击机192.168.159.151(攻击)
跳板机192.168.159.229 192.168.52.102(双网卡跳板机边界设备)
靶机192.168.52.101(内网主机)

本次实验是在内网靶机上开启远程桌面连接跳板机使用lcx工具进行端口转发在靶机和跳板机中搭建一条隧道,用攻击者电脑连接跳板机隧道端口,通过跳板机的端口,获取到内网靶机的远程桌面权限。

注意:攻击者通过防火墙允许的服务端口访问跳板机服务器,在跳板机进行设置隧道代理后访问到内网靶机。

因跳板机是双网卡,可与外部主机和内网靶机通讯,所以可以通过在跳板机搭建隧道访问内网的IP。内网可以与跳板机通讯,通过与攻击者在跳板机搭建的隧道,绕过限制与攻击者进行通讯,如图1-18中的虚线所示。

lcx工具下载: GitHub - UndefinedIdentifier/LCX: 自修改免杀lcx端口转发工具

这里我模拟环境如下:

Kail攻击机:192.168.159.151

windows7-1为双网卡主机:192.168.159.229 192.168.52.102

windows server 2008 为靶机:192.168.52.101

现在的瓦罗情况如下:

Kail主机通过公网是可以访问到windows 7跳板机的外网地址,无法访问到内网的ip地址:

windows 7 主机可以访问Kail主机和windows server 2008主机:

windows server 2008 可以访问windows7的内网地址,但是不能访问外网的Kail:

Lcx工具正向连接

查看lcx工具命令帮助信息,执行lcx.exe -help命令:

使用lcx工具的前提是,已经获取到跳板机的系统管理权限,进行上传工具后,可以使用-tran参数来进行正向转发,在跳板机上执行lcx.exe -tran 8888 192.168.52.101 3389命令,会把靶机的3389端口转发到跳板机的8888端口上,成功与靶机之间搭建一条隧道,如图1-20所示。

此时已经将靶机的3389端口转发到跳板机的8888端口上,成功搭建了一条隧道。

现在我们使用kali攻击机执行rdesktop 192.168.159.229:8888命令,连接跳板机的8888端口,即可与靶机成功建立远程连接:

可以看到现在成功的通过中间主机192.168.159.229,转发本地8888端口到3389上,我们使用攻击机192.168.159.151访问192.168.159.229:8888端口,然后连接到了靶机192.168.52.10:3389的远程桌面服务

注:如果出现下面错误:

rdesktop 192.168.159.229:8888
Core(error): tcp_recv(), recv() failed: 连接被对方重设

使用下面的方法解决:

右击“我的电脑”->"属性"->"远程设置"->在远程桌面选项中,选择允许运行任意版本远程桌面的连接。

Lcx工具反向连接

反向连接和上述所讲的正向连接恰好相反,首先在跳板机上开启监听,执行lcx.exe -listen 6666 8888命令用来监听本机6666端口并将该端口的连接映射到本机的8888端口上

然后在靶机执行Lcx.exe -slave 192.168.52.102 6666 127.0.0.1 3389命令将3389端口转发到跳板机的6666端口上搭建一条隧道,然后跳板机再将6666端口映射到本机的8888端口。只要能访问到跳板机的主机,均能通过跳板机的8888端口连接内网的3389端口:

在kali攻击机使用 rdesktop 192.168.159.229 8888命令来远程连接访问跳板机的8888端口,即可访问拿到靶机的3389

可以看到这里也是成功的反向链接成功的进行了端口转发实现了内网穿透,访问到了靶机

SOCKET隧道代理

Socks是Socket Secure的缩写,它是一种工作在OSI七层模型中的第五层网络会话层协议,Socks主要的作用是代表客户端将任何协议或者任何程序产生的任何类型的流量路由到服务器上,以此来将本地和远端两个系统连接起来。

由于Socks其处于第七层和第四层模型之间,因此socks可以支持HTTP、HTTPS、FTP、SSH、FTP等多种协议,Socks从版本上来讲,又可分为socks4和socks5这两种版本,目前socks协议最新版本为socks5,socks4和socks5这两者版本最主要的区别是socks4仅支持TCP代理,不支持UDP代理以及各种验证协议socks5不仅支持TCP/UDP代理以及各种身份验证协议的同时,还会通过身份验证建立完整的TCP 连接,并使用Secure Shell (SSH) 加密隧道的方法来中继流量,,我们经常会利用Socks5来建立通信隧道以此来访问远程核心靶标系统中的内部网络。

socks常见利用场景

假设在目标内网中已经获取了一台可执任意行命令权限的主机后,需要来对其主机所属的区域以及安全策略进行判断探测是否可以建立socks连接,具体的socks常见利用场景描述如下表:

目标位置场景描述
内网防火墙未对出口流量及端口做任何方面的安全策略,内网中的服务器可任意访问外部网络,不受安全策略限制。
内网防火墙只配置了特定的入站规则,仅允许特定业务的端口进行访问(例如:80、443)
内网防火墙都配置了特定的出入站规则,仅开放了特定的端口(例如:80、443)

在实网攻防对战中有很多的Socks代理工具可供我们选择使用,但值得我们注意的是,我们需要结合实际的场景去选择对应的Socks代理工具,尽量使用一些没有GUI界面以及不需要依赖其他软件支撑的Socks代理工具,下面我会演示三种常见的Socket代理工具的基本使用

Proxifier

Proxifier是一个基于Mac / Windows 系统的网络代理软件客户端工具。Proxifier支持TCP,UDP协议,Xp,Vista,Win7,mac系统以及socks4,socks5。它为本地系统内具体的应用提供代理服务,让部分软件(网址或 IP)使用代理访问网络,而其它软件(网址或 IP)正常访问网络。

图1-25 Proxifier全局代理软件

SocksCap64

Sockscap64是由Taro开发的免费代理客户端软件,可以使windows网络应用程序通过socks代理服务器开访问网络而不需要对应用程序进行任何修改,即便某些程序不支持socks代理也可以完美解决代理访问问题。

Sockscap64目前只支持socks4、socks5及TCP连接。

图1-26 SocksCap64 全局代理软件

Proxychains

ProxyChains是一个基于linux和其他Unix的开源代理工具,其支持http、socks4和socks5进行代理连接。它是通过一个用户定义的代理列表强制连接指定的应用程序,直接断开接收方和发送方的连接。proxychains也可以用于在网络中进行匿名操作的工具。它通过将流量通过代理服务器进行转发,隐藏了用户的真实IP地址和位置。

可以进入/etc/proxychain4.conf文件中设置代理:

vim /etc/proxychains4.conf 

注:可以在文件的末尾增加代理

下面使用一个例子来演示一下它的作用,我们可以使用Proxychains配置文件中的代理服务器进行扫描,实现IP地址的隐藏和匿名。

添加代理

尝试使用 ProxyChains 代理访问网站 github.com

可以看到现在就使用代理ip地址127.0.0.1:8000访问的网站

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Qt内网穿透端口转发是一种将内网中的局域网设备通过穿透技术映射到公网上,实现公网访问的方法。Qt是一种跨平台的C++应用程序开发框架,可以用于编写各种类型的应用程序,包括网络通讯相关的应用。 内网穿透端口转发的实现原理是通过在 NAT 中间人攻击方式,将公网的请求转发到内网中指定设备的指定端口上,从而实现对内网设备的访问。Qt 提供了一些网络编程接口和类,可以用于实现内网穿透端口转发功能。 在 Qt 中实现内网穿透端口转发,可以使用 Qt 的网络编程库进行开发。首先需要创建一个 TCP 服务端,监听公网的请求。当收到请求后,根据请求的目标设备和目标端口,在内网中找到对应的设备,并将请求转发到该设备的指定端口上。 具体步骤如下: 1. 创建一个 QTcpServer 对象,调用其 listen 方法,监听指定的公网端口。 2. 当收到公网请求时,QTcpServer 会触发一个新连接的信号。 3. 在新连接的槽函数中,获取请求的目标设备和目标端口。 4. 在内网中找到对应的设备和端口,创建一个 QTcpSocket 对象,连接到该设备的指定端口上。 5. 将公网请求的数据通过 QTcpSocket 的 write 方法发送到内网设备。 6. 同时监听 QTcpSocket 的 readyRead 信号,当内网设备返回数据时,通过 QTcpServer 的 write 方法将数据返回给公网。 通过以上步骤,就可以实现 Qt 内网穿透端口转发的功能。需要注意的是,为了确保内网设备的安全性,应当对公网请求进行必要的身份验证和安全控制。同时,在代码实现中,还需要处理异常情况和错误处理,确保端口转发的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未知百分百

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值