利用sniffer技术捕捉SSL通信时客户端证书公钥

本文介绍了如何利用sniffer技术,如Ethereal和JPCAP,来捕获和解析SSL通信过程中客户端证书公钥的方法。通过分析SSL握手协议和TCP/IP数据包结构,展示了在特定网络环境中,如何获取并展示客户端证书的Base64编码和详细信息。
摘要由CSDN通过智能技术生成

摘要

         通过对SSL握手协议的分析,得知在SSL双向认证握手过程中,客户端需要出示客户端证书以供服务器验证,利用sniffer技术截获网络通信过程中的TCP/IP数据包,通过对TCP/IP数据包的解析,获得客户端证书公钥。

        

关键字:sniffer,SSL 握手协议,TCP/IP, 证书公钥

 

相关工具:

Ethereal网络抓包工具,Ethereal是免费的网络协议检测程序,支持UnixWindows。让您经由程序抓取运行的网站的相关资讯,包括每一封包流向及其内容、资讯。可依操作系统语系看出,方便查看、监控TCP session动态等等

Ethereal0.99.0下载地址:http://www.newhua.com/soft/3906.htm

 

JPCAP开源组件: JAVA语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点。JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共 的接口,从而实现了平台无关性。在官方网站上声明,JPCAP支持FreeBSD 3.x, Linux RedHat 6.1, Fedora Core 4, Solaris, and Microsoft Windows 2000/XP等系统。

JPCAP下载地址:http://netresearch.ics.uci.edu/kfujii/jpcap/doc/download.html

 

SSL协议分析

参考文档:http://blog.chinaunix.net/u/6258/showart_156636.html

 

         SSL的握手协议包括如下几个步骤:

Ø         交换Hello信息,协商算法、交换随机数、检查会话重组

Ø         交换允许客户端和服务器端协商预主秘密的必要的密码参数

Ø         交换证书和密码信息,使得客户端和服务器端进行认证

Ø         从预主秘密和给定随机数产生主秘密

Ø         为记录层提供安全参数

Ø         允许客户端和服务器端检测实体是否计算出相同的安全参数,握手是否在没有攻击的情况下发生的

 

 

 

 

 

 

 

 

Client                                Server

      ClientHello                  -------->

                                           ServerHello

                                           Certificate*

                                           ServerKeyExchange*

                                           CertificateRequest*

                                 <--------    ServerHelloDone

      Certificate*

      ClientKeyExchange

      CertificateVerify*

      [ChangeCipherSpec]

      Finished                     -------->

                                           [ChangeCipherSpec]

                                  <--------   Finished

Application Data              <------->   Application Data

图一:完全握手的信息流程

*表示并不一定发送的可选的或者依情况而定的信息

 

红色部分为服务器为双向认证时,服务器会向客户端发送CertificateRequet请求,要求客户端出示证书,客户端接受到CertificateRequet请求后,弹出证书选择列表,用户选择客户端使用证书,点击确定后向服务器发送Certificate,我们所要截获的客户端出示的证书公钥包含在此请求中。

 

SSL记录层协议数据包结构定义如下:

       enum {

           change_cipher_spec(20), alert(21), handshake(22),

           application_data(23), (255)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值