IS课程设计——基于Wireshark插件的国密标准检测工具的设计与实现

发布时间 2023-12-16 15:06:50作者: 20211308wjc

基于Wireshark插件的国密标准检测工具的设计与实现个人报告

SSL VPN协议介绍

SSL VPN(安全套接字层虚拟专用网络)是一种技术,用于在远程用户和企业内部网络之间建立安全、加密的通信连接。这种类型的VPN通过使用安全套接字层(SSL)协议(或其继任者传输层安全性(TLS))来提供安全性和隐私性,这是为了保护互联网通信免受监听和篡改。

SSL VPN的特点和优点包括:

1.客户端兼容性:SSL VPN不需要在用户设备上安装专用客户端软件。它通常通过标准的Web浏览器进行访问,使得用户可以从任何支持SSL/TLS的浏览器访问企业资源。

2.端到端加密:SSL VPN在用户设备和服务器之间提供端到端的加密连接,确保数据在传输过程中的安全性和完整性。

3.远程访问:它允许远程用户通过互联网安全地访问企业内部网络,这对于支持远程工作和移动工作者特别重要。

4.资源控制和访问管理:企业可以设置策略,控制不同用户对网络资源的访问权限,从而增加了安全性。

5.易于管理:由于SSL VPN通常通过Web浏览器访问,因此它们相对容易部署和管理。

6.不同的访问模式:SSL VPN支持多种访问模式,如网页模式(用户通过浏览器访问特定的内部网站或应用程序)和隧道模式(为用户提供更广泛的网络访问)。

SSL VPN相对于传统的IPSec VPN有一些优势,包括易于配置和使用、更好的跨平台兼容性和客户端灵活性。然而,它们可能不适用于需要复杂网络访问的场景。企业在选择VPN解决方案时,应根据其特定的安全需求和使用情景来决定。

SSL-VPN协议过程分析

SSL VPN的协议过程涉及多个步骤,以确保安全和数据完整性。这个过程通常基于安全套接字层(SSL)或其后继者传输层安全性(TLS)。以下是SSL VPN连接的典型步骤:-

1. 用户身份验证

  • 用户请求连接:用户通过浏览器或客户端应用程序连接到SSL VPN服务器。
  • 身份验证:用户需要通过用户名和密码、数字证书、双因素认证等方式进行身份验证。

2. SSL/TLS握手

  • 启动握手:一旦用户被认证,SSL VPN客户端和服务器之间的SSL/TLS握手过程开始。
  • 服务器认证:服务器向客户端发送其公共证书。客户端验证证书的有效性(发行者、过期日期等)。
  • 密钥交换:客户端和服务器协商一个会话密钥用于加密通信。这通常涉及到公钥加密技术。

3. 加密隧道建立

  • 建立加密隧道:一旦SSL/TLS握手完成,就建立了一个加密的通信隧道。
  • 数据传输:所有通过这个隧道传输的数据都是加密的,确保了数据的机密性和完整性。

4. 访问控制和网络导航

  • 访问控制:服务器根据预先定义的安全策略来控制用户对网络资源的访问。
  • 网络导航:用户可以通过SSL VPN隧道安全地访问允许的内部网络资源,如应用程序、文件服务器和内部网站。

5. 会话维护和终止

  • 会话维护:SSL VPN会话在用户连接期间保持活动状态,可能包括心跳包来维持连接。
  • 会话结束:用户断开连接或会话超时后,隧道关闭,加密会话结束。
  • 安全性和性能
  • 加密方法:SSL/TLS协议使用多种加密算法来保证数据安全。
  • 性能:加密和解密过程需要一定的计算资源,可能影响性能。

SSL VPN的整个过程强调了用户身份验证、数据加密、安全会话管理和细粒度访问控制。这使得SSL VPN成为一种适用于提供远程用户安全访问企业资源的有效方法。

编写过程

对SSL VPN通信数据包进行分析

首先对protocol进行排序,找到TLSv1.2协议,从中我们可以看到告警协议(Alert)以及握手协议(Client Hello)


以上是两个用户进行握手的过程,其中包括发送端向接收端发送Client Hello,接收端向发送端发送Sever Hello,Certificate(签名),之后就是密钥交换以及传送加密数据。

对加密算法进行分析





对协议过程进行分析




网关到网关协议(建立网关到网关的传输层隧道)

