freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用Tunna实现信道封装和TCP通信并绕过网络防火墙限制
2023-02-17 19:47:53
所属地 广西

关于Tunna

Tunna是一个由多种工具组成的工具箱,Tunna可以通过HTTP来封装和传输任何TCP流量,值得一提的是,Tunna的所有流量支持绕过部署了完整防火墙系统的网络环境中的任何网络安全限制。毫无疑问,该工具对红队和蓝队研究人员的渗透测试与安全研究活动将非常有用。

简而言之,Tunna就是一个可以通过HTTP来隧道TCP连接的强大工具。

工具运行机制

在一个完全防火墙(入站和出站连接受限-Web服务器端口除外)环境中,Webshell可以用来连接到远程主机上的任何服务,这种连接使用的是远程主机中的本地端口和本地连接,因此防火墙将允许此类连接通过。

Webshell将从服务端口读取数据,并通过HTTP将其封装,并将其作为HTTP响应发送到本地代理。接下来,本地代理了将会对数据进行拆封,并将数据写入其本地端口,客户端程序将连接到该端口。当本地代理在本地端口上接收数据时,它会将它们作为HTTP Post发送到Webshell。然后,Webshell将从HTTP Post读取数据,并将其放在服务端口上,并不断重复上述操作。

整个过程中,只有Web服务器端口需要被打开(一般为80/443)。至此,所有的操作都是通过HTTP协议完成的。

项目架构

Webshells:

conn.jsp     已在Apache Tomcat上测试 (windows + linux)

conn.aspx 已在IIS 6+8上测试 (windows server 2003/2012)

conn.php 已在LAMP + XAMPP + IIS上测试 (windows + linux)


WebServer:

webserver.py   已在Python 2.6.5环境中测试


Proxies:

proxy.py      已在Python 2.6.5环境中测试

工具下载

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/SECFORCE/Tunna.git

工具使用

python proxy.py -u <remoteurl> -l <localport> [options]

工具选项

常用选项

--help, -h 显示工具帮助信息和退出

--url=URL, -u 远程webshell的URL地址

--lport=LOCAL_PORT, -l 本地监听端口

--verbose, -v Verbose模式

--buffer=BUFFERSIZE, -b BUFFERSIZE*  设置HTTP请求大小

无SOCKS选项

--no-socks, -n 不使用SOCKS代理

--rport=REMOTE_PORT, -r webshell要连接的远程服务端口

--addr=REMOTE_IP, -a webshell要连接的远程webshell IP地址 (默认为 127.0.0.1)

上游代理选项

--up-proxy=UPPROXY, -x 设置上游代理 (http://proxyserver.com:3128)

--auth, -A  上游代理开启身份验证

高级选项

--ping-interval=PING_DELAY, -q ping线程时间间隔 (默认为 0.5)

--start-ping, -s 开始ping线程

--cookie, -C 设置请求Cookie

--authentication, -t  开启基础身份验证

工具使用样例

下列命令将在端口8000上开启一个本地SOCKS代理服务器,连接将通过HTTP进行封装,并在远程服务器解封:

python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -v

下列命令将在端口8000上开启一个本地SOCKS代理服务器,工具将会通过一个本地代理(https://192.168.1.100:3128)建立连接,并在访问远程Tunna Webshell时要求进行身份验证:

python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -x https://192.168.1.100:3128 -A -v

下列命令将在webshell和远程主机RDP(3389)服务之间初始化一个连接,RDP客户端可以连接localhost:4444,连接同样通过HTTP封装:

python proxy.py -u http://10.3.3.1/conn.aspx -l 4444 -r 3389 -b 8192 -v --no-socks

许可证协议

本项目的开发与发布遵循GNU开源许可证协议。

项目地址

Tunna:【GitHub传送门

# webshell # 通信安全 # TCP # TCP隧道 # 通信隧道
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录