掌桥专利:专业的专利平台
掌桥专利
首页

一种物联网靶场设计方法

文献发布时间:2023-06-19 12:24:27


一种物联网靶场设计方法

技术领域

本发明涉及物联网技术领域,具体涉及一种物联网靶场设计方法。

背景技术

物联网的发展已达到成熟水平,IoT技术的发展也达到了相当高的层次。尽管人们目前对物联网网络的基本方面进行了充分的研究,但是在物联网的网络安全方面却并非如此。目前市面上专注于网络方面的IoT测试平台数量很多,但缺乏专注于安全性的IoT测试平台。

发明内容

(一)要解决的技术问题

本发明要解决的技术问题是:如何设计一种物联网靶场,用于实现对物联网安全性研究和培训等功能。

(二)技术方案

为了解决上述技术问题,本发明提供了一种物联网靶场设计方法,该方法中,将物联网靶场采用RESTful API设计模型进行设计,该RESTful API设计模型基于UML,并支持RESTful API开发生命周期的四个阶段,采用一种迭代的方式,构建API模型,生成API规范和伪代码,并实现和管理API。

优选地,将物联网靶场设计为:将任务排队发送到资源节点上以及用户与系统不同层之间的交互过程中,包括通过与用户界面和数据库的交互进行身份验证和授权,以及选择任务并转发到IoT网络范围的步骤,以及随后作业状态被更新并返回给用户,以确认任务成功运行的步骤。

优选地,将物联网靶场设计为:在请求任务相关的日志时用户与系统之间的交互过程中,用户输入登录凭证,该登录凭证将针对数据库中的用户表进行查询,以返回确认用户已被授权继续的确认,然后,用户可请求检索日志,该日志将从接口转发带有指定日志ID的搜索参数的Logs表,然后显示给用户。

优选地,将物联网靶场设计为:在查询请求节点状态及其可用性时用户与系统之间的动作和交互过程中,包括对用户的身份验证以及将请求转发到测试平台的步骤,其中,用户输入其登录凭据,在数据库中根据用户表进行查询,成功后返回确认信息,并授权用户,然后用户可请求查询节点状态,查询后端数据中的节点表,返回物理和虚拟可用节点的数量和具体状态。

优选地,将物联网靶场设计为:最上端是用户界面层,它由用户API和图形模板组成,允许在IoT测试平台层与用户之间进行交互,这两个接口由处理客户请求和身份验证的前端引擎维护,Resource API位于前端引擎的下方,在更新节点状态或发送回日志时与IoT测试平台层通信,IoT测试平台层的API从Resource API接收任务参数,它是IoT测试平台层中的物理和虚拟测试平台和资源层之间的一个层级,底层设施包括物理组件和虚拟物联网资源,其中,物理组件由远程IoT设备组成,基于IEEE802.15.4协议连接成网状拓扑结构网络,并通过USB连接到IoT-CR服务器以进行管理。

优选地,在设计物联网靶场时,所述IoT测试平台层的Web接口和API用Python 3.7编写,IoT测试平台层用Python编写;物联网靶场采用HTML5模板和CSS3创建具有引导程序的图形界面;物联网靶场采用Git对软件代码进行版本控制,以及根据风险为项目代码提供远程备份,物联网靶场采用SQLite3用作数据存储。

优选地,在设计物联网靶场的数据库时,将ERD设计为由七个表组成:用户、ZipFile、Config、拓扑、作业、日志、节点;其中,用户表保存用户信息,包括户名、用户类型,并在身份验证和授权期间使用;ZipFile表处理与ZipFile信息有关的信息;Config表与配置信息有关,拓扑表关联拓扑信息;节点表与其他项目无关,与用户当前可用的节点有关。

优选地,在设计物联网靶场时,API版本控制的基本控制框架URL设计为“/api/v1/”,它使用JSON文件,API URL结构如下:

身份验证-‘/api/v1/auth’;用户必须能够通过身份验证,该端点接收带有JSON数据的POST请求,请求成功将允许创建JSON Web令牌;

注册-'/api/v1/signup';该端点允许用户通过发送包含以下键的发布请求来创建帐户:“用户名”,“密码”和“电子邮件”地址,注册成功时该端点返回一条注册成功的消息,注册失败时返回失败的消息;

