前言

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. DNS劫持、流量劫持,HTTP/HTTPS劫持

    DNS劫持:DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问 ...

  2. DNS劫持,HTTP劫持、HTTPS劫持【流量劫持】

    1 流量劫持 先说劫持,再说劫持的种类 流量劫持: 早已见怪不怪的电信运营商的劫持,频繁的广告页弹出,大家只要能忍受得了,那就没什么危害,各大运营商毕竟是活在我党的英明领导下的,太过分的事情,它们也是 ...

  3. 劫持流量原理是什么?关于劫持流量的种类和产生

    流量圈的故事很多,劫持与反劫持的故事在很长时间内将继续演绎下去.流量是很多互联网企业赖以生存的基础,通过优秀的产品去获得用户和流量是唯一的正途,用户的信任来之不易,且行且珍惜.那么你的流量都被劫持到哪 ...

  4. 网站app被劫持怎么办?dns被劫持,域名被劫持,HTTPDNS阿里云域名防劫持, DNSPod移动解析防劫持服务D+...

    网站app被劫持怎么办?dns被劫持,域名被劫持 HTTPDNS阿里云域名防劫持, DNSPod移动解析防劫持服务D+ 垄断,就是鸡国的毒瘤. 域名被中移动劫持了,mlgb!! 关于互联网流量劫持分析 ...

  5. dns劫持解决办法、dns劫持是什么、dns劫持原理

    一.什么是DNS 在网络中,机器之间只认识IP地址,机器之间最终都要通过IP来互相访问.但是为了方便记忆,可以为IP地址设置一个对应的域名,通过访问域名,就可以找到对应IP地址的网站. 比如,我们访问 ...

  6. 遇到DNS运营商劫持怎么办、运营商劫持的解决方法有那些

    运营商劫持在如今很普遍,相信很多人还不清楚,什么是运营商劫持?遇到DNS运营商劫持怎么办?本次在这里就为大家科普下. 什么是运营商劫持? 运营商是指那些提供宽带服务的ISP,包括三大运营商中国电信.中 ...

  7. java 实现dns劫持_什么是HTTP劫持和DNS劫持

    HTTP劫持 在用户的客户端与其要访问的服务器经过网络协议协调后,二者之间建立了一条专用的数据通道,用户端程序在系统中开放指定网络端口用于接收数据报文,服务器端将全部数据按指定网络协议规则进行分解打包 ...

  8. 网站域名被劫持、网站dns被劫持 域名跳转到别的网站的解决方法

    网站域名被劫持,网站dns被劫持,域名跳转到别的网站怎么解决? 网站域名被劫持,网站dns被劫持,域名跳转到别的网站怎么解决? 出现网站域名跳转到其他网站,这一现象很可能是域名被劫持. [网站域名被劫 ...

  9. HSTS 防止网站劫持

    随着信息时代的热潮,电脑和手机上网是广大网民的必备的项目,他可以用于日常工作.学习.娱乐等,但传统HTTP和HTTPS网站访问劫持率分别达到了95%和17%以上,非常简单的案例打开某传统HTTP和HT ...

最新文章

  1. 数据结构与算法常用名词术语整理
  2. 基于SSM实现的奶茶店会员管理系统
  3. Django项目知识点(五)
  4. 往sde中导入要素类报错000732
  5. POJ 1797-Heavy Transportation-dijkstra小变形和POJ2253类似
  6. 值不值 | 三分钟搞定jpa?值不值!
  7. html入门(详细描述)2
  8. 短视频解析技术原理,去水印原理分析整理汇总
  9. 小组取什么名字好_如何给公司取一个好名字?让你的公司脱颖而出
  10. autocad 二次开发 拆分图纸_谈谈AUTOCAD.NET二次开发的一些经验(一)
  11. layui通过lay-submit lay-filter=“action“监听失败的处理
  12. 彻底关闭苹果系统更新_彻底关闭iPhone自动更新系统 亲测有效
  13. 算法设计与分析第二章作业
  14. C++ std::string::find()函数(在字符串中查找内容)
  15. python生信编程1-5
  16. 红蓝攻防中蓝队职责(防守方)
  17. Nervos:链外扩容 + Layer 2才是区块链的未来(下)
  18. hive 解析jason字符串
  19. 脱壳的几种方法 详细操作步骤
  20. JS中回调函数的三种写法!

热门文章

  1. Python(1) 整型与浮动型
  2. Vue 踩坑日志 - 有关路由传参的坑
  3. pycharm的安装和使用
  4. Windows Server 2012 RS 配置IIS8.0+发布网站
  5. 习题元祖与字典的值交换
  6. list集合去重复元素
  7. Python 【第八章】:JavaScript 、Dom、jQuery
  8. SQL Server技术问题之视图优缺点
  9. 【转载】说说大型高并发高负载网站的系统架构
  10. 安装32位mysql报错_在CentOS中安装32位或64位MySql报错error: Failed dependencies解决办法...