记录层协议(传输数据分段、压缩解压缩、加密解密、完整性校验等),先MAC再加密(明文消息M,hmac=HMAC(K1,M),密文消息M'=E(K2,M||hamc))。

基本思路

编写一个用于Wireshark的Lua插件以解析SSL VPN的上层协议是一个涉及多步骤的过程。Wireshark本身支持多种协议的解析,但如果你需要特别针对某种SSL VPN协议的细节进行解析,你可以通过Lua脚本来扩展其功能。

1. 熟悉Wireshark和Lua API

  • 了解Wireshark:熟悉Wireshark的基本使用,特别是它是如何解析和显示不同网络层协议的。
  • 学习Lua API:Wireshark提供了Lua API用于开发插件。熟悉这些API,特别是那些用于解析和显示协议数据的。

2. 了解SSL VPN协议

  • 协议规范:研究SSL VPN协议的技术规范,理解其数据包结构、协议流程以及可能存在的各种变体。
  • 捕获数据包:如果可能,捕获一些SSL VPN流量样本。这将帮助你在开发过程中有实际数据可供测试。

3. 设计插件逻辑

  • 定义协议解析器:根据SSL VPN协议的结构设计你的解析器。决定如何解析报头、载荷等。
  • 处理加密问题:考虑到SSL VPN的数据传输是加密的,确定如何处理加密数据。你可能需要专注于解析未加密的部分,或者提供某种方式来解密数据(如果有解密密钥)。

4. 编写Lua脚本

  • 创建新的协议:使用Lua API在Wireshark中创建一个新的协议。
  • 编写解析函数:为你的协议编写解析函数,以解析数据包的不同部分。
    = 处理数据显示:确保你的插件能够在Wireshark界面中以易于理解的方式显示解析出的数据。

5. 测试和调试

  • 初步测试:使用你捕获的样本数据测试插件,查看是否能正确解析和显示数据。
  • 调试:根据测试结果调整和优化代码,解决任何出现的问题。

6. 文档和发布

  • 编写文档:为你的插件编写用户文档,说明如何安装和使用,以及它能做什么。
  • 分享插件:考虑将你的插件共享给Wireshark社区或在Github上发布。

完整版代码见码云链接:

https://gitee.com/chen-linfu/teamwork/blob/master/ssl_vpn.lua

代码分析

1.解析警报协议部分的数据包。

首先检查数据包长度是否满足最小要求(至少两个字节)。
从数据包中提取警报级别和警报描述。
根据特定的警报级别和描述,设置相应的 pktinfo.cols.info 以记录定制化的警报信息。

2.解析变更密码规范部分的数据包。

从数据包中提取记录类型,并根据不同类型设置 pktinfo.cols.protocol

3.解析 SSL 握手部分的数据包。

从数据包中提取握手类型,并根据不同的类型设置 pktinfo.cols.protocol。
如果是客户端 Hello,会调用 dissect_client_hello 函数进行进一步解析。

4.解析客户端 Hello 部分的数据包。

从数据包中提取 TLS 版本信息和密码套件信息,并将其记录到 pktinfo.cols.info 中。
该模块包含一条调试信息的打印,用于指示客户端 Hello 是否被成功解析

5.该模块用于解析记录层协议部分的数据包。

首先检查数据包长度是否满足最小要求(至少1个字节)。
从数据包中提取记录类型。
如果记录类型等于预期值(0x14),则记录特定信息到 pktinfo.cols.info 中,表示检测到了变更密码规范的记录。

6.初始化 SSL VPN 协议解析器,并将其与默认的 SSL VPN 端口(443)关联起来。

创建名为 "ssl_vpn" 的协议对象,并指定它的解析器函数为 dissect_ssl_vpn。
将该协议对象与 TCP 端口表关联起来,以便在捕获到 SSL VPN 流量时自动调用相应的解析器。

课程设计心得总结

1.项目概述

本课设项目旨在设计并实现一个基于Wireshark插件的工具,专门用于检测和分析符合国密(中国国家密码管理局制定的密码标准)标准的网络通信。项目的核心挑战在于理解国密标准的加密协议,并在Wireshark这一广泛使用的网络分析工具中有效地实现这一功能。

2.学习和研究过程

  • 深入理解国密标准:通过阅读官方文档和相关资料,我深入理解了国密标准的加密机制、协议规范和实现细节。这是项目成功的关键,也极大地提升了我的密码学知识。
  • Wireshark和Lua编程:我学习了Wireshark的使用方法,特别是如何通过Lua脚本开发插件。这不仅提升了我的编程能力,也让我了解了网络分析的深层次技术。

3.设计和实现插件:在掌握了必要的知识和技能后,我开始设计并实现用于检测国密协议的Wireshark插件。这个过程中,我学会了如何将理论应用于实践,并解决了多个技术难题。

4.遇到的挑战

  • 处理加密数据:由于国密标准涉及复杂的加密机制,如何在不解密数据的情况下检测和分析加密通信是一个巨大的挑战。
  • 性能优化:确保插件在处理大量数据时仍保持高效运行,需要精心的代码优化和资源管理。

5.成果和收获

  • 实用的检测工具:最终,我们成功开发了一个能够有效检测和分析基于国密标准的网络通信的Wireshark插件。
  • 理论与实践的结合:通过这个项目,我不仅加深了对国密标准的理解,还学会了如何将这些理论知识应用于实际的软件开发中。
  • 团队合作和问题解决:在项目过程中,我学会了与团队成员有效沟通,并共同解决遇到的问题。

6.展望

  • 这个项目不仅提升了我的技术能力,也激发了我对网络安全领域的兴趣。未来,我希望能继续在这一领域深造,探索更多的安全技术和解决方案。

总的来说,这个课设项目是一个极具挑战和教育意义的经历,它不仅增强了我的技术技能,也提高了我对网络安全的认识。通过实践中的学习和解决实际问题的经验,我更加坚信网络安全领域的重要性,并对未来在此领域的发展抱有热切的期望。