您的位置:首页 > 其它

Wireshark入门与进阶系列十一之SSL分析

2016-08-07 18:54 387 查看
0x00 前言

Wireshark(前称Ethereal)中文版是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。本文着重分析wireshark捕获SSL协议及其对SSL协议的故障分析。

0x01 基本的密码学

1 保密性

【加密和解密】、消息完整性【信息摘要和消息签名】、端点身份验证和认可【证书和认证机构】

2 对称加密

加密和解密的密钥相同、Computatively低消耗、短密钥(通常为40-256比特)DES,3DES,AESxxx,RC4

3 非对称加密

加密是一个密钥,解密是另外第二个密钥(两键来源于一对)、相比较“高消耗”、长密钥(通常为512-4096位)RSA,DSA

4 消息摘要

不可逆【从摘要中不能复原文】

抗碰撞【不可能创建一个消息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/

欢迎大家分享更好的思路,热切期待^^_^^ !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: