一些隧道搭建

admin 2022年3月1日13:54:15评论3 views字数 4072阅读13分34秒阅读模式

安全测试过程中,往往会遇到各种复杂的网络情况,为了更好的在各个网段穿梭,也自然避免不了搭建各种代理、隧道。 
最常见的情况是,某服务对外只开了80端口,在拿到webshell后,能通过web把流量代理出来,进而以该服务器的网络权限接入到内网。当然,今天不说web代理这块,就主要介绍下UDP、ICMP出网情况下的工具和接入方式。TCP部分,就单纯罗列工具了。

UDP Tunnel

推荐工具

https://github.com/wangyu-/tinyfecVPN

适用场景

1、UDP出网(UDP可直通服务端,并不是指DNS出网的概念) 
2、ROOT权限

工具介绍

tinyfecVPN项目描述是:是一款为有损链接而设计的,具有内置的前向纠错的,可改善高延迟网络质量的VPN。作者wangyu-写过很多UDP相关的工具,如UDPspeederudp2raw-tunnel等,其中tinyfecVPN是基于UDPspeeder的,因此也具有一定的网络质量改善、UDP数据包纠错等能力。工具使用时,会创建虚拟网卡,以虚拟网卡建立VPN进行常规通信,相当于TCP over UDP。

使用案例

弄了两台vps: 
tunnel-client ==> 43.129.86.182 
tunnel-server ==> 43.129.82.135 
其中server设置安全组,只允许 client 访问UDP 53端口(一般UDP可出网的情况,也都限制在53)。

确定UDP可通 
当拿下的机器上没有nc的时候,可以用nslookup来操作,先在自己VPS(服务端)监听UDP 53端口,然后客户端设置nslookup的server为服务端,当服务端收到DNS解析请求,则代表UDP可通。

一些隧道搭建

下载使用 
作者有提供已编译的binary, 不放心也可以自己编译: 
https://github.com/wangyu-/tinyfecVPN/releases

wget https://github.com/wangyu-/tinyfecVPN/releases/download/20210116.0/tinyvpn_binaries.tar.gz

tar -zvxf tinyvpn_binaries.tar.gz

服务端: 
启动监听53端口,并创建10.10.10.0/8的虚拟子网。

sudo ./tinyvpn_amd64 -s -l0.0.0.0:53 -f20:10 -k "passwd" --sub-net 10.10.10.0

这个时候ifconfig可以看到新建的虚拟网卡,以及对应IP:10.10.10.1

一些隧道搭建

客户端: 
连接服务端53端口,组建局域网。

sudo ./tinyvpn_amd64 -c -r 43.129.82.135:53 -f20:10 -k "passwd" --sub-net 10.10.10.0 --keep-reconnect

客户端的ip为:10.10.10.2

一些隧道搭建

如此,便在只有UDP可通的情况下,建立了VPN隧道,此时再访问server端开放的80端口,便畅通无阻了。

一些隧道搭建

在此基础上,可以相当于TCP互通了,可以做各种你想做的事情了。

抓包测试

来看下流量上是什么情况,在服务端nc监听1234端口,然后发送aabbccddeeff数据,分别看本地网卡eth和虚拟网卡上的内容。

一些隧道搭建虚拟网卡 
在虚拟网卡上,可以清晰地看到建立TCP连接全过程,和发送的数据:

一些隧道搭建

物理网卡 
而在eth上,只能看到一堆异常的UDP包(wireshark默认当DNS协议处理,然后都是非正常包)

一些隧道搭建

因为建立vpn的时候,设置了-k,使用xor处理了一下。来看看不做xor时,物理网卡上看到的内容会是什么样子的。

一些隧道搭建大致瞄了一眼,还是没能直接看明白通信内容。whatever,加个密还是会保险一点,毕竟如果有人分析清楚tinyfecVPN协议,还是比较容易解包看明白的。 
同时,在建立VPN后,其实也可以各种TCP代理工具加密用起来了。

所以,这里也能看出,在流量侧对于这类隧道的识别,就是看看是否有持续的不能正常解析的DNS数据包了(当内部网络策略值放通UDP 53端口可访问外网时)。

keep-reconnect 
客户端有个--keep-reconnect选项,为什么要这个选项呢? 
首先,UDP是无状态的,且该场景下只能客户端访问到服务端,要想实现多轮会话,只能设计好协议,让客户端能根据服务端的不同返回进行不同的操作。 
其次,当上述会话停止,或者说中间几个包丢了,导致服务端找不到客户端的时候怎么办呢?那就意味着掉线了。 
所以,加上--keep-reconnect,主要是为了防止在丢失UDP会话后,客户端会主动向服务端发起心跳包,保持持续在线状态。

