介绍
HTTPTunnel是一个隧道软件。通过http的GET和POST请求隐藏隧道内的流量。适用于有网络封锁的环境,比如防火墙仅允许80端口数据包通过,内部终端访问外部其他应用时,或者渗透测试时访问内部目标服务器的其他业务端口时,都可以通过80端口隐藏。
上图比较形象的体现了该软件的作用,就是突破网路封锁。
HTTPTunnel由两个组件组成:
Client和Server,为了便于理解图中Client和HTTPTunnel Client可以认为同一台客户端,HTTPTunnel Server和Server可以认为时同一台服务端。
下载和安装
软件下载地址:https://sourceforge.net/projects/http-tunnel/
我在查看资料时看支持各种常见的unix系统,包括window平台。
Linux平台下安装完毕会有2个文件:htc和hts,其中htc是客户端,而hts是server端。
我使用的是Windows平台,安装完毕后:
也就是说一旦安装,客户端和服务端都会安装,在配置中进行区分。
配置
服务端配置
服务端配置比较简单,但是要先理解概念。没有说服务端必须位于外网或位于内网,其实不管外网还是内网,客户端访问服务端是受限的,只能通过http的协议,这样去理解,就可以知道哪端应该配置为服务端。
点击图标,运行服务端,会在右下角出现服务端的图标。
右键点击图标,选择设置,出现浏览器窗口。
其实服务端不需要配置,直接运行即可使用。
可以看到侦听80端口。
通过netsat -nao命令可以看到80端口和3389端口已经打开。
PID为1516,通过任务管理器可以查到是httptunnel。
到这里服务端配置完毕。
客户端配置
像打开服务端设置一样打开客户端,也是通过浏览器的方式,不同的是客户端端口使用1079。
上面的端口映射是主要需要配置的,上面配置的是3000–>172.16.10.53:3389,这句话的意思是连接本地3000端口就是连接172.16.10.53的3389,172.16.10.53是服务端IP。
然后再配置Server IP和端口,最重要的是记住要点击保存。
这样一来就可以在本地客户端使用远程桌面连接服务端的3389。
当然172.16.10.53不一定非要是服务器端IP,可以是把服务端当成跳板写成服务端网络可达的任意IP。
同样也可以通过HTTP隧道配置多个链路。比如下图:
这样的话就是不同的本地端口代表了不同的目的IP和端口。
经过我测试和客户端同一个局域网内的主机通过也可以使用此隧道。
比如使用其他主机远程桌面打开:172.16.10.14:3000,实际上打开的就是172.16.10.65的3389。
172.16.10.14是客户端IP。
本测试为了方便没有划分更多网段,但是肯定是测试是通过隧道的,因为把隧道软件关闭连接马上断开。
SOCKS Proxy设置
下面SOCKS Proxy配置就是启用SOCKS代理。
可以对客户端所在网络的其他主机开放SOCKS代理。
也是把服务端当成跳板。
例子1,比如和客户端同样位置的其他主机可以通过socks代理使用远程桌面连接目标主机。
mstsc远程桌面好像不支持socks代理。
我们可以使用Proxifier。
Proxifier
设置好Proxy Server和Rules以后可以运行了。自动分应用走代理。
这样通过远程桌面客户端输入172.16.10.65直接打开,可以通过Proxifier 软件内看到有流量经过。
例子2,比如和客户端同样位置的其他主机可以通过socks代理使用服务端的网络。
比如设置浏览代理:172.16.10.14:1080,就可以通过客户端和服务端建立的隧道到达服务端,使用服务端的网络。
高级功能
其他高级功能没有测试,比如管理登录、用户认证、DNS解析、安全设置、日志设置等。
总结
HTTPTunnel应该是比较老的隧道软件了,在实际应用中可能有更好的选择,但是作为图形化的、理解隧道概念和代理功能来说,是比较不错的测试软件。