基于Golang的网络安全靶场设计与实现

发布于:2024-12-30 ⋅ 阅读:(43) ⋅ 点赞:(0)

摘  要 伴随着网络信息技术的发展,各类信息安全问题频繁出现,每天都有大量的网络攻击。针对这一问题,未知攻,焉知防。因此急需一种可以用来模拟和复现网络攻击的靶场,在这个靶场中让安全人员第一时间掌握这种攻击技术,并找到到与其对应的防御手段减少遭受网络攻击对人们带来隐私风险和财产损失。因此,采用Golang开发语言、MySQL数据库进行开发。本论文在对网络安全靶场系统进行了需求分析的基础之上,进行了流程设计、功能设计等,最终开发实现了基于Golang的网络安全靶场系统,主要实现了注册登录、靶场管理、实验室管理、和实验文档管理等功能。通过对系统进行功能测试、兼容性测试、性能测试结果来证明该系统功能完善,安全可靠对网络安全人员有着极大的帮助。 关键词:网络安全靶场;Golang开发语言;MySQL数据库

ABSTRACT With the development of network information technology, various information security issues have emerged frequently, and there are a large number of network attacks every day. In response to this issue, without knowing how to attack, there is no knowing how to defend. Therefore, there is an urgent need for a shooting range that can be used to simulate and replicate network attacks. In this range, security personnel can quickly grasp this attack technology and find corresponding defense measures to reduce privacy risks and property losses caused by network attacks. Therefore, Golang development language and MySQL database are used for development. Based on the requirement analysis of the network security range system, this paper conducted process design, functional design, and ultimately developed and implemented a network security range system based on Golang. The main functions include registration and login, range management, laboratory management, and experimental document management. By conducting functional testing, compatibility testing, and performance testing results on the system, it is proven that the system is fully functional, safe, and reliable, which is of great help to network security personnel. Keywords: Cybersecurity shooting range; Golang; MySQL

目  录 第1章 绪论 1 1.1 研究背景与意义 1 1.2 国内外研究与应用现状 1 1.2.1 网络安全攻防平台研究现状 1 1.2.2 Golang的应用现状 2 第2章 关键技术 3 2.1 Gin和Gorm框架 3 2.1.1 Gin架构简介 3 2.1.2 Gorm架构简介 3 2.2 云计算技术 4 2.2.1 云计算按部署分类 4 2.2.2 虚拟化技术 5 2.2.3 Docker容器技术 6 2.3 本章小结 6 第3章 系统分析 7 3.1 可行性分析 7 3.2 需求分析 7 3.3 系统流程分析 8 3.4 本章小结 9 第4章 系统设计 10 4.1 系统功能设计 10 4.1.1 用户模块设计 10 4.1.2 管理员模块设计 11 4.2 数据库设计 11 4.2.1 数据库E-R图设计 11 4.2.2 数据库表设计 13 4.3 本章小结 15 第5章 系统实现 16 5.1 注册登录 16 5.2 靶场管理 18 5.3 实验室管理 21 5.4 实验室文档管理 23 5.5 虚拟机创建 25 5.6 容器创建 26 5.7 本章小结 29 第6章 系统测试 30 6.1 功能测试 30 6.1.1 实验室测试 30 6.1.2 靶场测试 32 6.2 兼容性测试 35 6.3 性能测试 38 6.4 压力测试 39 6.5 本章小结 40 第7章 结束语 41 7.1 总结 41 7.2 问题和展望 41 参考文献 43 致谢 44

第1章 绪论 1.1 研究背景与意义 伴随着IT技术的发展与广泛运用,人们生活己经不能够脱离网络。但当信息技术为我们生活带来方便时,如何保障网络安全这一重要问题已摆到我们面前,计算机网络对现代生活产生了越来越大的影响,现如今个人,企业及政府部门和国家军事部门无论是天文还是地理都离不开网络来进行信息的传递,这种信息已经成为了一种主流,并且人们对网络的依赖性越来越强。但是网络所具有的开放性和共享性易使其遭受到来自外部的攻击和损害,网络信息中的各类入侵行为以及犯罪活动也随之而来。 为了避免网络安全遭到破坏而带来不可弥补的不良后果,网络安全从业者需要不断的学习和研究新的攻击技术和防御技术,层见叠出的网络攻击手法让网络安全人员猝不及防,因此技术在快速发展和进步的同时,难免会留下一些与之相对应的破绽,为了规避这种被攻击的风险,网络安全人员的攻击技术应该领先于攻击者之前,应该在攻击者之前发现漏洞。因此网络安全攻防靶场技术是专门模拟和复现网络攻击而搭建的。该平台可以提供最新的漏洞为安全人员学习和研究,从而提高网络安全人员的技术水平。 1.2 国内外研究与应用现状 1.2.1 网络安全攻防平台研究现状 很多先进国家推进网络靶场部署,为信息安全挑战、信息安全等级分析等提供重要支持。网络安全攻防实训平台就是通过仿真真实网络环境使学生或安全人员在网络攻防中实战演练。当前网络安全攻防实训平台被越来越多地使用。在我国,网络安全攻防实训平台已被广泛重视与使用。目前我国网络安全攻防实训平台分为“国家级网络安全人才培养基地”与“在全国高校网络安全竞赛中”两类:一类是政府,高校与企业共同研发的公共平台;二是企业开发的专用平台“华为网络安全实验室”和“360安全应急响应中心”。国外也普遍采用网络安全攻防实训平台。美国的网络安全攻防训练平台主要由政府和高校联合开发,如“美国国家安全局网络安全教育中心”、“卡内基梅隆大学网络安全实验室”等;欧洲的网络安全攻防训练平台主要由欧盟与相关机构联合开发,如“欧盟的网络安全机构”、“欧洲网络安全竞赛等”等。从整体上看,网络安全攻防实训平台作为非常重要的教育培养工具,对提升网络安全人才实践能力与应对能力具有重要意义。 1.2.2 Golang的应用现状 Go语言(或Golang)是谷歌公司2009年推出的一种新编程语言,其目的在于在保持高性能的前提下,提高编程效率及代码可读性。Go语言一经推出就被广泛运用于云计算,容器化和大数据中,下面就Golang的应用状况作一介绍:云计算领域:Go语言被广泛地应用于云计算领域,如Kubernetes,Docker,Cloudflare等等项目均使用Go语言进行开发,它们均具有高可靠性,高可扩展性以及高性能。大数据领域:Go语言还被广泛应用于大数据处理与分析领域,如InfluxDB,Etcd等等开源项目均使用Go语言进行撰写。网络编程领域:Go语言还广泛地应用于网络编程领域,如HTTP,RPC,WebSocket协议实现均采用Go语言。Web开发领域:Go语言也被广泛地应用于Web开发领域中,如Beego,Gin等等Web框架均采用Go语言来编写。从整体上看,Go语言被广泛应用于云计算、容器化、大数据、网络编程以及Web开发中,其高性能高可扩展性以及高并发性使其成为很好的编程语言之一。

