浅谈公司上网行为管理原理及绕过

前言

        相信所有上班的朋友们,对于公司的上网行为管理那一定是深恶痛绝,它严重影响了我们的日常摸鱼......不,是为了更好的工作而必要的适当的放松。嗯...对没错,就是适当的放松,那么作者今天就为大家谈谈上网行为管理的本质以及绕过方式。那么,话不多说,直接进入正题。

1.上网行为管理的本质

1.1理论性说明

        说到上网行为管理的本质,无非就是对我们的请求或响应的数据流量进行分析,而这一分析过程一般是由公司的边界设备或其它内网流量出口设备进行监测。以b站为例,当你向b站服务器发起请求时,边界设备首先会检测你的流量类型,发现你是http请求,然后对你的流量做进一步的检测,而你的http请求头中必然携带着bilibil.com等字样,此时边界设备就可以以bilibili为正则规则,将凡是有该字样的http请求进行丢弃而不转发,以此就隔绝了你对b站的访问。

1.2实例性说明

        以你想要出国为例,假设我们国家现在禁发了对美国的签证。你跑到国家的出国机场,表示你想要去美国,那你说结果会怎样呢?因此行为管理本身不是对方(美国)不再对你提供服务,而是你的必经之路上有人(国家签证管理的单位)对你进行拦截。

1.3思考一下我们要如何在这种情况下前往美国

        相信聪明如你,肯定已经想到了解决方案,是什么呢?那就是告诉国家签证单位我要去的是英国,那么此时国家没有限制前往英国,你自然而然的就成功出了国;但你要去的是美国而非英国,接下来该怎么办呢?那么就很简单了,你只需要英国有人接应将送你到美国就可以完美的实现你的目的,所以关键点在哪里呢?关键点自然就是你需要英国有人可以接应你。

2.浅谈各类应用层协议

        这里先浅谈一下应用层的各种协议,如http、dns等协议,这样能够使大家更加清楚如何通过技术手段绕过行为管理。

2.1网络通信的本质

2.1.1理论性说明

        其实所有网络通信的底层协议都是依托socket协议,我们的操作系统为我们封装好了socket协议硬件层的实现,我们只需要通过调用操作系统的api即可快速在两个设备之间建立链接。那么什么是通信协议呢?其实所有的通信协议都是对socket协议进行的封装,以http协议为例,我们知道http协议在发送数据时会首先发送请求方法(GET等)、请求路经、版本号(HTTP/1.1)等信息。只要发送数据和接受数据的两方,即socket客户端和服务端能对彼此的数据进行正确的解封装和读取即可。所以本质上所有的通信协议都是对数据格式规范的约定,彼此都按照该约定进行数据封装发送,对方就能够正确的解封装读取正确信息。

2.1.2实例性说明

        就以我们两个人对暗号为准,我们商议要在我们要传达的信息前加上一句"天王盖地虎",这就是我们的约定,我们将其命名为"摩斯协议"。不了解我们约定规范的人获取到我们交流的数据,看到"天王盖地虎",不理解是什么意思,就无法正确处理数据。而我们彼此之间知道要去掉这个暗号,读取后面的数据,因此我们能够理解彼此的真正意思。怎么样,是不是很简单?就这么简单你就可以自创一种全新的通信协议(只是世界上没有人认同你的协议,因此只能你自己使用),说的这里我想大家多少也能理解一点VPN可以保证数据机密的原因了吧。

3.绕过上网行为管理的方法

        相信前面说了这么多,大家应该对网络通信有一个具体的认识,相信你内心已经有了很多个大胆的想法来绕过那讨厌...不对,是可亲的上网行为管理了吧。

        其实很简单,就是欺骗边界设备的同时,在外网准备一台接应你的服务器,从而实现跨过上网行为管理,也就是在你和接应服务器之间建立一条隧道,边界设备无法识别或错误的识别你的数据,也就不谈拦截你的行为了。

3.1理论性说明

3.1.1DNS隧道

        这里我决定用dns隧道进行说明,至于为什么选择dns而不是其它协议,原因很简单:

