一种RDP明文数据解析方法及装置转让专利

申请号 : CN201510233889.2

文献号 : CN106209954B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶晓舟程维佳樊皓郑艳伟

申请人 : 中国科学院声学研究所北京中科智网科技有限公司

摘要 :

本发明涉及一种RDP明文数据解析方法及装置。该RDP明文数据解析方法首先获取一条完整的RDP明文数据报文。然后判定该完整RDP明文数据报文的类型。最后对不同类型的RDP明文数据报文进行差异化处理,提取客户端与服务端之间的交互信息。本发明节省了RDP明文数据解析时间,能够更快地生成日志,提高了用户体验。本发明能够应用于数据采集审计领域。

权利要求 :

1.一种RDP明文数据解析方法,其特征在于,包括:

步骤a,获取一条完整的RDP明文数据报文;其中,步骤a可以包括:步骤a1,接收RDP明文数据信息,并与缓存数据形成新数据报文;其中,该RDP明文数据信息包括RDP明文数据长度、传输方向、RDP数据内容;

步骤a2,判定该新数据报文的封装类型;其中,该封装类型包括未知封装、RDP4封装、RDP5封装;

步骤a3,对不同封装类型的数据报文采用不同处理方式,得到相应的完整RDP数据报文长度;

步骤a4,判断所述RDP明文数据长度是否大于等于所述完整RDP数据报文长度,若大于等于,则通过该新数据报文得到所述一条完整RDP明文数据报文;

步骤b,判定该完整RDP明文数据报文的类型;

步骤c,对不同类型的RDP明文数据报文进行差异化处理,提取客户端与服务端之间的交互信息。

2.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,在所述步骤c之后还包括:步骤d,将所述交互信息封装到固定格式的日志中。

3.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,在所述步骤a之前还包括接收RDP明文数据的步骤,且所述步骤a是通过对接收到的该RDP明文数据进行拆分和/或拼接方式来获取到所述一条完整的RDP明文数据报文。

4.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,所述步骤c还包括,依据所述RDP明文数据报文类型过滤掉无需信息提取的RDP数据报文的步骤。

5.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,所述新数据报文的初始封装为未知封装。

6.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,根据所述新数据报文的首字节,来判定该新数据报文是否为RDP4封装或RPD5封装;

若所述新数据报文的首字节为03,则该新数据报文封装为RDP4封装;若所述新数据报文首字节的最后两位为00,则该新数据报文封装为RDP5封装。

7.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,所述步骤b还包括,步骤b1,判定所述完整RDP明文数据报文为RDP4数据报文;

步骤b2,判断该RDP4明文数据报文是否为连接认证阶段数据报文;

步骤b3,如果是连接认证阶段数据报文,则提取该连接认证阶段数据报文的MCS层初始化连接数据单元以及MCS层连接确认数据单元的通道号与通道名称之间的对应关系;如果不是连接认证阶段数据报文,则判断该RDP数据报文的MCS层通道号是否为虚拟通道对应的通道号;

步骤b4,如果该MCS层通道号是虚拟通道对应的通道号,则该RDP明文数据报文类型为通道格式类型数据报文,将该通道格式数据报文去头部再封装,进行信息提取;如果该MCS层通道号不是虚拟通道对应的通道号,则提取客户端登陆注册数据单元以及字段为功能数据单元的数据单元类型中的信息。

8.如权利要求1所述的一种RDP明文数据解析方法,其特征在于,所述步骤b还包括:步骤b5,判定所述完整RDP明文数据报文是否为RDP5报文;

步骤b6,若确认该RDP明文数据报文为RDP5报文,则将该RDP5报文去除头部再封装,进行信息提取。

9.一种RDP明文数据解析装置,其特征在于,包括:

RDP完整数据获取模块,用于获取一条完整的RDP明文数据报文;其中,可以包括:接收RDP明文数据信息,并与缓存数据形成新数据报文;其中,该RDP明文数据信息包括RDP明文数据长度、传输方向、RDP数据内容;

