zoukankan      html  css  js  c++  java
  • 逆向wireshark学习SSL协议算法(转)

    9.png

    小贴士:SSL协议的定义

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。

    正文

    前不久从网上得到一个https会话数据包文件https.pcap,用32位的wireshark打开(64位的会增加逆向难度,因为用到寄存器传递参数)

    如图:

    wrieshark1.png

    就这么多数据包,非常适合用来研究ssl协议的实现。 wireshark只要导入密钥是可以自动解密出明文的。
    点开Edit菜单下的Preferences项,再点开左侧的Protocols里面的SSL,新建一个SSL解密任务。

    2.png

    确定之后,就可以看到明文数据了。 3.png

    4.png

    原来的第24帧就多了一个http协议块,25帧也是如此,这就是wireshark的ssl解密功能。
    那么它是怎么实现的呢?这需要调试才能搞清楚。
    我调试的版本是Wireshark_win32_V1.12.4_setup.1427188207.exe 大小22.4 MB (23,588,136 bytes)
    费了九牛二虎之力定位到了libwireshark.dll文件,所有的ssl加解密都是在这模块中实现的。
    贴几张调试截图,这些断点都是比较关键的。    5.png    6.png

    7.png

    8.png

    9.png

    10.png

    11.png

    通过调试,终于知道了ssl解密的算法,写了个python脚本,实现了wireshark的ssl解密核心算法。

    结果如图:

    12.png


    大致脚本如下:

    上面的RSA_Encrypted_PreMaster_Secret、client_random、server_random、_Server_Write_IV、Application_Data都是用wiresharkhttps.pcap文件中抠出来的。
    简单的科普一下,水平有限!

    https://www.91ri.org/15396.html

  • 相关阅读:
    代码那些事儿之葫芦娃救爷爷
    《数学计算出题系统》功能规格说明书
    有点难
    肝不动了
    so easy, too happy
    新学期的展望
    Android Gradle插件
    重学数据结构和算法(三)之递归、二分、字符串匹配
    重学数据结构和算法(二)之二叉树、红黑树、递归树、堆排序
    重学数据结构和算法(一)之复杂度、数组、链表、栈、队列、图
  • 原文地址:https://www.cnblogs.com/softidea/p/5268880.html
Copyright © 2011-2022 走看看