第2章 关键技术 本章节主要对Gorm架构、Gin框架、云计算平台、Docker容器做了主要介绍,重点介绍了云计算部署的分类,什么是私有云,社区云等,对虚拟化和Docker容器技术技术作了详细介绍。 2.1 Gin和Gorm框架 2.1.1 Gin架构简介 用Go语言编写的Web框架里有两个著名的Web框架——Martini框架和Gin框架,这两个Web框架对比起来,Gin本人表示要比Martini框架强多了。因为这款平台本身就很强大,而且还有许多新功能。另外它还提供很高的灵活性和可扩展性。综上所述,这是Go语言开发领域中值得很好地学习的Web框架之一,这个API框架和martini差不多,但是性能比较好,因为采用http router,所以速度几乎提升了40倍Go里面最受欢迎的Web框架GITHUB中32K+star就是其中之一。基于http router开发的Web框架。中文文档完整、简便易行、轻量级框架。Gin作为Golang微框架封装更典雅、API更友好、源码注释更清晰,1.0版已推出。本实用新型快速灵活且容错容易。事实上,对Golang来说,web框架远远低于Python和Java等。本身net/http就够简单了,表现很好。框架更多地像几个常用函数或工具的组合。在框架开发的帮助下,不但能节省许多通常使用的封装所花费的时间,而且还能帮助团队编码风格并塑造标准。速度:在众多的企业与团队中使用的首要原因是它的快速与卓越的性能表现。在请求的处理上,支持中间件的运行,便于编码处理。Gin里能很简单地完成路由解析,而且还含有路由组解析。 2.1.2 Gorm架构简介 GORM是面向Golang 语言的一种 ORM(持久层)框架,该框架的独特之处在于,只需要用它所给的的API来访问底层的数据库,因此它削弱了开发者对于SQL语言的学习程度,降级了学习成本,使得开发者开发效率更高全功能ORM、关联 (多态,单表继承)、Create,Save,Update,Delete,Find中钩子方法、支持 Preload、Joins 的预加载、Context、预编译模式、DryRun模式、复合主键索引约束、自定义Logger、开发者友好。 2.2 云计算技术 云计算给软件开发与部署模式带来了全新的可能方与方向,具有一定的创新性。云计算现已成为提供多种服务并搭载多样应用程序的重要基础设施,它为人工智能、大数据、物联网等诸多新兴领域的发展与进步提供了基本支撑。 2.2.1 云计算按部署分类 1.私有云 私有云是一种为企业或个人定制的云计算环境,该环境以私有方式部署在本地数据中心或公司内部网络中,由企业或个人负责管理和运维。与公共云相比,私有云具有更高的,可靠性强、安全性高、灵活性大等优势。特征是自己的公司自己架设服务器为员工使用,所有权归企业里的负责管理人员,没有严格的规定,可大可小。 2.社区云 社区云在特定的社区范围内共享资源和服务的计算环境。该计算环境由一组相互协作的成员机构或用户组成,这些成员通常属于同一行业、同一领域或同一地理位置。具有云端资源仅为2个或2个以上具体单位组织内部员工所利用等核心特点,除此,社区云是公有云的一种类型,指云服务提供商在资源,软件以及服务能力等方面提供服务的云计算模式。社区云综合了社区成员共同需求实现区域间资源共享和配置。与公有云相比,社区云具有隐私性和安全性上的优势。软件与服务能力云计算模型。社区云综合了社区成员共同需求实现区域间资源共享和配置。与公有云相比,社区云具有隐私性和安全性上的优势。 3.公有云 云计算平台是面向公众或者大型行业集团的云服务平台。这些企业通常使用私有云,而用户则可利用公有的资源来处理自己需要的数据。公有云服务可经由网络及第三方服务提供商对顾客开放。在公有云服务商看来,云计算平台的提供者应该是私有企业,即所谓的“公有企业”.然而,在现实中,我们却常常看到公有企业利用自己所掌握的网络资源来实施一些非法行为。“公有”一词不一定是“免费”的,不过,这也可能表示免费,或者价格相当低廉。公有云服务通常需要对其用户进行授权,而这些授权必须以私有服务器上存储的敏感信息为前提。公有云不是说谁都有权获取用户的数据,访问控制机制为公有云提供商对用户所采用的一种工具。公有云是一种可伸缩、低成本并且易于管理的计算模式,其目的在于使每个人能够在任何时候、以何种方式访问自己所需要的信息。作为解决方案,公有云有弹性,经济有效。目前,公有云已经成为了全球范围内最流行的一种商业模式,许多企业正在部署和运营私有云。第三方云服务提供商对公有云进行建设和运维,通过互联网,人们能够利用所提供的计算资源,比如,应用程序与开发平台。在公有云中,用户能够从服务器上获得服务,并且在任何时间和地点进行操作,从而避免了个人计算机或网络对其带来的安全威胁。公有云中的云服务提供商、对一切软硬件资源及其他基础设施资源进行维护与管理,人们通过浏览器获取这些服务资源,并且对其账户进行管理。 4.混合云 是由两种或两种以上不同类型的云(私有云,社区云,公共云等)组成,实际上,这并不是一种特定类型的单个云,它向外展示的计算资源是由2个或者更多云端提供,无非是加入混合的云管理层。这些企业通常使用私有云,而用户则可利用公有的资源来处理自己需要的数据。云服务的消费者以混合云管理层的方式出租并利用资源,觉得好像是用了同一块云上的资源,事实上,内部是由混合云管理层从真正云端路由而来的,一般人都会在公共云中放置一些非企业或者组织的关键机密信息,并对这些信息加以管理与计算,同时,利用私有云对企业或者组织中的关键服务以及机密数据进行管控。混合云使企业或组织可以利用云平台实现跨域共享和应用。私有云与公有云间自由迁移数据与应用,使企业或者组织能够通过混合云实现更加敏捷,解决方法更加丰富。 2.2.2 虚拟化技术 虚拟化技术通常使用虚拟机的管理程序来负责操作系统之间硬件资源的调度,处于操作系统和硬件设备之间的中间状态。虚拟机管理程序和硬件设备没有任何关系,所以也没有必要专为硬件设备进行管理,只要按照虚拟机提供的特点进行相关应用的配置就可以了,并没有传统方式中硬件设备需要进行重新设计。对于完全虚拟化技术,虚拟机管理程序直接操作硬件设备,可以作为一个特别操作系统使用。虚拟机管理程序将底层硬件资源抽象成虚拟资源进行集中管理,然后分配给虚拟机,虚拟机共享以上虚拟资源。由于虚拟机与物理系统无关,可根据需要灵活地扩展虚拟机。虚拟机对于操作系统与应用来说,只是一个容纳的工具,之间在逻辑上是孤立的。从而虚拟机管理程序无需对系统整体进行修改,即可完成全部的功能。虚拟机管理程序基本上可以支持很多类型和配置的操作系统。 虚拟机管理程序虚拟化原理包括CPU虚拟化2种,内存虚拟化和I/O虚拟化3大内容。在实践中,一般都会采用不同种类的虚拟化技术对上述问题进行处理,从而实现性能提升或者成本降低。CPU虚拟化是虚拟机管理程序的最主要功能,对内存虚拟化和I/O虚拟化等技术的实现起决定性作用。内存虚拟化包含在物理机中建立多个逻辑块,并且把它们保存在不同种类的存储器中。CPU虚拟化主要工作就是模拟指令的执行,中断及异常时虚拟CPU的个数可多于物理CPU,能充分利用物理机的CPU资源。内存虚拟化主要负责将物理内存转换为机器内存内的地址,从而解决虚拟机内存访问问题。另一方面虚拟机之间,虚拟机和虚拟机管理程序之间内存隔离,防止虚拟机中应用程序对其他虚拟机乃至虚拟机管理程序自身产生影响,从而导致程序崩溃。I/O虚拟化以虚拟机使用和访问外部设备为主,通过访问拦截,设备模拟和设备共享等手段实现。以虚拟机监控程序为核心提供的虚拟平台种类,可以分为半虚拟化和完全虚拟化两种,也称为1型虚拟化,2型虚拟化等等。完全虚拟化也称为原始虚拟化技术。虚拟机是指能够不依赖于物理设备进行工作的计算机或者其他计算装置。该技术使用虚拟机管理程序来协调虚拟机操作系统和物理硬件。完全虚拟化可以改善系统性能,而不会增加硬件成本。虚拟机管理程序用于协调虚拟机操作系统和物理硬件之间的操作以及拦截和处理部分命令。为满足完全虚拟化需求,需要对虚拟机管理程序进行适当修改以符合虚拟机操作系统。完全虚拟化比硬件模拟具有更高的运行效率,但是性能不如物理机,因为虚拟机中管理程序需要占用一些资源。若虚拟机管理程序需要实现对虚拟机系统内所有进程及线程进行监视与管理,则需要利用虚拟平台。对于完全虚拟化的虚拟机管理程序这一虚拟平台来说是真实存在的。 2.2.3 Docker容器技术 虚拟机的技术发展,缓解了企业对于硬件资源过度依赖的问题,其把一个物理设备虚拟成若干个逻辑设备,每一个逻辑设备能够运行不同操作系统,应用程序均能在彼此独立空间中进行操作且不产生任何影响,显著提高了设备工作效率。但是传统的虚拟技术在实现应用程序时需安装操作系统,过多的占用了系统资源。大多数时候用户仅需运行一个简单的应用,使用虚拟技术进行操作既烦琐又浪费资源。 因此容器技术就诞生了,它采用进程级的环境隔离,为了能达到虚拟机实现的效果,为了创造虚拟的隔离环境,但它采用系统级的隔离方式,Docker作为流行的容器工具,受到众多开发人员的亲睐。通过对任意物理设备的安装和操作来达到虚拟化的目的,从而使得应用程序完全从底层设备中分离出来,并能灵活地进行物理机间的迁移和部署,使得运维工程师能够从烦琐的环境部署中解放出来,大大提高工作效率的同时降低部署时可能带来的风险。 在虚拟化技术日益发展的大环境中,用户对虚拟机资源动态分配提出了越来越高的要求,而现有的方法无法很好的适应这种需求,这就使虚拟机资源动态分配成为一个亟待解决的难题。docker正是针对这一问题进行了实质性改革。提供一个统一的框架来实现多种容器之间的互操作、共享资源以及动态扩展能力。所以网络安全靶场的题库功能采用docker技术来完成,由于Docker容器较虚拟机较少采用抽象层物理机操作系统内核而无需增加操作系统内核,相较于虚拟机而言Docker容器系统具有资源利用效率高,启动快,易于迁移、维护及扩展,可以连续交付及部署等特点。 2.3 本章小结 在这一章中,我们首先探讨了Gorm和Gin的介绍,然后本文阐述了网络安全靶场中云计算的一些基础知识,然后详细的阐述了虚拟机和docker容器技术。

第3章 系统分析 在上一章中,介绍了Gorm框架和Gin框架,重点介绍了平台所用到的虚拟机和容器技术,在此基础上将对会平台的分析和设计作为探讨对象,探讨内容为平台的可行性分析和需求分析。 3.1 可行性分析 文章从技术可行性,经济可行性,管理可行性和开发环境可行性等方面四个方面对网络安全攻防实训平台进行了可行性分析,以下对这四个方面进行了分析。 1.技术上可行 技术层面采用Go编程语言,以及Gorm和Gin成熟的web框架,虚拟化技术采用ESXI虚拟化平台用来创建实验室,具有流畅的操作体验,题库采用轻量级的Docker容器技术,降低硬件开销节省成本。 2.经济可行性 Gorm与Gin架构各部分均为开源产品,极大地降低项目开发成本。同时采用Gorm,Bootstrap等框架技术不但能够简化开发流程而且能够极大地缩短项目开发周期,降低开发成本。此外,所有docker都免费使用。 3.管理可行性 本课题采用Gorm框架和Bootstrap前端框架相结合的方式,界面设计更加简单明了,方便用户更容易上手。 4.开发环境的可行性 实验室具有充足的硬件、软件及网络环境,为该项目的研制提供了支撑。 3.2 需求分析 如图3.1所示,功能需求可以分为四部分,分别是用户注册、靶场管理、实验室管理和实验文档管理。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图3.1 系统整体用例图 1.管理员用户 管理员用户可以对平台里的题库数据和实验室数据进行删除和添加。 2.靶场管理 对平台上的靶场进行上传或者删除,对靶场基本情况进行修改,并查看网络安全攻防实训平台上所有题库的运行状况。主要用于对题目的管理,为用户提供最新的题目。 3.实验室管理 上传或删除平台中的实验室,查看平台中各实验室运行状态。主要是用于管理实验室的实验地址,类别,对实验室题目的添加和删除。 4.实验文档管理 管理员可以通过obsidian进行实验文档的编写,通过GitHub pages静态托管平台进行访问。 3.3 系统流程分析 系统流程图可以梳理业务流程。通过绘制系统流程图,可以清晰地展示出每一个功能模块的输入与输出,能了解系统业务的处理情况。用户通过注册、登陆、选择靶场、选择实验室。流程图如下图3.2所示。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图3.2 系统流程图 首先,用户先通过注册账号并登陆后,可以自由选择靶场学习还是实验室学习,如果选择靶场,将会进入靶场学习,如果选择实验室,将会进入实验室。具体操作流程如下: (1)用户点击注册账号,通过输入账号,在输入密码,然后再次输入确认密码,后台会对账号进行查询,如果账号不存在将会注册成功,否则失败。 (2)选择靶场训练,用户将会进入靶场学习,实战训练来提高技术水平。 (3)实验室可以支持模拟各种攻击与防护场景。同时,安全实验室还提供了各种工具和平台帮助用户了解网络攻击、漏洞挖掘和渗透测试等知识点。 3.4 本章小结 本章介绍了可行性分析,分别从技术上和经济上做了概述,然后介绍了需求分析,分别从注册登录、题库管理、实验室管理以及实验文档管理四个方面进行了说明。

第4章 系统设计 4.1 系统功能设计

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图4.1 系统功能结构图 4.1.1 用户模块设计 1.用户注册 用户注册功能以便新用户能够在系统中创建个人账户并获得访问权限,用户通过输入账号密码和确认密码后点击注册按钮后来进行注册。 2.用户登陆 用户输入已注册的账号和密码进行登录,后端后对账号和密码进行校验,检验成功后就会登录成功,否则登录失败。 3.靶场学习 靶场学习是提供大量的漏洞网站,用户登陆后可以选择想要的进行学习的漏洞。通过在线靶场平台,学生可以从任何地方远程访问靶机并进行攻击测试,在完全安全的虚拟环境中学习、实践各种技术手段,提高网络安全实战能力。 4.实验室学习 实验室学习可以进行实验操作和模拟攻击的环境,用户可以在线实验,选择要实验的项目进入实验室后可进行实验。能够提高他们发现和解决网络攻击、漏洞等问题的能力。 5.实验室文档 对靶场的详细说明和使用指南。实验室靶场文档提供参与者需要了解的基础知识和相关工具的介绍,以帮助他们更好地理解和使用靶场。一份好的实验室靶场文档应该清晰易懂,并提供详细的步骤和示例,以便参与者能够迅速上手并开始学习和实践。 4.1.2 管理员模块设计 1.管理员登陆 管理员用户输入已注册的账号和密码进行登录,后端后对账号和密码进行校验,检验成功后就会登录成功,否则登录失败。登录成功后,管理员可以访问靶场控制台。 2.靶场管理 管理员用户可以对靶场进行上传。用户可以做到不同类型的题目。 3.实验室管理 上传或删除平台中的实验室,查看平台中各实验室运行状态。主要是用于管理实验室的实验地址,类别,对实验室题目的添加和删除。 4.2 数据库设计 4.2.1 数据库E-R图设计 数据库的设计主要就是通过E-R图进行展现,将详细介绍一下主要部分的的E-R图: 管理员实体、用户实体、靶场实体、实验室实体。 1.管理员实体 包括管理员的登陆密码、登陆账号、创建时间等,实体E-R图4.2所示。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图4.2 管理员实体属性图 2. 用户实体 包括用户的登陆密码、登陆账号、创建时间等,实体E-R图4.3所示。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图4.3 用户实体属性图 3. 靶场实体 靶场实体主要包括,靶场名称、靶场类别、靶场地址、靶场封面、靶场时间、靶场文档路径等,实体E-R图4.4。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图4.4 题库实体属性图 4. 实验室实体 实验室实体主要包括,实验室名称、实验室类别、实验室地址、实验室封、实验室时间、实验室文档路径等实体E-R图4.5。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图4.5 实验室实体属性图 4.2.2 数据库表设计 本系统采用的是mysql数据库。并创建数据库名为golang。和本平台相关的主要包括实体和关系,下面将会对表单中的表结构进行详细描述。数据库表信如下所示。 管理员表用于存储管理员的账号、密码、邮箱、手机号、创建时间等字段,管理员表内容如下。 表4.1 管理员表