判定该新数据报文的封装类型;其中,该封装类型包括未知封装、RDP4封装、RDP5封装;

对不同封装类型的数据报文采用不同处理方式,得到相应的完整RDP数据报文长度;

判断所述RDP明文数据长度是否大于等于所述完整RDP数据报文长度,若大于等于,则通过该新数据报文得到所述一条完整RDP明文数据报文;

RDP数据类型判定模块,用于判定该完整RDP明文数据报文的类型;

交互数据提取模块,用于对不同类型的RDP明文数据报文进行差异化处理,以提取客户端与服务端之间交互信息。

说明书 :

一种RDP明文数据解析方法及装置

技术领域

[0001] 本发明涉及计算机领域,尤其涉及数据采集审计领域。

背景技术

[0002] 远程桌面协议(The Remote Desktop Protocol,简称RDP)是一个多通道(multi-channel)协议,可以让用户PC机连接控制另一台Windows操作系统的电脑。RDP支持虚拟通道来连续传送客户端与服务器之间数据交流,例如来自服务器的显示数据,以及加密了的客户端的鼠标、键盘数据。以RDP协议为基础的远程桌面可以让用户可靠地使用远程计算机上的所有应用程序、文件和网络资源,而无需执行本地程序。
[0003] 目前对于RDP协议的研究只能基于RDP协议前身相关的技术文档或是分析已有的rdesktop源代码得到初步的资料,再使用反向工程的分析方法,通过获取Windows终端启动和正常工作时的通讯数据包的明文来分析。该协议于2009年3月正式提供文档说明,为RDP协议分析提供了方便。
[0004] 随着互联网的快速发展,网络安全问题也越来越多,而完备的审计系统是解决当前网络安全问题的重要因素。审计系统可以通过分析日志,及时发现网络系统、应用系统中的非法用户、非法访问、异常操作、异常状态等安全信息,及时发现敏感信息的泄密轨迹,还原信息泄密的历史过程,追责定位,提高各种管理系统的安全水平。
[0005] 现有技术是对接收到的所有RDP数据都进行分析,而RDP数据在一次传输过程中可能会传输多个数据报文或者仅传输数据报文的一部分,这样直接地对接收到的数据报文进行分析将会导致提取错误信息。同时,对大量数据进行分析所需时间过长,生成日志时间过慢。由此导致审计系统在对生成的日志进行数据分析时,无法快速准确地获取到用户登陆及操作信息,进而无法快速准确地帮助审计部门完成数据分析和定位。

发明内容

