对 SSL协议进行wireshark抓包实验
来源:互联网 发布:爱普生清零软件中文版 编辑:程序博客网 时间:2024/06/06 17:02
SSL 配置实验
对 SSL协议进行抓包实验
为了简单,下面实验直接对(校园网) http://10.21.49.130进行抓包,因此要设置抓包的过虑规则为:ip.host==10.21.49.130
未使用SSL协议情况
- 用 ie 访问下面地址http://10.21.49.130:81/users/sign_in打开登录界面.. 输入用户名 westwood 口令 123456
- 重新开始抓包
- 点击网页的登录Sign in
- 查看抓包数据
可以发现刚才的登陆信息已经通过tcp握手协议建立连接之后,通过http协议的post方式发送给了服务器,并且账户密码都暴露了出来,不安全
可以通过wireshark自带的包数据查找功能查找快速找到密码暴露的地方
使用SSL协议情况
- 用ie访问下面地址https://10.21.49.130/users/sign_in打开登录界面.输入用户名 westwood 口令 123456
- 开始抓包
- 点击网页的登录Sign in
- 查看抓包数据
可以看到这时可以看到SSL协议过程。并且再次重复之前的查找,不仅是密码字符串找不到了,并且用户名也不能找到了,这就比http协议多了加密,信息变得不那么容易被获取了。
这里可以看到安全套接字层
SSL的通信步骤如下:
- 建立tcp连接
- SSL握手,建立SSL会话
- 通过会话传送加密数据包
- 释放连接,会话过期
使用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算法来交换密钥。
← 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这个条件,然后就能清晰的看到这个握手过程
可以看出,这是一个单项验证的过程。
第一过程
客户端浏览器向服务器发起TCP连接请求,建立起TCP连接后,客户端向服务器发送Client Hello消息,传送客户端支持的最高 SSL 协议的版本号、随机数、加密算法列表,以及其他所需信息。Client Hello消息的内容如下图所示:
服务器收到客户端建立SSL连接的请求后,通过发送Server Hello消息向客户端传送SSL 协议的版本号、随机数、会话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消息。证书中所携带服务器的公钥,用于加密后面消息中预主密钥。消息内容如下:
从图中可以看到,服务器实际上发送的是一条证书链,这个网站只有一个证书,可以跟浏览器上查看的证书做比对,其中服务器证书内容如下
从图中可以看到证书的各字段信息,包括证书版本号、证书序列号、证书签名算法、颁发者信息和证书有效期
抓包中显示的信息也和证书中剩余的信息向对应
通过以上分析可知证书结构如下图所示:
第三阶段与第四阶段
服务器发送完Certificate消息后继续发送Server Key Exchange和Server Hello Done消息,Server Key Exchange消息中包含有密钥交换算法所需要的额外参数。Server Hello Done消息表示服务器已发送完此阶段的全部信息。
客户端发送Client Key Exchange和Change Cipher Spec消息,Client Key Exchange包含使用服务器RSA公钥加密过的随机数Pre_Master_Secret,该参数用于后续生成主密钥;Change Cipher Spec消息告诉服务器,接下来的消息将采用新协商的加密套件和密钥进行通信,并通知客户端到服务器的握手过程结束。
接着服务器同样发送Change Cipher Spe消息通知服务器到客户端的握手过程结束,并发送一个加密的握手数据Encrypted Handshake Message 消息,客户端收到消息解密后进行验证,验证通过则说明握手过程中的数据没有被篡改过,也说明服务器是之前交换证书的持有者。现在双方就可以开始加密通信。
参考博客
http://blog.csdn.net/swjtu100/article/details/52122971
- 对 SSL协议进行wireshark抓包实验
- 实战利用WireShark对Telnet协议进行抓包分析
- Wireshark抓包实验
- 利用tcpdump+wireshark对android进行抓包分析
- windows上使用wireshark对openwrt进行抓包
- wireshark抓rtmp协议包
- 使用wireshark进行抓包
- 网络WireShark进行抓包
- https(ssl)协议以及wireshark抓包分析与解密
- wireshark抓包实验 分析 详解
- 如何用Fiddler对Android应用进行抓包 手机抓包的两种方法:wireshark抓包和fiddler抓包
- wireshark抓包的协议解析
- 用WireShark进行网络抓包
- 学习用wireshark进行抓包分析
- 利用WireShark抓包进行数据分析
- wireshark通过TCP抓包进行确认
- TCPDump抓包然后Wireshark进行分析
- wireshark对Ethercat抓包分析
- darwin之sdp信息解读(SDPSourceInfo)
- MySQL 基础之了解基本操作和基本数据类型
- 课程4 项目二
- java内部类
- curl命令详解
- 对 SSL协议进行wireshark抓包实验
- Mongodb字段更新$setOnInsert操作符
- 二叉树的遍历
- SSH框架 Blob类型图片处理
- LPC1768 移植freeRTOS
- Ubuntu安装tomcat
- Java SimpleFileVisitor遍历文件夹与File遍历文件夹的速度对比
- SWD下载程序出现错误cannot access memory
- Spring Cloud原理分析及使用<一>