对 SSL协议进行wireshark抓包实验

SSL 配置实验

对 SSL协议进行抓包实验

为了简单,下面实验直接对(校园网) http://10.21.49.130进行抓包,因此要设置抓包的过虑规则为:ip.host==10.21.49.130
avatar

未使用SSL协议情况

  • 用 ie 访问下面地址http://10.21.49.130:81/users/sign_in打开登录界面.. 输入用户名 westwood 口令 123456
    avatar
  • 重新开始抓包
  • 点击网页的登录Sign in
  • 查看抓包数据
    avatar
    可以发现刚才的登陆信息已经通过tcp握手协议建立连接之后,通过http协议的post方式发送给了服务器,并且账户密码都暴露了出来,不安全
    avatar
    可以通过wireshark自带的包数据查找功能查找快速找到密码暴露的地方

使用SSL协议情况

  • 用ie访问下面地址https://10.21.49.130/users/sign_in打开登录界面.输入用户名 westwood 口令 123456
    avatar
  • 开始抓包
  • 点击网页的登录Sign in
  • 查看抓包数据
    avatar
    可以看到这时可以看到SSL协议过程。并且再次重复之前的查找,不仅是密码字符串找不到了,并且用户名也不能找到了,这就比http协议多了加密,信息变得不那么容易被获取了。
    avatar
    这里可以看到安全套接字层

SSL的通信步骤如下:

  1. 建立tcp连接
  2. SSL握手,建立SSL会话
  3. 通过会话传送加密数据包
  4. 释放连接,会话过期

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

SSL/TLS握手过程可以分成两种类型:

1)SSL/TLS 双向认证,就是双方都会互相认证,也就是两者之间将会交换证书。
2)SSL/TLS 单向认证,客户端会认证服务器端身份,而服务器端不会去对客户端身份进行验证。

我们知道,握手过程实际上就是通信双方协商交换一个用于对称加密的密钥的过程,而且握手过程是明文的。
这个过程实际上产生三个随机数:client random, server random, pre-master secret.

前两个随机数都是明文传送的,只有pre-master secret是加密的(RSA或者DH)。
一般生成证书的时候,签名算法可以选择RSA或者DSA算法。
如果server使用RSA证书,RSA即可以用作签名也可以用作不对称加密,pre-master secret就是用server的RSA证书中包含的公钥加密的。
如果server使用DSA证书,DSA只能用作签名,所以还需要使用DH算法来交换密钥。

客户端 方向 服务器
Client Hello



Server Hello
Certificate*
Server Key Exchange*
Certificate Request*
Server Hello Done
Certificate*
Client Key Exchange
Certificate Veritfy*
[Chagne Cipher Spec]
Finished




[Change Cipher Spec]
Finished
Application Data ←→ Application Data

注释:*表示可选择发送的信息,也就是双向验证用的信息


为了更好的分析SSL过程,可以在过滤器加上SSL这个条件,然后就能清晰的看到这个握手过程
avatar
可以看出,这是一个单项验证的过程。

第一过程

客户端浏览器向服务器发起TCP连接请求,建立起TCP连接后,客户端向服务器发送Client Hello消息,传送客户端支持的最高 SSL 协议的版本号、随机数、加密算法列表,以及其他所需信息。Client Hello消息的内容如下图所示:
avatar

版本 随机数 会话ID 加密套件列表 压缩方法列表
主+从 时间+随机字节 长度+ID 长度+套件列表 长度+方法列表

服务器收到客户端建立SSL连接的请求后,通过发送Server Hello消息向客户端传送SSL 协议的版本号、随机数、会话ID、加密算法的种类以及其他相关信息。消息内容如下:
avatar

版本 随机数 会话ID 密码组 压缩方法
主+从 时间+随机字节 长度+ID 单独的密码组 单独的压缩方法

Randon:由随机种子gmt_unix_time使用伪随机数函数(PRF)生成的32字节随机数。
session ID:如果没有建立过连接则对应值为空,不为空则说明之前建立过对应的连接并缓存。
Cipher Suite:指定了服务端选定的加密组合,这里选出的加密组合是TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,ECDHE_RSA作为密钥交换算法。128位的AES分组加密算法,SHA作为消息摘要算法。
Compress Method:记录层接收高层协议的数据时使用的压缩算法,这里没有使用压缩算法,所以是null。

第二阶段

服务器向客户端发送包含其证书的Certificate消息。证书中所携带服务器的公钥,用于加密后面消息中预主密钥。消息内容如下:
avatar
avatar

从图中可以看到,服务器实际上发送的是一条证书链,这个网站只有一个证书,可以跟浏览器上查看的证书做比对,其中服务器证书内容如下
avatar
avatar

从图中可以看到证书的各字段信息,包括证书版本号、证书序列号、证书签名算法、颁发者信息和证书有效期
抓包中显示的信息也和证书中剩余的信息向对应

avatar
avatar

通过以上分析可知证书结构如下图所示:

版本号
序列号
证书签名算法
证书颁发者信息
有效期
证书持有者信息
公钥信息
扩展域
证书签名

第三阶段与第四阶段

服务器发送完Certificate消息后继续发送Server Key Exchange和Server Hello Done消息,Server Key Exchange消息中包含有密钥交换算法所需要的额外参数。Server Hello Done消息表示服务器已发送完此阶段的全部信息。

avatar

客户端发送Client Key Exchange和Change Cipher Spec消息,Client Key Exchange包含使用服务器RSA公钥加密过的随机数Pre_Master_Secret,该参数用于后续生成主密钥;Change Cipher Spec消息告诉服务器,接下来的消息将采用新协商的加密套件和密钥进行通信,并通知客户端到服务器的握手过程结束。

avatar

接着服务器同样发送Change Cipher Spe消息通知服务器到客户端的握手过程结束,并发送一个加密的握手数据Encrypted Handshake Message 消息,客户端收到消息解密后进行验证,验证通过则说明握手过程中的数据没有被篡改过,也说明服务器是之前交换证书的持有者。现在双方就可以开始加密通信。

参考博客

http://blog.csdn.net/swjtu100/article/details/52122971

发布了75 篇原创文章 · 获赞 14 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq965194745/article/details/78791452