隧道技术-http

隧道技术是一种网络通信技术,通过在一个网络中封装另一个网络的数据包,在两个网络之间建立一条安全的通信路径。通过隧道技术,可以绕过网络限制或跨越不同网络之间的障碍,实现数据的传输和通信。

以下是几种常见的隧道技术:

  1. VPN隧道:虚拟私人网络(VPN)使用加密隧道技术,将数据包封装在经过公共网络(如Internet)传输的加密隧道中。VPN可以为远程用户提供安全的访问内部网络资源的方式,也可以实现不同地理位置之间的安全通信。

  2. SSH隧道:Secure Shell(SSH)允许用户通过安全的加密隧道连接到远程主机。SSH隧道可以用于传输其他协议的流量,如通过SSH隧道传输HTTP流量或访问其他网络服务。

  3. ICMP隧道:Internet Control Message Protocol(ICMP)隧道是一种使用ICMP数据包封装其他协议数据包的技术。通过使用ICMP隧道,可以将任何类型的数据包封装在ICMP数据包中进行传输,从而绕过某些网络防火墙的限制。

  4. HTTP隧道技术是一种将非HTTP流量(如TCP或UDP流量)通过HTTP协议进行传输的方法。它允许在HTTP流量的传输通道中封装其他类型的数据流,以实现在HTTP协议上运行的应用程序和服务的访问。

HTTP隧道技术的基本原理如下:

  1. 客户端:客户端将要发送的非HTTP流量封装在HTTP请求中,通常是通过建立一个普通的HTTP连接(如POST请求)。
  2. 代理服务器:代理服务器接收到HTTP请求后,解析HTTP头部信息,提取非HTTP流量,并将其传输到目标服务器。
  3. 目标服务器:目标服务器接收到非HTTP数据,并处理它。处理完后,它将响应数据封装在HTTP响应中发送回代理服务器。
  4. 代理服务器:代理服务器再将HTTP响应解析,提取非HTTP响应数据,并将其传输回客户端。
  5. 客户端:客户端接收到非HTTP响应数据,解析处理它。

HTTP隧道技术的使用场景包括:

  1. 绕过防火墙限制:由于HTTP流量通常允许通过防火墙和代理服务器,通过HTTP隧道可以绕过一些限制。
  2. 穿越代理服务器:在某些网络环境中,只允许HTTP协议通过代理服务器进行通信,通过HTTP隧道可以将其他类型的流量传输通过。
  3. 转发非HTTP流量:通过HTTP隧道,可以在HTTP通道中封装其他类型的流量(如SSH、RDP等),以便在受限的网络环境中进行访问。

单内网

目标在内网,攻击者在公网。

需要用到的工具

LCX是一个功能强大的端口转发工具,它允许在不同网络之间建立隧道,并在两个网络之间转发、转发和重定向网络流量。LCX是基于Windows平台的端口转发工具,它使用了类似于Netcat的方式来实现端口转发。

LCX的主要特点包括:

  1. 端口转发:LCX可以通过在本地和远程主机之间建立隧道,将来自一个端口的流量转发到另一个端口。

  2. 加密传输:LCX支持在隧道中使用加密来保护传输的数据,增强通信的安全性。

  3. 灵活的配置选项:LCX提供了多种配置选项,包括本地端口、远程主机和端口、隧道模式等,可以根据需要进行灵活调整。

公网服务器命令

lcx.exe -listen 2333 3389

./portmap -m 2 -p1 2333 -p2 3389


目标服务器命令

lcx.exe -slave 10.9.11.8 2333 127.0.0.1 3389

缺点


流量是否加密
需要公网服务器

双内网

工具

Proxychains是一个开源工具,它可以在Linux和Unix系统中实现代理服务器的功能。它能够将网络流量通过一个或多个中间代理服务器进行转发,以实现网络匿名、绕过防火墙、访问受限资源等目的。

使用Proxychains,可以通过以下步骤来配置和使用代理服务器:

  1. 安装Proxychains:在Linux或Unix系统中,使用适当的包管理器(如apt、yum等)安装Proxychains。

  2. 配置Proxychains:编辑Proxychains的配置文件(一般为/etc/proxychains.conf),设置代理服务器的参数,包括代理服务器的IP地址、端口号、认证信息等。

  3. 启用Proxychains:通过在终端中执行"proxychains"命令,加上要执行的命令或应用程序的名称,将流量通过配置的代理服务器进行转发。

  4. 验证代理设置:执行相应的命令或运行需要代理的应用程序,验证网络流量是否通过代理服务器进行转发。

reGeorg是一个基于HTTP隧道技术的反向代理工具,用于绕过防火墙限制和穿越网络边界。它旨在通过HTTP协议建立与目标服务器之间的连接,并通过将数据封装在HTTP请求和响应中,实现在目标网络上执行命令和返回结果。

