技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 安全 --> 说说下载劫持那些事儿

说说下载劫持那些事儿

浏览:806次  出处信息

   今年的双十一,想必广大千手观音们又狠狠的剁了几只手。然而,剁手换来的宝贝在漫漫快递路上也是命途多舛,轻者磕磕碰碰包装损毁,重者与快递货车一起被付之一炬。这些“不可抗力”造成的问题屡见不鲜,碰到了也只能自认倒霉。不过,有的网友看着苹果6代的订单,却啃着寄过来的6袋苹果,个中滋味大家就自行脑补吧…。其实,在安卓应用分发领域,这种“苹果6代”变“6袋苹果”的情况也屡见不鲜:

   

   为什么会出现这种情况呢?其实一次网络下载的过程,就像一次“网购”,当我们点击下载按钮时,就跟下载服务器下了一份“订单”,“订购”了一个文件(当然大部分是免费的),服务器确认“订单”后,就会将文件在网络中“快递”(传输)到用户的终端(手机、PC等)。下载劫持一般出现在“下订单”的过程中。

   举个栗子,假设我们通过微信官网的链接http://dldir1.qq.com/weixin/android/weixin637android660.apk下载微信安卓版本的客户端,整个流程大概是这个样子:

   

   当点击了下载按钮后,客户端会通过url中的“域名”“dldir1.qq.com”来向DNS服务器获取确认“订单(下载)服务器”的IP地址,IP地址在互联网中相当于日常生活中“电话号码”,有了它,就可以连接到这台“订单(下载)服务器”,而DNS服务器就像一个存贮着大量“姓名”(域名)和“电话号码”(IP地址)的黄页。

   当客户端获得了“订单(下载)服务器”的“电话号码”(ip地址)后,就会连接“订单(下载)服务器”,并告知“订单(下载)服务器”客户端需要获取服务器上的“微信安卓版”apk文件,一般情况下,服务器在这个阶段确认了“订单”后,就会向客户端“快递”(传输)对应的apk文件,当客户端将文件下载完毕后,这次“网购”也就完成了。

   下面,我们引入运营商(电信、联通等)网关的概念。运营商网关可以类比成日常生活中的“总机”,接入运营商的互联网设备想要能够“上网”,都需要经过“总机”(运营商网关)的转接。也就是说,在上图中的第二步,我们并不能直接通过“订单(下载)服务器”的“电话号码”(IP地址)联系到“订单(下载)服务器”,而是需要先连接到“总机”(网关),并且告诉它,我们要向某某某服务器下“订单”,经过“总机”的转接,我们才能真正连接到“订单(下载)服务器”。整个过程如下图:

   

   可以发现,DNS服务器和网关的决策,确定了客户端“订单”(下载请求)的走向。而“下载劫持”也就发生在这两个关键节点上。

   假设客户端获取下载服务器“电话号码”的DNS服务器被篡改,那么客户端可能会通过“dldir1.qq.com”查询到一个“骗子服务器”的“电话号码”(IP地址),当我们联系到这个“骗子服务器”时,我们的“订单”(下载请求)可能会换来一些奇奇怪怪的“商品”。

   

   当我们遇到这种情况时,可以手动修改DNS服务器IP(具体方法请问度娘)来解决。然而当运营商的“总机”(网关)“出了问题”(这些“问题”一般是运营商主动造成的)时,就没那么容易解决了。

   假设当客户端拿着“订单(下载)服务器”的电话号码要求“总机”(网关)转接到我们指定的“订单(下载)服务器”时,“总机”(网关)对客户端说“哎呀,不要去A家下载微信了,你去我给你介绍的B家下载“XX助手”吧,比微信好用”(这个过程在技术上是被一个叫做302跳转的机制完成的,如果你不知道什么是302,出门左转,查询我们星期一的文章)。客户端是个实在人,就这样被“引诱”到B家的服务器上下载了。

   

   “总机”(网关)和服务器B就这样沆瀣一气,来骗客户端的下载量。

   刚刚给大家从技术层面简单介绍了下“下载劫持”的“饭醉手段”,至于为什么有人要做“下载劫持”,想必产品同学们应该比我更能知晓其中的奥妙,我就不班门弄斧了。就写到这里吧,我去洗水果了,双十一寄来的六袋苹果,再不吃就烂了….

   (文中“XX助手”和服务器IP地址均属臆造,如有雷同,我也不知道是咋回事儿)

建议继续学习:

  1. 什么是DNS劫持和DNS污染?    (阅读:4629)
  2. curl测试下载速度    (阅读:4123)
  3. php实现百度音乐采集下载    (阅读:4109)
  4. 让PHP更快的提供文件下载    (阅读:4115)
  5. pptx,docx,xlsx 文件下载问题    (阅读:3329)
  6. [Mac OS X]快速下载 URL    (阅读:2763)
  7. PHP读取服务器端文件提供弹出下载窗口    (阅读:2592)
  8. 深入解析DLL劫持漏洞    (阅读:2572)
  9. 如何在PHP下载文件名中解决乱码    (阅读:2462)
  10. 下载软件的专用地址生成方法    (阅读:2313)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1