字段名称

数据类型

必填

注释

id

Int(11)

主键

username

varchar(40)

用户名

password

varchar(64)

密码

updated_at

datetime

更新时间

created_atphoneemail

datetimevarchar(64)varchar(64)

否否否

创建时间 手机号 邮箱

用户表用于存储用户的账号、密码、邮箱、手机号、创建时间等字段,用户表内容如下。 表4.2 用户表

字段名称

数据类型

必填

注释

id

Int(11)

主键

username

varchar(40)

用户名

password

varchar(64)

密码

updated_at

datetime

更新时间

created_atphoneemail

Datetimevarchar(64)varchar(64)

否否否

创建时间 手机号 邮箱

靶场表存储着平台前端的靶场信息,主要包括靶场名称、靶场类别、靶场地址、靶场封面、靶场时间、靶场文档路径。 表4.3 靶场表

字段名

数据类型

必填

备注

id

int

主键

title

varchar(200)

靶场名

content

varchar(64)

靶场地址

tag

varchar(64)

类型

created_at

datetime

创建时间

img

varchar(255)

封面图片

doc

varchar(64)

实验文档

实验室表主要包括,实验室名称、实验室类别、实验室地址、实验室封面、实验室时间、实验室文档路径等。 表4.4 实验室表

字段名

数据类型

必填

备注

id

int

主键

title

varchar(200)

题目

lab

varchar(64)

实验室地址

tag

varchar(64)

类型

created_at

datetime

创建时间

img

varchar(255)

封面图片

doc

varchar(64)

实验文档

4.3 本章小结 本章节通过根据系统的需求分析对靶场平台进行了系统设计,只要对数据库设计、功能设计等,并对系统设计中各个模块进行了讨论。

第5章 系统实现 本章节将会对系统的功能模块进行详细叙述,其中包括注册、登录、靶场、实验室等展现了GO语言开发的全部过程。 5.1 注册登陆 登录模块主要用于判断刷新的页面是否用户存在,存在后密码正确即可登录。输入用户名称、输入密码、再次输入密码、点击注册。 后台查询账号,如果没有完成注册。

添加图片注释,不超过 140 字(可选)