reGeorg的使用步骤如下:

  1. 准备环境:需要一台与目标服务器能够进行访问的机器,并安装支持Python的环境。

  2. 下载reGeorg:从可靠的来源下载reGeorg的代码库,可以是GitHub上的reGeorg(https://github.com/sensepost/reGeorg)。

  3. 配置目标服务器:在目标服务器上,通过上传和部署reGeorg的配置文件,如socks.py

  4. 启动reGeorg:在用户机器上,通过命令行运行reGeorg的客户端,连接到目标服务器。

  5. 配置浏览器代理:将浏览器的代理设置为reGeorg的监听端口,并将流量转发到目标服务器。

  6. 穿越防火墙:通过reGeorg建立的HTTP隧道,浏览器发送的请求将被转发到目标服务器,目标服务器执行请求,并将结果返回给浏览器。

具体操作流程

使用HTTP隧道技术穿透双内网是一种将两个私有网络中的设备相互连接的方法。通过HTTP隧道,可以建立一条通过公共网络的通信通道,使得两个内网中的设备可以进行直接通信。

以下是使用HTTP隧道技术穿透双内网的基本操作流程:

  1. 准备设备

  2. 设置代理服务器

  3. 配置设备A1和设备B1

  4. 配置设备A2和设备B2

  5. 建立连接:

    • 设备A2通过HTTP隧道软件将本地服务的请求发送到代理服务器。
    • 代理服务器接收到请求后,将其转发给设备B2。
    • 设备B2接收到请求后,将请求发送到本地服务的监听端口。
    • 本地服务对请求进行处理,并生成响应。
    • 设备B2将响应发送回代理服务器。
    • 代理服务器接收到响应后,将其转发给设备A2。
    • 设备A2将响应传递给请求的客户端。

通过以上步骤,设备A2和设备B2可以通过代理服务器进行通信并实现双向数据传输,从而穿越了内网限制。

下面是部分截图

reGeorgSocksProxy.py作为入口,tunnel.php作为出口。

 入口流量代理

访问出口流量代理

 修改配置文件

 开启远程桌面

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
HTTP隧道技术是一种通过HTTP协议在客户端和服务器之间建立的通道,使得客户端可以通过该通道来访问服务器上的资源。使用HTTP隧道技术可以绕过某些网络限制,例如防火墙阻止了某些协议的访问,使用HTTP隧道技术可以将被限制的协议封装在HTTP请求,从而绕过防火墙的限制。 在Java实现HTTP隧道技术可以使用Java的URLConnection类来发送HTTP请求,并将需要访问的协议封装在HTTP请求。具体实现步骤如下: 1. 创建一个URLConnection对象,设置请求的URL和请求方法为“CONNECT”。 2. 设置HTTP头信息,包括Host,User-Agent等。 3. 发送HTTP请求,获取服务器返回的响应。 4. 如果响应码为200,则表示隧道建立成功,可以通过该隧道来访问服务器上的资源。 5. 如果响应码为其他值,则表示隧道建立失败,需要根据响应码进行相应的处理。 下面是一个简单的Java实现HTTP隧道的示例代码: ``` import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class HttpTunnel { public static void main(String[] args) throws IOException { String proxyHost = "proxy.example.com"; int proxyPort = 8080; String tunnelHost = "target.example.com"; int tunnelPort = 80; String targetHost = "www.example.com"; int targetPort = 80; // 创建连接代理服务器的URLConnection对象 URL proxyUrl = new URL("http://" + proxyHost + ":" + proxyPort); URLConnection proxyConn = proxyUrl.openConnection(); // 设置请求方法为CONNECT proxyConn.setRequestProperty("Proxy-Connection", "Keep-Alive"); proxyConn.setRequestProperty("Proxy-Authorization", "Basic " + new sun.misc.BASE64Encoder().encode("username:password".getBytes())); // 发送连接代理服务器的请求 proxyConn.connect(); // 获取连接代理服务器的响应 System.out.println("Response Code: " + proxyConn.getResponseCode()); System.out.println("Response Message: " + proxyConn.getResponseMessage()); // 创建连接隧道服务器的URLConnection对象 URL tunnelUrl = new URL("http://" + tunnelHost + ":" + tunnelPort); URLConnection tunnelConn = tunnelUrl.openConnection(proxyConn); // 设置请求方法为CONNECT tunnelConn.setRequestProperty("Connection", "Keep-Alive"); tunnelConn.setRequestProperty("Host", targetHost + ":" + targetPort); // 发送连接隧道服务器的请求 tunnelConn.connect(); // 获取连接隧道服务器的响应 System.out.println("Response Code: " + tunnelConn.getResponseCode()); System.out.println("Response Message: " + tunnelConn.getResponseMessage()); // 创建连接目标服务器的URLConnection对象 URL targetUrl = new URL("http://" + targetHost + ":" + targetPort); URLConnection targetConn = targetUrl.openConnection(tunnelConn); // 发送连接目标服务器的请求 targetConn.connect(); // 获取连接目标服务器的响应 System.out.println("Response Code: " + targetConn.getResponseCode()); System.out.println("Response Message: " + targetConn.getResponseMessage()); } } ``` 其,proxyHost和proxyPort是连接代理服务器的地址和端口号,tunnelHost和tunnelPort是连接隧道服务器的地址和端口号,targetHost和targetPort是连接目标服务器的地址和端口号。在实际使用,需要根据具体情况进行设置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

故事讲予风听

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

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

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

打赏作者

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

抵扣说明:

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

余额充值