CN116028313B - 一种基于vt序列的终端审计方法、系统及存储介质 - Google Patents
一种基于vt序列的终端审计方法、系统及存储介质 Download PDFInfo
- Publication number
- CN116028313B CN116028313B CN202310322820.1A CN202310322820A CN116028313B CN 116028313 B CN116028313 B CN 116028313B CN 202310322820 A CN202310322820 A CN 202310322820A CN 116028313 B CN116028313 B CN 116028313B
- Authority
- CN
- China
- Prior art keywords
- data
- state
- input
- sequence
- audit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/02—Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及运维审计技术领域,公开了一种基于VT序列的终端审计方法、系统及存储介质。本发明基于状态机的工作原理,对包含交互数据和VT序列指令的用户输入进行前置处理、数据校验、逻辑仲裁、结果输出,最终输出与状态变量和输入信息同时关联的审计结果,从而对使用VT序列控制的协议进行命令审计,实现终端审计。
Description
技术领域
本发明涉及信息安全技术领域,具体地说,是一种基于VT序列的终端审计方法、系统及存储介质。
背景技术
终端审计的一个重要特征是实现对过去发生过的历史事件的“回溯”。比如:能否监控和记录终端用户浏览过的网站和浏览网站的内容;能否监控和记录终端用户对文件的复制、删除和修改等操作;能否监控和记录终端用户打印了什么文档和打印的文档内容;能否监控到终端用户的MSN、QQ的行为并记录下聊天的内容;能否监控和保存终端用户的终端屏幕画面和内容等等。
随着近年多核系统、集群、网格、云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。当前虚拟设备支持虚拟控制台,它能通过键盘及网络连接或者通过XTERM会话登录到计算机上。但XTERM只是一个终端仿真器,能够实现虚拟终端程序的调用,并不能实现终端审计。
虚拟终端也可以被称为伪终端。如何能在伪终端,针对MYSQL、REDIS等使用VT序列控制的协议进行命令审计,是当前亟需解决的技术问题。
发明内容
本发明针对现有技术存在的问题,基于状态机对包含交互数据和VT序列指令的用户输入进行前置处理、数据校验、逻辑仲裁、结果输出,最终输出与状态变量和输入信息同时关联的审计结果,从而对使用VT序列控制的协议进行命令审计,实现终端审计。基于上述技术构思,本发明提出了一种基于VT序列的终端审计方法、一种基于VT序列的终端审计系统及可运行该终端审计方法的存储介质。
随着虚拟技术的发展,如何对虚拟终端进行命令审计成为热门研究方向。VT序列是虚拟终端控制码,也译为ANSI转义序列控制码,如VT100系列控制码、VT102系列控制码、VT220系列控制码等。常见的使用VT序列控制的协议有MYSQL、REDIS等。本发明针对如何对使用VT序列控制的协议进行命令审计的技术问题进行了研究,得到了一些技术成果。
首先,本发明提供了一种基于VT序列的终端审计方法,根据协议的命令审计需求制定审计业务流程并执行审计;所述方法通过审计状态机对用户输入进行包括前置处理、数据校验、逻辑仲裁、结果输出多个流程的数据处理,实现终端审计;具体是指:在同一审计周期中,审计状态机接收到包含交互数据和VT序列指令的用户输入,先进行前置处理,再结合当前周期的输入状态变量进行数据校验;数据校验合格后,包含交互数据和VT序列指令的待解析数据通过逻辑仲裁进行解析,且解析时仅在逻辑仲裁流程内自身回溯,解析后获得新的状态变量以及与新的状态变量关联的新的审计内容数据;新的审计内容数据形成最终的审计结果后保存并输出审计状态机,完成当前周期的审计;解析后获得的新的状态变量是当前周期的输出状态变量也是次周期的输入状态变量,次周期的输入状态变量与次周期的用户输入组合后用于次周期的审计;审计过程中若出现超时、状态异常的情况则发出报警信号进行异常报警。
本发明所述的终端审计方法,主要包括前置处理、数据校验、逻辑仲裁、结果输出四个主要的流程。基于审计状态机将包含交互数据和VT序列指令的用户输入通过前置处理、数据校验、逻辑仲裁后,从用户输入中解析出与当前周期的输出状态变量关联的审计结果并输出,且审计过程中对异常情况进行报警,最终实现终端审计。
本发明所述的终端审计方法,对包含交互数据和VT序列指令的待解析数据采用自身回溯的方式进行逻辑仲裁,仅需要消耗一个时钟周期,从而大大提高整个审计效率。
其次,本发明提供了一种审计状态机,包括输入数据接口模块、组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G和逻辑仲裁模块A。
所述输入数据接口模块,用于接收包含交互数据和VT序列指令的用户输入,并将用户输入前置处理后发送至组合逻辑输入模块F。
所述组合逻辑输入模块F,用于接收前置处理后的用户输入以及从状态转移逻辑寄存器M2中获取当前周期的输入状态变量,结合当前周期的输入状态变量对前置处理后的用户输入进行数据校验,数据校验合格的待解析数据发送至逻辑仲裁模块A。
所述逻辑仲裁模块A,用于采用自身回溯的方式解析包含交互数据和VT序列指令的待解析数据,获得新的状态变量以及与新的状态变量关联的新的审计内容数据,新的状态变量发送至状态转移逻辑寄存器M2,新的审计内容数据发送至组合逻辑输出模块G。
所述状态转移逻辑寄存器M2,用于缓存每个审计周期的输入状态变量、输出状态变量。
所述组合逻辑输出模块G,用于将接收到的新的审计内容数据形成最终的审计结果发送本地保存并输出审计状态机。
传统MEALY状态机包括组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G。状态是否改变以及如何改变取决于组合逻辑输入模块F的输出,组合逻辑输入模块F是当前状态和输入信号的函数。审计状态机的输出是由组合逻辑输出模块G提供的,组合逻辑输出模块G接收组合逻辑输入模块F发送的新的当前状态,是新的当前状态和输入信号的函数。
本发明根据审计业务流程在MEALY状态机原始模型基础上增设用于逻辑仲裁的逻辑处理模块,构建了一个用于终端审计的状态机,记为审计状态机,该审计状态机能够针对使用VT序列控制的协议进行命令审计。
进一步地,所述审计状态机还在所述逻辑仲裁模块A外部配置了输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3。
所述输入状态寄存器M1,用于缓存组合逻辑输入模块F输出的更新后的状态变量,供逻辑仲裁模块A调用。
所述中间审计内容寄存器N1,用于缓存组合逻辑输入模块F输出的数据校验合格的待解析数据,并以数据流的形式供逻辑仲裁模块A调用。
所述中间审计内容寄存器N2,用于缓存逻辑仲裁模块A输出的审计内容数据,并以数据流的形式供组合逻辑输出模块G调用。
所述输出审计内容寄存器N3,用于对组合逻辑输出模块G输出的最终的审计结果进行本地保存,供逻辑仲裁模块A调用。
再者,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述终端审计方法。
本发明与现有技术相比,具有以下优点及有益效果。
(1)本发明提供的终端审计方法,基于审计状态机对包含交互数据和VT序列指令的用户输入进行前置处理、数据校验、逻辑仲裁、结果输出,最终输出与状态变量和输入信息同时关联的审计结果,从而对使用VT序列控制的协议进行命令审计,实现终端审计。
(2)本发明提供的审计状态机,根据审计业务流程在MEALY状态机原始模型基础上增设了用于逻辑仲裁的逻辑处理模块,该逻辑处理模块采用自身回溯的方式解析数据,一方面简化组合逻辑输入模块F的构造从而实现了模型的轻量化设计,另一方面自身回溯方式仅需消耗一个时钟周期从而提高审计效率。
(3)本发明提供了一个高效而且审计准确的审计状态机,本发明是在会话过程中进行的实时终端审计,因此可以根据实时审计结果,进行命令阻断、会话阻断、终端协议操作权限控制等操作。
附图说明
本发明结合下面附图和实施例做进一步说明,本发明所有构思创新应视为所公开内容和本发明保护范围。
图1为现有技术中MEALY状态机模型的结构示意图。
图2为实施例4中本发明提供的审计状态机的结构示意图。
图3为组合逻辑输入模块F进行数据校验的数据处理流程示意图。
图4为逻辑仲裁中识别中文符号、英文字符或英文符号的流程示意图。
图5为逻辑仲裁中中文编码解析的流程示意图。
图6为逻辑仲裁中英文编码解析的流程示意图。
图7为逻辑仲裁中基本序列指令处理流程的流程示意图。
图8为逻辑仲裁中CSI指令处理流程的流程示意图。
图9为实施例7中所述电子设备的框架结构示意图。
具体实施方式
为了更清楚地说明本发明所涉及的技术方案,下面将结合说明书附图,对本发明涉及的具体技术方案进行清楚、完整地描述,应当理解,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,因此不应被看作是对保护范围的限定。基于本发明中的实施例,本领域普通技术工作人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“设置”、“相连”、“连接”应做广义理解,可以是直接相连,也可以是通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
实施例1:
本实施例提供了一种基于VT序列的终端审计方法。所述终端审计方法根据协议的命令审计需求制定审计业务流程并执行审计;通过状态机对用户输入进行包括前置处理、数据校验、逻辑仲裁、结果输出多个流程的数据处理,实现终端审计。
所述终端审计方法具体是指:在同一审计周期中,状态机接收到包含交互数据和VT序列指令的用户输入,先进行前置处理,再结合当前周期的输入状态变量进行数据校验;数据校验合格后,包含交互数据和VT序列指令的待解析数据通过逻辑仲裁进行解析,且解析时仅在逻辑仲裁流程内自身回溯,解析后获得新的状态变量以及与新的状态变量关联的新的审计内容数据;新的审计内容数据形成最终的审计结果后保存并输出状态机,完成当前周期的审计;解析后获得的新的状态变量是当前周期的输出状态变量也是次周期的输入状态变量,次周期的输入状态变量与次周期的用户输入组合后用于次周期的审计;审计过程中若出现超时、状态异常的情况则发出报警信号进行异常报警。
本实施例通过状态机对包含交互数据和VT序列指令的用户输入进行解析,得到与状态变量和输入信息同时关联的审计结果,从而实现终端审计。
实施例2:
基于状态机对用户输入进行前置处理、数据校验、逻辑仲裁、结果输出且在逻辑仲裁中采用自身回溯的方式解析数据,是本发明的最主要的技术构思。在此技术构思下,前置处理、数据校验、逻辑仲裁的具体实施内容都可以根据不同的审计内容、不同的审计要求进行具体设计。本实施例在实施例1的基础上详细说明。
本实施例中,所述前置处理的主要目的是对不同协议的数据进行分类处理。
以当前主流业务为例,为用户输入提供两种输入接口,一个输入接口用于接收协议的REQUEST数据并将其记为上行数据,另一个输入接口用于接收协议的RESPONSE数据并将其记为下行数据。
本实施例中,对前置处理后的数据进行数据校验。所述数据校验时,接收当前周期的输入状态变量,先判断状态机DONE状态的值,若DONE状态的值为0则表明状态机正在处理数据,丢弃当前周期输入的上行数据、下行数据,若DONE状态的值为1则接收当前周期输入的上行数据、下行数据。
对于接收到的上行数据,直接进行内容校验。
对于接收到的下行数据,需先判断状态机WAIT状态,若WAIT状态为NONE模式则不再接收新的下行数据并对当前周期已经接收的下行数据进行内容校验,若WAIT状态为NONE模式以外的其他状态,则持续接收新的下行数据,直至WAIT状态跳转为NONE模式;接下来进行VIM状态判断,若VIM状态为ESC模式则对输入的下行数据持续扫描,直至接收到序列1049l时,状态机VIM状态从ESC模式转移至NONE模式,更新输入状态变量;若持续扫描超时则丢弃当前周期接收到的下行数据。
所述内容校验是指对接收到的上行数据、下行数据分别进行长度校验、编码校验,输出内容校验合格的数据等待后续的逻辑仲裁,丢弃内容校验不合格的所有数据;内容校验后更新状态变量并输出更新后的状态变量等待后续的逻辑仲裁。
本实施例中,所述逻辑仲裁的主要目的是对包含交互数据和VT序列指令的待解析数据进行解析。所述逻辑仲裁过程中,先对校验合格的待解析数据中未解析的各组编码进行窥探,根据各组编码的编码格式选择对应的编码解析方法,再基于自身回溯的方式采用选择的编码解析方法对校验合格的待解析数据进行解析,获得新的审计内容数据和新的状态变量。
不同类型的符号需要采用不同解析方法。作为一种应用场景较为广泛的具体方案,本实施例提出:将校验合格的待解析数据按中文编码解析方法、英文编码解析方法进行编码解析。
进一步地,本实施例中提供一种中文编码解析方法。所述中文编码解析方法将解析后的内容添加到数据流CURR中且索引CURSOR的索引值加1。当然也可以根据审计要求,采用其他方法进行中文编码解析。
进一步地,本实施例中提供一种英文编码解析方法。所述英文编码解析方法先判断是作为连续的TAP符号处理还是作为基本指令符号处理,若作为连续的TAP符号处理则不记录在数据流CURR中且回溯到逻辑仲裁的输入,若作为基本指令符号处理则执行基本序列指令处理流程,根据解析的指令转移状态机的状态并保存新的状态变量。当然也可以根据审计要求,采用其他方法进行英文编码解析。
在另一具体实施方式中,所述基本序列指令处理流程如下:
先判断是否为C0指令:若是C0指令则状态机WAIT状态转移至WAIT_CORRECT并根据序列开始字符判断C0指令的具体指令内容,若否则继续判断是否为C1指令;
判断是否为C1指令:若是C1指令则根据序列开始字符判断C1指令的具体指令内容,若否则继续判断是否为INTERRUPT序列;
判断是否为INTERRUPT序列:若是INTERRUPT序列则当前索引CURSOR的索引值置为0,数据流CURR内容清空,状态机WAIT状态跳转至WAIT_NONE,若否则状态机执行ESC指令处理流程;
状态机执行ESC指令后继续判断是否为CSI序列或DCS序列:若都不是则回溯到逻辑仲裁的输入,若是DCS序列则回溯到逻辑仲裁的输入,若是CSI序列则状态机执行CSI指令处理流程。
在另一具体实施方式中,所述CSI指令处理流程如下:判断CSI序列输入中是否包含ESC序列,若包含则回溯到CSI序列输入,若不包含则先查找标识符“\x1b”,然后读取之后一个字符,再进行CSI序列函数处理;CSI序列函数处理的过程中根据标识符“\x1b”之后读取到的具体字符,状态机跳转相应的状态后回溯到CSI序列输入。
经过上述逻辑仲裁,得到新的审计内容数据和新的状态变量。
所述结果输出中,解析后获得的新的状态变量是当前周期的输出状态变量也是次周期的输入状态变量,次周期的输入状态变量与次周期的用户输入组合后用于次周期的审计;解析后获得的新的审计内容数据需要通过完整性和/或合法性判断后才能保存及输出状态机;对通过判断的审计结果进行本地保存并向状态机外部输出,完成当前周期的审计。
更进一步地,新的审计内容数据向状态机外部输出前还需要判断状态机WAIT状态,若WAIT状态不为NONE模式则自旋等待,直至WAIT状态转移为NONE模式;若多次尝试后WAIT状态仍然无法转移为NONE模式则强制跳转;若自旋等待出现超时,则发出报警信号进行异常报警。
整个审计过程中,若出现超时、状态异常等情况则发出报警信号进行异常报警。
实施例3:
首先,现有技术并没有将状态机应用于命令审计的先例,如何利用状态机结合状态描述、状态转移实现命令审计是需要攻克的第一个难关。
其次,状态机中Always模块采用组合逻辑判断状态转移条件并描述状态转移规律时通常需要反复回溯,此过程会导致代码量增加、系统运行缓慢,如何提高审计效率是需要攻克的第二个难关。
传统的MEALY状态机,即米勒状态机,其模型如图1所示,该模型中第一个方框是指产生下一状态的组合逻辑F,组合逻辑F是当前状态和输入信号的函数,状态是否改变、如何改变取决于组合逻辑 F 的输出;第二个方框是指状态寄存器,其由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳边沿;第三个方框是指产生输出的组合逻辑 G,提供状态机的输出,输出组合逻辑G也是当前状态和输入信号的函数。
本实施例在传统的MEALY状态机模型的基础上,如图2所示,增设一个专用于逻辑仲裁的逻辑仲裁模块A,利用逻辑仲裁模块A进行包括状态转移、状态丢弃的状态改变,从而进行审计操作;进一步地,逻辑仲裁模块A采用自身回溯机制,令针对包含VT序列在内的数据的解析工作仅在逻辑仲裁模块A内回溯而不会跳转到组合逻辑输入模块F的输入,使得状态的改变仅消耗一个时钟周期,不仅简化了代码量,而且提升了审计效率。
具体地,本实施例提供了一种用于终端审计的状态机,记为审计状态机。所述审计状态机用于实现如实施例1或实施例2所述的终端审计方法。
所述审计状态机包括输入数据接口模块、组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G和逻辑仲裁模块A;
所述输入数据接口模块,用于接收包含交互数据和VT序列指令的用户输入,并将用户输入前置处理后发送至组合逻辑输入模块F;
所述组合逻辑输入模块F,用于接收前置处理后的用户输入以及从状态转移逻辑寄存器M2中获取当前周期的输入状态变量,结合当前周期的输入状态变量对前置处理后的用户输入进行数据校验,数据校验合格的待解析数据发送至逻辑仲裁模块A;
所述逻辑仲裁模块A,用于采用自身回溯的方式解析包含交互数据和VT序列指令的待解析数据,获得新的状态变量以及与新的状态变量关联的新的审计内容数据,新的状态变量发送至状态转移逻辑寄存器M2,新的审计内容数据发送至组合逻辑输出模块G;
所述状态转移逻辑寄存器M2,用于缓存每个审计周期的输入状态变量、输出状态变量;
所述组合逻辑输出模块G,用于将接收到的新的审计内容数据形成最终的审计结果发送本地保存并输出审计状态机。
本实施例所述审计状态机,根据审计业务流程在MEALY状态机原始模型基础上增设用于逻辑仲裁的逻辑处理模块A,构建了一个能够实现上述终端审计方法的状态机,即本实施例所述的审计状态机。
实施例4:
本实施例在实施例3提供的审计状态机的基础上,进一步优化设计。
本实施例提供的审计状态机,包括:输入数据接口模块、组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G、输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3和逻辑仲裁模块A。
相比较实施例3所述的审计状态机,本实施例中提供的审计状态机在所述逻辑仲裁模块A外部配置了输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3。
所述逻辑仲裁模块A与输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3可以设计成一个整体,但设计成一个整体会导致模块复杂程度增加。因此,作为优选方案,将输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3这几个寄存器单独设计,其中寄存的数据按需求供逻辑仲裁模块A调用即可,反而使得数据流转逻辑清晰、更容易代码化,进而实现模型的轻量化设计。
如图2所示,采用本实施例提供的审计状态机进行终端审计时,数据流转过程如下。
(1)前置处理
用户输入从输入数据接口模块输入,根据协议形成上行/下行数据C1,并发送至组合逻辑输入模块F。
(2)数据校验
组合逻辑输入模块F中,先向状态转移逻辑寄存器M2发送请求指令R1调取当前周期的输入状态变量S1,再判断审计状态机DONE状态的值,若DONE状态的值为0则表明审计状态机正在处理数据,丢弃当前周期输入的上行数据、下行数据,若DONE状态的值为1则接收当前周期输入的上行数据、下行数据。
对于接收到的上行数据,直接进行内容校验。
对于接收到的下行数据,需先判断状态机WAIT状态,若WAIT状态为NONE模式则不再接收新的下行数据并对当前周期已经接收的下行数据进行内容校验,若WAIT状态为NONE模式以外的其他状态,则持续接收新的下行数据,直至WAIT状态跳转为NONE模式;接下来进行VIM状态判断,若VIM状态为ESC模式则对输入的下行数据持续扫描,直至接收到序列1049l时,状态机VIM状态从ESC模式转移至NONE模式,更新输入状态变量;若持续扫描超时则丢弃当前周期接收到的下行数据。
所述内容校验是指对接收到的上行/下行数据C1进行长度校验、编码校验,输出内容校验合格的数据等待后续的逻辑仲裁,丢弃内容校验不合格的所有数据;输出更新后的状态变量等待后续的逻辑仲裁。
数据校验过程中被丢弃的数据统一记为数据C2。内容校验合格的数据记为待解析数据C3,待解析数据C3发送至中间审计内容寄存器N1入栈寄存,在接收到逻辑仲裁模块A发送的窥探请求指令T2时,多个待解析数据C3以待解析数据包C4的数据流形式发送至逻辑仲裁模块A。输入状态变量S1经过组合逻辑输入模块F后以中间状态变量S2的形式输出。中间状态变量S2发送至输入状态寄存器M1入栈寄存,在接收到逻辑仲裁模块A发送的请求指令R3时,中间状态变量S2再出栈并发送至逻辑仲裁模块A。
需要说明的是,中间状态变量S2就是输入状态变量S1更新后的状态变量,具体状态变量的数值可能改变也可能没变。进一步地,中间状态变量S2可以直接发送至逻辑仲裁模块A,也可以先输入状态寄存器M1缓存再发送至逻辑仲裁模块A。
组合逻辑输入模块F中出现超时、状态异常、程序异常等情况,则发出报警信号W1。
(3)逻辑仲裁
逻辑仲裁模块A根据接收到的中间状态变量S2对待解析数据包C4进行解析,解析得到的新的状态变量记为中间状态变量S3,中间状态变量S3发送至状态转移逻辑寄存器M2入栈寄存,解析得到的新的审计内容数据记为审计内容数据C5,审计内容数据C5发送至中间审计内容寄存器N2入栈寄存。
(4)结果输出
组合逻辑输出模块G从中间审计内容寄存器N2调取审计内容数据包C6,同时组合逻辑输出模块G根据时钟CLK信号生成一个仅与时钟CLK信号关联的巡航状态信号S6,用于处理中间审计数据C6完整性校验和合法性判断。通过完整性校验和/或合法性判断的数据作为审计结果数据C7,审计结果数据C7一路发送至输出审计内容寄存器N3进行本地保存、一路输出审计状态机。未通过完整性校验或未通过合法性判断的数据则被丢弃。
组合逻辑输出模块G在进行完整性校验和/或合法性判断时,根据时钟CLK信号判断是否超时,若出现超时情况,则发出报警信号W3。
(5)状态寄存
中间状态变量S3、巡航状态信号S6均发送至状态转移逻辑寄存器M2缓存,若出现状态异常、程序异常等情况,则发出报警信号W2。
解析后获得的中间状态变量S3是当前周期的输出状态变量也是次周期的输入状态变量,即次周期的输入状态变量S1与当前周期的中间状态变量S3二者值相同。
本实施例的其他部分与实施例3相同,故不在赘述。
实施例5:
本实施例在实施例1、实施例4的基础上,本实施例以包含C0指令、C1指令、ESC指令、CSI指令、DCS指令、OSC指令六个基本指令集的VT序列为例,对包含交互数据和VT序列指令的用户输入进入审计状态机后如何开展命令审计进行详细说明。
C0指令,是单字节指令;7bit控制码,字节范围\x00.. \x1F, \x7F。
C1指令,是单字节指令;8bit控制码,字节范围\x80..\x9F。
ESC指令,是以( \x1b)开头的序列。
CSI指令,控制序列引入器;是以ESC [ (7bit) 或 CSI ( \x9B, 8bit)开头的序列。CSI指令中包括Ps参数、Pm参数、Pt参数三类P参数:Ps参数表示由一个或多个十进制数字组成的单个数字参数,通常由一个或多个十进制数字组成;Pm参数表示一个多数值参数,由任意数量的单数值参数组成,通常用“;”分隔字符;Pt参数表示由可打印字符组成的文本参数。
DCS指令,用于发送设备控制字符串;是以(7bit) 或 DCS (\x90, 8bit)开头的序列。
OSC指令,用于发送操作系统命令;是以ESC ](7bit)或OSC(\x9D, 8bit)开头的序列。
上述各个指令的详细内容是现有技术中对各个指令的描述,并非本实施例的改进点,故不再赘述。
本实施例提供了一种具体的终端审计方法,包括步骤1-步骤6。
步骤1:构建审计状态机。
所述审计状态机,如图2所示,包括:输入数据接口模块、组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G、输入状态寄存器M1、中间审计内容寄存器N1、中间审计内容寄存器N2、输出审计内容寄存器N3和逻辑仲裁模块A。
所述输入数据接口模块,用于接收包含交互数据和VT序列指令的用户输入,并将用户输入前置处理后以上行/下行数据C1的形式发送至组合逻辑输入模块F。
所述组合逻辑输入模块F,用于接收前置处理后的上行/下行数据C1以及从状态转移逻辑寄存器M2中获取当前周期的输入状态变量S1,结合当前周期的输入状态变量S1对上行/下行数据C1进行数据校验,数据校验合格的待解析数据C3通过中间审计内容寄存器N1入栈寄存并发送至逻辑仲裁模块A,未通过数据校验的数据C2被丢弃。同时,组合逻辑输入模块F执行数据校验时,状态变量的值可能发生变化也可能不发生变化,但无论是否发生变化都需要更新状态变量,为了避免混淆,将组合逻辑输入模块F输出的状态变量记为中间状态变量S2。也就是说,中间状态变量S2与输入状态变量S1的值可能相同,也可能不同。
所述输入状态寄存器M1,用于缓存组合逻辑输入模块F输出中间状态变量S2,供逻辑仲裁模块A调用。
所述中间审计内容寄存器N1,用于缓存组合逻辑输入模块F中输出的数据校验合格的待解析数据C3,待逻辑仲裁模块A调用时,以待解析数据包C4的形式出栈并发送至逻辑仲裁模块A。即通过中间审计内容寄存器N1的入栈、出栈对待解析数据进行数据寄存。
所述逻辑仲裁模块A,用于采用自身回溯的方式解析包含交互数据和VT序列指令的待解析数据包C4。基于待解析数据包C4中的VT序列指令对待解析数据包C4中的交互数据进行解析,从而产生新的状态变量以及与新的状态变量关联的新的审计内容数据。中间状态变量S3作为新的状态变量被发送至状态转移逻辑寄存器M2。输出中间状态变量S3的值与下一个周期的输入状态变量S1的值相同。新的审计内容数据以审计内容数据C5的形式发送至中间审计内容寄存器N2缓存,待组合逻辑输出模块G调用时,以审计内容数据包C6的形式出栈并发送至组合逻辑输出模块G。
所述状态转移逻辑寄存器M2,用于缓存每个审计周期的输入状态变量、输出状态变量。每个审计周期的输入状态变量就是输入状态变量S1,每个审计周期的输出状态变量是中间状态变量S3,也是该审计周期的下个审计周期的输入变量。
所述中间审计内容寄存器N2,用于将逻辑仲裁模块A发送的审计内容数据C5入栈寄存,在收到调用指令时又以审计内容数据包C6的形式出栈并发送至组合逻辑输出模块G。即通过中间审计内容寄存器N2的入栈、出栈对审计内容数据进行数据寄存。
所述组合逻辑输出模块G,用于将接收到审计内容数据包C6形成最终的审计结果C7发送本地保存并输出审计状态机。审计结果C7一方面输出至输出审计内容寄存器N3进行本地保存、另一方面直接输出至审计状态机的外部。
所述输出审计内容寄存器N3,用于缓存组合逻辑输出模块G输出的最终的审计结果C7,供逻辑仲裁模块A调用。当逻辑仲裁模块A调用时,输出审计内容寄存器N3以历史审计数据C8的形式出栈。
步骤2:初始化审计状态机。
在整个审计工作开始之前,通常需要进行初始化。本实施例中主要涉及的状态变量是状态机的WAIT状态、DONE状态、VIM状态。本实施例中主要涉及的审计数据是数据流CURR、索引CURSOR。审计过程中根据各审计步骤的功能设置,会对状态变量的值、审计数据的值进行保存、更新、丢弃等操作。初始化完成后,开始审计,审计过程中各个审计周期开始时不再进行初始化,直至本轮审计工作全部结束。
所以,本实施例中主要初始化的对象有:DONE状态、WAIT状态、VIM状态、数据流CURR、索引CURSOR。
DONE状态:用于判断本次输入是否转化完成;0表示未完成,1表示完成。初始化值为1。
WAIT状态:当前的逻辑下行等待状态。WAIT_NONE表示空状态;WAIT_UP表示逻辑上模式;WAIT_DOWN表示逻辑下模式;WAIT_LEFT表示逻辑左模式;WAIT_RIGHT表示逻辑右模式;WAIT_CORRECT表示校准态;WAIT_TAP表示填充态;WAIT_NEXT表示本次上行数据不被接受并跳到下次处理。WAIT状态初始化为WAIT_NONE,即NONE模式。WAIT状态为WAIT_UP时,审计状态机只接受下行数据。WAIT状态为WAIT_NONE时,审计状态机不接受本次下行数据。
VIM状态:文件编辑模式。MODE_VIM表示VIM状态中的编辑状态;MODE_NONE表示非VIM状态,即NONE模式;MODE_VIM_ESC表示VIM状态中的ESC模式,这里相当于ESC偏向锁;MODE_VIM_COLON表示VIM状态中的冒号输入模式;MODE_VIM_Z表示VIM状态中的冒号输入状态中的输入Z模式。
数据流CURR:表示当前审计状态机寄存器中的审计内容。数据流CURR初始化成“”,即空字符串。
索引CURSOR:表示当前审计内容光标位置。索引CURSOR的值是一个大于等于0的整数,初始化成0。
步骤3:前置处理。
在XSHELL终端、PUTTY终端等VT伪终端中,对于SSH或者TELNET的渲染,都会有上行或者下行数据,上行数据、下行数据都符合VT序列中的编码。这里的编码包括处理执令、颜色指令等等。由此,设计审计状态机时产生两个技术分支,一个技术分支是审计状态机处理具体协议逻辑,另一个技术分支是审计状态机不处理具体协议逻辑。最终从模型轻量化设计角度考虑,本实施例采用了“审计状态机不处理具体协议逻辑”的方案,让上行数据、下行数据都由用户来进行上传,我们在输入数据接口模块中设计两种输入接口:一个用来接收协议的REQUEST请求,即协议上行数据;一个用来接收协议的RESPONSE数据,即协议下行数据。由此,我们就可以得知用户输入中当前序列是上行数据还是下行数据,而且可以采用统一的ALWAYS模块进行后续的数据处理。
步骤4:数据校验。
如图3所示,所述数据校验具体包括步骤41-步骤43。
步骤41:先根据审计状态机的DONE状态判断用户输入的上行/下行数据C1是否能被组合逻辑输入模块F接收。
DONE状态为0,表明当前审计状态机正在处理数据,当审计状态机处理完成,DONE状态跳转为1,也只有DONE状态为1时,审计状态机才能接收输入的数据,否则将进行数据丢弃。
步骤42:接收的上行/下行数据C1中上行数据直接进行内容校验;接收的上行/下行数据C1中下行数据先进行前置状态检验再进行内容校验。所述内容校验包括长度校验、编码校验等等。
数据校验过程中若出现状态异常或程序异常等情况则发出报警信号W1。
对于接收到的上行数据,组合逻辑输入模块F全部放行,直接进行内容校验。
对于接收到的下行数据,先进行前置状态检验再进行内容校验。所述前置状态检验是指对状态机的WAIT状态、VIM状态具体模式的检验。若WAIT状态为WAIT_UP或WAIT_DOWN或WAIT_LEFT或WAIT_RIGHT或WAIT_CORRECT或WAIT_TAP这些模式的时候表示正常接收下行数据,直至WAIT状态为NONE模式则不再接收新的下行数据并对当前周期已经接收的下行数据进行内容校验,若VIM状态为ESC模式则对输入的下行数据持续扫描,直至接收到序列1049l时,状态机VIM状态从ESC模式转移至NONE模式,更新输入状态变量S1,记为中间状态变量S2;根据时钟CLK信号判断是否超时,若持续扫描超时则丢弃当前周期接收到的下行数据。在VIM状态,不接收的数据直接丢弃,不修改数据流CURR。
下行数据如果包含对终端1049缓存的处理,可以作为处理VIM状态的状态转移条件。这里包含两种状态转移:“序列符1049h”作为转移到MODE_VIM_ESC的条件,即转移到VIM状态的ESC模式;“序列符1049l”作为可能转移到MODE_NONE的条件,即转移到VIM状态的NONE模式。此处说“可能转移”是因为VIM状态要想转移到NONE模式,当前状态必须是ESC模式。
步骤43:内容校验合格的待解析数据C3发送至中间审计内容寄存器N1入栈寄存同时中间状态变量S2通过输入状态寄存器M1缓存,以等待逻辑仲裁模块A调用;前置状态检验不合格、内容校验不合格、校验超时的数据均被组合逻辑输入模块F丢弃,丢弃的数据统一记为数据C2。
步骤5:逻辑仲裁。
所述逻辑仲裁时,采用自身回溯的方式,将校验合格的待解析数据按编码方式进行解析。也就是说,先对校验合格的待解析数据包C4中的字符进行窥探,根据编码方式识别出中文字符或英文字符或英文符号,再选择与字符类型对应的具体解析方法。
所述逻辑仲裁包括步骤51-步骤52。
步骤51:对校验合格的待解析数据包C4中的字符进行窥探,根据编码方式识别出中文字符或英文字符或英文符号。如图4所示,对中文字符进行中文编码解析;对英文字符或英文符号进行英文编码解析。
英文字符全部属于ASCII字符,即美国信息交换标准代码。ASCII字符编码方式是固定的,因此命令行界面在输入和输出英文时,无需做任何处理,而对于英文以外的一些语言,由于属于非ASCII字符,每个字符在不同的编码方式中占用的字节数是不同的。以中文为例,中文字符在GBK族字符编码中占2个字节,在UTF-8编码中占3个字节,即同一汉字在不同的编码方式中存在差异。由不同编码方式编码的数据常常存在不兼容的情况,在某一种编码方式中的某一字符的字符编码在另一种编码方式中可能会被解析成完全不同的字符,也可能无法解析而显示不出来或出现乱码。因此,采用与待解析数据编码方式相同的编码方式进行解析。
通常获知命令审计需求的时候就会明确编码方式,当然也可以增设编码方式识别模块以适应于编码方式未知的应用场景。编码方式识别技术属于现有技术,不是本发明的改进点,故不再赘述。
步骤52:对于对于中文字符,将该中文字符添加到数据流CURR中且索引CURSOR的值加1,然后回溯到逻辑仲裁的输入;如图5所示,对于中文字符,将该中文字符添加到数据流CURR中且索引CURSOR的值加1,然后回溯到逻辑仲裁的输入;如图6所示,对于英文字符或英文符号,先判断是作为双TAP序列处理还是作为基本指令序列处理;若作为双TAP序列处理,则不记录在数据流CURR中且索引CURSOR的值加1,然后回溯到逻辑仲裁的输入;若作为基本指令序列处理,则执行基本序列指令处理流程,根据解析的指令转移状态变量并保存新的状态变量。
本实施例以中文审计的审计需求为例,此时就需要引入中文编码解析,而又因为此处是对VT序列进行线性处理,即VT序列和交互数据混合在一起等待解析,接下来本实施例以UTF-8编码方式为例进行说明。
具体地,因为中文在UTF-8编码中占用的字节数最少是3,那么逻辑仲裁的第一步就是要判断当前目标字符的字节长度是否大于等于3。本实施例中通过编码格式来“窥探”目标字符包含n个字符是否可以构成中文编码中的字符。如果符合中文编码条件,那么构成中文编码中的目标字符当作中文字符处理,此时索引CURSOR的值加1。对于其英文字符或者英文符号,这里索引CURSOR的值同样加1,不同的是对于英文实际上处理的数据长度是1,而中文是3。也就是说这些字符不在前文所述的六种基本指令集当中。此时我们将该中文字符添加到数据流CURR中,然后审计状态机回溯到逻辑仲裁的输入。
本实施例以UTF-8编码方式为例,详细说明数据解析过程;其他编码方式对数据解析的技术思路与采用UTF-8编码方式进行数据解析的技术思路相同,仅根据各自编码方式的特性适应性调整具体操作而已,故不再赘述。
在伪终端中,单一的TAP序列是进行自动填充的符号,但是连续的TAP序列就是进行查看能够补充集合的符号。双TAP序列不算是TAP序列,但是形式上是由两次TAP构成,因此针对TAP序列,当前审计状态机的WAIT状态为WAIT_TAP;针对双TAP序列,则需要丢弃当前数据,不进行后续处理,审计状态机回溯到逻辑仲裁的输入。也就是说,对于双TAP序列我们不能将审计状态机WAIT状态置为WAIT_TAP,只当作非指令序列处理,并且不记录在数据流CURR中。
本实施例中处理TAP序列时,需要拿到WAIT状态的值。具体是指,在判断是否出现双TAP序列时,如果当前审计状态机的WAIT状态是WAIT_TAP,并且当前正在处理的序列符号是0XD,那么当前输入有很大概率是双TAP序列,不记录在数据流CURR中。经过大量统计,如果当前数据长度大于15,可以作为判定当前序列为双TAP序列的条件。
进一步地,如图7所示,所述基本指令序列处理流程包括步骤52A1-步骤52A4。
步骤52A1:先判断是否为C0指令:若是C0指令,则审计状态机的WAIT状态转移至WAIT_CORRECT并根据序列开始字符判断C0的具体序列符号,若否则继续判断是否为C1指令。通常,序列开始字符为十进制数值、十六进制数值等等。不同规则下,序列开始字符的表达形式不同,根据实际情况进行匹配设置即可,故不再赘述。
审计状态机的WAIT状态为WAIT_CORRECT时,以序列开始字符为十进制数值为例,说明C0指令的具体序列符号的判断过程。具体地,对于C0指令的处理首先需要判定当前处理字符是否可以构成C0指令。C0指令是单字节指令7BIT控制码。本实施例中审计状态机对C0指令的处理,只包含0-31/127范围内的C0指令,如果当前输入内容的长度是1并且处理字符的十六进制内容在0-8,那么可以判定当前输入内容可以做为WAIT_CORRECT状态的转移条件。也就是说,如果指令在0X00到0X07或者指令是0X08,则将WAIT状态置为WAIT_CORRECT。
接下来,就是处理纯C0指令的阶段,其中包括对C0_BS、C0_HT、C0_VT、C0_FF、C0_CR、C0_OTHER、C0_CTLP、C0_ESC指令的处理。
C0_BS(8):当前审计状态机的索引CURSOR的值若大于0,那么将索引CURSOR的值减1,之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁的输入,或者说回溯到逻辑仲裁模块A的输入。若否则直接跳转逻辑仲裁的输入。
C0_HT(9):如果当前逻辑仲裁模块A中输入内容的长度是1,那么WAIT状态转移为WAIT_TAP,并回溯到逻辑仲裁模块A的输入。若否则直接跳转逻辑仲裁的输入。
C0_VT(11)、C0_FF(12):对于这两个指令的处理是一样的,在XTERM中描述为K操作,如果当前索引CURSOR的值大于0,则将当前审计状态机数据流CURR在索引CURSOR的值对应位置之后的内容清空。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C0_CR(13):该指令是将索引CURSOR的值置为0并且清空数据流CURR的内容。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C0_CTLP(16):该指令是将审计状态机的WAIT状态置为WAIT_UP,审计状态机将只接受下行数据直到WAIT状态被置为WAIT_NONE,也就是说当前下行数据处理完以后WAIT状态转移为NONE模式。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C0_OTHER(127):该指令被当作BACKSPACE处理,即将索引CURSOR的值减1,数据流CURR删除最后一个字符。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C0_ESC(27):该指令是标识ESC序列开始的符号,即审计状态机的WAIT状态转到WAIT_ESC。
上述纯C0指令的处理阶段,若未说明数据流CURR或索引CURSOR的变化方式,则表示数据流CURR、索引CURSOR不变。
如果上述状态审计状态机的输入都不能处理,那么将进入C1指令的处理。
步骤52A2:判断是否为C1指令:若是C1指令则根据序列开始字符判断C1的具体指令,若否则继续判断是否为INTERRUPT序列。
以序列开始字符为十进制数值判断C1的具体指令为例。具体地,C1指令的开始字符十进制是128,结束是159。
C1_NEL(131):将索引CURSOR的位置移到下一行行首。当审计状态机描述序列使用一维数据时,这里索引CURSOR的值为0,数据流CURR不变。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C1_HTS(136):将索引CURSOR的位置放到下一个制表位。之后回溯到逻辑仲裁初始状态,即回溯到逻辑仲裁模块A的输入。
C1_DCS(144):设备控制指令。DCS指令开始,可以作为当前审计状态机转移到DCS状态的转移条件,但审计状态机只描述DCS状态,不影响审计内容,所以直接转移到逻辑仲裁模块A的输入。
C1_CSI(155):CSI指令开始,可以作为当前审计状态机转移到CSI状态的转移条件,即审计状态机执行CSI指令处理流程。
C1_OSC(157):OSC指令开始,可以作为当前审计状态机转移到OSC状态的转移条件,即审计状态机转移到OSC状态。本实施例中的审计状态机只描述OSC状态,不影响审计内容,所以直接转移到逻辑仲裁模块A的输入。
上述纯C0指令的处理阶段,若未说明数据流CURR或索引CURSOR的变化方式,则表示数据流CURR、索引CURSOR不变。
如果上述状态审计状态机的输入都不能处理,那么将判断是否为INTERRUPT(242)指令。INTERRUPT(242)指令是一个中断指令。
步骤52A3:判断是否为INTERRUPT指令:若是INTERRUPT指令则当前索引CURSOR的值置为0,数据流CURR内容清空,状态机WAIT状态跳转至WAIT_NONE,若否则审计状态机执行ESC指令处理流程。
步骤52A4:状态机执行ESC指令后继续判断是否为CSI指令或DCS指令:若都不是则回溯到逻辑仲裁的输入,若是DCS指令则回溯到逻辑仲裁的输入,若是CSI指令则状态机执行CSI指令处理流程。
进一步地,如图8所示,所述CSI指令处理流程如下:判断CSI序列输入中是否包含ESC序列,若包含则回溯到CSI序列输入,若不包含则先查找标识符“\x1b”,然后读取标识符“\x1b”之后一个字符,再进行CSI序列函数处理;CSI序列函数处理的过程中根据标识符“\x1b”之后读取到的具体字符,审计状态机跳转相应的状态后回溯到CSI序列输入。如果匹配不到任何CSI符号,将进行回溯到第一个ALWAYS模块,也是就是回溯到逻辑仲裁模块A的输入。
若当前CSI输入字符仍然是ESC序列则判定为连续CSI指令,审计状态机自旋,即继续输入到CSI指令处理流程的输入;若不是连续的CSI指令则获取CSI序列的Ps参数,作为CSI序列函数的入参。
CSI指令的参数包括Ps参数、Pm参数、Pt参数三类P参数。本实施例中仅需要使用Ps参数,不涉及其他两类参数。因此先查找标识符“\x1b”,然后读取之后一个字符,若该字符为数字即可判定为Ps参数,若该字符不为数字则作为CSI序列函数处理或非VT指令符号处理。
若在标识符“\x1b”之后,读取字符为“?”符号,则审计状态机继续读取后续字符并输入到CSI序列函数处理流程的输入继续处理。此处的“后续字符”包括H、J、K、L、N,除了K符号,其他符号都直接保留处理。对于K符号,若当前索引CURSOR的值大于0,则将数据流CURR中索引CURSOR光标所在位置之后的内容清空。
若在标识符“\x1b”之后,读取字符为“>”符号,则审计状态机忽略当前序列函数,然后回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“A”符号,则WAIT状态置为WAIT_UP,即审计状态机执行逻辑上处理,并且当前数据流CURR置空、当前索引CURSOR的值置为0,然后回溯到CSI指令处理流程的输入。在执行逻辑上处理时,则对历史审计数据C8进行头出栈,若此次出栈数据不为空,则将当前数据流CURR覆盖为此次出栈数据,并将当前索引CURSOR的值置为出栈数据长度;若历史审计数据C8为0,则回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“B”符号,则WAIT状态置为WAIT_DOWN,审计状态机执行逻辑下处理,然后回溯到CSI指令处理流程的输入。在执行逻辑下处理时,则对历史审计数据C8进行尾出栈,若此次出栈数据不为空,则将当前数据流CURR覆盖为此次出栈数据,并将当前索引CURSOR的值置为出栈数据长度;若历史审计数据C8为0,则回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“C”符号,则状态机WAIT状态置为WAIT_RIGHT,状态机执行逻辑右处理,即索引值CURSOR的值加1,然后回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“D”符号,则状态机WAIT状态置为WAIT_LEFT,状态机执行逻辑左处理,即索引值CURSOR的值减1,然后回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“E”或“F”符号,则状态机忽略当前序列函数,然后回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“K”符号,且当前索引CURSOR的值大于0,则将数据流CURR中索引CURSOR光标位置之后的内容清空,然后回溯到CSI指令处理流程的输入;若索引CURSOR的值为0则回溯到CSI指令处理流程的输入。
若在标识符“\x1b”之后,读取字符为“P”符号,则将数据流CURR中索引CURSOR所在位置之后的Ps个内容删除,然后回溯到CSI指令处理流程的输入。此处的Ps的数值即为Ps参数的数值。若索引CURSOR的值为0则回溯到CSI指令处理流程的输入。
对于非VT序列指令的符号,将直接拼接到数据流CURR中,且将拼接符号的长度数值加到索引CURSOR的值上。比如说中文字符等未能处理的非VT序列指令都进行此操作。
步骤6:结果输出。
输出前还需要判断审计状态机的WAIT状态,若WAIT状态不为WAIT_NONE则自旋等待,直至WAIT状态转移为WAIT_NONE;若多次尝试后WAIT状态仍然无法转移为WAIT_NONE则强制跳转;若自旋等待出现超时,则发出报警信号W3进行异常报警。当然,通常审计状态机的CLK时钟等待一段时间再进行WAIT状态判断,若多次尝试后WAIT状态仍然无法转移为WAIT_NONE则作为超时处理,发出报警信号W3。
接下来,因为不同编码方式是输出模块会造成输出内容错乱,所以组合逻辑输出模块G对接收到的审计内容数据包C6进行合法性判断后,才会将其输出;若不合法还会尝试其他编码方式进行二次编码。例如,本实施例中用户输入是采用UTF-8的编码方式,因此此时组合逻辑输出模块G对审计内容数据包C6进行UTF-8合法性判断,若不合法则使用GBK编码方式尝试二次编码。
合法性验证成功的审计结果C7一路输出至输出审计内容寄存器N3进行本地保存、另一路直接输出至审计状态机的外部。
本实施例所述的终端审计方法是在终端后台对用户输入进行实时的命令审计,不影响正常会话过程,但出现异常时便能较快反馈异常情况并做出命令阻断、会话阻断等与该异常情况对应的响应。本实施例所述终端审计方法还可应用于终端协议操作权限控制等应用场景。
本实施例的其他部分与上述实施例1-4任一项相同,故不再赘述。
实施例6:
本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如实施例1所涵盖的一种或多种具体的终端审计方法。
计算机可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
例如,该计算机可读存储介质可以为电子设备的存储器,该存储器中存储的程序指令可由处理器执行以完成上述的基于VT序列的终端审计方法。
又例如,该计算机可读存储介质可以为计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的基于VT序列的终端审计方法的代码部分。
实施例7:
本实施例提供了一种电子设备,如图9所示,该电子设备包括处理器100、存储器200、总线300和通信接口400,存储器200和通信接口400通过总线300连接;处理器100用于执行存储器200中存储的计算机程序以实现实施例1所涵盖的一种或多种具体的终端审计方法。
总线300可以是BUS总线、ISA总线、PCI总线或EISA总线等,图9中仅用一个双向箭头示意总线,并非对总线数量或类型的限制。
处理器100可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器100中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器100可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecific IntegratedCircuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化,均落入本发明的保护范围之内。
Claims (7)
1.一种基于VT序列的终端审计方法,根据协议的命令审计需求制定审计业务流程并执行审计;其特征在于,所述方法通过状态机对用户输入进行包括前置处理、数据校验、逻辑仲裁、结果输出多个流程的数据处理,实现终端审计;
所述终端审计方法具体是指:在同一审计周期中,状态机接收到包含交互数据和VT序列指令的用户输入,先进行前置处理,再结合当前周期的输入状态变量进行数据校验;数据校验合格后,包含交互数据和VT序列指令的待解析数据通过逻辑仲裁进行解析,且解析时仅在逻辑仲裁流程内自身回溯,解析后获得新的状态变量以及与新的状态变量关联的新的审计内容数据;新的审计内容数据形成最终的审计结果后保存并输出状态机,完成当前周期的审计;解析后获得的新的状态变量是当前周期的输出状态变量也是次周期的输入状态变量,次周期的输入状态变量与次周期的用户输入组合后用于次周期的审计;
审计过程中若出现超时、状态异常的情况则发出报警信号进行异常报警;
所述逻辑仲裁时,先对校验合格的待解析数据中未解析的各组编码进行窥探,根据各组编码的编码格式选择对应的编码解析方法,再基于自身回溯的方式采用选择的编码解析方法对校验合格的待解析数据进行解析,获得新的审计内容数据和新的状态变量;
为用户输入提供两种输入接口,一个输入接口用于接收协议的REQUEST数据并将其记为上行数据,另一个输入接口用于接收协议的RESPONSE数据并将其记为下行数据;
所述数据校验时,接收当前周期的输入状态变量,先判断状态机DONE状态的值,若DONE状态的值为0则表明状态机正在处理数据,丢弃当前周期输入的上行数据、下行数据,若DONE状态的值为1则接收当前周期输入的上行数据、下行数据;
对于接收到的上行数据,直接进行内容校验;
对于接收到的下行数据,需先判断状态机WAIT状态,若WAIT状态为NONE模式则不再接收新的下行数据并对当前周期已经接收的下行数据进行内容校验,若WAIT状态为NONE模式以外的其他状态,则持续接收新的下行数据,直至WAIT状态跳转为NONE模式;接下来进行VIM状态判断,若VIM状态为ESC模式则对输入的下行数据持续扫描,直至接收到序列1049l时,状态机VIM状态从ESC模式转移至NONE模式,更新输入状态变量;若持续扫描超时则丢弃当前周期接收到的下行数据;
所述内容校验是指对接收到的上行数据、下行数据进行长度校验、编码校验,输出内容校验合格的数据等待后续的逻辑仲裁,丢弃内容校验不合格的所有数据;输出更新后的状态变量等待后续的逻辑仲裁。
2.根据权利要求1所述的一种基于VT序列的终端审计方法,其特征在于,所述逻辑仲裁时,采用中文编码解析方法、英文编码解析方法对校验合格的待解析数据进行解析;
所述中文编码解析方法将解析后的内容添加到数据流CURR中且索引CURSOR的索引值加1;
所述英文编码解析方法先判断是作为连续的TAP符号处理还是作为基本指令符号处理,若作为连续的TAP符号处理则不记录在数据流CURR中且回溯到逻辑仲裁的输入,若作为基本指令符号处理则执行基本序列指令处理流程,根据解析的指令转移状态机的状态并保存新的状态变量。
3.根据权利要求2所述的一种基于VT序列的终端审计方法,其特征在于,所述基本序列指令处理流程如下:
先判断是否为C0指令:若是C0指令则状态机WAIT状态转移至WAIT_CORRECT并根据序列开始字符判断C0指令的具体指令内容,若否则继续判断是否为C1指令;
判断是否为C1指令:若是C1指令则根据序列开始字符判断C1指令的具体指令内容,若否则继续判断是否为INTERRUPT序列;
判断是否为INTERRUPT序列:若是INTERRUPT序列则当前索引CURSOR的索引值置为0,数据流CURR内容清空,状态机WAIT状态跳转至WAIT_NONE,若否则状态机执行ESC指令处理流程;
状态机执行ESC指令后继续判断是否为CSI序列或DCS序列:若都不是则回溯到逻辑仲裁的输入,若是DCS序列则回溯到逻辑仲裁的输入,若是CSI序列则状态机执行CSI指令处理流程。
4.根据权利要求3所述的一种基于VT序列的终端审计方法,其特征在于,所述CSI指令处理流程如下:判断CSI序列输入中是否包含ESC序列,若包含则回溯到CSI序列输入,若不包含则先查找标识符“x1b”,然后读取之后一个字符,再进行CSI序列函数处理;CSI序列函数处理的过程中根据标识符“x1b”之后读取到的具体字符,状态机跳转相应的状态后回溯到CSI序列输入。
5.根据权利要求1-4任一项所述的一种基于VT序列的终端审计方法,其特征在于,所述结果输出中,解析后获得的新的审计内容数据通过合法性判断后本地保存并向状态机外部输出;向状态机外部输出前还需要判断状态机WAIT状态,若WAIT状态不为NONE则自旋等待,直至WAIT状态转移为NONE;若多次尝试后WAIT状态仍然无法转移为NONE则强制跳转;若自旋等待出现超时,则发出报警信号进行异常报警。
6.一种审计状态机,用于实现如权利要求1所述的终端审计方法;所述状态机包括输入数据接口模块、组合逻辑输入模块F、状态转移逻辑寄存器M2、组合逻辑输出模块G,其特征在于,还包括逻辑仲裁模块A;
所述输入数据接口模块,用于接收包含交互数据和VT序列指令的用户输入,并将用户输入前置处理后发送至组合逻辑输入模块F;
所述组合逻辑输入模块F,用于接收前置处理后的用户输入以及从状态转移逻辑寄存器M2中获取当前周期的输入状态变量,结合当前周期的输入状态变量对前置处理后的用户输入进行数据校验,数据校验合格的待解析数据发送至逻辑仲裁模块A;
所述逻辑仲裁模块A,用于采用自身回溯的方式解析包含交互数据和VT序列指令的待解析数据,获得新的状态变量以及与新的状态变量关联的新的审计内容数据,新的状态变量发送至状态转移逻辑寄存器M2,新的审计内容数据发送至组合逻辑输出模块G;
所述状态转移逻辑寄存器M2,用于缓存每个审计周期的输入状态变量、输出状态变量;
所述组合逻辑输出模块G,用于将接收到的新的审计内容数据形成最终的审计结果发送本地保存并输出状态机。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述终端审计方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310322820.1A CN116028313B (zh) | 2023-03-30 | 2023-03-30 | 一种基于vt序列的终端审计方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310322820.1A CN116028313B (zh) | 2023-03-30 | 2023-03-30 | 一种基于vt序列的终端审计方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116028313A CN116028313A (zh) | 2023-04-28 |
CN116028313B true CN116028313B (zh) | 2023-06-09 |
Family
ID=86070912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310322820.1A Active CN116028313B (zh) | 2023-03-30 | 2023-03-30 | 一种基于vt序列的终端审计方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116028313B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359251A (zh) * | 2018-09-26 | 2019-02-19 | 江苏神州信源系统工程有限公司 | 应用系统使用情况的审计预警方法、装置和终端设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7779113B1 (en) * | 2002-11-25 | 2010-08-17 | Oracle International Corporation | Audit management system for networks |
CN104135389B (zh) * | 2014-08-14 | 2017-11-14 | 北京华电天益信息科技有限公司 | 一种基于代理技术的ssh协议运维审计系统的审计方法 |
CN110673873B (zh) * | 2019-10-09 | 2022-11-01 | 成都安恒信息技术有限公司 | 一种基于审计的软件发布方法 |
CN111461668A (zh) * | 2020-04-08 | 2020-07-28 | 国网天津市电力公司 | 一种基于流程自动化技术的数字化审计系统及方法 |
CN112165463B (zh) * | 2020-09-14 | 2023-04-18 | 杭州安恒信息技术股份有限公司 | 审计数据的生成方法、装置、设备和计算机可读存储介质 |
CN114244556B (zh) * | 2021-11-05 | 2023-11-10 | 北京天融信网络安全技术有限公司 | 一种协议代理方法及装置 |
-
2023
- 2023-03-30 CN CN202310322820.1A patent/CN116028313B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359251A (zh) * | 2018-09-26 | 2019-02-19 | 江苏神州信源系统工程有限公司 | 应用系统使用情况的审计预警方法、装置和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN116028313A (zh) | 2023-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9633097B2 (en) | Method and apparatus for record pivoting to accelerate processing of data fields | |
US20190079984A1 (en) | Method and Apparatus for Accelerated Record Layout Detection | |
KR102128571B1 (ko) | 실시간 데이터플로우 프로그래밍을 위한 효율적인 상태 머신 | |
CN111831538B (zh) | 调试方法、装置以及存储介质 | |
US9870502B2 (en) | Apparatus for, a method of, and a network server for detecting data patterns in a data stream | |
CN107015948B (zh) | 一种日志信息格式化方法及系统 | |
US20230281385A1 (en) | Fpga-based fast protocol decoding method, apparatus, and device | |
CN110210212A (zh) | 一种数据处理方法、装置以及相关设备 | |
CN108959199A (zh) | 一种日志的突出显示方法、装置、存储介质及安卓终端 | |
CN114760369A (zh) | 一种协议元数据提取方法、装置、设备及存储介质 | |
CN110147431A (zh) | 关键词匹配方法、装置、计算机设备和存储介质 | |
US7724684B2 (en) | System and method for designing and implementing packet processing products | |
CN116028313B (zh) | 一种基于vt序列的终端审计方法、系统及存储介质 | |
CN117610555A (zh) | 一种字符串表达式处理方法、装置、设备及存储介质 | |
CN114745452B (zh) | 设备管理方法、装置及电子设备 | |
CN115630706A (zh) | 量子计算机调用方法、装置和电子设备 | |
CN113760291B (zh) | 日志输出的方法和装置 | |
CN114330363A (zh) | 一种基于漏洞语义智能解析的工控协议漏洞挖掘方法 | |
CN109725932B (zh) | 一种应用组件的说明文档生成方法和装置 | |
CN108694046B (zh) | 容器装配方法和装置 | |
CN110781647A (zh) | 一种基于Flink实现数据格式校验的方法 | |
CN113220287B (zh) | 计算机自动编程方法、系统、终端及存储介质 | |
CN117235052B (zh) | 一种数据库语句处理方法和装置 | |
CN115361456B (zh) | 一种数据报文的处理方法、装置及系统 | |
CN108563430B (zh) | 一种弱口令暴力破解的开发系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |