Wireshark入门与进阶系列十一之SSL分析
2016-08-07 18:54
387 查看
0x00 前言
Wireshark(前称Ethereal)中文版是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。本文着重分析wireshark捕获SSL协议及其对SSL协议的故障分析。
抗碰撞【不可能创建一个消息M',使其具有相同摘要的消息M,MD5,SHA-1,SHA-2】
SSLv2 by Netscape (v2-draft,1994)
SSLv3 by Netscape (v3-draft, 1995)
TLSv1.0, IETF (RFC 2246, 1999)
TLSv1.1, IETF (RFC 4346, 2006)
TLSv1.2, IETF (RFC 5246, 2008)
![](http://img.blog.csdn.net/20160807193345741)
每个SSL记录多个SSL信息(包括一个内容类型)允许
SSL记录可以被分割在多个TCP段(2 ^14> MSS!)
一个TCP段可以包含多个SSL记录(或片段)
ChangeCipherSpec协议(0×14)----通知加密开始
警报协议(为0x15)---警示和致命错误的报告
应用协议(0x17已)---数据的实际的加密和传输
ip.defragment: TRUE
tcp.check_checksum: FALSE
tcp.desegment_tcp_streams: TRUE
ssl.desegment_ssl_records: TRUE
ssl.desegment_ssl_application_data: TRUE
我们从wireshark的截图中,通过分析,可以查看SSL记录层的状态,长度,加密等,如下图1 是建立SSL协议前,客户端发送了请求包,进行握手协商。
![](http://img.blog.csdn.net/20160808222910671)
图2.1.1 客户端hello包
![](http://img.blog.csdn.net/20160808223603977)
图2.1.2 服务端hello包
![](http://img.blog.csdn.net/20160808223657291)
图2.1.3 证书传输
![](http://img.blog.csdn.net/20160808225707168)
1=====客户端发送clienthello=================================================================
![](http://img.blog.csdn.net/20160808225928071)
2===服务器发送serverhello包回应=============================================================
![](http://img.blog.csdn.net/20160808230105480)
3===服务端发送证书====================================================================
![](http://img.blog.csdn.net/20160808230427749)
![](http://img.blog.csdn.net/20160808230610406)
![](http://img.blog.csdn.net/20160808230758333)
![](http://img.blog.csdn.net/20160808230820021)
4====服务端证书认证完成===================================================================
![](http://img.blog.csdn.net/20160808230904844)
5===客户端秘钥交换========================================================================
![](http://img.blog.csdn.net/20160808230938985)
6====交换客户端加密套件===================================================================
![](http://img.blog.csdn.net/20160808231044454)
7====客户端完成加密套件加密================================================================
![](http://img.blog.csdn.net/20160808231134760)
8====服务端交换加密套件===================================================================
![](http://img.blog.csdn.net/20160808231210189)
9====服务端交换秘钥套件完成================================================================
![](http://img.blog.csdn.net/20160808231244111)
############################################################################################
0x04短暂RSA (or DH) handshake
下图显示整个加密过程,明显可以看到整个流程比RSA多了一个服务端秘钥交换过程。
![](http://img.blog.csdn.net/20160808231753348)
===在0x02中的第3,4之间多了一个【ServerKeyExchange】的过程=====================================
![](http://img.blog.csdn.net/20160808231941898)
![](http://img.blog.csdn.net/20160809063711479)
====服务器请求客户端证书==================================================================
![](http://img.blog.csdn.net/20160809063840046)
=====客户端发送自己的证书=================================================================
![](http://img.blog.csdn.net/20160809063931157)
=====确认证书============================================================================
![](http://img.blog.csdn.net/20160809064001189)
========================================================================================
TCP会话之间的缓存SSL会话可以从停留的地方继续进行
SSL会话ID作为索引使用
SSL会话的ID超时是一个“绝对超时”,也不是一个“空闲超时”
旧老IE:默认是2分钟,现在10小时
![](http://img.blog.csdn.net/20160809064308256)
========================================================================================
![](http://img.blog.csdn.net/20160809064755215)
========================================================================================
![](http://img.blog.csdn.net/20160809064837046)
========================================================================================
![](http://img.blog.csdn.net/20160809064933124)
========================================================================================
0x07 解密 SSL 流量
提供服务器的私钥给wireshark;仅在追踪文件时,仅对完整的会话或者握手有效;在EphemeralRSA or DH ciphers无法起到作用(因为密钥交换);在客户端认证的情况,也能起效。要实现这个效果,首先要设置SSL的密钥和日志等文件,。
操作方法:主界面--【编辑】--【首选项】--【协议】--【SSL】-->>
![](http://img.blog.csdn.net/20160809065055829)
========================================================================================
![](http://img.blog.csdn.net/20160809071321667)
========================================================================================
![](http://img.blog.csdn.net/20160809071351604)
=======================================================================================
![](http://img.blog.csdn.net/20160809071421566)
========================================================================================
![](http://img.blog.csdn.net/20160809071509714)
========================================================================================
![](http://img.blog.csdn.net/20160809071543568)
========================================================================================
![](http://img.blog.csdn.net/20160809071543568)
========================================================================================
![](http://img.blog.csdn.net/20160809071551418)
==========
![](http://img.blog.csdn.net/20160809071559990)
========================================================================================
解密过程中,由于各种因素,难免出现各种问题,所以这时候要检查 SSL 调试日志和 核实证书的一致性,例如服务器证书是否变动,是否更改,是否和wireshark配置的是同一个证书。
0x08 常见SSL 连接问题
![](http://img.blog.csdn.net/20160809213019763)
![](http://img.blog.csdn.net/20160809213228029)
![](http://img.blog.csdn.net/20160809213702691)
![](http://img.blog.csdn.net/20160809220026036)
![](http://img.blog.csdn.net/20160809220139679)
![](http://img.blog.csdn.net/20160809220221434)
========================================================================================
![](http://img.blog.csdn.net/20160809222239084)
========================================================================================
![](http://img.blog.csdn.net/20160809222334241)
========================================================================================
![](http://img.blog.csdn.net/20160809223733528)
========================================================================================
![](http://img.blog.csdn.net/20160809223820606)
https://www.wireshark.org/docs/
欢迎大家分享更好的思路,热切期待^^_^^ !
Wireshark(前称Ethereal)中文版是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。本文着重分析wireshark捕获SSL协议及其对SSL协议的故障分析。
0x01 基本的密码学
1 保密性
【加密和解密】、消息完整性【信息摘要和消息签名】、端点身份验证和认可【证书和认证机构】2 对称加密
加密和解密的密钥相同、Computatively低消耗、短密钥(通常为40-256比特)DES,3DES,AESxxx,RC43 非对称加密
加密是一个密钥,解密是另外第二个密钥(两键来源于一对)、相比较“高消耗”、长密钥(通常为512-4096位)RSA,DSA4 消息摘要
不可逆【从摘要中不能复原文】抗碰撞【不可能创建一个消息M',使其具有相同摘要的消息M,MD5,SHA-1,SHA-2】
5 消息签名
用私钥认证来新建信息摘要,消息的发送者可以用公钥进行检查真实性6 数字证书
以加密法,公开密钥证书(或身份证明)是一种利用与身份的公共密钥绑定在一起的数字签名的电子文档。7 证书颁发机构
互相信任的发送者和接收者“解决了”密钥交换问题、CA之间能够链接、顶链是“自签名”(它称为“根CA”)0x01 SSL知识
1 SSL历史
SSLv1 by Netscape (unreleased, 1994)SSLv2 by Netscape (v2-draft,1994)
SSLv3 by Netscape (v3-draft, 1995)
TLSv1.0, IETF (RFC 2246, 1999)
TLSv1.1, IETF (RFC 4346, 2006)
TLSv1.2, IETF (RFC 5246, 2008)
2TCP/IP堆中位置
在传输层和应用层之间、介于HTTP和TCP之间,SSL协议独立处于一个层段,不依赖上下层协议。3 SSL记录层
提供分片(最大尺寸为2 ^14)每个SSL记录多个SSL信息(包括一个内容类型)允许
SSL记录可以被分割在多个TCP段(2 ^14> MSS!)
一个TCP段可以包含多个SSL记录(或片段)
4 SSL内容类型
握手协议(0x16)---负责认证和密钥设置ChangeCipherSpec协议(0×14)----通知加密开始
警报协议(为0x15)---警示和致命错误的报告
应用协议(0x17已)---数据的实际的加密和传输
0x02 分析SSL记录层
为了更好地过滤SSL协议的信息并且同时排除其他协议对本次本次分析的影响,我们可以提前设置一下显示过滤设置,详细设置参数如下:ip.defragment: TRUE
tcp.check_checksum: FALSE
tcp.desegment_tcp_streams: TRUE
ssl.desegment_ssl_records: TRUE
ssl.desegment_ssl_application_data: TRUE
我们从wireshark的截图中,通过分析,可以查看SSL记录层的状态,长度,加密等,如下图1 是建立SSL协议前,客户端发送了请求包,进行握手协商。
图2.1.1 客户端hello包
图2.1.2 服务端hello包
图2.1.3 证书传输
0x03 常规的RSA handshake
下图为SSL中RSA handshake建立连接的整个过程,其中客户端和服务端之间共经过9个流程来建立一个SSL连接,连接成功后,才开始发送数据。1=====客户端发送clienthello=================================================================
2===服务器发送serverhello包回应=============================================================
3===服务端发送证书====================================================================
4====服务端证书认证完成===================================================================
5===客户端秘钥交换========================================================================
6====交换客户端加密套件===================================================================
7====客户端完成加密套件加密================================================================
8====服务端交换加密套件===================================================================
9====服务端交换秘钥套件完成================================================================
############################################################################################
0x04短暂RSA (or DH) handshake
下图显示整个加密过程,明显可以看到整个流程比RSA多了一个服务端秘钥交换过程。===在0x02中的第3,4之间多了一个【ServerKeyExchange】的过程=====================================
0x05 Client Authentication
====服务器请求客户端证书==================================================================
=====客户端发送自己的证书=================================================================
=====确认证书============================================================================
========================================================================================
0x06 缓存SSL 会话
密钥协6商消耗大TCP会话之间的缓存SSL会话可以从停留的地方继续进行
SSL会话ID作为索引使用
SSL会话的ID超时是一个“绝对超时”,也不是一个“空闲超时”
旧老IE:默认是2分钟,现在10小时
========================================================================================
========================================================================================
========================================================================================
========================================================================================
0x07 解密 SSL 流量
提供服务器的私钥给wireshark;仅在追踪文件时,仅对完整的会话或者握手有效;在EphemeralRSA or DH ciphers无法起到作用(因为密钥交换);在客户端认证的情况,也能起效。要实现这个效果,首先要设置SSL的密钥和日志等文件,。
操作方法:主界面--【编辑】--【首选项】--【协议】--【SSL】-->>
========================================================================================
========================================================================================
=======================================================================================
========================================================================================
========================================================================================
========================================================================================
========================================================================================
==========
========================================================================================
解密过程中,由于各种因素,难免出现各种问题,所以这时候要检查 SSL 调试日志和 核实证书的一致性,例如服务器证书是否变动,是否更改,是否和wireshark配置的是同一个证书。
0x08 常见SSL 连接问题
1 安全连接失败
2 无共同密钥
3 客户端无法验证服务端的证书
4 证书过期
5 时间不对称
6 虚假网站
========================================================================================
7服务器证书
========================================================================================
========================================================================================
========================================================================================
0x09参考资料
https://wiki.wireshark.org/https://www.wireshark.org/docs/
欢迎大家分享更好的思路,热切期待^^_^^ !
相关文章推荐
- Oracle 大数据集成实施
- Oracle 大数据集成实施
- Oracle 大数据集成实施
- POJ 1195 Mobile phones (二维树状数组)
- Java中重写equals函数加判断自己定义的对象相不相等
- C#语法之匿名函数和Lambda表达式
- Python3.4中filter函数,map函数和reduce函数
- Intent:意图
- HDU 1242 - Rescue(BFS+优先队列)
- Linux中的文本处理工具
- JS强制类型转换
- Spring与web MVC的整合——Spring的应用上下文管理
- 分布式集群搭建(hadoop2.6.0+CentOS6.5)
- python-模块安装方法
- PHP封装FastDFS操作类
- Laravel Debugbar
- C#入门6.17 StringBuilder类
- SpringMVC深度探险(四) —— SpringMVC核心配置文件详解
- java代码动态修改app图标
- 基于ThinkPHP的二叉树左右值无限极分类实现