[0006] 本发明提供了一种解决以上问题的RDP明文数据解析方法及装置。
[0007] 在第一方面,本发明提供了一种RDP明文数据解析方法。该方法首先获取一条完整的RDP明文数据报文。然后判定该完整RDP明文数据报文的类型。最后对不同类型的RDP明文数据报文进行差异化处理,提取客户端与服务端之间的交互信息。
[0008] 优选地,本发明还包括将上述交互信息封装到固定格式日志中的步骤。
[0009] 优选地,本发明通过对接收到的RDP明文数据进行拆分和/或拼接的方式来获取一条完整的RDP明文数据报文。
[0010] 优选地,上述获取一条完整的RDP明文数据报文的步骤包括:接收RDP明文数据信息,并与缓存数据形成新数据报文;其中,该RDP明文数据信息包括RDP明文数据长度、传输方向、RDP数据内容;判定该新数据报文的封装类型;其中,该封装类型包括未知封装、RDP4封装、RDP5封装;对不同封装类型的数据报文采用不同处理方式,得到相应的完整RDP数据报文长度;判断所述RDP明文数据报文长度是否大于等于所述完整RDP数据报文长度,若大于等于,则通过该新数据报文中得到一条完整RDP明文数据报文。
[0011] 优选地,根据上述新数据报文的首字节,来判定该新数据报文是否为RDP4封装或RPD5封装。若所述新数据报文的首字节为03,则该新数据报文封装为RDP4封装。若所述新数据报文首字节的最后两位为00,则该新数据报文封装为RDP5封装。
[0012] 优选地,上述判定完整RDP明文数据报文类型的步骤包括:判定该完整RDP明文数据报文为RDP4数据报文;判断该RDP4明文数据报文是否为连接认证阶段数据报文;如果是连接认证阶段数据报文,则提取该连接认证阶段数据报文的MCS层初始化连接数据单元以及MCS层连接确认数据单元的通道号与通道名称之间的对应关系;如果不是连接认证阶段数据报文,则判断该RDP数据报文的MCS层通道号是否为虚拟通道对应的通道号;如果该MCS层通道号是虚拟通道对应的通道号,则该RDP明文数据类型为通道格式类型数据报文,将该通道格式数据报文去头部再封装,进行信息提取;如果该MCS层通道号不是虚拟通道对应的通道号,则提取客户端登陆注册数据单元以及字段为功能数据单元的数据单元类型中的信息。
[0013] 优选地,上述判定完整RDP明文数据报文类型的步骤包括:判断上述完整RDP明文数据报文是否为RDP5报文;若确认该RDP明文数据报文为RDP5报文,则将该RDP5报文去除头部再封装,进行信息提取。
[0014] 在第二方面,本发明提供了一种RDP明文数据解析装置。该装置包括RDP完整数据获取模块、RDP数据类型判定模块、交互数据提取模块。该RDP完整数据获取模块用于获取一条完整的RDP明文数据报文。该RDP数据类型判定模块用于判定该完整RDP明文数据报文的类型。该交互数据提取模块用于对不同类型的RDP明文数据报文进行差异化处理,以提取客户端与服务端之间交互信息。
[0015] 本发明通过对RDP数据进行拆分与拼接的操作,保证了每次处理一条完整的RDP数据报文,进而使审计系统获取到准确的日志信息。同时,由于本发明在RDP解析过程中,过滤掉了一些不需要进行信息提取的数据包,节省了RDP解析时间,更快地生成日志,提高了用户体验。

附图说明

[0016] 图1为本发明一个实施例的解析RDP明文数据及日志封装方法流程图;
[0017] 图2为本发明一个实施例的获取完整RDP明文数据报文流程图;
[0018] 图3为本发明一个实施例的判断RDP明文数据报文格式类型的流程图;
[0019] 图4为本发明一个实施例的解析RDP明文数据及日志封装系统框图。

具体实施方式

