https(ssl)协议以及wireshark抓包分析与解密

原创 2016年11月30日 15:13:04

根据之前一篇安全协议的分析中分析了ssl协议,先回顾下ssl协议的内容然后用wireshark来抓包看具体流量包内容。

         SSL协议栈位置介于TCP和应用层之间,分为SSL记录协议层和SSL握手协议层。其中SSL握手协议层又分为SSL握手协议、SSL密钥更改协议和SSL警告协议。SSL握手协议作用是在通信双方之间协商出密钥,SSL记录层的作用是定义如何对上层的协议进行封装。SSL记录协议将数据块进行拆分压缩,计算消息验证码,加密,封装记录头然后进行传输。

 

SSL握手:

1、  初始化阶段。客户端创建随机数,发送ClientHello 将随机数连同自己支持的协议版本、加密算法和压缩算法发送给服务器。服务器回复ServerHello将自己生成的随机数连同选择的协议版本、加密算法和压缩算法给客户端。

2、  认证阶段。服务器发送ServerHello的同时可能将包含自己公钥的证书发送给客户端(Certificate),并请求客户端的证书(Certificate Request)。

3、  密钥协商阶段。客户端验证证书,如果收到Certificate Request则发送包含自己公钥的证书,同时对此前所有握手消息进行散列运算,并使用加密算法进行加密发送给服务器。同时,创建随机数pre-master-secret并使用服务器公钥进行加密发送。服务器收到这个ClientKeyExchange之后解密得到pre-master-secret。服务器和客户端利用1阶段的随机数,能够计算得出master-secret。

4、  握手终止。服务器和客户端分别通过ChangeCipherSpec消息告知伺候使用master-secret对连接进行加密和解密,并向对方发送终止消息(Finished)。



HTTPS(Hypertext TransferProtocol over Secure Socket Layer,基于SSL的HTTP协议),端口443,需要向CA申请证书,通过SSL握手建立安全通道,利用协商密钥对数据进行对称加密通信。

使用wireshark过滤ssl流量,可以看到有几个明显的ssl会话建立包,例如client hello,server hello等;


首先发送ClientHello 将随机数连同自己支持的协议版本、加密算法和压缩算法发送给服务器,流量包里也能看到客户端发送支持的加密算法

server hello包里能看到服务端选择的加密算法;


服务器发送ServerHello的同时可能将包含自己公钥的证书发送给客户端(Certificate);

客户端验证证书,如果收到Certificate Request则发送包含自己公钥的证书,同时对此前所有握手消息进行散列运算,并使用加密算法进行加密发送给服务器;

wireshark抓到的https流量包经过了ssl加密,那么我们如何才能查看解密的数据呢?Firefox和Chrome浏览器都支持用日记文件的方式记录下用来加密TLS数据包对称会话秘钥的,可以通过配置sslkeyfile的链接,将wireshark的中ssl解密指向该文件即可。环境变量中新建用户变量SSLKEYLOGFILE=/sslkey.log文件,之后再wireshark中ssl配置中制定该文件位置即可,具体配置请参考:

配置解密ssl参考链接--http://www.2cto.com/article/201502/377678.html

配置完成,重启浏览器之后,就会发现wireshark中多了一个Decrypted SSL data选项,点击即可查看解密明文信息;


版权声明:本文为博主原创文章,未经博主允许不得转载。

wireshark解密通过浏览器的https报文

需要通过浏览器支持: 1、增加一个windows的环境变量SSLKEYLOGFILE ,其值指定为一个文件路径 下次启动Firefox或者Chrome的开发者模式的时候,TLS秘钥就会...
  • appletreesujie
  • appletreesujie
  • 2017年02月10日 17:37
  • 3737

使用wireshark抓取解密https包

本文转载自:http://www.yangyanxing.com/article/use-wireshark-capture-https.html 今天在看https的相...
  • u014265135
  • u014265135
  • 2017年08月18日 14:32
  • 1731

wireshark抓取https加密报文,并解密

首先你要有证书,而且这个证书需要是.pem格式的。Window的证书管理导出来的是.pfx文件。这个格式在官网上说也是可以用的,但是我尝试了N遍还是没有成功。最后只能将.pfx转换成.pem格式的。我...
  • cch5487614
  • cch5487614
  • 2011年04月26日 16:44
  • 61918

如何用Wireshark(Ethereal)查看HTTPS(SSL)消息里的加密内容

本文根据个人经验介绍如何用Wireshark(Ethereal的新名字)去查看捕捉到的SSL(包括HTTPS)里被加密的消息。大家在使用Tomcat等服务器配置成HTTPS(基于TLS/SSL)后,调...
  • jasonhwang
  • jasonhwang
  • 2008年04月30日 21:52
  • 38806

HTTPS--使用wireshark观察SSL/TLS握手过程--双向认证/单向认证

SSL/TLS握手过程可以分成两种类型: 1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。 2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不...
  • xiangjai
  • xiangjai
  • 2016年07月13日 15:41
  • 3686

为什么Wireshark无法解密HTTPS数据

由于需要定位一个问题,在服务器上tcpdump抓取https数据包,然后下载到本地打开wireshark分析。然后我们下载域名私钥配置到wireshark,发现数据包居然无法解密。是wireshark...
  • linuxnews
  • linuxnews
  • 2016年07月13日 19:40
  • 1835

wireshark解密https数据包方法

wireshark在进行数据包抓取时对于http的数据包,直接可以看得到传输的内容,在搭建wifi钓鱼测试时也难免遇到https的数据包,wireshark抓取到的数据包在不进行任何处理的情况下是看不...
  • qq_27446553
  • qq_27446553
  • 2016年04月15日 22:29
  • 1500

wireshark解密不通过浏览器的https报文

ServerKeyExchange handshake消息首先,要解密不通过浏览器的https报文,如果HTTPS server发送的TLS/SSL报文中不包含ServerKeyExchange消息。...
  • appletreesujie
  • appletreesujie
  • 2017年02月10日 18:13
  • 1439

用Wireshark简单分析HTTPS传输过程-抓包过程

实验环境: 操作系统:Kali linux 1.06 64位 软件:Wireshark 实验目的:查看https的协议传输过程。 一、打开软件, 二、打...
  • u012570105
  • u012570105
  • 2015年11月16日 12:25
  • 2729

Mac OS X上使用Wireshark抓包

本文记录了在Mac OS X上安装XQuartz+Wireshark以及使用Wireshark进行抓包(通过RVI抓取iPhone数据包)的步骤过程。...
  • phunxm
  • phunxm
  • 2014年08月15日 21:29
  • 167012
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:https(ssl)协议以及wireshark抓包分析与解密
举报原因:
原因补充:

(最多只允许输入30个字)