可用节点-'/api/v1/nodes';客户可以向此端点发送GET请求,以检索可用的物理和虚拟节点的数量,该用例返回一条消息,指出每个消息的编号,如果用户是系统用户,则可以发送POST请求以添加节点,这需要包括新节点的名称及其“node_type”,即“虚拟”或“物理”,带有“node_id”关键字的DELETE请求会删除使它们不再可用的节点;

拓扑-'/api/v1/topologies';用户必须能够运行包含拓扑文件的实验,拓扑终端允许用户查看其上载的拓扑文件,其中显示了其文件名和关联的ID,发送POST请求可以上传另一个拓扑文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息;

配置-'/api/v1/configs';配置端允许用户查看其上载的配置文件,其中显示了文件名和关联的ID,发送POST请求可以上传另一个配置文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息;

脚本-“/api/v1/scripts”;用户能够上传脚本来进行实验,脚本需要以.zip文件的形式上传,用户能够查看上载的zip文件,其中显示了其文件名和关联的ID,发送POST请求可以上传另一个zip文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息;

任务-'/api/v1/jobs';任务终端允许用户查看其创建的任务及其通过发送GET请求获得ID,发送带有上载“topology_id”,上载“config_id”和上载“zip_id”的POST请求将返回创建新任务的ID,可以通过将请求发送到“/api/v1/jobs/”来完成查看特定任务文件的GET请求,可以使用发送到'/api/v1/job//run'的GET请求运行任务,可以通过将请求发送到Logs-'/api/v1/jobs//logs',其中是运行的任务的ID,可以通过使用GET请求查看上述端点来查看与作业关联的日志ID;

帮助-‘/api/v1/help’,用户可以发送GET请求以查看来帮助信息。

优选地,在设计物联网靶场时,采用一个轻量级的python3客户端封装器,该封装器允许用户通过对API端点进行操作来注册并登录到Cyber Range,封装器通过菜单驱动的界面保留与已登录帐户关联的JTW令牌,从而允许用户查询其文件,作业和获取日志文件。

本发明还提供了一种所述方法设计得到的物联网靶场。

(三)有益效果

本发明介绍提供了一种物联网靶场的设计方法,包括架构、模块、工作流程以及数据库等方面的详细设计,为物联网靶场设计提供了一种思路。本发明设计的物联网靶场可以通过模拟搭建目标物联网来验证其安全性,也可以通过红蓝对抗的形式培训物联网安全方面的专业技能。

附图说明

图1为本发明的任务队列序列图;

图2为本发明的日志检索序列图;

图3为本发明的在查询请求节点状态及其可用性时用户与系统之间的动作和交互序列图;

图4为本发明的系统UML模块图;

图5为本发明的系统架构图;

图6为本发明的日志查询序列图;

图7为本发明的网络令牌的修正和交换(10节点)示意图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

为了解决IoT网络安全中日益增长的技能短缺问题,本发明提出了一种物联网靶场结构,用于实现对物联网安全性研究和培训等功能。物联网靶场允许用户搭建虚拟化和物理化的IoT网络并且可以在搭建好的环境上实现真实的操作,支持遵循模块化体系结构的可扩展方式。以下分四个方面说明架构、模块、工作流程以及数据库等方面的详细设计内容。

一、物联网靶场架构

本发明设计的物联网靶场采用RESTful API设计模型,该模型基于UML,并支持RESTful API开发生命周期的四个阶段,采用一种迭代的方式,构建API模型,生成API规范和伪代码,然后实现和管理API。它的迭代周期的各个步骤很简单,并且允许用户根据需求进行自适应的开发。

1.资源配置

图1中所示的序列图显示了将任务排队发送到资源节点上的步骤以及用户与系统不同层之间的交互。这个过程包括通过与用户界面和数据库的交互进行身份验证(验证用户凭据)和授权(验证使用特权),以及选择任务并转发到IoT网络范围的步骤。然后,作业状态将更新并返回给用户,以确认任务成功运行。

2.检索实验日志

图2中描述的序列图描述了在请求任务相关的日志时用户与系统之间的交互。用户输入他们的登录凭证,该凭证将针对数据库中的用户表进行查询,以返回确认用户已被授权继续的确认。然后,用户可以请求检索日志,该日志将从接口转发带有指定日志ID的搜索参数的Logs表,然后显示给用户。

3.查询资源可用性