[0020] 下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
[0021] 图1为本发明一个实施例的解析RDP明文数据及日志封装方法流程图。
[0022] 在步骤S101,对输入的RDP明文数据进行处理,以获取一条完整的RDP明文数据报文。
[0023] 一个例子中,对输入的RDP明文数据进行拆分和/或拼接,以获取一条完整的RDP明文数据报文,便于解析。
[0024] 在步骤S102,判定该完整RDP明文数据报文的类型,依据该类型过滤不需要进行信息提取的RDP明文数据报文。
[0025] 具体地,RDP明文数据报文类型包括RDP5格式数据报文类型、RDP4格式数据报文类型;其中,RDP4格式数据报文包括连接认证阶段数据报文及非连接认证阶段的RDP4数据报文,而该非连接认证阶段的RDP4数据报文包括Channel格式数据报文(通道格式数据报文)、非Channel格式的RDP4数据报文(非通道格式的RDP4数据报文)。
[0026] 需要提取信息的RDP数据报文包括:RDP5数据报文、连接认证阶段数据报文中的MCS Connect Init ial PDU(MCS层初始化连接数据单元)和MCS Connect Response PDU(MCS层连接确认数据单元)、Channel格式数据报文、非Channel格式RDP4数据报文中的Cl ient Info PDU(客户端登陆注册数据单元)和字段为DATA PDU(功能数据单元)的PDU type(数据单元类型)。
[0027] 在步骤S103,对不同类型的RDP明文数据报文进行差异化处理,以提取客户端与服务端之间交互的功能数据。
[0028] 具体地,上述需要提取的功能数据包括:登录信息、鼠标键盘等操作的输入数据、图形界面等输出数据、虚拟通道传输的打印机数据、剪贴板内容数据、声音数据等。
[0029] 在本发明的一个优选实施例中,包括步骤S104,即将上述步骤S103提取到的功能数据封装到固定格式的日志中。
[0030] 在本发明的一个实施例中,上述固定格式的日志内容包括:单字节(即1字节)的日志标识起始位,多字节(如4字节)的日志长度,多字节(n字节)的数据,单字节(即1字节)的日志标识结束位。较佳地,上述n字节的数据包括:30字节的登陆时间、2字节的源端口、2字节的目的端口、4字节的源IP、变量数据ID、变量会话ID、8字节的数据详细类型、变量域名、变量登陆名、变量登陆密码、变量提取的数据类型、变量提取的数据,如下表1所示:
[0031]
[0032] 表1
[0033] 较佳地,上述一条日志所包含的信息包括一次或多次客户端的请求以及该请求所对应的服务端响应;其中,该请求与响应之间的对应是根据本次请求开始到下次请求之前的所有请求与响应之间的对应。
[0034] 图2是本发明一个实施例的获取完整RDP明文数据报文流程图。
[0035] 在步骤S201,判断是否有RDP明文数据信息输入,若有则转到步骤S202,否则流程结束。
[0036] 具体地,上述输入的RDP明文数据信息包括RDP明文数据长度、传输方向(是客户端到服务端还是服务端到客户端)以及RDP明文数据内容。
[0037] 在步骤S202,接收上述RDP明文数据信息,并与缓存数据形成新的数据报文。
[0038] 在步骤S203,判定上述新数据报文(即当前数据报文)的封装类型,若未知该当前数据的封装类型,则转到步骤S204;若已知该当前数据的封装类型,且其封装类型为RDP4封装,则转到步骤S205;若已知该当前数据的封装类型,且其封装类型为RDP5封装,则转到步骤S210。
[0039] 需要说明的是,初始数据报文封装类型为未知封装类型。
[0040] 具体地,设置一个变量flag,flag表示当前数据报文封装类型标志;若flag=0,表示未知当前数据报文封装类型;若flag=1,表示当前数据报文封装类型为RDP4封装;若flag=2,表示当前数据报文封装类型为RDP5封装;flag初始值为0。
[0041] 在步骤S204,根据当前数据的首字节,判断其是RDP4封装或是RDP5封装,然后转到步骤S203。
[0042] 具体地,若当前数据的首字节为03,则该当前数据封装为RDP4封装,且其封装格式为TCP层、ISO层、MCS层、SEC层、RDP层;若当前数据首字节的最后两位为00,则该当前数据封装为RDP5封装,且其封装格式为TCP层、SEC层和RDP5层。
[0043] 在步骤S205,判断该当前数据(封装类型为RDP4封装)长度是否大于等于4字节,若大于等于4字节则转到步骤S206,否则转到步骤S201;其中,该当前数据长度信息由步骤S202得到。
[0044] 需要说明的是,在RDP4格式封装中,数据的前4个字节是TCP层数据,且该4个字节的最后两个字节表示一条RDP完整数据报文的长度。
[0045] 在步骤S206,从该当前数据的起始4字节中,获取到一条完整的RDP数据报文的长度信息。
[0046] 在步骤S207,判断该当前数据长度是否大于等于完整RDP数据报文长度,若满足条件则转到步骤S208,否则转到步骤S201;其中,当前数据长度由步骤S202得到,RDP完整数据报文长度由步骤S206得到。
[0047] 在步骤S208,依据上述完整RDP数据报文长度,从该当前数据报文中获取到一条完整RDP数据报文,并设置f lag=0。
[0048] 在步骤S209,判断剩余数据报文长度是否大于0,若大于0,则转到步骤S204,否则转到步骤S201。
[0049] 在步骤S210,判断上述当前数据长度是否大于等于3字节,若大于等于3字节则转到步骤S211,否则转到步骤S201;其中,该当前数据长度信息由步骤S202得到。
[0050] 需要说明的是,在RDP5格式封装中,数据的前两个或三个字节为TCP层数据;若该TCP层数据第二个字节的首位为1,则表示该RDP完整数据报文长度信息在该当前数据的第二、第三字节中,否则表示该长度信息在该当前数据的第二个字节中。
[0051] 在步骤S211,从该当前数据的起始3字节中,获取到一条完整的RDP数据报文的长度信息,然后转到步骤S207。
[0052] 图3是本发明一个实施例的判断RDP明文数据报文格式类型的流程图。
[0053] 在步骤S301,判断是否有完整的RDP明文数据报文输入,若有则转到步骤S302,否则流程结束。
[0054] 较佳地,上述是否有完整RDP明文数据报文输入的判定方法可通过步骤S201至步骤S211获得,具体参见流程图2。
[0055] 在步骤S302,判断该完整RDP明文数据报文是否为RDP4报文,若是则转到步骤S303,否则转到步骤S308。
[0056] 具体地,通过判断该完整RDP明文数据报文的首字节是否为03来判断该数据报文是否为RDP4数据报文;若该完整RDP明文数据报文首字节为03则该数据报文为RDP4数据报文,否则不是RDP4数据报文。
[0057] 在步骤S303,判断该完整RDP明文数据报文是否包含ISO层、MCS层、SEC层头部的全部;若包含ISO层、MCS层、SEC层头部的全部则转到步骤S305,若仅包含ISO层、MCS层、SEC层头部的一个或者两个或者均不包含,则转到步骤S304。
[0058] 具体地,上述判断完整RDP明文数据报文是否包含ISO层、MCS层、SEC层头部的方法是,将该完整RDP数据报文与现有技术的RDP格式文档进行比较,若该完整RDP数据报文满足现有RDP格式文档中ISO层、MCS层、SEC层头部格式,则说明包含ISO层、MCS层、SEC层头部的全部。
[0059] 在步骤S304,确认该完整RDP明文数据报文类型为连接认证阶段数据报文,提取该连接认证阶段数据报文中MCS Connect Initial PDU(MCS层初始化连接数据单元)的通道号和通道名称之间的对应关系信息,以及提取该连接认证阶段数据报文中MCS Connect Response PDU(MCS层连接确认数据单元)的通道号和通道名称之间的对应关系信息,然后转到步骤S301。
[0060] 需要说明的是,MCS通道号主要有虚拟通道对应的通道号、RDP4通道号(即I/O通道号);其中,RDP4通道号包括用户通道号及其他RDP4通道号,且I/O通道号、用户通道号表示的是通道为传输RDP4数据报文的通道。
[0061] 具体地,将上述连接认证数据报文与现有的RDP格式文档进行比较,并从该连接认证数据报文中得到其MCS Connect Initial PDU通道号和通道名称之间的对应关系,以及MCS Connect Response PDU通道号和通道名称之间的对应关系。
[0062] 在步骤S305,判定该RDP数据报文的MCS层通道号是否为虚拟通道对应的通道号;若该MCS层通道号为虚拟通道对应的通道号,则转到步骤S307;若该MCS层通道号为RDP4通道号(即I/O通道号,且该RDP4通道号包括用户通道号及其他RDP4通道号),则转到步骤S306。
[0063] 具体地,在该完整RDP数据报文中,首先跳过4字节的TCP层数据和3字节的ISO层数据,然后就是MCS层数据,而该MCS层数据的第四、第五字节即为MCS层通道号。
[0064] 此外,将该RDP数据报文与现有的RDP格式文档进行比较,并根据该RDP数据报文的MCS层通道号,即可判定该MCS层通道号是否为虚拟通道对应的通道号。
[0065] 在步骤S306,确认该RDP数据报文类型为非Channel格式的RDP4数据报文;其中,Client Info PDU(客户端登陆注册数据单元)和字段为DATA PDU(功能数据单元)的PDU type(数据单元类型)数据报文需要进行信息提取,然后转到步骤S301。
[0066] 具体地,对照现有RDP格式文档,并根据该RDP4数据报文的SEC层数据中加密标志字段,来判定该RDP数据报文是否为Client Info PDU(客户端登陆注册数据单元)。
[0067] 此外,RDP4数据报文的RDP层数据前六个头字节中包含了PDU type(数据单元类型)字段,该PDU type包括:DEMAND AVCTIVE PDU(要求激活数据单元)、CONFIRM ACTIVE PDU(确认激活数据单元)、DEACTIVATE ALL PDU(解散数据单元)以及DATA PDU(功能数据单元);其中,DATA PDU是在正常会话过程中发送和接收信息,即需要获取的信息。因此,将该RDP数据报文与现有RDP格式文档进行对照,获取该RDP数据报文中字段为DATA PDU的PDU type信息,并将其提取出来。
[0068] 在步骤S307,确认该RDP数据报文类型为Channel格式类型数据报文,将其去除头部后再封装,进行信息提取,然后转到步骤S301。
[0069] 在步骤S308,判断该完整RDP数据报文的首字节最后两位是否为00,如果是则转到步骤S309,否则转到步骤S301;此步骤是用来判断该完整RDP数据报文是否为RDP5数据报文。
[0070] 在步骤S309,确认该RDP数据报文类型为RDP5格式数据报文,将其去除头部后再封装,进行信息提取,然后转到步骤S301。
[0071] 在本发明的上述实施例中,对于不同类型的数据报文进行的是差异化处理(即不同的处理);其中,RDP5格式数据报文、Channel格式数据报文、可直接去除头部各层封装获取功能数据;而非Channel格式RDP4数据报文中仅对Client Info PDU和字段为DATA PDU的PDU type的报文进行处理,且处理时不仅需要跳过头部各层封装,还要去除不需要提取的字段。此外,在Client Info PDU数据报文中可获取用户相关登录信息的缓存信息;RDP5数据报文和PDU type字段为DATA PDU的数据报文可获取到客户端鼠标键盘操作信息和服务端返回的图形界面数据等信息;Channel格式数据报文可获取到传输的打印机设备数据、剪贴板数据、声音数据等。
[0072] 图4是本发明一个实施例的解析RDP明文数据及日志封装系统框图。在该系统中,客户端410与服务端420进行信息交互,且该交互信息是以RDP明文数据形式存在;RDP解析模块430用于获取该RDP明文数据,并对该明文数据进行解析,以得到客户端410与服务端420之间交互的功能数据。
[0073] 该RDP解析模块430包括RDP完整数据获取模块431、RDP数据类型判定模块432、交互数据提取模块433;较佳地,该RDP解析模块430还包括封装模块434。
[0074] 该RDP完整数据获取模块431用于对输入的RDP数据进行处理,以获取一条完整的RDP数据报文。
[0075] 该RDP数据类型判定模块432用于判定该完整RDP数据报文的类型,并依据该类型过滤不需要进行信息提取的RDP数据报文。
[0076] 该交互数据提取模块433用于对不同类型的RDP数据报文进行差异化处理,以提取客户端与服务端之间交互的功能数据。
[0077] 该封装模块434用于将上述提取到的功能数据封装到固定格式的日志中。
[0078] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。