网络技术
The ICMP Tunnel
经过一段时间的学习和研究,总算是把 ICMP Tunnel 的理论知识了解个大概了。研究这项技术期间,出现次数对多的问题大概就是下面这几个: 包从哪里来的? 包去哪儿了? Tunnel 的另一端是谁? 答:操作系统,由操作系统进行包转发,就算设置了 tunnel 的对等端(Peer-to-Peer)也得由操作系统进行转发。于是 前两个问题基本上解决了。 本文包含如下内容:ICMP Tunnel 的基本技术细节, 包括但不限于 IP包、路由、 iptables 、Python 代码. 首先贴一张图,这张图展示了IP包从客户端到服务器再到客户端的过程。 下面将逐步讲解 IP 包的具体流向。 Linux 下使用如下命令 将整个系统的 IP 包都导向 tun0 设备: 反之, tun0 会自动把 Python 程序 写进来的包自动转发到对应的程序.
Original link
手动创建ICMP Tunnel实现VPN上网(附Python实现代码)
其实这是一篇讲解利用中国移动CMWAP的一些特性来实现免费上网的博文,但是没有以这个为标题,因为 1、用的是2G的EDGE网络,跟2G手机上网一样,速度有限. 2、各地区的移动设备有差别,例如在广州,这种方法行不通。但是广州的移动Wifi是可以通过UDP建立VPN来免费使用的。 3、不想吸引太多人的注意。 我见过很多公共网络都对UDP和TCP有不少限制,以致于我们不能自由地访问互联网。为了摆脱这种束缚,很多人都为此付出了很多努力,例如各种代理软件,各种隧道,各种VPN等。本文介绍的是一种比较罕见的ICMP隧道方式建立VPN。 背景 一年前,因为在县城里没有网络使用,又不想晚上跑到外面上,所以经常使用笔记本连接手机的GPRS网络来上网。打开一些网页或者聊天工具之类的,网速的快慢并不是很重要。但是流量有限,当时开通了300MB的套餐也很快被消耗尽了。有一次,在Ubuntu下创建了一个cmwap网络,cmwap是需要设置代理IP为10.0.0.172才能上网的。但是奇怪的是,我竟然可以ping通我自己博客服务器的IP。所以我想cmwap对外网IP的访问只是限制了TCP和UDP类型的数据包进出而已。 为了验证我的想法是否正确,我在网上查找到了一些现成的Ping Tunnel工具,例如 ptunnel 。ptunnel至今还可以使用,但是问题很多, 1、ptunnel只支持TCP。 2、我使用了ptunnel之后,我ping不了自己的服务器了。显然ptunnel截获了所有ping包。(或者我用的版本太低?) 3、速度不稳定,可能是因为自己实现的可靠协议不是很完善? 用cmwap连接后,我使用ptunnel从我博客上下载一个5MB大小的文件。然后用手机查询流量,发现没有少。 由此说明,移动的cmwap是不计算ping的流量的。同时可以大胆猜测,流量计费功能应该是在10.0.0.172的代理服务器上进行的。这就是为何访问移动的一些服务(例如飞信网站)不会收流量费的原因。 我在国内似乎还没有搜索到有文章关于这方面的介绍。同时我在广州用cmwap连接后,无法发送ping包,难道是这个漏洞修补了?有兴趣的朋友可以在自己的地区测试一下。先把连接方式更改为cmwap,然后连上后,ping一下8.8.8.8,看是否收到pong!!!如果能收到,恭喜!你可以利用此特性免费上网。(另外,移动的路由很多,每次连接后得到的IP都不一样,路由也不一定一样。多换几次IP,可以得到能够ping的路由。--2012年1月29日补充) 我发现这个问题后本来打算发博文的,后来不知道为何忘记了。只是偶尔跟身边一些朋友说了一下。 原理 回到主题上! 前段时间使用UDP隧道建立了一个VPN,把我学校里的一个VPS跟美国的VPS接入了同一个网络。参考了这篇文章 《SSH_VPN》 ,有兴趣的同学可以看一下如何使用系统工具手动建立一个VPN。 这次要做的是,让从笔记本输出的IP包,使用ICMP协议封装后,像ping包一样发送到我的服务器,然后我的服务器解除ICMP的封装,把得到的IP包写入本地路由。接着,把捕获到的发送给笔记本的IP包,使用ICMP封装,像pong包(ping的reply)一样发送到我的笔记本。到达笔记本之后,接触ICMP封装,把得到的IP包写入本地路由。这样就在两个机器之间建立了点对点网络了。在此基础上,使用ip,iptables命令设置一下规则,就建立了一个VPN。 模拟一个网页请求流程, 1、Firefox在笔记本发出一个请求。 2、内核使用默认路由发送这个请求的IP包。 3、因为默认路由的设备设置的是tun0,所以被tunnel程序捕获。 4、tunnel程序读取ip包后,用icmp封装,发送到远程vps。 5、icmp无障碍地通过cmwap网络,发送到远程vps上。 6、远程vps收到后,被服务器端的tunnel程序捕获(tunnel程序捕获所有的icmp数据包)。 7、tunnel程序读取icmp包,获取里面的ip包,写入到本地网络中。 8、因为通过iptables设置了nat,所以该ip包的源地址被改为vps ip后,发送到了所请求的服务器上。 9、一个IP包从请求的服务器上返回到vps,经过nat后,进入tunnel程序建立的网络,被tunnel程序捕获。 10、tunnel程序读取ip包后,用icmp封装,发送到笔记本。 11、icmp回应包无障碍地通过cmwap网络,发送到笔记本上。 12、笔记本接收到该icmp包,被笔记本上的tunnel程序捕获。 13、tunnel程序读取icmp包,获取里面的ip包,写入到本地网络中。 14、内核得到这个ip包,通知指定的应用程序响应。 15、Firefox收到了回应。 很详细吧!!!完整的工作流程就是这样。但关键需要解决的是封装ip包和解除封装。 步骤 需要解决以下一些问题: 1、如何捕获与发送icmp包 用socket的RAW模式即可。 2、如何不影响vps上正常的ping回应 给icmp里的code字段设置一个固定值,默认是0,这个值可以随便设置。例如86。这样我们只捕获与发送code值为86的icmp数据包。跟普通的ping区别开来,互不影响。 同时,避免vps的内核回应我们的icmp包。添加下面的iptables规则。使用到-icmp-type type/code选项。type的值中,8是ping请求,0是ping响应,所以只针对响应包屏蔽。但是为了让服务器端的tunnel程序的icmp能发出去,服务器端在发送的时候,可以把code+1,也就变为87,发送出去。 iptables -A OUTPUT -p icmp -icmp-type 0/86 -j DROP 了解更多关于ICMP的选项,请参见RFC792.
Original link
DNS隧道和ICMP隧道 - CSDN博客
http://netsecurity.51cto.com/art/201701/528247.htm 隧道技术 作为攻击方,我们假设自己没有有效的域凭据。这意味着我们不能使用公司的代理向外传输数据。同时,如果我们没有连接到互联网,也无法泄露敏感信息。因此,在这种情况下,隧道技术就能发挥非常重要的作用。 隧道技术不是通过网络直接发送数据包,而是通过封装技术在另一个(通常是加密的)连接中发送
Original link
内网端口转发及穿透 - ZeroKeeper's Blog
最近尝试了一些内网端口的转发和内网穿透,现在一起总结一下。0x01 正向和反向代理正向代理中,proxy和client同属一个LAN,对server透明; 反向代理中,proxy和server同...
Original link
利用icmp隧道 轻松穿透 tcp/udp四层 封锁
专注于web和内网攻防研究,安全开发,安全运维,架构安全,热衷于高质量实用干货分享,提供全方位网络安全培训,更多请扫码关注自己博客下方的微信公众号,同时也期待更多志同道合的兄弟能一起并肩作战
Original link
国内国外免费frp服务器整理收集大全,分享给需要内网穿透的朋友们-电脑网络-魅力博客
此贴专门用于收集和整理目前网络上各位网友分享的frps服务器信息。如果你发现有新分享的服务器但是未整理进来的,请在下方跟帖,我测试能连接后,进行整理进来。如果你是分享者,想取消在此处的分享信息,请联系我邮箱985159359@qq.com以便我及时删除相关信息。frp /
Original link