1.系统框架与设计
1.1 系统设计
1.1.1 系统方案设计
本系统主要分为六个部分,分别是Web图形化界面模块、任务管理模块、模糊测试模块、GAN模块、历史数据调度模块、结果分析模块。这些模块的对应功能分别是提供美观易用的交互界面和直观的结果界面、新建和管理模糊测试任务、对指定目标进行模糊测试、为模糊测试模块提供生成样例的字段、根据历史测试样例和结果为GAN生成训练集、分析模糊测试的结果。本系统的模块之间相互的调用关系如图2-1所示。
图2-1 系统方案设计图
- Web图形化界面模块
Web图形化界面模块提供给了用户一个可以和系统交互的图形化接口。用户可以通过Web图形化界面来轻易的选定测试的对象和测试的相关参数。对于私有网络协议,用户也可以通过该界面来轻易实现对协议的定义。之后,用户可以一键新建测试任务来实现对目标系统的模糊测试。在测试期间,用户可以通过Web界面查看测试的进度以及测试的统计信息。在测试完成后,用户可以查看历史测试记录来查看测试的结果。测试结果通过Web界面被详细的显示,用户可以查看图形化的统计信息和具体某一个样例的测试情况。
2.任务管理模块
任务管理模块主要创建测试任务,它负责根据前端界面传来的参数来配置实际传给模糊测试的参数并创建模糊测试线程。此外它还接受模糊测试线程的回调信息来生成测试进度等信息并传给前端。最后,任务管理模块还负责管理每个测试任务包括它们的测试结果等。
3.模糊测试模块
模糊测试模块是本系统最核心的模块之一,它负责根据任务管理模块传来的参数来进行模糊测试。其协议理解和错误检测的功能是借助开源模糊测试工具Boofuzz来实现的。而其最核心的测试样例生成则是在一个设定好基础测试样例的基础上,通过修改指定的字段值为GAN输出的结果来实现的。
4.GAN模块
GAN模块也是本系统的核心模块之一,它负责生成供模糊测试模块产生测试样例的字段。通过将历史数据调度模块提供的测试数据作为训练集,GAN可以生成具有特殊特性的字段,用这些字段生成的测试样例有很高的概率触发待测系统的漏洞。我们对于每一次测试都训练了一个单独的GAN,这样可以使生成的测试样例更具有针对性。
5.历史数据调度模块
历史数据调度模块负责收集并整理模糊测试的历史数据,包括测试样例和测试结果,为GAN模块提供训练数据集。此外,历史数据调度模块还可以根据历史数据进行一定的预测和分析,从而优化模糊测试的策略和效果。最后历史数据调度模块还可以根据历史测试样例的测试结果,将测试样例根据其触发的漏洞类型划分为不同的训练集。这样用这些训练集训练出的GAN将更加容易触发单一类型的漏洞。
6.结果分析模块
结果分析模块负责分析模糊测试的结果,生成详细的漏洞报告,供用户了解测试的详细情况。报告包括测试概览、问题摘要、详细漏洞信息等内容,用户可以依此了解网络协议的安全状况和潜在的风险点,有针对性地进行修复和优化。
1.1.2系统架构设计
系统架构上,我们选择了系统设计中常见的五层架构模型,分别为表示层、服务层、业务逻辑层、数据访问层和数据存储层。这种模型提供了一个组织和管理系统的框架,以确保代码的模块化和复用性,并且易于维护和更新。系统的结构图如图2-2所示,以下是每一层的功能和责任:
图2-2 系统架构设计图
- 表示层
表示层是系统的最外层,也是用户直接交互的部分。在我们的系统中,这就是Web图形化界面模块,它负责将用户的操作转换为系统可以理解的命令,同时将系统的结果以可视化的形式展示给用户。具体而言,用户通过表示层来选择模糊测试的参数,并传给后端进行模糊测试,同时表示层还将测试的结果以直观清晰的方式传给用户,让用户能够更好的确认具体的漏洞所在。
2.服务层
服务层是用来处理复杂业务逻辑的,它将表示层的请求转化为业务逻辑层可以处理的请求。在我们的系统中,任务管理模块就扮演了服务层的角色,它负责管理和调度各种模糊测试任务。具体而言,该层根据用户输入的数据调用相应的api,进而执行实际的各种操作,包括启动模糊测试,查看测试日志和结果等。
3.业务逻辑层
业务逻辑层负责处理系统的核心功能。在我们的系统中,业务逻辑层主要包括模糊测试模块和GAN模块。模糊测试模块负责根据服务层传递的参数来执行具体的模糊测试,同时,它也会收集测试过程中的各种信息,包括测试样例的执行结果,以及可能出现的错误等。GAN模块则负责生成模糊测试的测试样例。这个模块使用深度学习的技术,根据历史的测试数据来生成新的测试样例,进而提高模糊测试的效果。
4.数据访问层
数据访问层负责处理和数据库的所有交互,包括数据的读取、写入和查询等。在我们的系统中,数据访问层由历史数据调度模块实现。这个模块负责管理和调度所有的测试数据,包括历史的测试样例,测试结果,以及用于训练GAN的数据等。
5.数据存储层
数据存储层负责数据的持久化存储。在我们的系统中,数据存储层由一个轻量级数据库SQLlite和文件管理系统组成。关系型数据库用于存储系统的配置信息,测试任务和测试结果等数据。而文件管理系统则用于管理和储存测试日志的SQLite数据库文件。
通过这种五层架构,我们的系统将复杂的业务逻辑分解为更小、更易于管理和维护的模块,同时也保证了系统的可扩展性和可维护性。
1.1.3 系统核心功能
本系统的核心功能是向用户指定的待测系统发送足够多且高质量的测试用例,进而评估待测系统的安全性和稳定性。本系统的核心功能为:
(1) 执行模糊测试:针对指定的网络协议,自动进行深度、广度全面的模糊测试。
(2) 生成高质量测试样例:利用GAN模块,能自动产生具有较高概率触发潜在漏洞的测试样例。
(3) 分析并报告测试结果:对模糊测试结果进行详细分析,生成全面、易理解的测试报告。
(4) 理解任意网络协议:对不同类型的网络协议进行解析和理解,以满足多样化的测试需求。