【转载】HTTPS报文抓包

HTTPS简单来说,就是使用SSL对HTTP报文进行加密传输。
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。
 

一、密文解析方法:

HTTPS报文本身是加密的,wireshark也无法解析。因此需要将HTTPS生成的随机数(premaster-secret)提供给wireshark,wireshark才能正确解读密文。
具体配置方法(WINDOWS):

建立path变量 SSLKEYLOGFILE=c:\ssl.key
重启firefox/chrome,访问https网站会自动生成ssl session key
在wireshark中配置:编辑-首选项-Protocol-SSL-(Pre)-Master-Secret log filename 设置为之前配置的ssl.key文件,即可解密抓到的SSL密文
 

二、准备过程(DNS、TCP与302跳转):

在电脑浏览器输入www.baidu.com,此时请求的是HTTP报文。

2.1 DNS解析:获得baidu网站IP地址

2.2 TCP建立连接:HTTP服务基于TCP连接,根据前述DNS解析结果建立连接。

2.3 HTTP请求与响应:可见,服务器响应了一个302 Moved Temporarily 重定向报文,定向到 https://www.baidu.com,接下来进入HTTPS报文请求环节。

 

三、SSL/TLS报文交互(即HTTPS如何通过非对称算法得到一个对称密钥用于加密)

 

注:此处发生了一次乱序,导致了一次SACK确认,181与180行的先后顺序颠倒了。

下图为TLS/SSL报文交互流程示意图。

 

      Client                                               Server

         ClientHello
        (empty SessionTicket extension)-------->
                                                         ServerHello
                                     (empty SessionTicket extension)
                                                        Certificate*
                                                  ServerKeyExchange*
                                                 CertificateRequest*
                                      <--------      ServerHelloDone
         Certificate*
         ClientKeyExchange
         CertificateVerify*
         [ChangeCipherSpec]
         Finished                     -------->
                                                    NewSessionTicket
                                                  [ChangeCipherSpec]
                                      <--------             Finished
         Application Data             <------->     Application Data

其中ServerKeyExchange为DH算法专有(RSA算法则无)



175报文:用户端发起Client Hello,携带版本信息与random数(客户端),并在Cipher Suites中提供了所有可用的加密协议。
由于之前未建立过连接,携带length为0的Session id,表明期待一个SessionTicket


179,181报文:服务器端答复Server Hello,选定加密协议(本次抓包为ECDH),并传递自己的certificate给客户端。

以baidu为例:其证书中最重要的两部分内容就是公钥与数字签名。其中数字签名,即确保该certificate为真百度网站所提供的证书。公钥,则用于与百度网址进行RSA不对称算法的数据交互,生成可靠密钥。

 


180: 服务器端发送Server Key Exchange与Server Hello Done

Server Key Exchange发送了DH算法中的Kb值,并使用RSA签名方式进行了签名确保身份。(如果使用RSA则无此报文)。
Server Hello Done则表明Server端的报文已结束。

 

至此,Server已经提供了证书、公钥、Kb,并发送Hello Done进行确认。如果Server端需要验证Client端的身份,则需在发送Hello Done前发起Certificate Request,Client端就会类似Server端一样,发送证书以及Client公钥(一般Client端的证书与公钥主要通过U盾模式提供,用于安全要求较高的网银等场景)。

 

184:客户端答复Client key Exchange,Change Cipher Spec Protocol,Finished

 

Client Exchange即DH算法中的Kb(由于不验证Client端身份,所以Client不需要传递Signature)。
Change Cipher Spec代表Client已经完成了全部协商,接下来的数据包将使用TLS进行封装传输。
Finished:最后发送finish报文表示结束。

 

------至此双方已经交互了所有的DH算法所需的参数,均可计算得出对称密钥s。------

187:服务器端答复New Session Ticket,Change Cipher Spec Protocol,Finished

Session Ticket用于TLS中断后重新接续Session
Change Cipher Spec 代表Server端告知Client接下来的报文将使用TLS加密进行传输
Finished表示TLS连接建立过程结束

四、HTTPS报文传输

在发送Change Cipher Spec与Finished报文后,客户端即向服务器端发送加密的HTTP over TLS 报文;
服务器端在发送Change Cipher Spec与Finished报文后,同样使用HTTP over TLS应答HTTP 200 OK报文。

使用前述抓包方法可以在wireshark中解开加密的字符串,看到其中的密文:HTTP 200 OK响应报文

注:wireshark用于解密HTTPS报文的本地key,应该是指本地生成的随机数(RSA中的premaster随机数或DH中的a随机数),而非RSA公钥/私钥

 



相关参考RFC:
RFC5246:The Transport Layer Security (TLS) Protocol Version 1.2
RFC2818:HTTP over TLS
RFC3526:More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)
RFC5077:Transport Layer Security (TLS) Session Resumption without Server-Side State

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Moubs 485报文是指使用Modbus RTU协议进行通讯时的数据报文。Modbus是一种通信协议,常用于工业领域的自动化控制系统中,用于设备之间的数据交换。而485则是一种通信物理层标准,用于建立Modbus通信时的电气连接。 当我们进行Moubs 485报文抓包时,通常是为了分析和监控Modbus通信过程中的数据传输情况,以便进行故障排查、性能优化或数据分析等工作。 抓包可以通过使用网络抓包软件或物理层协议分析仪来实现。对于网络抓包软件而言,我们需要在通信过程中的某个节点上进行抓包操作,以便捕获并记录报文的内容。而物理层协议分析仪则是将其连接到通信线路上,直接读取和分析报文。 Moubs 485报文的结构通常包括起始位、从站地址、功能码、数据区和校验位等。起始位是标记报文传输开始的信号,而从站地址用于表示接收方的设备。功能码则用于标识报文的目的和类型,例如读取数据、写入数据或执行命令等。数据区是用于携带具体数据的部分,其格式和内容依赖于具体的Modbus应用。最后,校验位是一种错误检测码,用于验证报文的完整性和准确性。 通过抓包分析,我们可以获取Moubs 485报文的具体内容、发送和接收时间、报文之间的顺序关系以及传输过程中的错误情况等信息。这对于诊断通信故障、优化通信性能以及进行数据分析和监控都是非常有帮助的。 总之,Moubs 485报文抓包是一种分析和监控Modbus RTU通信过程的方法,能够为我们提供报文相关的详细信息,帮助我们解决通信问题并优化系统性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值