一种TLS通道加密的RDP协议明文数据采集系统及方法
技术领域
本发明涉及数据采集安全审计领域,特别涉及一种TLS通道加密的RDP协议明文数据采集系统及方法。
背景技术
RDP(Remote Desktop Protocol,远程桌面协议)是由微软公司提出的一种通讯协议,主要用于实现Windows操作系统下的多用户模式,用于远程访问运行在Windows终端服务器上的应用程序,将应用的逻辑执行和用户界面分离开来。服务器端通过使用视频驱动程序描述显示输出,构造描述信息到使用RDP协议的网络数据包,通过网络发送到客户端;在客户端,视频驱动程序接收到描述信息,经过处理并显示出来。
RDP协议在5.2版本后即加入了SSL通道加密功能,SSL协议及其继任者TLS协议,是为网络安全提供安全性及数据完整性的一种安全协议。SSL/TLS协议位于TCP/IP协议和应用层协议之间,可为各种应用层协议提供安全性保证,例如FTP、TELNET协议等,由于SSL/TLS协议保护的高层协议在客户端与服务器之间传输的为密文数据,并没有明文出现,这为数据审计带来了困难,以往的RDP采集审计都避开SSL,只采用RC4加密,但这样降低了系统的安全性,易受到外部攻击。
发明内容
本发明的目的在于应对目前RDP协议在5.2版本后加入了TLS通道加密功能的问题,提出了一种TLS通道加密的RDP协议明文数据采集系统,能够在对RDP登陆操作进行审计的情况下,不降低采集系统的安全性。
为实现上述目的,本发明提供了一种TLS通道加密的RDP协议明文数据采集方法,所述系统包括:RDP数据包接收及转发模块,RDP数据包解析模块,RDP数据加解密模块和TLS加解密模块;
所述RDP数据包接收及转发模块,用于接收网络上的数据包并进行重组,将重组后的数据包提交给RDP数据包解析模块;用于接收TLS加解密模块提交的明文数据包;并用于将OUTPUT结构体的重加密后的明文数据转发出去;
所述RDP数据包解析模块,用于对提取出来的RDP数据包进行解析,获取RDP协议协商的数据加密方式;如果加密方式为标准的RDP安全加密方式,则将RDP数据包提交给所述RDP解密模块;如果加密方式为增强的RDP安全加密方式,则将数据提交给TLS解密模块;
所述RDP加解密模块,用于接收数据后替换服务端证书,并计算RC4会话密钥,解密RDP数据获取明文,拷贝一份明文数据提交给RDP日志生成模块,将明文数据重加密后提交给RDP数据包接收及转发模块;
所述TLS加解密模块,用于接收数据后修改握手阶段的秘钥信息,获得TLS会话密钥,对加密数据解密获取明文,拷贝一份明文数据以OOB结构体提交给RDP数据接收及转发模块,将明文重加密后以OUTPUT结构体提交给RDP数据接收及转发模块;
作为上述系统的一种改进,所述系统还包括:RDP日志生成模块;用于接收所述RDP加解密模块发送的明文数据,接收TLS加解密模块通过RDP数据包接收及处理模块提交的明文数据;根据RDP协议栈对明文数据进行解析,提取相关信息生成RDP日志及相关明文数据。
一种基于上述的系统实现的TLS通道加密的RDP协议明文数据采集方法,所述方法包括:
步骤1)所述RDP数据包接收及转发模块对网络上接收到的数据包进行重组,提取RDP数据包,通过INPUT结构体将收到的原始报文发送给所述RDP数据包解析模块;
步骤2)所述RDP数据包解析模块对RDP数据包进行解析,判断该数据包是否为会话中服务端的第一个数据包,如果是,则对第一个数据包进行解析,记录客户端与服务端协商选择的RDP安全加密方式;然后将此数据放入OUTPUT结构体中提交给数据包接收及转发模块;转入步骤6);否则,转入步骤3);
步骤3)根据服务端第一个数据包得到的安全加密方式,如果数据加密方式是标准的RDP安全加密方式,将该数据包提交给RDP加解密模块,转入步骤4);如果数据加密方式是增强的RDP安全加密方式,则将数据包通过OOB结构体提交给RDP数据包接收及转发模块,数据包接收及转发模块将数据包再提交给TLS加解密模块,转入步骤5);
步骤4)RDP加解密模块替换一系列秘钥信息以获取RC4会话密钥,对加密数据包解密后拷贝一份提交给RDP日志生成模块;再将明文数据重加密后以OUTPUT结构体提交给所述RDP数据包接收及转发模块;转入步骤6);
步骤5)TLS加解密模块以合法中间人的身份修改TLS握手阶段的秘钥信息以获取会话主密钥,获得解密TLS会话密钥;TLS加解密模块将RDP数据解密后,拷贝一份明文数据以OOB结构体通过RDP数据包接收及处理模块提交给所述RDP日志生成模块;再对明文数据重加密后通过OUTPUT结构体提交给所述RDP数据包接收及转发模块;转入步骤6);
步骤6)所述数据包接收及转发模块将OUTPUT结构体的密文数据转发给对端;转入步骤2),直至一个会话全部处理完毕。
作为上述方法的一种改进,所述步骤2)中的对第一个数据包进行解析,记录客户端与服务端协商选择的RDP安全加密方式的具体过程为:
对RDP协议连接的服务端发出的第一个数据包进行解析,记录客户端与服务端协商选择的RDP安全加密方式,如果标志位为0x01,则为标准的RDP安全加密方式,采用RC4加密;如果标志位大于0x01,则为TLS通道加密方式,接下来的RDP数据将全部封装在TLS记录层里面。
与现有技术相比,本发明的优点在于:
1、在本发明的方法中,RDP数据采集可透明部署在网络中,不必以代理的形式出现;
2、与其它采取避开TLS协议加密,降低RDP协议版本的方式相比,本发明的方法在有效采集RDP数据的同时提高了采集系统的安全性。
附图说明
图1为本发明的采集系统的应用场景示意图;
图2为本发明的TLS通道加密的RDP协议明文数据采集方法的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的说明。
一种TLS通道加密的RDP协议明文数据采集系统,所述系统包括:RDP数据包接收及转发模块,RDP数据包解析模块,RDP数据加解密模块,TLS加解密模块,RDP日志生成模块;
所述RDP数据包接收及转发模块,用于接收网络上的数据包并进行重组,将重组后的数据包提交给RDP数据包解析模块;用于接收TLS加解密模块提交的明文数据包;并用于将重加密后的明文数据转发出去;
所述RDP数据包解析模块,用于对提取出来的RDP数据包进行解析,获取RDP协议协商的数据加密方式;如果数据未加密,则将明文数据提交给RDP数据处理模块;如果加密方式为标准的RDP安全加密方式,则将RDP数据包提交给所述RDP解密模块;如果加密方式为增强的RDP安全加密方式,则将数据提交给TLS解密模块;
所述RDP加解密模块,用于接收数据后替换服务端证书,并计算RC4会话密钥,解密RDP数据获取明文,拷贝一份明文数据提交给RDP日志生成模块,将明文数据重加密后提交给数据包接收及转发模块;
所述TLS加解密模块,用于接收数据后修改握手阶段的秘钥信息,获得TLS会话密钥,对加密数据解密获取明文,拷贝一份明文数据以OOB结构体提交给RDP数据接收及转发模块,将明文重加密后以OUTPUT结构体提交给RDP数据接收及转发模块;
所述RDP日志生成模块,用于根据RDP协议栈对RDP数据进行解析,提取相关信息生成RDP日志及相关明文数据。
图1为本发明的采集系统的一个应用场景。
基于上述系统,如图2所示,本发明还提供了一种TLS通道加密的RDP协议明文数据采集方法,所述方法包括:
步骤1)所述数据包接收及转发模块对网络上接收到的数据包进行重组,提取RDP数据包,通过INPUT结构体将收到的原始报文发送给所述RDP数据包解析模块;
将客户端与服务端两个方向的数据包加入不同队列,按照TCP的SEQ号进行重组之后依次提交给所述RDP数据包解析模块。所述数据包接收及转发模块提交RDP数据有两种方式,一种通过定义一个INPUT结构体提交,一种是通过定义一个OOB(out of band)结构体提交。所述数据包接收及转发模块接收数据也有两种方式,一种通过定义一个OUTPUT结构体,一种就是通过OOB结构体。INPUT结构体提交的是原始的RDP数据,即客户端或者服务端发过来的数据;OOB结构体提交的是经过TLS加解密模块解密过后的RDP明文数据或者RDP数据包解析模块提交的TLS密文数据,OUTPUT结构体是重加密的密文数据。
步骤2)所述RDP数据包解析模块对RDP数据包进行解析,判断该数据包是否为会话中服务端的第一个数据包,如果是,则对第一个数据包进行解析,记录客户端与服务端协商选择的RDP安全加密方式;然后将此数据放入OUTPUT结构体中提交给数据包接收及转发模块;转入步骤6);否则,转入步骤3);
如果RDP数据包接收及转发模块通过INPUT结构体提交RDP数据包,则该缓冲区内的RDP数据是原始数据,若是服务端第一个数据包,则数据包中记录RDP协议协商的数据加密方式。对RDP协议连接的服务端发出的第一个数据包进行解析,记录客户端与服务端协商选择的RDP安全加密方式,如果标志位为0x01,则为标准的RDP安全加密方式,采用RC4加密;如果标志位大于0x01,则为TLS通道加密方式,接下来的RDP数据将全部封装在TLS记录层里面。
步骤3)根据服务端第一个数据包得到的安全加密方式,如果数据加密方式是标准的RDP安全加密方式,将该数据包提交给RDP加解密模块,转入步骤4);如果数据加密方式是增强的RDP安全加密方式,则将数据包通过OOB结构体提交给RDP数据包接收及转发模块,数据包接收及转发模块将数据包再提交给TLS加解密模块,转入步骤5);
RDP协议并不是从一开始就是TLS加密的,它是从中间协商完成后开始的;RDP协议与TLS协议是一个平行的关系,都是靠RDP数据包接收及转发模块收到数据后调用它们,处理完后再返回数据给RDP数据包接收及转发模块,通过定义这样一个OOB结构体能够方便RDP调用TLS;
步骤4)RDP加解密模块替换一系列秘钥信息以获取RC4会话密钥,对加密数据包解密后拷贝一份提交给RDP日志生成模块;再将明文数据重加密后以OUTPUT结构体提交给所述RDP数据包接收及转发模块;转入步骤6);
步骤5)TLS加解密模块以合法中间人的身份修改TLS握手阶段的秘钥信息以获取会话主密钥,获得解密TLS会话密钥;TLS加解密模块将RDP数据解密后,拷贝一份明文数据以OOB结构体通过RDP数据包接收及处理模块提交给所述RDP日志生成模块;再对明文数据重加密后通过OUTPUT结构体提交给所述RDP数据包接收及转发模块;转入步骤6);
步骤6)所述数据包接收及转发模块将OUTPUT结构体的密文数据转发给对端;转入步骤2),直至一个会话全部处理完毕。
为了便于理解,下面结合一个具体的实例,参考图2,对本发明的方法做详细的说明。
1、RDP数据包接收及转发模块通过两种方式向上层提交数据,一种是通过INPUT结构体,一种是通过OOB结构体。
2、如果是OOB结构体,说明RDP数据包接收及转发模块提交的是明文的RDP数据,则直接将数据提交给RDP日志生成模块,获取明文日志和相关明文数据。
3、如果是INPUT结构体,说明RDP数据包接收及转发模块提交的是原始RDP数据,此时需要进行进一步判定。
4、如果INPUT中的数据是服务端第一个RDP数据包,则记录其协商的加密方式,然后将此数据放入OUTPUT结构体中提交给RDP数据包接收及转发模块。
5、如果INPUT中的数据不是第一个RDP数据包,则根据记录的加密方式对数据包分别处理。
6、如果是RDP加密方式,则经过RDP解密后,将拷贝一份明文提交给RDP日志生成模块,将明文数据重加密后,通过OUTPUT结构体提交给RDP数据包接收及转发模块。
7、如果是TLS加密方式,则通过OOB结构体将密文数据提交给数据接收及转发模块,RDP数据接收及转发模块将OOB密文提交给TLS加解密模块,则经过TLS解密后,TLS加解密模块拷贝一份明文数据通过OOB结构体返回给RDP数据接收及转发模块,对明文重加密后,通过OUTPUT结构体提交给RDP数据包接收及转发模块去转发给对端。
8、RDP数据包接收及转发模块将OUTPUT结构体的数据转发给对端,将OOB结构体的数据提交给上层处理。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。