为什么用上了HTTPS,还是被流量劫持?
广告再临
“老周,有人找你”
一大早,361杀毒公司的老周就被吵醒。
今天的阳光很明媚,老周伸了伸懒腰,这才踱步走向工作室。
“是谁一大早的就来吵吵,坏了我的瞌睡”,听得出来,老周有点不太高兴。
“咚咚~”,老周微微抬头一瞥,只见一甜美女子出现在工作室的门前。
老周一下从座椅上弹了起来,三步并作两步,走到女子面前,作出欢迎的手势:“美女请进”
二人坐罢,老周扶了下镜框,又整理了一下格子衬衣,一副温文尔雅的作态,轻声问到:“不知美女到访,所为何事?”
女子倒是一副焦急的样子,“您好,我是Chrome浏览器公司的小雪,最近我们访问千度网、淘贝网的网页中时常出现不少奇怪的广告,一直被投诉,听领导说361杀毒公司的周老师是这方面的专家,想请您帮忙诊断一下,到底这些广告是怎么来的”
老周听得有些不好意思,连连挥手,“原来是小雪姑娘,哪里哪里,勇斗病毒木马,消灭流氓软件本就是我361公司的分内之事,在下也只是尽一些绵薄之力罢了”。
“周老师别谦虚了,您之前揪出IE公司的木马入侵的事迹已经传遍整个Windows帝国了,大家都知道您的厉害。这一次广告的问题,就拜托了”,小雪看着老周,彷佛眼里闪着星星。
“别客气,这事儿包在我身上了”小雪起身,连说了几句谢谢就离开了。
谁动了HTTPS流量
此刻,负责网络数据过滤的大白正在忙碌着,突然一只手搭在了他的肩膀上,大白回头一看,正是老周。
“老周,什么风把你吹到这里来了,你不在安全实验室分析恶意代码,跑我们网络部门来干嘛?”
老周拍了下大白的肩膀,说到:“大白啊,有点事想请你帮帮忙,你帮我瞅瞅,Chrome浏览器的流量中是不是被插入广告了?”
“就这事啊,前段时间发现路由器老给插入广告,我就给做了特征屏蔽,原以为它们消停了,这才没几天又卷土重来了?”,大白说完调出了Chrome公司的流量,准备一看究竟。
大白越看眉头锁的越紧,“应该没有吧,我看访问千度网和淘贝网都是用的HTTPS协议,按理说路由器没有可能插入广告了啊”
“HTTPS协议?为什么用这个就没法插入广告?”,老周问到。
“这都不知道啊,你这361公司安全实验室领导怎么当上去的啊”,大白一脸无语的表情。
老周有点难为情,“唉,老弟你也别取笑我了,这个术业有专攻嘛,我擅长病毒木马代码的分析,对网络协议这块确实知之甚少,劳烦大白老弟给说道说道”
大白似乎是感觉自己的话说的有些重了,也借坡下坎,“老周啊,刚才我跟你开玩笑的,你可别往心里去啊”。
“没事没事,你快给我说说这HTTPS协议,帮助我早点破案吧”“好嘞,你稍等啊”,说完,大白开始在白板上画了起来。
什么是HTTPS
“HTTPS = HTTP + SSL/TLS,这门技术,说简单也简单,说复杂也复杂。简单来说,就是为了网络数据的安全性,通过加密传输的方式来对传统上网的HTTP流量进行保护”,大白一边画着图一边给老周讲述。
“明白,那么问题来了,用什么加解密算法呢?对方如何知道用什么算法以及用什么密钥解密呢?”,老周一下抓到了关键点。
“唉,问到点子上了。在正式传输数据之前,双方会有一个协商过程,为后面所选择的加密算法,以及要使用的密钥达成一致。”
“那么问题又来了,这个协商的内容要是被别人知道了,他不就可以按图索骥,解密传输的内容了吗?”,老周的反应很快。
“老周果然是老周!加密算法被知道是无所谓了,毕竟算法都是公开的,关键在于这个用于后续加密的密钥,这个才是需要保护的关键,这个不能让别人知道”,说罢,大白又继续画起来。
“so?怎么保护这个密钥呢?你倒是说啊”,老周有点着急了。
“注意哦,高能来了,双方使用一个叫非对称加密的方式来传输...”
"等一下",老周打断了大白,“非对称加密,这是个什么意思?”
大白默默叹了一口气,“常见的加密方式叫对称加密算法,所谓对称,就是加密和解密使用同一个密钥。那与此相对的,非对称加密,就是说加密和解密使用的是不同的密钥,明白了吧”
老周略微思索,点了点头,“我知道了,你继续刚才说的,怎么用这个非对称加密算法来传输后面需要的密钥呢”
大白继续说到:“客户端产生一个随机数,使用公钥加密,发给服务端,服务端使用私钥解密取得这个随机数,再根据这个随机数和其他信息计算出一个key,就作为后续加密内容使用的密钥了”
“等等,客户端的公钥是哪里来的?”
“最开始的时候,客户端发来请求,服务端在响应中,会把公钥告诉客户端。好了,我画完了,整个过程就是这样的”,大白放下画笔,一副完整的HTTPS协议握手过程图浮现了出来:
老周反复端详,许久总算开口:“过程我倒是看懂了,不过我总感觉这不多此一举吗,直接使用非对称加密算法不就得了,这么折腾”
大白连连挥手,“你想的倒是简单,非对称加解密算法执行起来麻烦的多,耗费的时间会多很多倍,如果全程使用非对称加密算法,那将会严重影响上网体验。算法是个好算法,但用的代价也很大,所以权衡之下,好钢用在刀刃上,就只用来传输密钥,后面的正式数据传输,还是用常规的对称加密算法,来的经济划算。”
老周点了点头,一会儿低头思考,一会儿又抬头看着流程图。
又过了许久,老周指着流程图,再次提问:“我说大白,如果我在客户端和服务端之间插入一个角色,对客户端冒充服务端,对服务端又冒充客户端,就能从中作梗,修改数据包,插入广告了是吧?”
正在喝水的大白听后呛得连连咳嗽,“你说的就是中间人攻击嘛!你当HTTPS是玩具嘛,这么容易就被劫持,笑话!注意看图,那里有个认证环节,不是谁都能冒充的”
老周又看了看图,“怎么认证法,我倒是听听”
“在服务端的响应中,我前面说的公钥是在一个叫证书的东西里面,这个证书就是用来标识服务端的身份的,是由权威机构颁发的,客户端收到证书后,会检查是否是可信任的,如果不受信任就会及时中止后面的流程。”
“那如何判断一个证书是可信任的呢?”“帝国早已把受信任的证书安装好了,届时只需调用API查一下即可”
老周思来想去,总觉得哪里有问题,却又说不上来。
真相只有一个
一连过了几天,老周依旧毫无头绪,这事儿就这样搁置了。
福无双至,祸不单行。这案子还没弄明白,firefox公司又出事了。原来,361杀毒公司检测到firefox秘密启动了有木马特征的进程,老周再一次带队前往勘查,firefox公司的小狐负责对接此事。
老周来到了firefox磁盘存储目录,打算先排查一下木马文件是什么来头。
“这是一堆什么数据?”,老周指着一堆文件问到。
“周老师,这是网页缓存数据”,一旁的小狐回答。
“打开看看,看看能否找到一些攻击痕迹”
老周环顾四周,指着另一堆文件问到:“这又是一堆什么数据?”
“周老师,这是一堆证书信息,HTTPS握手时认证服务器所用的,跟这次攻击事件应该没关系的”,小狐继续解释到。
“认证用?帝国不是存储了受信认的证书吗,你们还保存证书信息做什么?”,老周有些不解。
“帝国存储的受信任证书我们可不认,谁知道那里面都是些什么证书,太不可靠了,我们firefox浏览器公司自己做认证,不用那一套”,小狐言语之间流露着些许得意。
听完小狐的回答,老周突然愣住了,短暂的几ms之后反应了过来,掏出了从Chrome公司拿来的千度网证书,打算请小狐看一下。
小狐接过证书,仔细察看,片刻之后一口咬定的说:“这证书有问题!”老周眼前闪过一道亮光,追问到:“哪里有问题?”
“这证书颁发机构叫ABSafe,不在我们受信任的列表中!再说了,我这里有缓存千度网的证书,根本不是这样的,这肯定是假的,你看”
老周拿着两个证书反复查看,不时点点头,之前困扰多时的问题终于有了答案。
“我明白了,真相只有一个!一定是有人把这个ABSafe颁发机构安装到了帝国受信任列表,以此骗过了Chrome公司!进行了HTTPS中间人劫持!YES!”,老周说完用力挥了挥拳头。
“周老师,您在说什么啊,我怎么听不懂?”,看着老周自言自语,小狐满脸的问号。
老周叮嘱同行的老齐继续勘察,匆忙拜别小狐就离开了。
这天夜里,两个黑影出现在了帝国受信任根证书仓库。
“原来是有人把我们安装的根证书给删掉了,难怪刚才Chrome浏览器访问千度网报了警告”,其中一个胖的黑影说到。
瘦的黑影捂住了胖子的嘴巴,“嘘,你给我把着点风,我去重新装上”
瘦的黑影蹑手蹑脚走了过去,从怀里掏出了一个东西。
“别动!安全检查!”,突然一束光线射了过来,原来老周带着队伍在此潜伏多时了。
“竟然是你们,禁广大师!千度网和淘贝网的广告也是你们加的是吧?”,老周大声质问。
胖瘦黑影面面相觑,老实交代了一切。
未完待续·······
彩蛋
“老齐,firefox公司的案子有什么发现吗”
“老周,你还是再来一趟吧,情况有点复杂”
欲知后事如何,请关注后续精彩......
往期热门文章:
为什么用上了HTTPS,还是被流量劫持?的更多相关文章
- 关于全站https必要性http流量劫持、dns劫持等相关技术
关于全站https必要性http流量劫持.dns劫持等相关技术 微信已经要求微信支付,申请退款功能必须12月7号之前必须使用https证书了(其他目前为建议使用https),IOS也是2017年1月1 ...
- WiFi流量劫持—— JS脚本缓存投毒
在上一篇<WiFi流量劫持—— 浏览任意页面即可中毒>构思了一个时光机原型,让我们的脚本通过HTTP缓存机制,在未来的某个时刻被执行,因此我们可以实现超大范围的入侵了. 基于此原理,我们用 ...
- HTTPS-能否避免流量劫持
流量劫持是什么? EtherDream在一篇科普文章<>中详细介绍了流量劫持途径和方式. 流量劫持是一种古老的攻击方式,比如早已见惯的广告弹窗等,很多人已经对此麻木,并认为流量劫持不会造成 ...
- 【流量劫持】躲避 HSTS 的 HTTPS 劫持
前言 HSTS 的出现,对 HTTPS 劫持带来莫大的挑战. 不过,HSTS 也不是万能的,它只能解决 SSLStrip 这类劫持方式.但仔细想想,SSLStrip 这种算劫持吗? 劫持 vs 钓鱼 ...
- 【流量劫持】SSLStrip 的未来 —— HTTPS 前端劫持
前言 在之前介绍的流量劫持文章里,曾提到一种『HTTPS 向下降级』的方案 -- 将页面中的 HTTPS 超链接全都替换成 HTTP 版本,让用户始终以明文的形式进行通信. 看到这,也许大家都会想到一 ...
- 如何使用HTTPS防止流量劫持
何为流量劫持 前不久小米等六家互联网公司发表联合声明,呼吁运营商打击流量劫持.流量劫持最直观的表现,就是网页上被插入了一些乱七八糟的广告/弹窗之类的内容.比如这样: 网页右下角被插入了游戏的广告. 流 ...
- nginx上搭建https
nginx上配置https的条件: 1.SSL证书和服务器私钥文件 2.nginx支持SSL模块 一.获取SSL证书 网上有提供权威认证的SSL证书的网站,但多数是收费的,而且不便宜.在正式的生产环境 ...
- 拒绝流量劫持,全面使用 HTTPS!
最近收到数个 BootCDN 用户的反馈:某些地区的宽带运营商劫持了部分 BootCDN 上的文件,并篡改文件加入了广告代码. 这种方式的流量劫持属于中间人攻击(Man-in-the-Middle A ...
- 在服务器上启用HTTPS的详细教程
现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什么要使用HTTPS协议: 虽然SS ...
- Android--获取使用的总流量和每个App的上传、下载的流量
获得每个App的上传.下载的流量. 思路就是获取到我们手机上的所有app,再获得app里面使用的权限,如果app有网络权限,就显示出来. 代码很简单,代码里面也有比较详细的注释,下面直接上代码 布局文 ...
随机推荐
- linux入门系列4--vi/vim编辑器
上一篇文章"linux入门系列3--linux远程登陆工具"讲解了如何使用常用的工具远程连接和管理linux服务器,要管理服务器必然会涉及到脚本文件的创建.编辑工作,因此在介绍命令 ...
- Oracle基础之保留字和关键字
Oracle基础之保留字和关键字 在Oracle之中,有分为保留字和关键字,所谓关键字就是Oracle中有实际意义的,而保留字(比如DESC.ORDER等等)是Oracle中不能随便使用的,比如不能随 ...
- 【记】本地远程连接VM VirtualBox中虚拟机Centos6的数据库MySQL
目标:远程连接虚拟机中的MySQL 效果图如下 1. VBox设置好端口转发 具体步骤请看 VM VirtualBox 网络地址转换(NAT)使用详解 2. MySQL授权 如果这时我们就去远程连接M ...
- 记录一次mybatis genertor使用以及mapper扫描遇见的问题
本记录适用初次接触mybatis,大神忽略... 整体上分两个部分: 1.使用mybatis genertor自动生成代码 2.mapper的扫描 1.使用mybatis genertor自动生成代码 ...
- 图解kubernetes调度器SchedulerCache核心源码实现
SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器 ...
- Scala实践14
1.Scala的future 创建future import scala.concurrent._ import ExecutionContext.Implicits.global object Fu ...
- 三、Nginx原理解析
Nginx原理解析 一.反向代理 工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址: 反向代理服务器接受用户的请求: 反向代理服务器在本地缓存中查找 ...
- 美团codem 数列互质 - 莫队
题目描述 给出一个长度为 nnn 的数列 a1,a2,a3,...,an{ a_1 , a_2 , a_3 , ... , a_n }a1,a2,a3,...,an,以及 mm ...
- Java 集合源代码——ArrayList
(1)可以查看大佬们的 详细源码解析 : 连接地址为 : https://blog.csdn.net/zhumingyuan111/article/details/78884746 (2) Array ...
- 13.系统总结static
static修饰属性和方法: package com.oop.demo08; //static :被static修饰的变量或者方法随类加载,从属于类,当然对象也可以调用 public class St ...