ICMP Tunnel

推荐工具

https://github.com/jamesbarlow/icmptunnel

适用场景

1、ICMP出网(ICMP可通服务端) 
2、ROOT权限

工具介绍

icmptunnel是在ICMP请求和响应数据包中建立IP流量隧道的工具。说白话,就是利用ICMP来建立类VPN隧道。相当于TCP over ICMP。

使用案例

还是刚才两台机器,client只能icmp到server。

一些隧道搭建

下载编译

git clone https://github.com/jamesbarlow/icmptunnel

cd icmptunnel

make

之后,你便得到了一个icmptunnel的ELF。

禁用内核对ICMP包的响应 
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

服务端 
启动服务,并给启动服务所建立的tun0网卡设置IP地址及子网掩码。

sudo ./icmptunnel –s

sudo ifconfig tun0 10.0.0.1 netmask 255.255.255.0

一些隧道搭建

客户端 
连接服务端,并给启动服务所建立的tun0网卡设置IP地址及子网掩码。

sudo ./icmptunnel 43.129.82.135

sudo ifconfig tun0 10.0.0.2 netmask 255.255.255.0

一些隧道搭建

此时,客户端便可以通过访问10.0.0.1来访问服务端了。

一些隧道搭建

抓包测试

同样,来看一下客户端在访问服务端80端口时,虚拟网卡和物理网卡上抓到的包分别是什么样子。

虚拟网卡

一些隧道搭建虚拟网卡上看到的是正常的TCP协议。

物理网卡

一些隧道搭建可以看到,整个HTTP请求头都被放到ICMP包里了,其实下面的IPv4也是ICMP。1514大小的,就是curl的回报了。 
对比tinyfecVPNicmptunnel并没有增加xor加密等流量混淆的手段,但其实无妨,做个ssh端口转发也就能把流量加密了。同样,因为该场景中,客户端到服务端是单向的,也就同样依靠客户端来做心跳包保持连接。 
对于这一类的隧道,流量上,检测ICMP长度就能看出一些端倪了。

TCP Tunnel

TCP这里就不说了,各类流量转发、VPN、socks代理,就只贴一些常用工具和对应的地址吧。

ZeroTierOne

VPN、跨平台、内网穿透、快速组网。 
https://github.com/zerotier/ZeroTierOne

Frp

跨平台、内网穿透、带管理界面,开源可二开。(一款快速的反向代理软件,可帮助您将NAT或防火墙后面的本地服务器公开到互联网上。) 
https://github.com/fatedier/frp

NPS

一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。 
https://github.com/ehang-io/nps

goproxy

https://github.com/snail007/goproxy 
Proxy是golang实现的高性能http,https,websocket,tcp,socks5代理服务器,支持内网穿透,链式代理,通讯加密,智能HTTP,SOCKS5代理,黑白名单,限速,限流量,限连接数,跨平台,KCP支持,认证API。

iox

一款端口转发转发工具、内网代理工具,README中描述是lcx、ew的加强版。但看下来似乎是说:1、参数简化、好记了;2、并发处理加强了;3、支持流量加密了。编译出来大概2.2M,upx一下后800kb+。 
https://github.com/EddieIvan01/iox

gost

描述是GO语言实现的安全隧道。讲道理没有太用过,但star很多。 
特性: 
多端口监听 
可设置转发代理,支持多级转发(代理链) 
支持标准HTTP/HTTPS/HTTP2/SOCKS4(A)/SOCKS5代理协议 
Web代理支持探测防御 
支持多种隧道类型 
SOCKS5代理支持TLS协商加密 
Tunnel UDP over TCP 
TCP/UDP透明代理 
本地/远程TCP/UDP端口转发 
支持Shadowsocks(TCP/UDP)协议 
支持SNI代理 
权限控制 
负载均衡 
路由控制 
DNS解析和代理 
TUN/TAP设备 
https://github.com/ginuerzh/gost

lcx

原本出处应该不在这,但发现它能编译使用。 
https://github.com/windworst/LCX

ew

http://rootkiter.com/EarthWorm/

NC

最近学到一招端口转发:

nc --sh-exec "nc 127.0.0.1 1433" -l 1432 --keep-open

Root权限

啥?没root权限?那试试下面俩:

1、ubuntu 14.04 - 21.04 
https://github.com/briskets/CVE-2021-3493 
2、应用层提权 稳定好用 
https://github.com/worawit/CVE-2021-3156

原文始发于微信公众号(安全攻防团队):一些隧道搭建

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月1日13:54:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一些隧道搭建https://cn-sec.com/archives/809023.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息