前言

HSTS 的出现,对 HTTPS 劫持带来莫大的挑战。

不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式。但仔细想想,SSLStrip 这种算劫持吗?

劫持 vs 钓鱼

从本质上讲,SSLStrip 这类工具的技术含量是很低的。它既没破解什么算法,也没找到协议漏洞,只是修改和代理了明文的封包而已。

如果说劫持,要保持源站点不变才算的话,那 SSLStrip 并没做到。根据同源的定义,<协议, 主机名, 端口> 三者必须相同。显然它修改了协议,因此并非在源站点上劫持,而是进入了另个不同的站点。

既然站点都不同,那就属于钓鱼网站了。

但这种钓鱼之所以会如此隐蔽,和大家的常理有关:对大部分用户来说,只要主机名正确那就对了,至于协议和端口,很少有人去关心

而 SSLStrip 正好利用了人们的认知弱点,确实没有修改网站主机名,从而欺骗了大部分用户。

因此更确切的说,这就是一种高级钓鱼。

进一步钓鱼

由于 HSTS 这种反钓鱼的机制出现,即使蒙的了用户,但也骗不过浏览器。

HSTS 正是以主机名为单位的。在新的版本里,甚至还支持所有子域名(includeSubDomains)。

如果还抱有侥幸心理,期望能过滤首次的 HSTS 头,那么 Preloading HSTS 能让浏览器天生就记住某些网站。彻底打消 SSLStrip 的念头。。。

不过,刚刚也说了,SSLStrip 本质就是网站钓鱼。既然都钓鱼了,何必这样鬼鬼祟祟的反倒被发现,为何不正大光明的钓?

反正钓鱼考的就是用户眼力,不如再进一步,干脆把主机名也改了吧!眼力不好的人,可能还是看不出破绽。

例如,将原本 https://www.alipay.com 的链接,跳转到 http://www.alipay.cn 这个钓鱼网站,仍会有不少用户觉察不到。

www.alipay.cn 这个虚假的主机名,显然不会在 HSTS 白名单中,因此又可以无限劫持了!

在流量劫持的环境里,任何明文数据都是可控的。即使访问 www.alipay.cn 这种不存在的域名,中间人也可模拟 DNS 应答,从而可伪造出各种看起来相似的钓鱼站点。

在之前那篇 《SSLStrip 的未来 —— HTTPS 前端劫持》 中,我们是在 URL 的 Query 中进行伪装的:

虽然修改了 URL,但主机名没变,因此仍躲不过 HSTS。

所以,我们需要将 symbol 标记转移到域名里:

将页面中出现的 HTTPS 域名稍作修改,就是完全不同的一个站点了,因此即可彻底摆脱 HSTS 的白名单。

例如把域名都替换成 .cn 的,原本 www.alipay.com 就变成 www.alipay.cn 了,这样即使用户浏览器里存在 HSTS 记忆,那也是之前的,这个临时伪造出来的钓鱼站点,自然不会有的。

尽管站点完全不同,但表面上看起来仍是相似,因此用户仍然不易察觉。

同时,中间人能够识别出域名中的这个被修改过的特征,在转发时还原回先前的域名,进行正常代理。

保留绿色证书

对于大部分用户来说,地址栏里醒目的 HTTPS 绿色证书,是一只强心剂。而 SSLStrip 剥离了协议,显然是不可能出现了。

但如今通过修改主机名,能否要回这个图标?

如果想有,显然得申请一个合法的证书。但要将所有的 .cn 域名都配上数字证书,肯定是不现实的。

不过既然是钓鱼网站,主机名也可以随意改,何必困死在顶级域名上?

我们可以申请一个泛域名证书,例如 *.xx.com。这样,将目标站点都套在该二级域名下,即可以 HTTPS 协议进行钓鱼了。

(这里以自签署的证书演示)

虽然域名相比之前差别较大,但有醒目的绿色证书,反而更容易被蒙蔽了。

HSTS 的意义

由于钓鱼的方式可以千变万化,因此 HSTS 也很难从根本上进行防御。

当然,这并不意味 HSTS 没有实际作用。事实上 HSTS 还是能够避免很大部分的风险。其中最典型的,就是用户在地址栏里敲入网址的情况。

在过去,未提供的协议的网址,都是以默认的 HTTP 方式请求,因此在这个入口就有极大的风险。而 HSTS 的出现,很大程度的解决了这个隐患。

如今,像百度这样的大型导流网站,都在逐步支持 HTTPS 升级,从而在入口源头上堵住这个安全隐患。

防御方案

尽管是钓鱼,但也不是完全没有防御方案。

从攻击者的角度来看,如果要为各种站点制作一个钓鱼网站,成本是极大的。而且更新起来也不容易,数据也难以保持实时。

因此,通常是直接代理线上的站点内容。既然这样,不妨在网页中悄悄加入些监控脚本,统计当前页面究竟在哪些域名里出现过,就能快速找出一些钓鱼网站了。

当然,攻击者也可以过滤掉这段监控脚本,这就是后期对抗的事了。

