中间人攻击,HTTPS也可以被碾压

摘要: 当年12306竟然要自己安装证书...

Fundebug经授权转载,版权归原作者所有。

一、什么是MITM

中间人攻击(man-in-the-middle attack, abbreviated to MITM),简单的讲,就是黑客悄悄的躲在通信双方之间,窃听甚至篡改通信信息。而通信双方并不知道消息已经被截获甚至篡改了。

举个例子,小明用微信发一条消息给小红,这条消息会从小明的手机发送到微信的服务器,再由微信服务器转发给小红,理论上讲,微信服务器是可以查看或者修改小明发送的信息的。这个时候,微信服务器就可以是实施攻击的中间人。

也有一些人,会通过代理服务器浏览某些外网,这里的代理服务器其实就充当了中间人的角色。

对于个人而言,MITM到底有什么用?这就得先从MITM的攻防说起了。

二、防攻击

首先看看如何防止攻击。最有效的防攻击手段就是一次性密码(One Time Password),由信息论发明人香农提出,理论上讲是绝对安全的。但是一次性密码也有个前提,那就是安全的把密码传达给对方。这里好像就已经陷入死胡同了。

对于访问互联网而言,无论是通过浏览器还是APP客户端,一般都会使用HTTPS的方式通信,这其实就是一种比较有效的加密方式。在这种通信过程中,客户端或者操作系统内置了权威CA(certification authority)的根证书,而服务器在通信之初,会先返回在CA那里获取的签名证书,然后客户端用根证书验证证书有效性,最后使用验证通过的证书提供的公钥加密数据。

这里有个前提假设,那就是权威的证书机构不会把签名信息泄露出去。What an F-word,是不是有种无力感,我们的互联网安全其实还是建立在人性和道德的基础上。这里其实也有个死循环,系统通过服务器的CA证书证明有效性,而CA本身又需要其他CA来认证自己的有效性。解决这个问题其实是通过系统或者浏览器本身集成知名根证书。

早年12306非得使用自己签名的证书,而主流浏览器又不认可,导致用户需要在首次下载证书并安装。这其实是个很危险的操作,不法分子完全可以利用这个机制把非法证书安装到用户设备上。好在现在12306已经采用DigiCert颁布的证书了。

除了CA数字证书,还有一些专用的密钥交换协议,比如ZRTP、HPKP、DNSSEC等,他们都能在一定程度上保障通信安全。

除了直接认证之外,还可以通过篡改检测、取证分析等手段防范MITM。

简单提一下,目前最有效的加密方式可能是量子加密(Quantum cryptography)。量子加密同时拥有数学和量子力学两大学科加持,只要数学和量子理论没有问题,那么量子加密理论上就是绝对安全的。关于量子加密,以后会专门讲一下。

三、攻击

以HTTPS加密破解为例。为防止不法分子技术滥用,本文仅分享一下原理。

我们不防在客户端和服务器之间加入一个“中间人”,比如在电脑端安装Fiddler(抓包神器)。关于Fiddler抓包的方法网上教程很多,这里就不赘述了。直接上图:

  • 黑客通过特殊途径在被攻击者的手机上安装根证书;
  • 客户端发起连接请求,代理服务器(Fiddler)在中间截取请求,返回自己签名的伪造证书;
  • 客户端收到证书后会在系统中查找信任的根证书,因为黑客已经事先在被攻击者手机上安装了自己的根证书,因此客户端验证通过;
  • 客户端后续就会把Fiddler当成合法的服务器;
  • 而Fiddler会与真实的服务器通信,截获密钥,解密数据。

至此,服务器和客户端的数据对于中间人Fiddler而言已经是完全透明的了。

四、小结

其实,掌握了MITM技术,了解各大APP的实现逻辑就很简单了,一众收费的APP基本可以实力碾压。

失而复得的手机也许应该格式化,没准有人在钓鱼。

想起以前自己说的一句话,知道原理,真的可以为所欲为

关于Fundebug

Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了20亿+错误事件,付费客户有阳光保险、核桃编程、荔枝FM、掌门1对1、微脉、青团社等众多品牌企业。欢迎大家免费试用


Fundebug
Fundebug是专业的应用BUG监控平台

一行代码搞定BUG监控:[链接]

9.4k 声望
1.7k 粉丝
0 条评论
推荐阅读
Fundebug JavaScript插件支持监控HTTP请求数据
Fundebug提供专业的前端异常监控服务,我们的插件可以提供全方位的异常监控,可以帮助开发者第一时间定位各种前端异常,包括但不限于 JavaScript 执行错误以及 HTTP 请求错误。

Fundebug1阅读 903

HTTPS 是这样握手的
HTTP协议默认是明文传输,存在一定的安全隐患,容易被中间人窃听和攻击,在 加密解决HTTP协议带来的安全问题 中提到使用哈希、对称加密、非对称加密等方式对数据加密,能解决数据安全的问题。

一颗冰淇淋阅读 836

热点面试题:常见的http code 及含义?
极度投入,深度沉浸,边界清晰前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待讨论点可随意评论,与各位同学一起学习~欢迎关注 『前端进阶圈』 公众号 ,一起探索学习前端技术......公众号回复 加群 ...

控心crazy阅读 496

封面图
Geotrust 旗下的多域名ssl证书有哪几种?
为什么说常规呢,因为这个多域名证书是默认包含5个域名,如果还需要绑定更多的可以再添加域名,但是需要注意的是这个多域名证书中绑定的都是单域名,可以是顶级域名也可以是子域名。只要这些域名属于同一主体,就...

Anita的大杂烩阅读 475

封面图
独立产品灵感周刊 DecoHack #044 - 新的一年如何管理你的时间
本周刊记录有趣好玩的独立产品设计开发相关内容,每周发布,往期内容同样精彩,感兴趣的伙伴可以点击订阅我的周刊。为保证每期都能收到,建议邮件订阅。欢迎通过 Twitter 私信推荐或投稿。

ViggoZ阅读 330

封面图
阿里云https免费证书申请
项目牵涉到做一个语音在线实时收集,然后进行asr识别的B/S应用。所以需要浏览器调用“麦克风”来获取用户语音。此时需要在localhost或者https下才能实现这样的功能。类似于google的语音翻译,如下所示:

startshineye阅读 257

nginx一点儿基础配置(一)
1.1 使用 nginx -V产看编译参数中是否含有 --with-http_ssl_module ,如果没有则继续操作,如果有则跳到1.6步。注意:nginx如果已经安装了其他模块,在安装新模块编译时,必须也要带上其他模块的编译参数,不然会...

mahy阅读 223评论 1

一行代码搞定BUG监控:[链接]

9.4k 声望
1.7k 粉丝
宣传栏