序列图(图3)描述了在查询请求节点状态及其可用性时用户与系统之间的动作和交互,这包括对用户的身份验证以及将请求转发到测试平台。用户输入其登录凭据,在数据库中根据用户表进行查询,成功后返回确认信息,并授权用户。然后,用户可以请求查询节点状态。该接口查询后端数据中的节点表,返回物理和虚拟可用节点的数量和具体状态。

4.系统架构设计

图4和5描述了系统不同模块之间的交互。最上端是用户界面层,它由用户API和图形模板组成,允许在测试平台与用户之间进行交互。这两个接口由处理客户请求和身份验证的前端引擎维护。Resource API位于前端引擎的下方,在更新节点状态或发送回日志时和IoT测试平台层通信。IoT测试平台API从Resource API接收任务参数,它是IoT测试平台层中的物理和虚拟测试平台和资源层之间的一个层级。底层设施包括物理和虚拟物联网资源。特别是,物理组件由远程IoT设备组成,基于IEEE802.15.4协议连接成网状拓扑结构网络,并通过USB连接到IoT-CR服务器以进行管理。使用Contiki-NG嵌入式OS的网络模拟器。

二、前端用户接口

1.开发工具选择

测试平台的Web接口和API用Python 3.7编写。IoT测试平台层是用Python编写的。使用Python构造Web界面可简化前端引擎与IoT测试平台层之间的服务集成。本发明导入了Flask代码库,这是一个轻量级的Web框架,允许呈现API结构,HTML模板和后端功能。靶场采用HTML5模板和CSS3创建具有引导程序的图形界面,为不同的界面布局提供自适应的分辨率,并且允许用户查看移动设备上的图形界面。采用Curl测试API调用。靶场采用Git对软件代码进行版本控制,以及根据风险为项目代码提供远程备份。靶场采用SQLite3用作数据存储,它可以作为独立文件使用,为系统资源提供了效率。

2.数据库设计

图6中描绘的ERD由七个表组成:用户,ZipFile,配置,拓扑,作业,日志,节点。用户表保存用户信息,例如用户名,用户类型等,并在身份验证和授权期间使用。ZipFile表处理与ZipFile详细信息有关的信息。Config与配置信息有关,拓扑表关联拓扑信息。这3个表链接到合并3个文件的Job表。从任务中,可以创建一个或多个日志。节点表与其他项目无关,与用户当前可用的节点有关。

3.API结构

API版本控制的基本控制框架URL为“/api/v1/”,它使用JSON文件。API URL结构如下:

身份验证-‘/api/v1/auth’。用户必须能够通过身份验证。该端点接受带有JSON数据(用户名和密码字段)的POST请求,请求成功将允许创建JSON Web令牌。

注册-'/api/v1/signup'。该端点允许用户通过发送包含以下键的发布请求来创建帐户:“用户名”,“密码”和“电子邮件”地址。注册成功时该端点返回一条注册成功的消息,注册失败(用户名已被使用)时返回失败的消息。

可用节点-'/api/v1/nodes'。客户可以向此端点发送GET请求,以检索可用的物理和虚拟节点的数量。该用例返回一条消息,指出每个消息的编号。如果用户是系统用户,则他们可以发送POST请求以添加节点。这需要包括新节点的名称及其“node_type”,即“虚拟”或“物理”。带有“node_id”关键字的DELETE请求会删除使它们不再可用的节点。

拓扑-'/api/v1/topologies'。用户必须能够运行包含拓扑文件的实验。拓扑终端允许用户查看其上载的拓扑文件,其中显示了其文件名和关联的ID。发送POST请求可以上传另一个拓扑文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息。

配置-'/api/v1/configs'。配置端允许用户查看其上载的配置文件,其中显示了文件名和关联的ID。发送POST请求可以上传另一个配置文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息。

脚本-“/api/v1/scripts”。用户能够上传脚本来进行实验。脚本需要以.zip文件的形式上传。用户能够查看上载的zip文件,其中显示了其文件名和关联的ID。发送POST请求可以上传另一个zip文件,同时POST请求将返回一条消息,说明该文件已使用相关ID上载,或者返回已有该文件的错误信息。

任务-'/api/v1/jobs'。任务终端允许用户查看其创建的任务及其通过发送GET请求获得ID。发送带有上载“topology_id”,上载“config_id”和上载“zip_id”的POST请求将返回创建新任务的ID。可以通过将请求发送到“/api/v1/jobs/”来完成查看特定任务文件的GET请求。可以使用发送到'/api/v1/job//run'的GET请求运行任务,可以通过将请求发送到Logs-'/api/v1/jobs//logs',其中是运行的任务的ID,可以通过使用GET请求查看上述端点来查看与作业关联的日志ID。系统用户可以发送POST请求以添加其他内容。