图5.1 用户注册图 func Register(c *gin.Context) { username := c.PostForm("username") //获取from表单的值 password := c.PostForm("password") user := model.User{ Username: username, Password: password, } dao.Mgr.Register(&user) c.Redirect(301, "/") //注册后重定向到首页 } Login(username string) model.User 前端收集到用户名和密码后向后端发起请求。后端接收到用户名和密码后对数据库进行查询,如果用户名不对,将会提醒用户名不存在,密码错误将会提醒用户密码输入错误如图5.2所示。

添加图片注释,不超过 140 字(可选)

图5.2 用户登陆 func Login(c *gin.Context) { //登陆 username := c.PostForm("username") password := c.PostForm("password") fmt.Println(username) u := dao.Mgr.Login(username) if u.Username == "" { c.HTML(200, "login.html", "用户名不存在!") fmt.Println("用户名不存在!") } else { if u.Password != password { fmt.Println("密码错误") c.HTML(200, "login.html", "密码错误") } else { fmt.Println("登录成功") c.Redirect(301, "/post") } } } 5.2 靶场管理 管理员用户可以通过对靶场进行管理,进行上传靶场功能如图5.3所示。

添加图片注释,不超过 140 字(可选)

图5.3 靶场管理 GetPostAddPost(post *model.Post) GetAllPost() []model.Post GetPost(pid int) model.Post func (mgr *manager) AddPost(post *model.Post) { //创建 mgr.db.Create(post) } func (mgr *manager) GetAllPost() []model.Post { var posts = make([]model.Post, 10) mgr.db.Find(&posts) //查找 return posts } func (mgr *manager) GetPost(pid int) model.Post { var post model.Post // 获取id mgr.db.First(&post, pid) return post } 上传以后可以在普通用户可以在靶场页面看到新上传的靶场,如图5.4查看靶场。

添加图片注释,不超过 140 字(可选)

图5.4 查看靶场 管理员用户可以通过靶场进行删除如图5.5所示。

添加图片注释,不超过 140 字(可选)

图5.5 靶场删除 对struts-s2-001代码执行漏洞进行删除后,可以看到前台的靶场被删除了。如图5.6所示靶场删除后查看。

添加图片注释,不超过 140 字(可选)

图5.6 靶场删除后查看 func (mgr *manager) AdminArticleDelet(id int) bool { log.Printf("Delete article ID: %#v\n", id) mgr.db.Delete(new(model.Post), id) return true } //删除 //靶场列表 func GetPostIndex(c *gin.Context) { posts := dao.Mgr.GetAllPost() c.HTML(200, "postIndex.html", posts) //postIndex } // 添加靶场 func AddPost(c *gin.Context) { title := c.PostForm("title") tag := c.PostForm("tag") content := c.PostForm("content") img := c.PostForm("img") post := model.Post{ Title: title, Tag: tag, Content: content, Img: img, } dao.Mgr.AddPost(&post) c.Redirect(302, "/post_index") //跳转到靶场 post_index } 5.3 实验室管理 上传实验室模块主要用于创建实验室并发布实验室和删除实验室,如下图5.5和5.6所示。

添加图片注释,不超过 140 字(可选)

图5.5 实验室管理

添加图片注释,不超过 140 字(可选)

图5.6 实验室删除 func (mgr *manager) Addcom(admin *model.Admin) { mgr.db.Create(admin) } func (mgr *manager) GetAllcom() []model.Admin { var posts = make([]model.Admin, 10) mgr.db.Find(&posts) return posts } func (mgr *manager) Getcom(pid int) model.Admin { var admin model.Admin mgr.db.First(&admin, pid) return admin } func (mgr *manager) Flag(flag string) model.Admin { var admin model.Admin mgr.db.Where("flag=?", flag).First(&flag) return admin } func (mgr *manager) Dell(username string) model.Admin { var user model.Admin mgr.db.Where("username=?", username).First(&user) return user } // AdminArticleDelete Admins 实验室删除 func (mgr *manager) AdminArticleDelete(id int) bool { log.Printf("Delete article ID: %#v\n", id) mgr.db.Delete(new(model.Admin), id) return true } 5.4 实验室文档管理 实验室文档主要包括实验环境搭建指南、实验的操作方法和流程、实验过程中需要遵守的安全措施和注意事项。为了降低平台的成本,实验文档采用开源的Docsify项目,并通过Github pages进行静态托管。

添加图片注释,不超过 140 字(可选)

图5.7 创建repository 通过git进行实验文档上传到GitHub pages如图5.8所示通过Git上传到GitHub pages。

添加图片注释,不超过 140 字(可选)

图5.8 实验文档编写 通过git进行实验文档上传到GitHub pages如图5.9所示通过Git上传到GitHub pages。

添加图片注释,不超过 140 字(可选)

图5.9 Git上传到Github

添加图片注释,不超过 140 字(可选)

图5.10 实验室文档 5.5 创建虚拟机 ESXI是一种用于运行虚拟机的虚拟化产品平台,即ESXI可以直接接入和控制底层资源,所以可以有效地划分硬件,以集成应用和削减成本,无需首先安装OS。在使用时只需简单地从系统中提取一个模块即可完成整个配置过程,并且无需重新开发应用程序就能快速构建新的应用。ESXI能够尽量减少配置要求,简化部署所设计的。同时它也支持多操作系统平台以及不同的物理机群环境,为企业构建统一的网络架构提供了便利。在此过程中,只需简单地执行一系列步骤,就能让系统自动完成相关配置,无需任何复杂的操作即可快速创建一个新的物理设备,同时也不需要再重新开发操作系统。带即插即用型软件提供新的,极简化的软件交付安装方法。 完成任务的过程是这样的: (1)获取任务所需的CPU核数,内存大小,并对CPU,内存及硬盘的最大性能。 (2)获得实验室要求的操作系统。 (3)检查完成的工作是否符合目前硬件要求。 (4)按照任务类型得出CPU,内存,硬盘的系数。 (5)计算节点克隆存储节点中的虚拟机镜像,并建立虚拟机。 (6)计算节点获得网络节点的IP地址。 (7)等虚拟机建立完成如图5.11所示。

添加图片注释,不超过 140 字(可选)

图5.11 创建虚拟机 5.6 创建容器 尽管Docker支持Windows下的安装,但它比Linux下的支持要小得多,而且安装起来比较繁琐,所以通常是Linux下的。再将Docker安装到操作系统中。如果不了解如何使用,就会影响到整个系统的稳定性。最后,Docker中的为应用程序及所需二进制文件与库。本文将介绍如何用虚拟机技术解决这个问题,并且详细阐述了虚拟机的工作原理及具体实现过程。Docker容器不像虚拟机那样不使用单独的操作系统将系统环境进行分离,而是使用Linux内核自身的工具将系统环境分离,而将系统环境从根目录环境中分离出去则是由Namespace结合镜像进行;资源限制是由group来完成。由于Docker容器在抽象层上较虚拟机更少且直接利用物理机操作系统内核而无需增加操作系统内核,所以相对于虚拟机而言,Docker容器具有系统资源利用效率高,启动时间快,易于迁移维护及扩展且可连续交付部署等特点。本平台采用FASTOS docker管理平台如图5.12所示。

添加图片注释,不超过 140 字(可选)

图5.12 FASTOS Docker管理平台 创建题库容器步骤如下: 拉取题库镜像到docker里如图5.13所示。

添加图片注释,不超过 140 字(可选)

图5.13 拉取镜像 创建虚拟容器网络如图5.14所示。

添加图片注释,不超过 140 字(可选)

图5.14 创建网络 根据镜像所需要的环境进行创建容器如图5.15所示。

添加图片注释,不超过 140 字(可选)

图5.15 创建容器 启动容器并访问如图5.16所示。

添加图片注释,不超过 140 字(可选)

图5.16 创建容器 5.7 本章小结 本章主要介绍了数据库创建、用户登陆、上传题库、上传实验室、创建虚拟机和创建容器的关键技术进行了描述,并以代码和图片的形式介绍了网络安全靶场的设计和实现。

第6章 系统测试测试 6.1 功能测试 6.1.1 实验室测试 本次测试的重点在于验证平台的核心功能,上传到实验室并下发题库,公布攻防实验、在实验虚拟机上进行输入学习、现将实验过程具体介绍如下。 管理员将实验室上传到系统模块。其中管理员位于图6.2中在所示页面中,系统可以查看所有靶场并将其保存到数据库中。使用者根据需要选择靶场类型以进行练习,图6.1中的网页上,可以看到不同类型的实验题目、实验类型等。

添加图片注释,不超过 140 字(可选)

图6.1 实验室查看 管理员制作攻防实验模块,得到攻防实验基本信息,然后在管理页面中输入相应的实验室账号密码,在输入题目标签和实验室地址,封面文件名。其中,管理员将实验地址填入图6.2创建并发布实验室、选择实验方向、实验的类别等,上传jpg格式的图片封面信息。

添加图片注释,不超过 140 字(可选)

图6.2 创建并发布实验室 用户进入DOS拒绝服务攻击实验室进行学习如图6.3所示实验室。

添加图片注释,不超过 140 字(可选)

图6.3 实验室首页 用户进入到实验室后对目标网站http://192.168.164.100进行了流量攻击导致目标网站瘫痪,通过抓包可以发现有大量的arp流量包对目标网站进行了发送,实验成功如图6.4所示DDos攻击实验。

添加图片注释,不超过 140 字(可选)

图6.4 DDos攻击实验 6.1.2 靶场测试 本次测试主要测试网络安全靶场实训平台的靶场模块的关键功能部分,包括:管理员上传靶场、发布靶场、删除靶场、在线靶场使用过程具体介绍如下。 管理员将靶场上传到平台。其中管理员位于图6.5中在所示页面中,通过填写靶场地址、靶场标题、靶场标签,封面文件名以及上传的封面图片文件。该系统能看到全部的考题,并且保存在数据库里。图6.6中的网页上,看到靶场中的全部资料,包括靶场名称、所属标签和其他资料。

添加图片注释,不超过 140 字(可选)

图6.5 上传并发布题库 用户进入HMS v1.0 SQL注入(CVE-2022-23366)靶场学习如图6.6所示。

添加图片注释,不超过 140 字(可选)

图6.6 选择靶场 用户进入拿到靶场地址通过题目得知该靶场是一个带有SQL注入的网站 如图6.7靶场说明。

添加图片注释,不超过 140 字(可选)

图6.7 靶场说明 用户访问带有SQL注入的网站如图6.8靶场地址。

添加图片注释,不超过 140 字(可选)

图6.8 靶场地址 通过对该网站进行SQL注入攻击成功拿到该网站的数据库,图6.9攻击成功。

添加图片注释,不超过 140 字(可选)

图6.9 攻击成功 6.2 兼容性测试 该平台是在Gin项目架构下开发和实现的,使用Bootstrapt框架建立用户表单,使用BS架构,兼容各种操作系统、终端设备特点。所以,该平台的兼容性测试是以平台首页为例来测试该平台与操作系统的兼容情况、终端设备与浏览器是否相容。 1.操作系统兼容性测试 这次测试使用的是windows10和Linux,在macos操作系统上对该平台进行了兼容性测试,试验结果见图6.10windows测试结果。通过本次测试发现该平台具有良好的兼容性。

添加图片注释,不超过 140 字(可选)

图6.10 windows测试结果

添加图片注释,不超过 140 字(可选)

图6.11 macos测试结果

添加图片注释,不超过 140 字(可选)

图6.12 Linux测试结果 2.浏览器兼容性测试 浏览器测试主要使用的是主流浏览器,包括:在 Firefox浏览器,Google浏览器,Edge浏览器,Safari浏览器和360极速浏览器上进行了测试,其结果见下图6.13浏览器测试。该平台前端开发采用bs架构,所以浏览器平台将与html有很好的兼容性。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图6.13 各种浏览器登录页测试结果 6.3 性能测试 本次测试主要针对云平台ESXI的性能测试,平台采用72核640G内存和4T硬盘,因此最多只能为虚拟机分配这些资源,因此只对虚拟机的创建时间进行测试,创建时间用时3分27秒,如图6.14创建虚拟机,采用NETDATA监控工具对云平台进行了性能监控,硬盘和CPU性能拉满如图6.15监控平台。

添加图片注释,不超过 140 字(可选)

添加图片注释,不超过 140 字(可选)

图6.14 创建虚拟机

添加图片注释,不超过 140 字(可选)

图6.15 监控平台 6.4 压力测试 还对靶场平台进行了压力测试,采用ab压力测试工具来模拟用户访问,通过构建参数-n模拟用户请求数-c模拟并发数如图6.16。

添加图片注释,不超过 140 字(可选)

图6.16 压力测试 可以看到图6.17有大量的请求访问涌入站中。

添加图片注释,不超过 140 字(可选)

图6.17 请求用户 如图6.18硬件负载监控所示在压力测试下cpu的负载从3%飙到了43%,网络流量也从原来的2k飙到了1000k,通过压力测试后最终得到该网站的访问请求可以承受1000+的访问量。

添加图片注释,不超过 140 字(可选)

图6.18 负载监控 6.5 本章小节 本章主要介绍了平台的测试情况,首先介绍了功能测试,有查看题库功能,创建实验室功能,发布实验室功能,然后对兼容性进行了测试,分别在不同的终端设备下和不同厂商的浏览器平台进行了兼容性测试,有着出色的表现。接着从平台访问权限方面检验其安全性。最后在云平台创建过程中进行性能测试并说明,主用net data监控工具来监控云平台创建虚拟机的性能,研究发现,当虚拟机建立时,磁盘与处理器的性能被拉满。通过压力测试软件对平台的网站进行了压力测试,通过模拟1000人同时并发访问量下完全无压力。

第7章 结束语 7.1 总结 目前网络安全问题频繁出现,网络对抗日趋激烈。世界各大国都在布局网络空间安全战略以占领制高点。我国政府也将网络空间安全提升到了国家战略层面,制定相关政策有利于促进网络安全靶场的建设,在培养人才方面有着重要的意义,在演练过程中安全人员能学到各种技术以及实战经验,为国家培养安全人才具有极为重要。在这种背景下,如何构建一套高效灵活、可扩展、稳定可靠的网络靶场成为了亟待解决的难题。常用的网络靶场控制系统主要包括以仿真为核心的系统,以传统技术为核心的系统以及以虚拟技术为核心的网络,但仿真平台并不适用于瞬息万变的网络安全问题,而传统技术平台存在费用高更新速度慢,虚拟技术平台组态复杂,管理难度大等问题。此外,现有的一些系统存在着可扩展性差以及难以与其他软硬件集成等问题。因此,过去的平台不能适应高灵活性、易管理等要求。此外,由于目前大多数网络靶场都是通过部署服务器来完成整个系统的运行与维护工作,这也使得资源利用率低,而且随着时间的推移服务器容易发生故障甚至瘫痪,造成巨大的经济损失。但近来,云计算应运而生,给网络靶场控制系统带来了新的可能性。它可以在保证系统安全性的基础上,利用云计算技术对现有网络靶场控制系统进行改造升级。为此,本文设计并实现了基于Golang的网络靶场攻防平台,围绕网络靶场控制平台架构设计、混合虚拟化方式的任务执行方法、平台的统一接口设计三个方面展开研究。在对传统网络流量模型进行分析后提出一个适用于多租户系统的通用网络流量模型,以此作为平台架构的基础。平台采用B/S架构设计并利用HTTP协议从用户处获取靶场任务并以定制任务数据格式实现任务创建,执行与删除全生命周期。为此,本文设计并实现了基于Golang的网络靶场平台,围绕网络靶场控制平台架构设计,同时在系统中引入混合虚拟化方式来降低服务器集群的压力,从而提高系统运行效率。 7.2 问题和展望 尽管该平台当前的功能是正常的,但是在网络技术日益发展与更新的今天,该平台存在的问题也是无法避免的,还需进一步维护与优化,具体存在如下问题:该平台采用了Golang编程语言开发、利用Gin框架技术、新版框架将持续修补漏洞、这些都将成为平台面临的重大难题和平台后期维护工作的重点。平台虚拟机的存储方式是有问题的,现在所有虚拟机在一个物理机上运行,给服务器造成了一些压力,在这里需要在以后的工作中再优化。通过net data监控平台的监控可以了解到虚拟机的创建对于性能要求有一定压力,这部分内容还有待进一步的优化。本论文的性能测试只对虚拟机的创建情况做出测试,并没有对虚拟机的性能进行测试,会在以后的工作中得到不断完善。总之,在未来的发展过平台还有不足之处,还需要去维护和优化,以便更好地服务于网络安全爱好者。

参考文献 [1]吴怡晨.网络空间攻防靶场的设计和构建技术研究[D].上海交通大学,2018 [2]李馥娟.王群.网络靶场及其关键技术研究[J].计算机工程与应用,2022(05) [3]王诗琦.网络安全隔离与信息交换技术的系统分析[J].信息通信,2012(3):211-212 [4]王莎莎.基ThinkPHP框架的网络安全攻防实训平台的设计与实现[D].北京邮电大学,2017 [5]唐忠诚.基于golang的分布式全文检索系统研究与实现[D].华南理工大学,2015 [6]石帅.云计算环境下的虚拟机节能调度算法研究[D].哈尔滨工业大学,2014 [7]罗刚毅.网络感知的虚拟机部署与整合技术研究及实现[D].南京大学,2014 [8]陈颢. 蜜罐技术在网络安全中的设计与应用[D].电子科技大学,2012 [9]李进超.虚拟机动态资源分配及放置算法研究[D].复旦大学,2012 [10]刘鹏程.云计算中虚拟机动态迁移的研究[D].复旦大学,2009 [11]孙昱.虚拟机Xen及其实时迁移技术研究[D].上海交通大学,2008 [12]张小庆.基于云计算环境的资源提供优化方法研究[D].武汉理工大学,2013 [13]邓莉.基于虚拟机迁移的动态资源配置研究[D].华中科技大学,2013 [14]李艺.工业控制网络安全防御体系及关键技术研究[D].华北电力大学(北京),2017 [15]张莉丽.魏向东.关于服务器系统虚拟化技术综述[J].信息与电脑(理论版),2019(01) [16]林传慧.采用B/S架构的网络安全检测分析模式的研究与实现[D].北京邮电大学,2015 [17]许伦彰.基于蜜罐技术的校园网络靶场研究与设计[D].北京交通大学,2012 [18]何君.面向Web应用的网络安全演练系统设计与实现[D].中国科学院大学(工程管理与信息技术学院),2014 [19]周珊.基于LAMP架构的高校学生工作考核系统设计与实现[D].电子科技大学,2013 [20]胡珊珊.动态混合蜜罐网络的设计和实现[D]. 哈尔滨理工大学,2013 [21] National Infrastructure Protection Plan: Partnering to Enhance Protection and Resiliency [J]. Us Departmentof Homeland Security,2009,8(2):188-188 [22]DavisJMagrath S. A survey of cyber ranges and testbeds [R]. Edinburgh: Defence Science and Technology Organisation Edinburgh(Australia)Cyber Electronic Warfare Division, 2013 [23] Product lifecycle management: the new paradigm for enterprises[J]. Michael W. Grieves.Int. J. of Product Development,2005(1/2) [24] Cybersecurity Test and Evaluation Guidebook,version 1.0. U.S.DOD..2015 [25]KoliasC,KambourakisG,StavrouA,etal.DDoS in the IoT: Mirai and Other Botnets[J]. Computer, 2017 50(7):80-84 .

致谢

光阴荏苒,毕业时刻渐渐逼近。我怀着激动与兴奋的心情告别了校园,踏上了新生活的征程。两年宝贵的光阴里,在师长,同学,家长的引导与关心下,我获得了宝贵而关键的学习成长经历。他们是我最好的朋友,在这里我们分享他们给我带来的喜悦和快乐,同时也希望能够得到更多老师们的鼓励与鞭策。我谨向大家表示衷心的感谢。

非常感谢我的导师对我整个论文阶段的学习帮助和论文思路引导。导师治学严谨,博学多才,一丝不苟,使我景仰不已。在他的影响下,这些不仅从学术研究上给我指明了方向,而且对我以后从事社会工作也建立起了一个正确价值观。在本科求学期间,导师均予以精心呵护,谨向导师致以衷心的感谢。

感谢网安交流群的师傅们帮助。在多个冥思苦想不知所云时给我解答了疑惑,给了我无保留地沟通和帮助,让我很快就能进入学习和研究;在遇到问题时,能及时得到老师的指导和建议,使自己的技术水平得以提高。每天的生活,都带给了我许多想法,使我能尽快地融入到一个全新的群体;平时的学习生活和我探讨技术,给我打开眼界。

感谢爸爸、妈妈这二十多年的辛勤劳作,无保留地关爱。感谢我在学习过程中遇到的困难,更感谢父母为我们带来的一切。正是他们的支持与教诲使我一路走过来完成了学业,并对他们表示了难以言喻的谢意,但愿父母健康,使我能照顾并报答他们。

最后要感谢本科一年多来亲人、朋友们对我们时时刻刻的关心与支持以及大家对我们的照顾与陪伴。摘  要

伴随着网络信息技术的发展,各类信息安全问题频繁出现,每天都有大量的网络攻击。针对这一问题,未知攻,焉知防。因此急需一种可以用来模拟和复现网络攻击的靶场,在这个靶场中让安全人员第一时间掌握这种攻击技术,并找到到与其对应的防御手段减少遭受网络攻击对人们带来隐私风险和财产损失。因此,采用Golang开发语言、MySQL数据库进行开发。本论文在对网络安全靶场系统进行了需求分析的基础之上,进行了流程设计、功能设计等,最终开发实现了基于Golang的网络安全靶场系统,主要实现了注册登录、靶场管理、实验室管理、和实验文档管理等功能。通过对系统进行功能测试、兼容性测试、性能测试结果来证明该系统功能完善,安全可靠对网络安全人员有着极大的帮助。

关键词:网络安全靶场;Golang开发语言;MySQL数据库

ABSTRACT

With the development of network information technology, various information security issues have emerged frequently, and there are a large number of network attacks every day. In response to this issue, without knowing how to attack, there is no knowing how to defend. Therefore, there is an urgent need for a shooting range that can be used to simulate and replicate network attacks. In this range, security personnel can quickly grasp this attack technology and find corresponding defense measures to reduce privacy risks and property losses caused by network attacks. Therefore, Golang development language and MySQL database are used for development. Based on the requirement analysis of the network security range system, this paper conducted process design, functional design, and ultimately developed and implemented a network security range system based on Golang. The main functions include registration and login, range management, laboratory management, and experimental document management. By conducting functional testing, compatibility testing, and performance testing results on the system, it is proven that the system is fully functional, safe, and reliable, which is of great help to network security personnel.

Keywords: Cybersecurity shooting range; Golang; MySQL

目  录

第1章 绪论1

  1.1 研究背景与意义1

  1.2 国内外研究与应用现状1

    1.2.1 网络安全攻防平台研究现状1

    1.2.2 Golang的应用现状2

第2章 关键技术3

  2.1 Gin和Gorm框架3

    2.1.1 Gin架构简介3

    2.1.2 Gorm架构简介3

  2.2 云计算技术4

    2.2.1 云计算按部署分类4

    2.2.2 虚拟化技术5

    2.2.3 Docker容器技术6

  2.3 本章小结6

第3章 系统分析7

    3.1 可行性分析7

    3.2 需求分析7

    3.3 系统流程分析8

    3.4 本章小结9

第4章 系统设计10

  4.1 系统功能设计10

    4.1.1 用户模块设计10

    4.1.2 管理员模块设计11

  4.2 数据库设计11

    4.2.1 数据库E-R图设计11

    4.2.2 数据库表设计13

    4.3 本章小结15

第5章 系统实现16

  5.1 注册登录 16

  5.2 靶场管理18

  5.3 实验室管理21

  5.4 实验室文档管理23

  5.5 虚拟机创建25

  5.6 容器创建26

  5.7 本章小结29

第6章 系统测试30

  6.1 功能测试30

    6.1.1 实验室测试30

    6.1.2 靶场测试32

  6.2 兼容性测试 35

  6.3 性能测试38

  6.4 压力测试39

  6.5 本章小结40

第7章 结束语41

  7.1 总结41

  7.2 问题和展望41

参考文献43

致谢44

第1章 绪论

1.1 研究背景与意义

伴随着IT技术的发展与广泛运用,人们生活己经不能够脱离网络。但当信息技术为我们生活带来方便时,如何保障网络安全这一重要问题已摆到我们面前,计算机网络对现代生活产生了越来越大的影响,现如今个人,企业及政府部门和国家军事部门无论是天文还是地理都离不开网络来进行信息的传递,这种信息已经成为了一种主流,并且人们对网络的依赖性越来越强。但是网络所具有的开放性和共享性易使其遭受到来自外部的攻击和损害,网络信息中的各类入侵行为以及犯罪活动也随之而来。

为了避免网络安全遭到破坏而带来不可弥补的不良后果,网络安全从业者需要不断的学习和研究新的攻击技术和防御技术,层见叠出的网络攻击手法让网络安全人员猝不及防,因此技术在快速发展和进步的同时,难免会留下一些与之相对应的破绽,为了规避这种被攻击的风险,网络安全人员的攻击技术应该领先于攻击者之前,应该在攻击者之前发现漏洞。因此网络安全攻防靶场技术是专门模拟和复现网络攻击而搭建的。该平台可以提供最新的漏洞为安全人员学习和研究,从而提高网络安全人员的技术水平。

1.2 国内外研究与应用现状

1.2.1 网络安全攻防平台研究现状

很多先进国家推进网络靶场部署,为信息安全挑战、信息安全等级分析等提供重要支持。网络安全攻防实训平台就是通过仿真真实网络环境使学生或安全人员在网络攻防中实战演练。当前网络安全攻防实训平台被越来越多地使用。在我国,网络安全攻防实训平台已被广泛重视与使用。目前我国网络安全攻防实训平台分为“国家级网络安全人才培养基地”与“在全国高校网络安全竞赛中”两类:一类是政府,高校与企业共同研发的公共平台;二是企业开发的专用平台“华为网络安全实验室”和“360安全应急响应中心”。国外也普遍采用网络安全攻防实训平台。美国的网络安全攻防训练平台主要由政府和高校联合开发,如“美国国家安全局网络安全教育中心”、“卡内基梅隆大学网络安全实验室”等;欧洲的网络安全攻防训练平台主要由欧盟与相关机构联合开发,如“欧盟的网络安全机构”、“欧洲网络安全竞赛等”等。从整体上看,网络安全攻防实训平台作为非常重要的教育培养工具,对提升网络安全人才实践能力与应对能力具有重要意义。

1.2.2 Golang的应用现状

Go语言(或Golang)是谷歌公司2009年推出的一种新编程语言,其目的在于在保持高性能的前提下,提高编程效率及代码可读性。Go语言一经推出就被广泛运用于云计算,容器化和大数据中,下面就Golang的应用状况作一介绍:云计算领域:Go语言被广泛地应用于云计算领域,如Kubernetes,Docker,Cloudflare等等项目均使用Go语言进行开发,它们均具有高可靠性,高可扩展性以及高性能。大数据领域:Go语言还被广泛应用于大数据处理与分析领域,如InfluxDB,Etcd等等开源项目均使用Go语言进行撰写。网络编程领域:Go语言还广泛地应用于网络编程领域,如HTTP,RPC,WebSocket协议实现均采用Go语言。Web开发领域:Go语言也被广泛地应用于Web开发领域中,如Beego,Gin等等Web框架均采用Go语言来编写。从整体上看,Go语言被广泛应用于云计算、容器化、大数据、网络编程以及Web开发中,其高性能高可扩展性以及高并发性使其成为很好的编程语言之一。

第2章 关键技术

本章节主要对Gorm架构、Gin框架、云计算平台、Docker容器做了主要介绍,重点介绍了云计算部署的分类,什么是私有云,社区云等,对虚拟化和Docker容器技术技术作了详细介绍。

2.1 Gin和Gorm框架

2.1.1 Gin架构简介

用Go语言编写的Web框架里有两个著名的Web框架——Martini框架和Gin框架,这两个Web框架对比起来,Gin本人表示要比Martini框架强多了。因为这款平台本身就很强大,而且还有许多新功能。另外它还提供很高的灵活性和可扩展性。综上所述,这是Go语言开发领域中值得很好地学习的Web框架之一,这个API框架和martini差不多,但是性能比较好,因为采用http router,所以速度几乎提升了40倍Go里面最受欢迎的Web框架GITHUB中32K+star就是其中之一。基于http router开发的Web框架。中文文档完整、简便易行、轻量级框架。Gin作为Golang微框架封装更典雅、API更友好、源码注释更清晰,1.0版已推出。本实用新型快速灵活且容错容易。事实上,对Golang来说,web框架远远低于Python和Java等。本身net/http就够简单了,表现很好。框架更多地像几个常用函数或工具的组合。在框架开发的帮助下,不但能节省许多通常使用的封装所花费的时间,而且还能帮助团队编码风格并塑造标准。速度:在众多的企业与团队中使用的首要原因是它的快速与卓越的性能表现。在请求的处理上,支持中间件的运行,便于编码处理。Gin里能很简单地完成路由解析,而且还含有路由组解析。

2.1.2 Gorm架构简介

GORM是面向Golang 语言的一种 ORM(持久层)框架,该框架的独特之处在于,只需要用它所给的的API来访问底层的数据库,因此它削弱了开发者对于SQL语言的学习程度,降级了学习成本,使得开发者开发效率更高全功能ORM、关联 (多态,单表继承)、Create,Save,Update,Delete,Find中钩子方法、支持 Preload、Joins 的预加载、Context、预编译模式、DryRun模式、复合主键索引约束、自定义Logger、开发者友好。

2.2 云计算技术

云计算给软件开发与部署模式带来了全新的可能方与方向,具有一定的创新性。云计算现已成为提供多种服务并搭载多样应用程序的重要基础设施,它为人工智能、大数据、物联网等诸多新兴领域的发展与进步提供了基本支撑。

2.2.1 云计算按部署分类

1.私有云

私有云是一种为企业或个人定制的云计算环境,该环境以私有方式部署在本地数据中心或公司内部网络中,由企业或个人负责管理和运维。与公共云相比,私有云具有更高的,可靠性强、安全性高、灵活性大等优势。特征是自己的公司自己架设服务器为员工使用,所有权归企业里的负责管理人员,没有严格的规定,可大可小。

2.社区云

社区云在特定的社区范围内共享资源和服务的计算环境。该计算环境由一组相互协作的成员机构或用户组成,这些成员通常属于同一行业、同一领域或同一地理位置。具有云端资源仅为2个或2个以上具体单位组织内部员工所利用等核心特点,除此,社区云是公有云的一种类型,指云服务提供商在资源,软件以及服务能力等方面提供服务的云计算模式。社区云综合了社区成员共同需求实现区域间资源共享和配置。与公有云相比,社区云具有隐私性和安全性上的优势。软件与服务能力云计算模型。社区云综合了社区成员共同需求实现区域间资源共享和配置。与公有云相比,社区云具有隐私性和安全性上的优势。

3.公有云

云计算平台是面向公众或者大型行业集团的云服务平台。这些企业通常使用私有云,而用户则可利用公有的资源来处理自己需要的数据。公有云服务可经由网络及第三方服务提供商对顾客开放。在公有云服务商看来,云计算平台的提供者应该是私有企业,即所谓的“公有企业”.然而,在现实中,我们却常常看到公有企业利用自己所掌握的网络资源来实施一些非法行为。“公有”一词不一定是“免费”的,不过,这也可能表示免费,或者价格相当低廉。公有云服务通常需要对其用户进行授权,而这些授权必须以私有服务器上存储的敏感信息为前提。公有云不是说谁都有权获取用户的数据,访问控制机制为公有云提供商对用户所采用的一种工具。公有云是一种可伸缩、低成本并且易于管理的计算模式,其目的在于使每个人能够在任何时候、以何种方式访问自己所需要的信息。作为解决方案,公有云有弹性,经济有效。目前,公有云已经成为了全球范围内最流行的一种商业模式,许多企业正在部署和运营私有云。第三方云服务提供商对公有云进行建设和运维,通过互联网,人们能够利用所提供的计算资源,比如,应用程序与开发平台。在公有云中,用户能够从服务器上获得服务,并且在任何时间和地点进行操作,从而避免了个人计算机或网络对其带来的安全威胁。公有云中的云服务提供商、对一切软硬件资源及其他基础设施资源进行维护与管理,人们通过浏览器获取这些服务资源,并且对其账户进行管理。

4.混合云

是由两种或两种以上不同类型的云(私有云,社区云,公共云等)组成,实际上,这并不是一种特定类型的单个云,它向外展示的计算资源是由2个或者更多云端提供,无非是加入混合的云管理层。这些企业通常使用私有云,而用户则可利用公有的资源来处理自己需要的数据。云服务的消费者以混合云管理层的方式出租并利用资源,觉得好像是用了同一块云上的资源,事实上,内部是由混合云管理层从真正云端路由而来的,一般人都会在公共云中放置一些非企业或者组织的关键机密信息,并对这些信息加以管理与计算,同时,利用私有云对企业或者组织中的关键服务以及机密数据进行管控。混合云使企业或组织可以利用云平台实现跨域共享和应用。私有云与公有云间自由迁移数据与应用,使企业或者组织能够通过混合云实现更加敏捷,解决方法更加丰富。

2.2.2 虚拟化技术

虚拟化技术通常使用虚拟机的管理程序来负责操作系统之间硬件资源的调度,处于操作系统和硬件设备之间的中间状态。虚拟机管理程序和硬件设备没有任何关系,所以也没有必要专为硬件设备进行管理,只要按照虚拟机提供的特点进行相关应用的配置就可以了,并没有传统方式中硬件设备需要进行重新设计。对于完全虚拟化技术,虚拟机管理程序直接操作硬件设备,可以作为一个特别操作系统使用。虚拟机管理程序将底层硬件资源抽象成虚拟资源进行集中管理,然后分配给虚拟机,虚拟机共享以上虚拟资源。由于虚拟机与物理系统无关,可根据需要灵活地扩展虚拟机。虚拟机对于操作系统与应用来说,只是一个容纳的工具,之间在逻辑上是孤立的。从而虚拟机管理程序无需对系统整体进行修改,即可完成全部的功能。虚拟机管理程序基本上可以支持很多类型和配置的操作系统。

虚拟机管理程序虚拟化原理包括CPU虚拟化2种,内存虚拟化和I/O虚拟化3大内容。在实践中,一般都会采用不同种类的虚拟化技术对上述问题进行处理,从而实现性能提升或者成本降低。CPU虚拟化是虚拟机管理程序的最主要功能,对内存虚拟化和I/O虚拟化等技术的实现起决定性作用。内存虚拟化包含在物理机中建立多个逻辑块,并且把它们保存在不同种类的存储器中。CPU虚拟化主要工作就是模拟指令的执行,中断及异常时虚拟CPU的个数可多于物理CPU,能充分利用物理机的CPU资源。内存虚拟化主要负责将物理内存转换为机器内存内的地址,从而解决虚拟机内存访问问题。另一方面虚拟机之间,虚拟机和虚拟机管理程序之间内存隔离,防止虚拟机中应用程序对其他虚拟机乃至虚拟机管理程序自身产生影响,从而导致程序崩溃。I/O虚拟化以虚拟机使用和访问外部设备为主,通过访问拦截,设备模拟和设备共享等手段实现。以虚拟机监控程序为核心提供的虚拟平台种类,可以分为半虚拟化和完全虚拟化两种,也称为1型虚拟化,2型虚拟化等等。完全虚拟化也称为原始虚拟化技术。虚拟机是指能够不依赖于物理设备进行工作的计算机或者其他计算装置。该技术使用虚拟机管理程序来协调虚拟机操作系统和物理硬件。完全虚拟化可以改善系统性能,而不会增加硬件成本。虚拟机管理程序用于协调虚拟机操作系统和物理硬件之间的操作以及拦截和处理部分命令。为满足完全虚拟化需求,需要对虚拟机管理程序进行适当修改以符合虚拟机操作系统。完全虚拟化比硬件模拟具有更高的运行效率,但是性能不如物理机,因为虚拟机中管理程序需要占用一些资源。若虚拟机管理程序需要实现对虚拟机系统内所有进程及线程进行监视与管理,则需要利用虚拟平台。对于完全虚拟化的虚拟机管理程序这一虚拟平台来说是真实存在的。

2.2.3 Docker容器技术

虚拟机的技术发展,缓解了企业对于硬件资源过度依赖的问题,其把一个物理设备虚拟成若干个逻辑设备,每一个逻辑设备能够运行不同操作系统,应用程序均能在彼此独立空间中进行操作且不产生任何影响,显著提高了设备工作效率。但是传统的虚拟技术在实现应用程序时需安装操作系统,过多的占用了系统资源。大多数时候用户仅需运行一个简单的应用,使用虚拟技术进行操作既烦琐又浪费资源。

因此容器技术就诞生了,它采用进程级的环境隔离,为了能达到虚拟机实现的效果,为了创造虚拟的隔离环境,但它采用系统级的隔离方式,Docker作为流行的容器工具,受到众多开发人员的亲睐。通过对任意物理设备的安装和操作来达到虚拟化的目的,从而使得应用程序完全从底层设备中分离出来,并能灵活地进行物理机间的迁移和部署,使得运维工程师能够从烦琐的环境部署中解放出来,大大提高工作效率的同时降低部署时可能带来的风险。

在虚拟化技术日益发展的大环境中,用户对虚拟机资源动态分配提出了越来越高的要求,而现有的方法无法很好的适应这种需求,这就使虚拟机资源动态分配成为一个亟待解决的难题。docker正是针对这一问题进行了实质性改革。提供一个统一的框架来实现多种容器之间的互操作、共享资源以及动态扩展能力。所以网络安全靶场的题库功能采用docker技术来完成,由于Docker容器较虚拟机较少采用抽象层物理机操作系统内核而无需增加操作系统内核,相较于虚拟机而言Docker容器系统具有资源利用效率高,启动快,易于迁移、维护及扩展,可以连续交付及部署等特点。

2.3 本章小结

在这一章中,我们首先探讨了Gorm和Gin的介绍,然后本文阐述了网络安全靶场中云计算的一些基础知识,然后详细的阐述了虚拟机和docker容器技术。

第3章 系统分析

在上一章中,介绍了Gorm框架和Gin框架,重点介绍了平台所用到的虚拟机和容器技术,在此基础上将对会平台的分析和设计作为探讨对象,探讨内容为平台的可行性分析和需求分析。

3.1 可行性分析

文章从技术可行性,经济可行性,管理可行性和开发环境可行性等方面四个方面对网络安全攻防实训平台进行了可行性分析,以下对这四个方面进行了分析。

1.技术上可行

技术层面采用Go编程语言,以及Gorm和Gin成熟的web框架,虚拟化技术采用ESXI虚拟化平台用来创建实验室,具有流畅的操作体验,题库采用轻量级的Docker容器技术,降低硬件开销节省成本。

2.经济可行性

Gorm与Gin架构各部分均为开源产品,极大地降低项目开发成本。同时采用Gorm,Bootstrap等框架技术不但能够简化开发流程而且能够极大地缩短项目开发周期,降低开发成本。此外,所有docker都免费使用。

3.管理可行性

本课题采用Gorm框架和Bootstrap前端框架相结合的方式,界面设计更加简单明了,方便用户更容易上手。

4.开发环境的可行性

实验室具有充足的硬件、软件及网络环境,为该项目的研制提供了支撑。

3.2 需求分析

如图3.1所示,功能需求可以分为四部分,分别是用户注册、靶场管理、实验室管理和实验文档管理。

登录

注册登录

靶场管理

靶场学习

实验文档查看

实验室学习

管理员

用户

实验文档管理

实验文档查看

图3.1 系统整体用例图

1.管理员用户

管理员用户可以对平台里的题库数据和实验室数据进行删除和添加。

2.靶场管理

对平台上的靶场进行上传或者删除,对靶场基本情况进行修改,并查看网络安全攻防实训平台上所有题库的运行状况。主要用于对题目的管理,为用户提供最新的题目。

3.实验室管理

上传或删除平台中的实验室,查看平台中各实验室运行状态。主要是用于管理实验室的实验地址,类别,对实验室题目的添加和删除。

4.实验文档管理

管理员可以通过obsidian进行实验文档的编写,通过GitHub pages静态托管平台进行访问。

3.3 系统流程分析

系统流程图可以梳理业务流程。通过绘制系统流程图,可以清晰地展示出每一个功能模块的输入与输出,能了解系统业务的处理情况。用户通过注册、登陆、选择靶场、选择实验室。流程图如下图3.2所示。

开始

用户是否注册

注册

登录

选择实验室

选择靶场

结束

图3.2 系统流程图

首先,用户先通过注册账号并登陆后,可以自由选择靶场学习还是实验室学习,如果选择靶场,将会进入靶场学习,如果选择实验室,将会进入实验室。具体操作流程如下:

(1)用户点击注册账号,通过输入账号,在输入密码,然后再次输入确认密码,后台会对账号进行查询,如果账号不存在将会注册成功,否则失败。

(2)选择靶场训练,用户将会进入靶场学习,实战训练来提高技术水平。

(3)实验室可以支持模拟各种攻击与防护场景。同时,安全实验室还提供了各种工具和平台帮助用户了解网络攻击、漏洞挖掘和渗透测试等知识点。

3.4 本章小结

本章介绍了可行性分析,分别从技术上和经济上做了概述,然后介绍了需求分析,分别从注册登录、题库管理、实验室管理以及实验文档管理四个方面进行了说明。

第4章 系统设计

4.1 系统功能设计

管理员

用户

实验室

管理

实验文档

管理

靶场

管理

图4.1 系统功能结构图

4.1.1 用户模块设计

1.用户注册

用户注册功能以便新用户能够在系统中创建个人账户并获得访问权限,用户通过输入账号密码和确认密码后点击注册按钮后来进行注册。

2.用户登陆

用户输入已注册的账号和密码进行登录,后端后对账号和密码进行校验,检验成功后就会登录成功,否则登录失败。

3.靶场学习

靶场学习是提供大量的漏洞网站,用户登陆后可以选择想要的进行学习的漏洞。通过在线靶场平台,学生可以从任何地方远程访问靶机并进行攻击测试,在完全安全的虚拟环境中学习、实践各种技术手段,提高网络安全实战能力。

4.实验室学习

实验室学习可以进行实验操作和模拟攻击的环境,用户可以在线实验,选择要实验的项目进入实验室后可进行实验。能够提高他们发现和解决网络攻击、漏洞等问题的能力。

5.实验室文档

对靶场的详细说明和使用指南。实验室靶场文档提供参与者需要了解的基础知识和相关工具的介绍,以帮助他们更好地理解和使用靶场。一份好的实验室靶场文档应该清晰易懂,并提供详细的步骤和示例,以便参与者能够迅速上手并开始学习和实践。

4.1.2 管理员模块设计

1.管理员登陆

管理员用户输入已注册的账号和密码进行登录,后端后对账号和密码进行校验,检验成功后就会登录成功,否则登录失败。登录成功后,管理员可以访问靶场控制台。

2.靶场管理

管理员用户可以对靶场进行上传。用户可以做到不同类型的题目。

3.实验室管理

上传或删除平台中的实验室,查看平台中各实验室运行状态。主要是用于管理实验室的实验地址,类别,对实验室题目的添加和删除。

4.2 数据库设计

4.2.1 数据库E-R图设计

数据库的设计主要就是通过E-R图进行展现,将详细介绍一下主要部分的的E-R图: 管理员实体、用户实体、靶场实体、实验室实体。

1.管理员实体

包括管理员的登陆密码、登陆账号、创建时间等,实体E-R图4.2所示。

密码

用户名

邮箱

ID

管理员

创建时间

手机号

图4.2 管理员实体属性图

2. 用户实体

包括用户的登陆密码、登陆账号、创建时间等,实体E-R图4.3所示。

密码

用户名

ID

邮箱

用户

手机号

创建时间

图4.3 用户实体属性图

3. 靶场实体

靶场实体主要包括,靶场名称、靶场类别、靶场地址、靶场封面、靶场时间、靶场文档路径等,实体E-R图4.4。

靶场名称

靶场类别

靶场

创建时间

靶场ID

靶场地址

靶场封面

靶场文档

图4.4 题库实体属性图

4. 实验室实体

实验室实体主要包括,实验室名称、实验室类别、实验室地址、实验室封、实验室时间、实验室文档路径等实体E-R图4.5。

实验室类别

实验室名称

创建时间

实验室ID

实验室

实验室地址

实验室封面

实验室文档

图4.5 实验室实体属性图

4.2.2 数据库表设计

本系统采用的是mysql数据库。并创建数据库名为golang。和本平台相关的主要包括实体和关系,下面将会对表单中的表结构进行详细描述。数据库表信如下所示。

管理员表用于存储管理员的账号、密码、邮箱、手机号、创建时间等字段,管理员表内容如下。

表4.1 管理员表

字段名称

数据类型

必填

注释

id

Int(11)

主键

username

varchar(40)

用户名

password

varchar(64)

密码

updated_at

datetime

更新时间

created_atphoneemail

datetimevarchar(64)varchar(64)

否否否

创建时间 手机号 邮箱

用户表用于存储用户的账号、密码、邮箱、手机号、创建时间等字段,用户表内容如下。

表4.2 用户表

字段名称

数据类型

必填

注释

id

Int(11)

主键

username

varchar(40)

用户名

password

varchar(64)

密码

updated_at

datetime

更新时间

created_atphoneemail

Datetimevarchar(64)varchar(64)

否否否

创建时间 手机号 邮箱

靶场表存储着平台前端的靶场信息,主要包括靶场名称、靶场类别、靶场地址、靶场封面、靶场时间、靶场文档路径。

表4.3 靶场表

字段名

数据类型

必填

备注

id

int

主键

title

varchar(200)

靶场名

content

varchar(64)

靶场地址

tag

varchar(64)

类型

created_at

datetime

创建时间

img

varchar(255)

封面图片

doc

varchar(64)

实验文档

实验室表主要包括,实验室名称、实验室类别、实验室地址、实验室封面、实验室时间、实验室文档路径等。

表4.4 实验室表

字段名

数据类型

必填

备注

id

int

主键

title

varchar(200)

题目

lab

varchar(64)

实验室地址

tag

varchar(64)

类型

created_at

datetime

创建时间

img

varchar(255)

封面图片

doc

varchar(64)

实验文档

4.3 本章小结

本章节通过根据系统的需求分析对靶场平台进行了系统设计,只要对数据库设计、功能设计等,并对系统设计中各个模块进行了讨论。

第5章 系统实现

本章节将会对系统的功能模块进行详细叙述,其中包括注册、登录、靶场、实验室等展现了GO语言开发的全部过程。

5.1 注册登陆

登录模块主要用于判断刷新的页面是否用户存在,存在后密码正确即可登录。输入用户名称、输入密码、再次输入密码、点击注册。

后台查询账号,如果没有完成注册。

添加图片注释,不超过 140 字(可选)

图5.1 用户注册图

func Register(c *gin.Context) {

username := c.PostForm("username") //获取from表单的值

password := c.PostForm("password")

user := model.User{

Username: username,

Password: password,

}

dao.Mgr.Register(&user)

c.Redirect(301, "/") //注册后重定向到首页

}

Login(username string) model.User

前端收集到用户名和密码后向后端发起请求。后端接收到用户名和密码后对数据库进行查询,如果用户名不对,将会提醒用户名不存在,密码错误将会提醒用户密码输入错误如图5.2所示。

添加图片注释,不超过 140 字(可选)

图5.2 用户登陆

func Login(c *gin.Context) { //登陆

username := c.PostForm("username")

password := c.PostForm("password")

fmt.Println(username)

u := dao.Mgr.Login(username)

if u.Username == "" {

c.HTML(200, "login.html", "用户名不存在!")

fmt.Println("用户名不存在!")

} else {

if u.Password != password {

fmt.Println("密码错误")

c.HTML(200, "login.html", "密码错误")

} else {

fmt.Println("登录成功")

c.Redirect(301, "/post")

}

}

}

5.2 靶场管理

管理员用户可以通过对靶场进行管理,进行上传靶场功能如图5.3所示。

添加图片注释,不超过 140 字(可选)

图5.3 靶场管理

GetPostAddPost(post *model.Post)

GetAllPost() []model.Post

GetPost(pid int) model.Post

func (mgr *manager) AddPost(post *model.Post) { //创建

mgr.db.Create(post)

}

func (mgr *manager) GetAllPost() []model.Post {

var posts = make([]model.Post, 10)

mgr.db.Find(&posts) //查找

return posts

}

func (mgr *manager) GetPost(pid int) model.Post {

var post model.Post // 获取id

mgr.db.First(&post, pid)

return post

}

上传以后可以在普通用户可以在靶场页面看到新上传的靶场,如图5.4查看靶场。

添加图片注释,不超过 140 字(可选)

图5.4 查看靶场

管理员用户可以通过靶场进行删除如图5.5所示。

添加图片注释,不超过 140 字(可选)

图5.5 靶场删除

对struts-s2-001代码执行漏洞进行删除后,可以看到前台的靶场被删除了。如图5.6所示靶场删除后查看。

添加图片注释,不超过 140 字(可选)

图5.6 靶场删除后查看

func (mgr *manager) AdminArticleDelet(id int) bool {

log.Printf("Delete article ID: %#v\n", id)

mgr.db.Delete(new(model.Post), id)

return true

} //删除

//靶场列表

func GetPostIndex(c *gin.Context) {

posts := dao.Mgr.GetAllPost()

c.HTML(200, "postIndex.html", posts) //postIndex

}

// 添加靶场

func AddPost(c *gin.Context) {

title := c.PostForm("title")

tag := c.PostForm("tag")

content := c.PostForm("content")

img := c.PostForm("img")

post := model.Post{

Title: title,

Tag: tag,

Content: content,

Img: img,

}

dao.Mgr.AddPost(&post)

c.Redirect(302, "/post_index") //跳转到靶场 post_index

}

5.3 实验室管理

上传实验室模块主要用于创建实验室并发布实验室和删除实验室,如下图5.5和5.6所示。

添加图片注释,不超过 140 字(可选)

图5.5 实验室管理

添加图片注释,不超过 140 字(可选)

图5.6 实验室删除

func (mgr *manager) Addcom(admin *model.Admin) {

mgr.db.Create(admin)

}

func (mgr *manager) GetAllcom() []model.Admin {

var posts = make([]model.Admin, 10)

mgr.db.Find(&posts)

return posts

}

func (mgr *manager) Getcom(pid int) model.Admin {

var admin model.Admin

mgr.db.First(&admin, pid)

return admin

}

func (mgr *manager) Flag(flag string) model.Admin {

var admin model.Admin

mgr.db.Where("flag=?", flag).First(&flag)

return admin

}

func (mgr *manager) Dell(username string) model.Admin {

var user model.Admin

mgr.db.Where("username=?", username).First(&user)

return user

}

// AdminArticleDelete Admins 实验室删除

func (mgr *manager) AdminArticleDelete(id int) bool {

log.Printf("Delete article ID: %#v\n", id)

mgr.db.Delete(new(model.Admin), id)

return true

}

5.4 实验室文档管理

实验室文档主要包括实验环境搭建指南、实验的操作方法和流程、实验过程中需要遵守的安全措施和注意事项。为了降低平台的成本,实验文档采用开源的Docsify项目,并通过Github pages进行静态托管。

添加图片注释,不超过 140 字(可选)

图5.7 创建repository

通过git进行实验文档上传到GitHub pages如图5.8所示通过Git上传到GitHub pages。

添加图片注释,不超过 140 字(可选)

图5.8 实验文档编写

通过git进行实验文档上传到GitHub pages如图5.9所示通过Git上传到GitHub pages。

添加图片注释,不超过 140 字(可选)

图5.9 Git上传到Github

添加图片注释,不超过 140 字(可选)

图5.10 实验室文档

5.5 创建虚拟机

ESXI是一种用于运行虚拟机的虚拟化产品平台,即ESXI可以直接接入和控制底层资源,所以可以有效地划分硬件,以集成应用和削减成本,无需首先安装OS。在使用时只需简单地从系统中提取一个模块即可完成整个配置过程,并且无需重新开发应用程序就能快速构建新的应用。ESXI能够尽量减少配置要求,简化部署所设计的。同时它也支持多操作系统平台以及不同的物理机群环境,为企业构建统一的网络架构提供了便利。在此过程中,只需简单地执行一系列步骤,就能让系统自动完成相关配置,无需任何复杂的操作即可快速创建一个新的物理设备,同时也不需要再重新开发操作系统。带即插即用型软件提供新的,极简化的软件交付安装方法。

完成任务的过程是这样的:

(1)获取任务所需的CPU核数,内存大小,并对CPU,内存及硬盘的最大性能。

(2)获得实验室要求的操作系统。

(3)检查完成的工作是否符合目前硬件要求。

(4)按照任务类型得出CPU,内存,硬盘的系数。

(5)计算节点克隆存储节点中的虚拟机镜像,并建立虚拟机。

(6)计算节点获得网络节点的IP地址。

(7)等虚拟机建立完成如图5.11所示。

添加图片注释,不超过 140 字(可选)

图5.11 创建虚拟机

5.6 创建容器

尽管Docker支持Windows下的安装,但它比Linux下的支持要小得多,而且安装起来比较繁琐,所以通常是Linux下的。再将Docker安装到操作系统中。如果不了解如何使用,就会影响到整个系统的稳定性。最后,Docker中的为应用程序及所需二进制文件与库。本文将介绍如何用虚拟机技术解决这个问题,并且详细阐述了虚拟机的工作原理及具体实现过程。Docker容器不像虚拟机那样不使用单独的操作系统将系统环境进行分离,而是使用Linux内核自身的工具将系统环境分离,而将系统环境从根目录环境中分离出去则是由Namespace结合镜像进行;资源限制是由group来完成。由于Docker容器在抽象层上较虚拟机更少且直接利用物理机操作系统内核而无需增加操作系统内核,所以相对于虚拟机而言,Docker容器具有系统资源利用效率高,启动时间快,易于迁移维护及扩展且可连续交付部署等特点。本平台采用FASTOS docker管理平台如图5.12所示。

添加图片注释,不超过 140 字(可选)

图5.12 FASTOS Docker管理平台

创建题库容器步骤如下:

拉取题库镜像到docker里如图5.13所示。

添加图片注释,不超过 140 字(可选)

图5.13 拉取镜像

创建虚拟容器网络如图5.14所示。

添加图片注释,不超过 140 字(可选)

图5.14 创建网络

根据镜像所需要的环境进行创建容器如图5.15所示。

添加图片注释,不超过 140 字(可选)

图5.15 创建容器

启动容器并访问如图5.16所示。

添加图片注释,不超过 140 字(可选)

图5.16 创建容器

5.7 本章小结

本章主要介绍了数据库创建、用户登陆、上传题库、上传实验室、创建虚拟机和创建容器的关键技术进行了描述,并以代码和图片的形式介绍了网络安全靶场的设计和实现。

第6章 系统测试测试

6.1 功能测试

6.1.1 实验室测试

本次测试的重点在于验证平台的核心功能,上传到实验室并下发题库,公布攻防实验、在实验虚拟机上进行输入学习、现将实验过程具体介绍如下。

管理员将实验室上传到系统模块。其中管理员位于图6.2中在所示页面中,系统可以查看所有靶场并将其保存到数据库中。使用者根据需要选择靶场类型以进行练习,图6.1中的网页上,可以看到不同类型的实验题目、实验类型等。

添加图片注释,不超过 140 字(可选)

图6.1 实验室查看

管理员制作攻防实验模块,得到攻防实验基本信息,然后在管理页面中输入相应的实验室账号密码,在输入题目标签和实验室地址,封面文件名。其中,管理员将实验地址填入图6.2创建并发布实验室、选择实验方向、实验的类别等,上传jpg格式的图片封面信息。

添加图片注释,不超过 140 字(可选)

图6.2 创建并发布实验室

用户进入DOS拒绝服务攻击实验室进行学习如图6.3所示实验室。

添加图片注释,不超过 140 字(可选)

图6.3 实验室首页

用户进入到实验室后对目标网站http://192.168.164.100进行了流量攻击导致目标网站瘫痪,通过抓包可以发现有大量的arp流量包对目标网站进行了发送,实验成功如图6.4所示DDos攻击实验。

添加图片注释,不超过 140 字(可选)

图6.4 DDos攻击实验

6.1.2 靶场测试

本次测试主要测试网络安全靶场实训平台的靶场模块的关键功能部分,包括:管理员上传靶场、发布靶场、删除靶场、在线靶场使用过程具体介绍如下。

管理员将靶场上传到平台。其中管理员位于图6.5中在所示页面中,通过填写靶场地址、靶场标题、靶场标签,封面文件名以及上传的封面图片文件。该系统能看到全部的考题,并且保存在数据库里。图6.6中的网页上,看到靶场中的全部资料,包括靶场名称、所属标签和其他资料。

添加图片注释,不超过 140 字(可选)

图6.5 上传并发布题库

用户进入HMS v1.0 SQL注入(CVE-2022-23366)靶场学习如图6.6所示。

添加图片注释,不超过 140 字(可选)

图6.6 选择靶场

用户进入拿到靶场地址通过题目得知该靶场是一个带有SQL注入的网站 如图6.7靶场说明。

添加图片注释,不超过 140 字(可选)

图6.7 靶场说明

用户访问带有SQL注入的网站如图6.8靶场地址。

图片

图片上传失败

图6.8 靶场地址

通过对该网站进行SQL注入攻击成功拿到该网站的数据库,图6.9攻击成功。

添加图片注释,不超过 140 字(可选)

图6.9 攻击成功

6.2 兼容性测试

该平台是在Gin项目架构下开发和实现的,使用Bootstrapt框架建立用户表单,使用BS架构,兼容各种操作系统、终端设备特点。所以,该平台的兼容性测试是以平台首页为例来测试该平台与操作系统的兼容情况、终端设备与浏览器是否相容。

1.操作系统兼容性测试

这次测试使用的是windows10和Linux,在macos操作系统上对该平台进行了兼容性测试,试验结果见图6.10windows测试结果。通过本次测试发现该平台具有良好的兼容性。

添加图片注释,不超过 140 字(可选)

图6.10 windows测试结果

添加图片注释,不超过 140 字(可选)

图6.11 macos测试结果

添加图片注释,不超过 140 字(可选)

图6.12 Linux测试结果

2.浏览器兼容性测试

浏览器测试主要使用的是主流浏览器,包括:在 Firefox浏览器,Google浏览器,Edge浏览器,Safari浏览器和360极速浏览器上进行了测试,其结果见下图6.13浏览器测试。该平台前端开发采用bs架构,所以浏览器平台将与html有很好的兼容性。

添加图片注释,不超过 140 字(可选)

图6.13 各种浏览器登录页测试结果

6.3 性能测试

本次测试主要针对云平台ESXI的性能测试,平台采用72核640G内存和4T硬盘,因此最多只能为虚拟机分配这些资源,因此只对虚拟机的创建时间进行测试,创建时间用时3分27秒,如图6.14创建虚拟机,采用NETDATA监控工具对云平台进行了性能监控,硬盘和CPU性能拉满如图6.15监控平台。

添加图片注释,不超过 140 字(可选)

图6.14 创建虚拟机

添加图片注释,不超过 140 字(可选)

图6.15 监控平台

6.4 压力测试

还对靶场平台进行了压力测试,采用ab压力测试工具来模拟用户访问,通过构建参数-n模拟用户请求数-c模拟并发数如图6.16。

图6.16 压力测试

可以看到图6.17有大量的请求访问涌入站中。

图6.17 请求用户

如图6.18硬件负载监控所示在压力测试下cpu的负载从3%飙到了43%,网络流量也从原来的2k飙到了1000k,通过压力测试后最终得到该网站的访问请求可以承受1000+的访问量。

图6.18 负载监控

6.5 本章小节

本章主要介绍了平台的测试情况,首先介绍了功能测试,有查看题库功能,创建实验室功能,发布实验室功能,然后对兼容性进行了测试,分别在不同的终端设备下和不同厂商的浏览器平台进行了兼容性测试,有着出色的表现。接着从平台访问权限方面检验其安全性。最后在云平台创建过程中进行性能测试并说明,主用net data监控工具来监控云平台创建虚拟机的性能,研究发现,当虚拟机建立时,磁盘与处理器的性能被拉满。通过压力测试软件对平台的网站进行了压力测试,通过模拟1000人同时并发访问量下完全无压力。

第7章 结束语

7.1 总结

目前网络安全问题频繁出现,网络对抗日趋激烈。世界各大国都在布局网络空间安全战略以占领制高点。我国政府也将网络空间安全提升到了国家战略层面,制定相关政策有利于促进网络安全靶场的建设,在培养人才方面有着重要的意义,在演练过程中安全人员能学到各种技术以及实战经验,为国家培养安全人才具有极为重要。在这种背景下,如何构建一套高效灵活、可扩展、稳定可靠的网络靶场成为了亟待解决的难题。常用的网络靶场控制系统主要包括以仿真为核心的系统,以传统技术为核心的系统以及以虚拟技术为核心的网络,但仿真平台并不适用于瞬息万变的网络安全问题,而传统技术平台存在费用高更新速度慢,虚拟技术平台组态复杂,管理难度大等问题。此外,现有的一些系统存在着可扩展性差以及难以与其他软硬件集成等问题。因此,过去的平台不能适应高灵活性、易管理等要求。此外,由于目前大多数网络靶场都是通过部署服务器来完成整个系统的运行与维护工作,这也使得资源利用率低,而且随着时间的推移服务器容易发生故障甚至瘫痪,造成巨大的经济损失。但近来,云计算应运而生,给网络靶场控制系统带来了新的可能性。它可以在保证系统安全性的基础上,利用云计算技术对现有网络靶场控制系统进行改造升级。为此,本文设计并实现了基于Golang的网络靶场攻防平台,围绕网络靶场控制平台架构设计、混合虚拟化方式的任务执行方法、平台的统一接口设计三个方面展开研究。在对传统网络流量模型进行分析后提出一个适用于多租户系统的通用网络流量模型,以此作为平台架构的基础。平台采用B/S架构设计并利用HTTP协议从用户处获取靶场任务并以定制任务数据格式实现任务创建,执行与删除全生命周期。为此,本文设计并实现了基于Golang的网络靶场平台,围绕网络靶场控制平台架构设计,同时在系统中引入混合虚拟化方式来降低服务器集群的压力,从而提高系统运行效率。

7.2 问题和展望

尽管该平台当前的功能是正常的,但是在网络技术日益发展与更新的今天,该平台存在的问题也是无法避免的,还需进一步维护与优化,具体存在如下问题:该平台采用了Golang编程语言开发、利用Gin框架技术、新版框架将持续修补漏洞、这些都将成为平台面临的重大难题和平台后期维护工作的重点。平台虚拟机的存储方式是有问题的,现在所有虚拟机在一个物理机上运行,给服务器造成了一些压力,在这里需要在以后的工作中再优化。通过net data监控平台的监控可以了解到虚拟机的创建对于性能要求有一定压力,这部分内容还有待进一步的优化。本论文的性能测试只对虚拟机的创建情况做出测试,并没有对虚拟机的性能进行测试,会在以后的工作中得到不断完善。总之,在未来的发展过平台还有不足之处,还需要去维护和优化,以便更好地服务于网络安全爱好者。

参考文献

[1]吴怡晨.网络空间攻防靶场的设计和构建技术研究[D].上海交通大学,2018

[2]李馥娟.王群.网络靶场及其关键技术研究[J].计算机工程与应用,2022(05)

[3]王诗琦.网络安全隔离与信息交换技术的系统分析[J].信息通信,2012(3):211-212

[4]王莎莎.基ThinkPHP框架的网络安全攻防实训平台的设计与实现[D].北京邮电大学,2017

[5]唐忠诚.基于golang的分布式全文检索系统研究与实现[D].华南理工大学,2015

[6]石帅.云计算环境下的虚拟机节能调度算法研究[D].哈尔滨工业大学,2014

[7]罗刚毅.网络感知的虚拟机部署与整合技术研究及实现[D].南京大学,2014

[8]陈颢. 蜜罐技术在网络安全中的设计与应用[D].电子科技大学,2012

[9]李进超.虚拟机动态资源分配及放置算法研究[D].复旦大学,2012

[10]刘鹏程.云计算中虚拟机动态迁移的研究[D].复旦大学,2009

[11]孙昱.虚拟机Xen及其实时迁移技术研究[D].上海交通大学,2008

[12]张小庆.基于云计算环境的资源提供优化方法研究[D].武汉理工大学,2013

[13]邓莉.基于虚拟机迁移的动态资源配置研究[D].华中科技大学,2013

[14]李艺.工业控制网络安全防御体系及关键技术研究[D].华北电力大学(北京),2017

[15]张莉丽.魏向东.关于服务器系统虚拟化技术综述[J].信息与电脑(理论版),2019(01)

[16]林传慧.采用B/S架构的网络安全检测分析模式的研究与实现[D].北京邮电大学,2015

[17]许伦彰.基于蜜罐技术的校园网络靶场研究与设计[D].北京交通大学,2012

[18]何君.面向Web应用的网络安全演练系统设计与实现[D].中国科学院大学(工程管理与信息技术学院),2014

[19]周珊.基于LAMP架构的高校学生工作考核系统设计与实现[D].电子科技大学,2013

[20]胡珊珊.动态混合蜜罐网络的设计和实现[D]. 哈尔滨理工大学,2013

[21] National Infrastructure Protection Plan: Partnering to Enhance Protection and Resiliency [J]. Us Departmentof Homeland Security,2009,8(2):188-188

[22]DavisJMagrath S. A survey of cyber ranges and testbeds [R]. Edinburgh: Defence Science and Technology Organisation Edinburgh(Australia)Cyber Electronic Warfare Division, 2013

[23] Product lifecycle management: the new paradigm for enterprises[J]. Michael W. Grieves.Int. J. of Product Development,2005(1/2)

[24] Cybersecurity Test and Evaluation Guidebook,version 1.0. U.S.DOD..2015

[25]KoliasC,KambourakisG,StavrouA,etal.DDoS in the IoT: Mirai and Other Botnets[J]. Computer, 2017 50(7):80-84

.

致谢

光阴荏苒,毕业时刻渐渐逼近。我怀着激动与兴奋的心情告别了校园,踏上了新生活的征程。两年宝贵的光阴里,在师长,同学,家长的引导与关心下,我获得了宝贵而关键的学习成长经历。他们是我最好的朋友,在这里我们分享他们给我带来的喜悦和快乐,同时也希望能够得到更多老师们的鼓励与鞭策。我谨向大家表示衷心的感谢。

非常感谢我的导师对我整个论文阶段的学习帮助和论文思路引导。导师治学严谨,博学多才,一丝不苟,使我景仰不已。在他的影响下,这些不仅从学术研究上给我指明了方向,而且对我以后从事社会工作也建立起了一个正确价值观。在本科求学期间,导师均予以精心呵护,谨向导师致以衷心的感谢。

感谢网安交流群的师傅们帮助。在多个冥思苦想不知所云时给我解答了疑惑,给了我无保留地沟通和帮助,让我很快就能进入学习和研究;在遇到问题时,能及时得到老师的指导和建议,使自己的技术水平得以提高。每天的生活,都带给了我许多想法,使我能尽快地融入到一个全新的群体;平时的学习生活和我探讨技术,给我打开眼界。

感谢爸爸、妈妈这二十多年的辛勤劳作,无保留地关爱。感谢我在学习过程中遇到的困难,更感谢父母为我们带来的一切。正是他们的支持与教诲使我一路走过来完成了学业,并对他们表示了难以言喻的谢意,但愿父母健康,使我能照顾并报答他们。

最后要感谢本科一年多来亲人、朋友们对我们时时刻刻的关心与支持以及大家对我们的照顾与陪伴。


今日签到

点亮在社区的每一天
去签到