摘要: 当年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、微脉、青团社等众多品牌企业。欢迎大家免费试用

中间人攻击,HTTPS也可以被碾压的更多相关文章

  1. 基于HTTPS的中间人攻击-BaseProxy

    前言 在上一篇文章BaseProxy:异步http/https代理中,我介绍了自己的开源项目BaseProxy,这个项目的初衷其实是为了渗透测试,抓包改包.在知识星球中,有很多朋友问我这个项目的原理及 ...

  2. 谈HTTPS中间人攻击与证书校验(二)

    上文说到HTTPS的三次握手:http://www.cnblogs.com/wh4am1/p/6616851.html 不懂的再回头去看看 三.中间人攻击 https握手过程的证书校验环节就是为了识别 ...

  3. Android安全之Https中间人攻击漏洞

    Android安全之Https中间人攻击漏洞 0X01 概述   HTTPS,是一种网络安全传输协议,利用SSL/TLS来对数据包进行加密,以提供对网络服务器的身份认证,保护交换数据的隐私与完整性. ...

  4. 中间人攻击破解HTTPS传输内容

    最近App安全受到不小的關注,有人問我,說某某App不安全,究竟是真的還假的啊...所謂有被攻擊的風險,是不是危言聳聽,只是為了嚇人來著的? 現在就來為各位說明一下,是怎麼個不安全法.就來說說攻擊是怎 ...

  5. iOS 安全:UIWebView访问Https站点防止中间人攻击

    尽管Https协议能够提供数据的加密.身份的认证等安全服务,但并不是没有漏洞.HTTPS协议安全隐患的存在可能使用户受到各种极具破坏力的网络攻击.其中中间人攻击(Man In The Middle, ...

  6. Https协议简析及中间人攻击原理

    1.基础知识 1.1 对称加密算法 对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES.AES等                              ...

  7. HTTPS中间人攻击实践(原理·实践)

      前言 很早以前看过HTTPS的介绍,并了解过TLS的相关细节,也相信使用HTTPS是相对安全可靠的.直到前段时间在验证https代理通道连接时,搭建了MITM环境,才发现事实并不是我想的那样.由于 ...

  8. 谈HTTPS中间人攻击与证书校验(一)

    一.前言 随着安全的普及,https通信应用越发广泛,但是由于对https不熟悉导致开发人员频繁错误的使用https,例如最常见的是未校验https证书从而导致“中间人攻击”,并且由于修复方案也一直是 ...

  9. 中间人攻击(MITM)姿势总结

    相关学习资料 http://www.cnblogs.com/LittleHann/p/3733469.html http://www.cnblogs.com/LittleHann/p/3738141. ...

随机推荐

  1. Python—解析HTML页面(HTMLParser)

    HTMLParser类的定义及常用方法 类的定义 HTMLParser主要是用来解析HTML文件(包括HTML中无效的标记). 参数convert_charrefs表示是否将所有的字符引用自动转化为U ...

  2. 前端小白webpack学习(三)

    不写不知道,一写发现自己真是罗里吧嗦,尽量改进 之前写了webpack的主要概念和一些使用,今天再记一下webpack的plugins和loaders的使用 7.webpack plugins使用 例 ...

  3. 分布式CAP与BASE理论

    参考: CAP和BASE理论 https://juejin.im/post/5d720e86f265da03cc08de74 https://github.com/changmingxie/tcc-t ...

  4. 【坑】The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    在使用spring JDBC 连接数据库时出现的错误: Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: ...

  5. 超实用的JS数组去重

    一.简单的去重方法,利用数组indexOf方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...

  6. 为Dynamics 365 USD设置打开调试面板的自定义快捷键

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  7. Spring注解--实现applicationContext.xml效果

    随着越来越多地使用Springboot敏捷开发,更多地使用注解配置Spring,而不是Spring的applicationContext.xml文件. Configuration注解: Spring解 ...

  8. Linux系统学习 十、DHCP服务器—介绍和原理

    介绍: DHCP服务作用(动态主机配置协议) 为大量客户机自动分配地址.提供几种管理 减轻管理和维护成本.提高网络配置效率 可分配的地址信息主要包括: 网卡的IP地址.子网掩码 对应的网路地址.广播地 ...

  9. 07-Django视图进阶

    1.调试模式 Django项目下的settings.py 默认是DEBUG=True,开发的时候一般要开启调试模式,当项目完成发布必须要改成False,否则会暴露网站的配置信息,修改以下两行: # D ...

  10. R语言实战 第7章

    # 01 描述性统计分析 --------------------------------------------------------------#针对总体的mycavs = mtcars[,c( ...