帮助-‘/api/v1/help’,用户可以发送GET请求以查看来帮助信息。

4.API Python封装器

为了帮助用户使用API,跳过冗长的curl请求,本发明采用一个轻量级的python3客户端封装器。该封装器允许用户通过对API端点进行操作来注册并登录到Cyber Range。封装器通过菜单驱动的界面保留与已登录帐户关联的JTW令牌,从而允许用户查询其文件,作业和获取日志文件。

三、物联网靶场后端操作

为了满足物联网研究人员的各种需求,采用虚拟设备来提供原本无法通过物理形式访问的一系列设备。本发明采用Contiki-NG和Cooja嵌入式操作系统。Cooja使用将在实际物理物联网系统中部署的相同Contiki-NG源代码作为输入,对整个网络堆栈(从链路层到应用程序层)进行了详细的仿真。此外,它还为IoT-CR提供了极大的灵活性,因为可以将虚拟运行的场景轻松移植到物理IoT系统。Cooja能够使用Contiki-NG中可用的脚本和库进行操作,从而为用户提供了图形化框架向虚拟化设备分配自定义脚本,在拓扑图中控制这些设备并通过提供工具(例如查看实时设备标准输出或在关键事件的仿真中添加断点)测试工作场景.Cooja中提供的“仿真脚本编辑器”工具允许用户通过JavaScript代码对仿真进行脚本控制,通过仿真脚本编辑器,用户可以将用JavaScript代码修改的仿真CSC文件保存为另一个XML元素,从而使仿真自动运行,而无需人工干预。

四、物联网靶场场景演示

为了使用户更快的理解和使用,系统可以提供模板,该方案提供完整的Contiki-NG项目构建文件夹和任务所需的Cooja模拟(CSC)文件。生成这些模板后,用户将能够了解所用仿真代码的格式,从而有机会更改给定方案的参数,例如:无线协议,节点数量,网络密度,运行特定代码的节点百分比(说明接收器节点或不同的团队规模)。

下面方案演示了典型的蓝队/红队网络安全事件。该场景在两个相反的团队尝试共享令牌值的过程中发挥作用;蓝队试图在彼此之间增加并共享令牌,而相对的红队则在将令牌传递给蓝队之前试图对其进行拦截和递减,类似于简单的中间人攻击。蓝队试图增加类似于防御反应的价值。在没有从入站数据包中接收到新令牌值的情况下,任何节点都不能再次发送,这可以有效地锁定其他数据包以实现中间人攻击的效果。蓝色团队的令牌值必须达到上限,而红色团队达到一个下限。当节点达到两个阈值之一时,系统判定获胜或失败状态,并终止分散的程序,将该状态发布到日志中。图7给出了该方案的示意图。

在此方案示例中,起始值为10,包含节点{1,8,7,3,6,5,9,2,4}的网络上的遍历将得出值为12的令牌。启动模拟的节点能够在锁定之前发送一个数据包,在给定的时间可能会在网络上发生多次漫游。由于节点单封包锁定,仿真每次运行都会改变,因此可以通过其他漫游来缩短步行路程,在每个节点达到上限或下限阈值,会导致仿真结束。值得注意的是,该场景可以使用各种基础网络协议和技术来执行,包括非IP(例如NullNet)和IPv6(例如RPL和6LoWPAN)等网络堆栈。这使受训人员可以使用不同的网络技术在不同数量的节点上进行多次仿真,记录结果并比较IoT网络的不同方面。

运行步骤:首先注册一个帐户,使用用户名和密码然后登录,使用电子邮件通知任务情况。用户通过场景的模板生成任务所需文件,并将这些文件添加到用户文件夹,用来创建自定义场景。然后在Cooja CSC文件中定义的参数:-节点数,仿真持续时间,并将特定节点分配给脚本。用户将获得对测试平台与测试者相同的控制级别。同时,用户可以上传文件,创建任务和调度。用户可以自定义多个场景,在需要用到时可以直接调用。任务完成后,用户将收到一封电子邮件,并能在客户端程序中访问日志信息。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

相关技术
  • 一种物联网靶场设计方法
  • 一种3D网络靶场的动态设计方法
技术分类

06120113283792