本发明涉及网络通信技术领域,特别是一种基于内存分析的ssl/tls网络加密通信信息实时解密方法。
背景技术:
在密码学中,编码学研究以保守通信秘密不被泄露与窃取的方法,而破译密码则以获取通信情报为目的,对截获密文进行分析解密。近年来,互联网的广泛推广与应用,网络窃密泄密事件频频发生,以密码学中编码学为基础,形成多种网络加密通信机制如ssl(securesocketslayer安全套接字层)及其升级版tls(transportlayersecurity传输层安全)。
目前,基于ssl/tls的网络加密通信得到广泛普及与应用,进而保证了网络通信内容的安全,与此同时,安全的加密通道也为网络攻击者提供隐蔽的攻击通道。网络空间安全领域中,网络安全检测是其重要的研究方向之一,通常手法是对网络数据包内容进行分析进而实施对网络攻击的检测与报警,然而,网络加密通信的广泛普及与应用,使得传统安全检测分析系统无法对内容进行识别与检测,这将对未来网络安全检测与网络取证提出重大挑战。
在网络攻击检测过程中,目前应用较多的检测方法是传统的特征检测方法,即需要对网络数据包进行解析,网络会话内容重构,再利用特征匹配手法进行攻击检测,而针对加密的网络数据包,将无法进行解析和网络会话内容重构,从而无法进行内容的攻击检测,这将大大降低网络检测性能。
技术实现要素:
基于此,针对上述问题,本发明提供了一种基于内存分析的ssl/tls网络加密通信信息实时解密方法,采用旁路部署方式,通过利用信息熵理论、内存分析技术和终端行为监控常用的进程注入及apihook技术,结合网络套接字通信和网络通信流量抓包与解密系统,实现网络通信加密密钥的提取和网络加密通信内容的实时解密,为传统网络安全检测分析及网络攻击取证提供明文数据,进而解决因网络通信加密而无法检测的难题,提高检测效率。
本发明采用的技术方案是:
一种基于内存分析的ssl/tls网络加密通信信息实时解密方法,包括以下步骤:
s1、通过agent利用进程注入技术和apihook技术对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行监控,获取加密通信会话id和相应的加密密钥;
s2、通过agent获取客户端本地ip地址;
s3、将获取的加密通信会话id、网络加密通信会话密钥和客户端本地ip地址通过临时生成的对称加密密钥进行加密,并将加密后的数据发送至网络解密端;
s4、接收到加密后的数据后,获取客户端本地ip地址、加密通信会话id和对应会话的解密密钥,对相应的网络加密通信会话进行实时解密并保存。
在局域网络中的数据发送客户端(计算机)上安装agent软件,agent软件利用进程注入技术和apihook技术对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行监控,以获取加密通信会话id和相应的加密通信会话密钥,同时agent软件也对客户端本地ip地址进行获取,以便网络解密端系统能够准确识别与密钥相对应的加密数据包;agent软件将提取到的ip地址、会话id、加密密钥等信息,经过临时生成的对称密钥加密后,传回网络解密端,网络解密端接收到回传的加密数据进行解密,获取客户端本地ip地址、加密通信会话id和对应会话的解密密钥,最终针对相应的网络会话进行实时解密,并将解密后的数据包本地保存或传输给第三方检测系统检测。
该方法采用分布式的agent代理内存分析方法对网络加密会话密钥进行获取,结合网络解密端实现对监控网络中的加密通信会话进行实时解密,从而解决了当前因网络通信加密无法对网络数据内容监控和检测的问题,进而降低了安全检测的误报率,提升网络空间安全。
进一步地,步骤s1包括以下步骤:
s11、通过agent利用进程注入技术和apihook技术分别对系统进程创建函数和系统模块加载函数进行hook;
s12、分别对网络通信进程和加密模块进行监控,当监控到网络通信进程创建和加密模块加载时,分别对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行hook;
s13、获取加密通信会话id和相应的加密密钥。
为了提高hook效率,减少因hook对系统产生的影响,agent软件并没有采用全局钩子,而是对系统进程创建函数和系统模块加载函数进行hook,通过对网络通信进程创建函数进行监控,激活agent进行密钥获取,通过对系统加载dll等模块监控判断,对生成密钥的模块中相应密钥生成函数进行hook,进而获取网络会话加密密钥。
进一步地,步骤s3包括以下步骤:
s31、在agent中内置网络解密端公钥;
s32、agent生成临时对称加密密钥;
s33、通过内置的网络解密端公钥对生成的对称加密密钥进行加密,并发送至网络解密端;
s34、通过对称加密密钥对加密通信会话id、网络加密通信会话密钥和客户端本地ip地址进行加密并发送至网络解密端。
为了保证agent获取密钥传输过程中的安全性,agent回传密钥信息时采用加密策略,在agent软件中内置网络解密端公钥,agent临时生成对称加密密钥,并通过公钥进行加密,回传解密端,随后通过协商的对称密钥对密钥信息进行加密传输,进而保证密钥数据传输的安全性。
进一步地,步骤s4包括以下步骤:
s41、接收到加密后的数据后,判断接收到的加密后数据是否包含会话密钥,如果是,则进入步骤s44;如果否,则进入步骤s42;
s42、根据客户端本地ip地址,发送相应的会话密钥提取请求至agent;
s43、agent接收到密钥提取请求后,从密钥提取请求中获取相应的加密通信会话id;根据获取的加密通信会话id,利用内存分析技术获取会话密钥,并将获取的网络通信会话密钥、加密通信会话id及客户端ip地址信息进行加密并回传至网络解密端;
s44、根据接收的网络通信会话密钥信息,获取对应会话的解密密钥并对相应的网络加密通信会话进行实时解密并保存。
网络解密端将提取的网络会话基本信息进行数据库存储,并与agent回传的网络会话密钥信息进行搜索,在一定时间内没有密钥信息回传的网络会话,网络解密端将根据注册记录的agent信息进行查询,并向相应的agent端发送网络会话密钥查询请求,而agent接收到查询请求后,利用接收到的会话id,利用内存分析技术,对网络会话加密密钥的内存扫描与提取,最终将获取的密钥信息进行加密回传。
进一步地,步骤s43包括以下步骤:
s431、agent接收到密钥提取请求后,获取网络会话id信息;
s432、根据ssl/tls加密机制的内存密钥管理策略,采用内存特征字符搜索算法获取网络加密的会话密钥;
s433、将获取的网络加密会话密钥、加密通信会话id及客户端ip地址信息进行加密并回传至网络解密端。
采用内存特征字符搜索算法进行网络加密会话密钥的扫描获取,提高密钥获取的效率和准确性。
进一步地,步骤s432还包括以下步骤:
判断采用内存特征字符搜索算法获取网络加密会话密钥是否成功,如果是,则进入步骤s433;如果否,则利用信息熵技术对内存数据进行熵计算,并根据网络加密算法进行验证进而获取网络加密的会话密钥。
为了提升密钥搜索成功概率,agent在内存字符搜索失败后,利用信息熵技术对内存数据进行熵计算,并根据网络加密算法进行验证进而获取网络加密的密钥,从而提升了网络解密成功的概率。
本发明的有益效果是:
1、采用旁路部署方式,通过利用信息熵理论、内存分析技术和终端行为监控常用的进程注入及apihook技术,结合网络套接字通信和网络通信流量抓包与解密系统,实现网络通信加密密钥的提取和网络加密通信内容的实时解密,为传统网络安全检测分析及网络攻击取证提供明文数据,进而解决因网络通信加密而无法检测的难题,提高检测效率;
2、可有效提高hook效率,减少因hook对系统产生的影响;
3、agent回传密钥信息时采用加密策略,保证agent获取密钥传输过程中的安全性;
4、通过判断接收到的加密后数据是否包含会话密钥,进而保证会话密钥的获取,保证会话密钥获取的准确性;
5、采用内存特征字符搜索算法进行网络加密会话密钥的扫描获取,提高密钥获取的效率和准确性;
6、agent在内存字符搜索失败后,利用信息熵技术对内存数据进行熵计算,并根据网络加密算法进行验证进而获取网络加密的密钥,从而提升了网络解密成功的概率;
7、从产业化角度提出采用分布式agent的ssl/tls解密方式,有较好的系统化和产品化,具有重大的应用价值和产业价值。
附图说明
图1为本发明实施例所述一种基于内存分析的ssl/tls网络加密通信信息实时解密方法的流程图;
图2为本发明实施例所述一种基于内存分析的ssl/tls网络加密通信信息实时解密方法中加密密钥获取的流程图;
图3为本发明实施例所述一种基于内存分析的ssl/tls网络加密通信信息实时解密方法中数据加密的流程图;
图4为本发明实施例所述一种基于内存分析的ssl/tls网络加密通信信息实时解密方法中数据解密的流程图;
图5为本发明实施例所述一种基于内存分析的ssl/tls网络加密通信信息实时解密方法中采用内存特征字符搜索算法获取网络加密的会话密钥的流程图。
具体实施方式
下面结合附图对本发明的实施例进行详细说明。
实施例
如图1所示,一种基于内存分析的ssl/tls网络加密通信信息实时解密方法,包括以下步骤:
s1、通过agent利用进程注入技术和apihook技术对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行监控,获取加密通信会话id和相应的加密密钥;
s2、通过agent获取客户端本地ip地址;
s3、将获取的加密通信会话id、网络加密通信会话密钥和客户端本地ip地址通过临时生成的对称加密密钥进行加密,并将加密后的数据发送至网络解密端;
s4、接收到加密后的数据后,获取客户端本地ip地址、加密通信会话id和对应会话的解密密钥,对相应的网络加密通信会话进行实时解密并保存。
在局域网络中的数据发送客户端(计算机)上安装agent软件,agent软件利用进程注入技术和apihook技术对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行监控,以获取加密通信会话id和相应的加密通信会话密钥,同时agent软件也对客户端本地ip地址进行获取,以便网络解密端系统能够准确识别与密钥相对应的加密数据包;agent软件将提取到的ip地址、会话id、加密密钥等信息,经过临时生成的对称密钥加密后,传回网络解密端,网络解密端接收到回传的加密数据进行解密,获取客户端本地ip地址、加密通信会话id和对应会话的解密密钥,最终针对相应的网络会话进行实时解密,并将解密后的数据包本地保存或传输给第三方检测系统检测。
该方法利用流量监控解密与密码获取分离的思想,采用分布式agent代理进行密钥获取,利用网络解密端在网络流量出口处进行流量的监控与解密,具有较高的可系统化、软件化,有较高实用价值;采用分布式的agent代理内存分析方法对网络解密密钥进行获取,结合网络解密端实现对监控网络中的加密通信会话进行实时解密,从而解决了当前因网络通信加密无法对网络数据内容监控和检测的问题,进而降低了安全检测的误报率,提升网络空间安全。目前网络加密通信的方法较多如ssh、ftps等均属于网络加密通信方式及应用,针对此类网络加密通信内容的解密,也可采用本方法的基于分布式agent的网络加密通信解密模式进行解密,满足多种网络加密通信内容的解密需求。
在这其中一个实施例中,如图2所示,步骤s1包括以下步骤:
s11、通过agent利用进程注入技术和apihook技术分别对系统进程创建函数和系统模块加载函数进行hook;
s12、分别对网络通信进程和加密模块进行监控,当监控到网络通信进程创建和加密模块加载时,分别对网络加密通信会话密钥生成函数及加密通信会话id生成函数进行hook;
s13、获取加密通信会话id和相应的加密密钥。
为了提高hook效率,减少因hook对系统产生的影响,agent软件并没有采用全局钩子,而是对系统进程创建函数和系统模块加载函数进行hook,通过对网络通信进程创建函数进行监控,激活agent进行密钥获取,通过对系统加载dll等模块监控判断,对生成密钥的模块中相应密钥生成函数进行hook,进而获取网络会话加密密钥。
在这其中一个实施例中,如图3所示,步骤s3包括以下步骤:
s31、在agent中内置网络解密端公钥;
s32、agent生成临时对称加密密钥;
s33、通过内置的网络解密端公钥对生成的对称加密密钥进行加密,并发送至网络解密端;
s34、通过对称加密密钥对加密通信会话id、网络加密通信会话密钥和客户端本地ip地址进行加密并发送至网络解密端。
为了保证agent获取密钥传输过程中的安全性,agent回传密钥信息时采用加密策略,在agent软件中内置网络解密端公钥,agent临时生成对称加密密钥,并通过公钥进行加密,回传解密端,随后通过协商的对称密钥对密钥信息进行加密传输,进而保证密钥数据传输的安全性。
在这其中一个实施例中,如图4所示,步骤s4包括以下步骤:
s41、接收到加密后的数据后,判断接收到的加密后数据是否包含会话密钥,如果是,则进入步骤s44;如果否,则进入步骤s42;
s42、根据客户端本地ip地址,发送相应的会话密钥提取请求至agent;
s43、agent接收到密钥提取请求后,从密钥提取请求中获取相应的加密通信会话id;根据获取的加密通信会话id,利用内存分析技术获取会话密钥,并将获取的网络通信会话密钥、加密通信会话id及客户端ip地址信息进行加密并回传至网络解密端;
s44、根据接收的网络通信会话密钥信息,获取对应会话的解密密钥并对相应的网络加密通信会话进行实时解密并保存。
网络解密端将提取的网络会话基本信息进行数据库存储,并与agent回传的网络会话密钥信息进行搜索,在一定时间内没有密钥信息回传的网络会话,网络解密端将根据注册记录的agent信息进行查询,并向相应的agent端发送网络会话密钥查询请求,而agent接收到查询请求后,利用接收到的会话id,利用内存分析技术,对网络会话加密密钥的内存扫描与提取,最终将获取的密钥信息进行加密回传。
在这其中一个实施例中,如图5所示,步骤s43包括以下步骤:
s431、agent接收到密钥提取请求后,获取网络会话id信息;
s432、根据ssl/tls加密机制的内存密钥管理策略,采用内存特征字符搜索算法获取网络加密的会话密钥;
s433、将获取的网络加密的会话密钥、加密通信会话id及客户端ip地址信息进行加密并回传至网络解密端。
采用内存特征字符搜索算法进行网络加密会话密钥的扫描获取,提高密钥获取的效率和准确性。
在这其中一个实施例中,步骤s432还包括以下步骤:
判断采用内存特征字符搜索算法获取网络加密的会话密钥是否成功,如果是,则进入步骤s433;如果否,则利用信息熵技术对内存数据进行熵计算,并根据网络加密算法进行验证进而获取网络加密的会话密钥。
为了提升密钥搜索成功概率,agent在内存字符搜索失败后,利用信息熵技术对内存数据进行熵计算,并根据网络加密算法进行验证进而获取网络加密的密钥,从而提升了网络解密成功的概率。
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。