代理技术安全分析

提到代理,普通人最容易想到的就是网页代理,当然大多数人了解它是因为用它触及了邪恶资本主义后花园那充满了桃色诱惑的世界。

事实上网页代理只是代理的具体应用场景之一,代理服务器有多种应用场景,如:防火墙穿透,隐藏源IP,远程管理,爬虫提速与防封等 。他们应用的思想是基本一致的,掌握这种思想才能更好地理解代理。

由于网上关于代理部署的文章已经多如牛毛了,因此本博文不会具体在介绍一般代理的部署问题,我注意到关于代理在安全分析与网络安全方面的应用的文章不多。故打算结合一段时间的使用经验与观察从这两个方面说代理。本文主要包括以下几部分:

  1. 何为代理,不同代理的特点
  2. 内容安全(可信代理,流量的加密,流量特征检测)
  3. 身份安全(可信代理,可追踪性,配置不当,链路层安全,路由记录)
  4. 其他
  5. 代理使用的经典场景

何为代理,不同代理的特点

计算机代理:计算机领域内代理往往特指代理服务器,它的作用是代理网络用户去取得网络信息,作为信息传递的中转站。这与现实生活中的二手车中间商,海外商品代购商,公司秘书的作用是相似的。下图中a、b分别代表直接通信与一个典型的有代理参与的通信流程图。代理作为流量转发者的角色可见一斑。

在上图b中,ProxServer看上去承担流量转发功能,实际上代理服务的具体结构比上图要复杂一些,我们将从全局代理与局部代理的角度展开解释方便大家理解。

局部代理(单服务代理):局部代理描述的是一台电脑中某一程序通过代理服务器访问外部服务,其他程序则不通过代理服务器连接。以经典的浏览器的http代理为例,如下图所示。

浏览器自身提供了一个代理接口,填入代理服务器地址(ip:port)后,原本发向互联网网站80端口的流量将被重定向到代理服务器,代理服务器收到流量包后,解包分析,再更改包头重新发往目标网站。目标网站发回数据后,再依照数据包编号等信息决定数据包该转发给谁,再解包更改信息后重新封包转发给电脑。

这种代理的特点是,“应用层-进程级”的代理。

 举个例子,如果您的火狐仅开启局部http代理,如下图所示:在网页上获取一下你的ip会显示为代理服务器所在的公网ip。如果您再打开Chrome获取ip会注意到显示的是本地所在的公网ip。当然仅仅从这个角度去说,您可能还不能完全理解局部代理的特点。

事实上如果这么做,DNS流量并不会代理走,这一点我想绝对不符合您的预期,但是合情合理。在访问某个网站前要先执行域名解析,域名解析服务并不由浏览器承担,实际上浏览器将DNS请求交给操作系统后台中的域名解析守护程序执行,如果本地(host,reslov.conf,浏览器缓存中没有条目)它会逐级向上级DNS服务器请求,获得ip后交给浏览器。抓包文件中您也可以清楚的看到HTTP代理流量(忽略TCP握手)前的相关DNS流量。我想到目前为止您应当看出来了,局部代理的问题比较大,我们将会在后面进一步介绍它会带来什么样的安全性问题。

特别地,全部勾选浏览器代理项实现的代理,本质上仍为局部代理。但在这种模式下,网页流量基本不会泄露出来了。

全局代理:与局部代理对应,全局代理提供系统全局的服务代理,操作系统上所有的应用流量都会把数据发送到全局代理指定的服务器地址上。从电脑的网口出口来看(不考虑2层协议与部分3层协议),目标地址均为代理服务器地址。

内容安全

让我们重新回到一开始的看过的这张代理结构图,网络环境永远是非常复杂的,不安全的网络信道往往存在嗅探,中间人等多种潜在攻击威胁。

内容安全关注两点:

  • 代理服务器自身必须是可信的,否则使用者将把自己完全置于暴露中。
  • 代理服务器与电脑(即代理客户端)之间是属于代理服务可控的范畴,代理服务要做好一件事就是实现端到端的加密。多个协议公用一个链条,从流量的统计学特征来讲,想要检测其实是比较容易的。如果判断出服务器的流量存在异常,如果未实现流量未加密,那么被解密的风险很高。

身份安全

这里大概从两方面定义身份,流量的身份与客户端的身份。

流量特征检测相对而言比较成熟。如果你的代理流量的加密算法实现的不够好,流量也比较大,那么想要检测出来比较容易。流量身份的暴露极易引起代理服务器暴露,特别是在公网上。

