摘要: 当年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. (办公)记事本_Linux常用的文件操作命令

    参考尚硅谷的谷粒学院的linux教程:http://www.gulixueyuan.com/course/300/task/7080/show 好吧,其实一个命令他要是讲超过20分钟,我就去看菜鸟教程 ...

  2. RF之简介

    robot framework 是一个通用型的自动测试框架 - 自动测试用例的实现方式 - 自动测试用例的开发支持 :  IDE.库 - 和用例管理系统的集成 - 测试执行:相关测试套件和测试用例的执 ...

  3. https的原理

    https目的是为了防止第三方截获信息,原理是使用非对称加密和数字证书认证传输密钥建立连接,使用密钥对称加密信息进行通讯. https建立连接的过程: 数字证书原理:

  4. SpringCloud 亿级流量 架构演进

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...

  5. 【10分钟学Spring】:(二)一文搞懂spring依赖注入(DI)

    Spring最基础的特性就是创建bean.管理bean之间的依赖关系.下面通过具体实例演示该如何装配我们应用中的bean. Spring提供了三种主要的装配机制 在xml中进行显示的配置 在Java中 ...

  6. tomcat的jsp页面超过65535,导致500报错

    错误信息 org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: ...

  7. Dubbo学习系列之十一(Dashboard+Nacos规则推送)

    中国武术,门派林立,都是号称多少代的XXX传人,结果在面对现代武术时,经常被KO秒杀,为啥,光靠宣传和口号撑门面,终究是靠不住,必须得有真货 ,得经得住考验,所以不能只说Sentinel有多好,也得给 ...

  8. 【原创】flash中DataGrid数据列显示顺序的解决办法(非数据排序)

    今天在用flash做一个简单的地图展示功能,需要把xml绑定到DataGrid,完成后,又仔细看了几遍,发现列的顺序不对,准确的说是不稳定,不固定,于是在网上查了一下,没有相关的内容.于是自己研究了一 ...

  9. WPF之实现控件内容拖动

    以下分别记录label.listbox.treeview三个控件的拖动示例: 1.对被拖动控件,实现拖动事件,主要是通过各种鼠标事件,实现DragDrop.DoDragDrop方法. 2.对于需要拖动 ...

  10. Violet音乐社区 - 个人总结报告

    一.项目概述 1.1 项目背景 音乐是一门艺术,是由有组织的乐音来表达人们情感.反映人类现实生活情感的艺术.现代科技的发展使得人们可以利用网络随时随地的享受音乐,然而在当今互联网却很少有一个以音乐为媒 ...