首先边界设备认识dns流量,因此不会把你当作未知流量拦截,并且大部分设备都是不会去检测dns的流量,这无疑等同于是免死金牌。(怎么样,本文章含金量够不够?学会本文的技术,不说绕过行为管理,全球至少95%的检测拦截设备都无法再阻拦你的脚步,就凭借这DNS隧道)

        这么高端的技术,要一个三连不过分吧。你说是不是,,,嗯嗯对没错,抓紧点赞,不然作者我可把其它高端技术烂在肚子里了,哼哼。

        请求发送处理过程:你只需通过任何一种编程语言,如python(它们都提供socket库),自己编写一个网络请求,本机作为socket客户端,通过python去请求b站的流量,然后python对请求的数据进行封装,为它添加一层dns头部信息,发送给我们的接应服务器。在出网时,边界设备发现你的请求是dns流量,自然就会放你出去,接应服务器则作为socket服务端,也通过python编写socket数据请求和处理规范,将我们发送给接应服务器的数据进行解封装还原为http请求再转发给b站服务器。

        请求接收处理过程:我们的接应服务器在收到b站的http响应数据之后,通过同样的方式将http流量添加一层dns头,然后发送给我们的内网本机,在通过边界设备进入内网时,同样因为是dns流量而被放行,本地接收到数据后再对数据进行解封装,去除掉dns头还原为http数据,再通过浏览器或其它可以处理http数据的应用程序进行渲染展示即可。

        怎么样是不是很简单?不过为了保证我的读者们大脑清醒,本作者还是通过实例描述一下原理。(好贴心的作者有木有被感动到?还不赶紧三连)

3.2实例性说明

        以你想要把一个禁止售卖和托运的物品运出去交易为例:

        你先将禁卖品装在一个正常的快递盒中,然后进行邮寄,快递检查机构发现你的快递就是一个普普通通的快递盒因此允许你邮寄,将你的快递发到了接应者手中。接应者拿到之后拆除了快递盒,露出了它的真面目,然后去与你的最终目标进行交涉,将你的禁卖品交给了目标,目标将相应的报酬给到你的接应者,接应者再使用正常的快递盒进行包装,重新邮寄给你,你再将快递盒拆除,拿到了你想要的东西。

        怎么样,这么描述一下是不是瞬间理解了这一过程。

4.补充

4.1socket协议编程效果

        这里补充一下socket协议编写代码实现的效果是怎样的,就以本人很久之前编写的实现双方简单交流为大家进行展示,上述描述的隧道本质也就是对下述例子发送的数据进行格式添加,并写一套格式解封装和数据处理逻辑即可,没什么太大的难度,只是需要时间,因此就通过这个简单例子给大家看看原理,具体的就大家自己来写吧(嘿嘿,授人以鱼不如授人以渔嘛)。

        下面是效果截图:首先运行socket服务端,监听本地端口

(我们会发现代码卡在了这里,就说明正在监听代码中设置的本地端口)

        运行socket客户端去链接socket服务端:

(上图是服务端显示,我们发现服务端接收到了客户端的链接,如上显示了连接者的IP和端口,因为作者穷就在本地自己连自己)

(上图是客户端显示,提示可以给服务器端发送消息了,说明双方隧道建立成功)

        然后我们就可以开始相互发送消息实现简单的聊天:

(如上图,彼此发送了问候消息,并且都收到了)

4.2注意点

        首先大家应该也发现了,想要绕过行为管理外网需要有一台可以配合你的服务器,目前没有听说有哪个站点提供对应服务(就算曾经有过,估计也会被企业群起而攻之吧,哈哈)。因此大概只能大家自己搭建一台服务器了,作者本人穷鬼一个,受困于囊中羞涩,虽然一个月不会太多钱,但是架不住作者究极穷。因此将技术分享给大家,有钱的大佬可以自己搞一台,如果可以借作者用用就更好不过了,嘿嘿。

总结

        emmm,没什么好总结的,该说的也都说过了,就这样吧,拜了个拜。

        大伙下期想了解什么技术呢,底层一点的计算机端口访问详细过程还是什么其它的,可以在评论区评论哦,能力范围之内作者会尽量满足。

  • 36
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值