客户端身份安全主要关注以下几方面:

  • 一方面如果走局部代理,那么未被代理的服务会暴露客户端身份,同时被代理的应用依然可能产生不走代理的流量可能(如下面总结-1);
  • 另一方面,即便走了全局代理,在某些情况下仍会暴露用户的真实身份。有的全局代理方案自身实现有缺陷(故现在全局代理有人推荐sstap);
  • 链路层安全,不要忘记基本所有的代理从TCP/IP协议簇或OSI参考协议来看都是工作于高层的。底层的身份并未被保护,换句话来说,从MAC地址这里可以对应到客户端,如果互联网电子设备实名制管控继续变严,设备到人的锁定将变得更加容易。然而,这是对普通人而言的,每一个linux用户应该都很清楚,网卡MAC是非常容易更改的。
  • 代理客户端必须是可信的。
  • 通过路由记录溯源到客户端及代理服务器从技术上是可行的,工作量很大,要执行这样任务,必须有政府企业的参与,甚至要跨国。

总结

  1. 浏览器追踪--代理安全问题。我们开启的是HTTP代理,针对HTTP网站,如果网站内嵌入了其他域的内容(这几乎很普遍,现在随手一个页面都嵌入了广告),那我们不得不去获取它们的内容,如果对方不走HTTP流量,那你两之间的通信也不会走代理。故身份暴露。您可能觉得这也没啥大不了的,毕竟现在HTTP网站已经很少了(毕竟HTTPS的覆盖率已经很高了),而且把浏览器的全部选项勾选上不久OK了?这只是一方面,请看下一部分。
  2. 浏览器追踪--浏览器指纹问题。实际上目标网站也可能对浏览器进行追踪,一般人可能并不关注这个问题而已。前端能向网站回传很多浏览器的信息,有些人将其称为浏览器指纹,恶意收集浏览器指纹也算对隐私安全的破坏。这一点很容易被忽略,关于这一点我曾一度比较困惑,偶然间突然想明白了。因此全局不全局此时并无意义。有2个网站可以检测浏览器指纹的泄露情况。您可以对比测试一下结果。这也是为什么要讲NoScript的原因。 http://panopticlick.eff.org
    http://www.whoer.net
  3. 隐患依旧存在。即便代理服务在服务器与客户端之间做好了他该做的事,也不代表一切数据是绝对安全。代理客户端与服务器之间拥有一层加密隧道,但是代理服务器与客户端想要发送的真实目的地址之间并没有隧道,这部分的流量仍有一定的安全隐患。在明网部分这问题倒也不大,明网的后半部分基本是在公网上,只有国家与ISP有嗅探收集这部分的能力(只是说有能力,一般人人家才没功夫去嗅探你的数据呢,没意义),并不会想我们局域网逐渐向上接入广域网到骨干网时路况辣么复杂。但是仍要记住,这是隐患哈,特别如果数据传输没用TLS加密的话。

代理使用的经典场景

  1. HTTP&HTTPS代理。最传统,最常用。此局部代理包括两部分,对现代的大多数浏览器而言类似于浏览器设置中同时勾选http代理与TLS代理。比较好的一点是目前DNS-over-TLS(T-DNS)已经发展起来了,DNS流量会默认也被代理。如果选中这两项,Wireshark将抓不到DNS的流量。这可能也是浏览器厂家注意到以往的问题所在吧。
  2. 多级代理技术。多级代理极大的增加了溯源的难度,作为代理的服务器,往往跨越不同的国家,云服务提供商(这些提供商往往不受目标所在区域法律的约束),甚至部分黑客直接使用公网肉鸡。多级代理本身并没什么技术难度,无非是代理服务时,代理服务器依次填入下一级代理服务器的地址罢了,最终可以得到一个代理链条就像链表一样。多级代理在规避攻击溯源与洋葱中应用非常广泛(关于洋葱,这一网络可理解为一个三级代理系统,符合文中提到的多项特点与问题,它的不同之处在于二级代理服务器随机且难以追踪。虽然网络内部看上去很安全,但该网络边缘也存在一些问题:洋葱的出口节点并不一定都可信除了志愿者还有很多科研组织,攻击者,国家机构怀揣各自目的加入了自己的出口节点。由于目前大多数洋葱网站未开启https,因此有嗅探数据,或对浏览器HTTPS实施证书攻击的情况。)。
  3. 防火墙穿透。如果防火墙定义了端口进出规则时,那使用代理穿透防火墙是个不错的方法。在过去,部分员工为了在企业网上网页挂QQ用了这种手段。
  4. C&C服务器。我们前面有写过校外如何访问校内网论坛,这也是种变向的代理,在这种场景下公网的代理服务器也叫作C&C服务器。
  5. 爬虫代理池与防封。使用代理池可以大大的提升爬虫的爬取速度,同时也避免了因爬取速率过高导致服务器被封,爬取失败的情况。拥有了代理池后,我们就可以把注意力好好放在数据库任务派发与数据的正则提取上了。
  6. VPN代理。VPN自然也是一种代理技术,但是本文不探讨这一话题,一方面小菜鸟只会用,里面体系比较复杂目前还没时间研究,另一方面国内对VPN的态度比VPS要更敏感。本文探讨的是VPS技术。

                                                                                                                                   欢迎来访我的小站。--kal1c2er

猜你喜欢

转载自blog.csdn.net/u014652288/article/details/86413486