【流量劫持】躲避 HSTS 的 HTTPS 劫持的更多相关文章

  1. 拒绝流量劫持,全面使用 HTTPS!

    最近收到数个 BootCDN 用户的反馈:某些地区的宽带运营商劫持了部分 BootCDN 上的文件,并篡改文件加入了广告代码. 这种方式的流量劫持属于中间人攻击(Man-in-the-Middle A ...

  2. iOS安全系列之 HTTPS 进阶

    上一篇<iOS安全系列之一:HTTPS>被CocoaChina转载,还顺便上了下头条: 打造安全的App!iOS安全系列之 HTTPS,高兴之余也有些诚惶诚恐,毕竟那篇文章只是介绍了比较偏 ...

  3. iOS安全笔记

    这一篇文章, 加上里面链接的几篇文章(一个百度的, 两个阮一峰的), 全看完应该了解得差不多了 如何打造一个安全的App?这是每一个移动开发者必须面对的问题.在移动App开发领域,开发工程师对于安全方 ...

  4. http://oncenote.com/2015/09/16/Security-2-HTTPS2/ (轉載)

    上一篇<iOS安全系列之一:HTTPS>被CocoaChina转载,还顺便上了下头条: 打造安全的App!iOS安全系列之 HTTPS,但那篇文章只是介绍了比较偏应用的初级知识,对于想要深 ...

  5. HTTPS-能否避免流量劫持

    流量劫持是什么? EtherDream在一篇科普文章<>中详细介绍了流量劫持途径和方式. 流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗等,很多人已经对此麻木,并认为流量劫持不会造成 ...

  6. Web如何应对流量劫持?

    虽然互联网经过多年的发展,可是网站使用的底层协议仍是 HTTP,HTTP 作为一种明文传播协议,所有的传输数据都是明文,我们都知道在通信中使用明文(不加密) 内容可能会被窃听,同时网站存在被劫持的风险 ...

  7. 【前端安全】JavaScript防流量劫持

    劫持产生的原因和方式 在网页开发的访问过程中,http是我们主要的访问协议.我们知道http是一种无状态的连接.即没有验证通讯双方的身份,也没有验证信息的完整性,所以很容易受到篡改.运营商就是利用了这 ...

  8. 安全-分析深圳电信的新型HTTP劫持方式

    ISP的劫持手段真是花样百出,从以前的DNS(污染)劫持到后来的共享检测,无不通过劫持正常的请求来达到他们的目的. 之前分析过通过劫持HTTP会话,插入iframe来检测用户后端有无共享行为,但后来移 ...

  9. HTTP劫持和DNS劫持

    HTTP劫持和DNS劫持 首先对运营商的劫持行为做一些分析,他们的目的无非就是赚钱,而赚钱的方式有两种: 1.对正常网站加入额外的广告,这包括网页内浮层或弹出广告窗口: 2.针对一些广告联盟或带推广链 ...

随机推荐

  1. 本人提供微软系.NET技术顾问服务,欢迎企业咨询!

    背景: 1:目前微软系.NET技术高端人才缺少. 2:企业很难直接招到高端技术人才. 3:本人提供.NET技术顾问,保障你的产品或项目在正确的技术方向. 技术顾问服务 硬服务项: 1:提供技术.决策. ...

  2. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  3. .NetCore MVC中的路由(2)在路由中使用约束

    p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...

  4. SQL Server-聚焦计算列或计算列持久化查询性能(二十二)

    前言 上一节我们详细讲解了计算列以及计算列持久化的问题,本节我们依然如前面讲解来看看二者查询性能问题,简短的内容,深入的理解,Always to review the basics. 持久化计算列比非 ...

  5. Javascript实用方法二

    承接上一篇, Object keys object的keys方法能够获取一个给定对象的所有键(key/属性名)并以数组的形式返回.这个方法可以用于键的筛选.匹配等. var basket = { st ...

  6. 实现一个类 RequireJS 的模块加载器 (二)

    2017 新年好 ! 新年第一天对我来说真是悲伤 ,早上兴冲冲地爬起来背着书包跑去实验室,结果今天大家都休息 .回宿舍的时候发现书包湿了,原来盒子装的牛奶盖子松了,泼了一书包,电脑风扇口和USB口都进 ...

  7. 云瓣影音网站&&微信端(已开源)

    随着该项目的发布到线上(小打小闹),即将又要开启另一段崭新的旅程.强迫自己停下来写写所学所得,个人认为总结和分享是一种很棒的学习方式.那让我们先来瞧瞧项目长的什么样.如果着急要源码的朋友,可以下拉到最 ...

  8. Spring cache简单使用guava cache

    Spring cache简单使用 前言 spring有一套和各种缓存的集成方式.类似于sl4j,你可以选择log框架实现,也一样可以实现缓存实现,比如ehcache,guava cache. [TOC ...

  9. bzoj1723--前缀和(水题)

    题目大意: 你难以想象贝茜看到一只妖精在牧场出现时是多么的惊讶.她不是傻瓜,立即猛扑过去,用她那灵活的牛蹄抓住了那只妖精.     "你可以许一个愿望,傻大个儿!"妖精说.     ...

  10. “老坛泡新菜”:SOD MVVM框架,让WinForms焕发新春

    火热的MVVM框架 最近几年最热门的技术之一就是前端技术了,各种前端框架,前端标准和前端设计风格层出不穷,而在众多前端框架中具有MVC,MVVM功能的框架成为耀眼新星,比如GitHub关注度很高的Vu ...