首页> 中国专利> 基于HOOK技术获取SSH加密内容的方法及其应用

基于HOOK技术获取SSH加密内容的方法及其应用

摘要

本发明涉及网络安全的技术领域,特别是涉及基于HOOK技术获取SSH加密内容的方法,通过追踪、调试分析SSH服务端程序和数据库客户端程序寻找hook点,通过所有hook点获取SSH通信解密后的明文数据,最后解析数据获取SSH加密过的用户操作命令内容;分析SSH服务端程序,使用strace动态追踪sshd进程,找到hook点read函数,发现仅有部分数据库的数据不能捕获,通过GDB调试这些数据库客户端程序,找到新的hook点fgets、fwrite等函数;通过所有hook点获取并记录SSH通信解密后内容,然后通过解析数据获取SSH加密内容。

著录项

  • 公开/公告号CN112926050A

    专利类型发明专利

  • 公开/公告日2021-06-08

    原文格式PDF

  • 申请/专利权人 北京亿赛通网络安全技术有限公司;

    申请/专利号CN202110160507.3

  • 发明设计人 朱贺军;邓省三;

    申请日2021-02-05

  • 分类号G06F21/52(20130101);G06F11/36(20060101);H04L29/06(20060101);H04L29/08(20060101);

  • 代理机构11368 北京世誉鑫诚专利代理有限公司;

  • 代理人孙国栋

  • 地址 100085 北京市海淀区西二旗大街39号3层301-1

  • 入库时间 2023-06-19 11:19:16

说明书

技术领域

本发明涉及网络安全的技术领域,特别是涉及基于HOOK技术获取SSH加密内容的方法。

背景技术

SSH主要有三部分组成:

1、传输层协议提供了服务器认证、保密性及完整性,提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证;

2、用户认证协议用于向服务器提供客户端用户鉴别功能。运行在传输层协议上,从低层协议接收会话标识符,会话标识符唯一标识此会话且适用于标记以证明私钥的所有权。

3、连接协议将多个加密隧道分成逻辑通道。运行在用户认证协议上,提供交互式登录话路、远程命令执行、转发TCP/IP连接和转发X11连接。

通过使用SSH加密所有传输数据时无法解密通信流量,能够防止“中间人攻击”,也可以防止DNS欺骗和IP欺骗。此外使用SSH传输的是压缩过的数据,传输速度很快。

SSH协议是互联网安全的一个基本解决方案,目前应用非常广泛,已经成为Linux系统的标配。

由于SSH协议的安全机制,攻击者的信息无法获取,攻击行为也无法还原取证,隐藏的恶意用户无法追踪,给数据关联的各方可能带来了巨大的隐患和损失。

目前Linux系统从Ring3到Ring0有多种HOOK方案,Ring3的方案有通过LD_PRELOAD机制hook so库文件,通过ptrace动态注入目标进程,PLT重定向hook等,Ring0的方案有Inline Hook,通过sys_call_table hook系统调用等。

发明内容

为解决上述技术问题,本发明的一个目的在于提供基于HOOK技术获取SSH加密内容的方法,通过追踪、调试分析SSH服务端程序和数据库客户端程序寻找hook点,通过所有hook点获取SSH通信解密后的明文数据,最后解析数据获取SSH加密过的用户操作命令内容;

本发明的另一个目的在于提供应用基于HOOK技术获取SSH加密内容的方法所得到的系统,该系统可获取多客户端的加密内容。

本发明的基于HOOK技术获取SSH加密内容的方法,分析SSH服务端程序,使用strace动态追踪sshd进程,找到hook点read函数,发现仅有部分数据库的数据不能捕获,通过GDB调试这些数据库客户端程序,找到新的hook点fgets、fwrite等函数;

通过所有hook点获取并记录SSH通信解密后内容,然后通过解析数据获取SSH加密内容;具体如下:

1)hook libc库的read、fgets、fwrite等函数,SSH会话建立成功后,获取调用相应函数的进程PID和当前时间,根据PID获取进程名找到目标进程,记录获取SSH客户端命令的时间、ASCII码字符串和明文数据等信息写入缓存文件;

2)将上述功能代码编译成动态库so文件,利用Linux preload机制将生成的so文件写入/etc/ld.so.preload(或/etc/ld.so.cache文件,前者优先)文件中(不存在时则新建一个),捕获并缓存数据;

3)自定义解析方法解析上述缓存数据获取SSH加密内容,还原出SSH加密的客户端操作的命令内容。

本发明的基于HOOK技术获取SSH加密内容的方法,hook点是libc库的read、fgets、fwrite等函数,所述自定义的解析方法是:读取上一次文件读到的位置信息,如果有更新,从上次位置后读取hook获取的缓存数据,提取出时间信息,ASCII码字符串和明文数据等信息,先处理明文数据字符串,根据是否是可显字符及对应的ASCII码,确定键值信息,然后以每条完整的命令均以回车键作为结束作为特征,再通过解析一些特殊按键,最后还原出完整的信息。

本发明的一种获取多客户端SSH加密内容的系统,应用所述的方法,所述系统包括前端部分以及后端部分;

后端部分:通过hook技术将so库文件注入到每一个SSH会话相关的进程组中,缓存捕获的数据,同时控制用户删除操作行为;

后端部分包括数据捕获和缓存模块以及删除操作控制模块;

数据捕获和缓存模块:获取并缓存时间、PID及进程名称等捕获的数据信息,恢复原始系统调用过程及相应的返回值;

删除操作控制模块:根据删除操作控制策略,通过权限管理用户的删除操作行为;

前端部分:shell脚本用来完成启动、停止、管理可执行文件等功能,可执行二进制文件主要完成用户信息管理、数据解析还原、命令类型识别、策略接收与处理、自动垃圾清理等功能;

前端部分包括日志生成模块、进程守护与自启动模块、解析策略的接收与处理模块、数据解析还原与输出模块、用户信息管理模块、系统与数据库命令识别模块、输出源控制模块、扫描与记录登录信息模块、自动垃圾清理模块、删除操作策略的接收与处理模块;

日志生成模块:通过简单参数输入生成日志文件供用户查看,也可以通过定制接口传输到指定的数据库,也发送到专用的审计平台存入任意数据源中,便于用户审查;

进程守护与自启动模块:支持进程守护功能,异常退出时可以重新启动,但异常期间客户端的操作信息不丢失,同时支持开机自启动,当有客户端连接时才开始获取信息;

解析策略的接收与处理模块:提供接收和处理下发的是否开启解析功能的策略文件功能,通过指定目标服务器的IP地址,达到同时控制多台服务器的目的;

数据解析还原与输出模块:处理交互模块提供的信息,处理后端缓存的数据,根据PID信息解析相应的系统命令和数据库命令文件,分别记录各文件当前读取的位置信息,将还原后的SSH客户端操作的时间和命令信息输出;

用户信息管理模块:管理SSH客户端当前登录用户及用户切换后的信息,包括登录时间、SSH客户端IP地址和Port端口,当前服务器的IP地址和Port端口,用户退出时间等;

系统与数据库命令识别模块:根据PID信息识别系统命令和数据库命令,解析出具体数据库类型,标识后给其他模块提供相应信息;

输出源控制模块:接收用户登录和退出信息,接收还原并识别出的系统命令和数据库命令信息,然后提供多种输出接口,可以保存成文件,存入数据库或发送到其他数据处理平台等;

扫描与记录登录信息模块:实时扫描当前服务器中连接成功的和退出的SSH会话,获取PID信息,根据多级PID关联关系确定目标PID供其他模块使用,然后通过用户信息管理模块记录SSH客户端登录信息;

自动垃圾清理模块:通过扫描与记录登录信息模块提供退出的SSH客户端的PID信息,自动清理该客户的垃圾文件;

删除操作策略的接收与处理模块:接收和处理下发的删除操作策略,根据策略控制是否允许用户的删除操作或删除前备份,可以支持指定如文件、文件夹等策略形式。

本发明的一种获取多客户端SSH加密内容的系统,根据执行命令的进程可以区分出两种不同的SSH客户端用户行为操作类型:对操作系统的操作行为标记为系统命令,对数据库的操作行为标记为数据库命令,并可识别出具体数据库类型;根据SSH会话信息可以获取诸如:登录用户名、IP地址、端口号、登录时间、系统命令操作的时间和内容、数据库操作的时间和命令内容、数据库类型、用户退出时间等信息。

本发明的一种获取多客户端SSH加密内容的系统,所述解析策略的接收与处理模块还具有以下功能:根据IP地址区分不同的服务器,根据IP地址和PID区分不同的SSH客户端,支持下发策略控制,通过IP地址指定目标服务器。

与现有技术相比本发明的有益效果为:

1、可以获取SSH通信的加密内容,还原出SSH客户端执行的命令;

2、使用Ring3下的HOOK方式,无须考虑内核差异,稳定性和兼容性强,不影响系统其他程序的启动和运行,不会引起SSH服务异常,对已存在的和新建的SSH连接基本无影响,没有明显的延时和卡顿,用户基本无感知;

3、可以准确区分出系统命令和数据库命令,以及具体的数据库类型;

4、根据IP地址区分不同的服务器,根据IP地址和PID区分不同的SSH客户端,通过下发包含IP地址的策略配置可有针对性地控制多台目标服务器;

5、不丢失或遗漏会话保持期间SSH客户端操作的数据;

6、支持用户切换和回退,如root切换到usr,从usr回退到root;

7、增强系统防护能力,通过策略配置有效控制SSH客户端用户的危险操作,如删除重要文件、删除数据库、更改某些重要配置等,或备份待删除的且需要保护的文件,便于后期恢复数据。

附图说明

图1是寻找能获取SSH加密内容的hook点的流程图;

图2是GBD调试部分不能获取SSH加密内容的数据库客户端程序(如oracle的sqlplus等),寻找新hook点的流程图;

图3是启用hook后,SSH服务端和数据库客户端程序调用libc库函数的流程图。

图4是hook时获取数据保存的系统命令实例图;

图5和图6是hook时获取数据保存的数据库命令实例图;

图7和图8是解析后还原的SSH客户端操作的两种命令实例图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

如图1至图8所示,本发明的基于HOOK技术获取SSH加密内容的方法,分析SSH服务端程序,使用strace动态追踪sshd进程,找到hook点read函数,发现仅有部分数据库的数据不能捕获,通过GDB调试这些数据库客户端程序,找到新的hook点fgets、fwrite等函数;

通过所有hook点获取并记录SSH通信解密后内容,然后通过解析数据获取SSH加密内容;具体如下:

1)hook libc库的read、fgets、fwrite等函数,SSH会话建立成功后,获取调用相应函数的进程PID和当前时间,根据PID获取进程名找到目标进程,记录获取SSH客户端命令的时间、ASCII码字符串和明文数据等信息写入缓存文件;

2)将上述功能代码编译成动态库so文件,利用Linux preload机制将生成的so文件写入/etc/ld.so.preload(或/etc/ld.so.cache文件,前者优先)文件中(不存在时则新建一个),捕获并缓存数据;

3)自定义解析方法解析上述缓存数据获取SSH加密内容,还原出SSH加密的客户端操作的命令内容。

本发明的基于HOOK技术获取SSH加密内容的方法,hook点是libc库的read、fgets、fwrite等函数,所述自定义的解析方法是:读取上一次文件读到的位置信息,如果有更新,从上次位置后读取hook获取的缓存数据,提取出时间信息,ASCII码字符串和明文数据等信息,先处理明文数据字符串(处理空格、回车等信息),根据是否是可显字符及对应的ASCII码,确定键值信息,然后以每条完整的命令均以回车键(ASCII对应0d或0a)作为结束作为特征,再通过解析一些特殊按键(如空格、Enter、Backspace、光标键等),最后还原出完整的信息。

本发明的一种获取多客户端SSH加密内容的系统,应用所述的方法,所述系统包括前端部分以及后端部分;

后端部分:通过hook技术将so库文件注入到每一个SSH会话相关的进程组中,缓存捕获的数据,同时控制用户删除操作行为;

后端部分包括数据捕获和缓存模块以及删除操作控制模块;

数据捕获和缓存模块:获取并缓存时间、PID及进程名称等捕获的数据信息,恢复原始系统调用过程及相应的返回值;

删除操作控制模块:根据删除操作控制策略,通过权限管理用户的删除操作行为;

前端部分:shell脚本用来完成启动、停止、管理可执行文件等功能,可执行二进制文件主要完成用户信息管理、数据解析还原、命令类型识别、策略接收与处理、自动垃圾清理等功能;

前端部分包括日志生成模块、进程守护与自启动模块、解析策略的接收与处理模块、数据解析还原与输出模块、用户信息管理模块、系统与数据库命令识别模块、输出源控制模块、扫描与记录登录信息模块、自动垃圾清理模块、删除操作策略的接收与处理模块;

日志生成模块:通过简单参数输入生成日志文件供用户查看,也可以通过定制接口传输到指定的数据库,也发送到专用的审计平台存入任意数据源中,便于用户审查;

进程守护与自启动模块:支持进程守护功能,异常退出时可以重新启动,但异常期间客户端的操作信息不丢失,同时支持开机自启动,当有客户端连接时才开始获取信息;

解析策略的接收与处理模块:提供接收和处理下发的是否开启解析功能的策略文件功能,通过指定目标服务器的IP地址,达到同时控制多台服务器的目的;

数据解析还原与输出模块:处理交互模块提供的信息,处理后端缓存的数据,根据PID信息解析相应的系统命令和数据库命令文件,分别记录各文件当前读取的位置信息,将还原后的SSH客户端操作的时间和命令信息输出;

用户信息管理模块:管理SSH客户端当前登录用户及用户切换后的信息,包括登录时间、SSH客户端IP地址和Port端口,当前服务器的IP地址和Port端口,用户退出时间等;

系统与数据库命令识别模块:根据PID信息识别系统命令和数据库命令,解析出具体数据库类型,标识后给其他模块提供相应信息;

输出源控制模块:接收用户登录和退出信息,接收还原并识别出的系统命令和数据库命令信息,然后提供多种输出接口,可以保存成文件,存入数据库或发送到其他数据处理平台等;

扫描与记录登录信息模块:实时扫描当前服务器中连接成功的和退出的SSH会话,获取PID信息,根据多级PID关联关系确定目标PID供其他模块使用,然后通过用户信息管理模块记录SSH客户端登录信息;

自动垃圾清理模块:通过扫描与记录登录信息模块提供退出的SSH客户端的PID信息,自动清理该客户的垃圾文件;

删除操作策略的接收与处理模块:接收和处理下发的删除操作策略,根据策略控制是否允许用户的删除操作或删除前备份,可以支持指定如文件、文件夹等策略形式。

本发明的一种获取多客户端SSH加密内容的系统,根据执行命令的进程可以区分出两种不同的SSH客户端用户行为操作类型:对操作系统的操作行为标记为系统命令,对数据库的操作行为标记为数据库命令,并可识别出具体数据库类型;根据SSH会话信息可以获取诸如:登录用户名、IP地址、端口号、登录时间、系统命令操作的时间和内容、数据库操作的时间和命令内容、数据库类型、用户退出时间等信息。

本发明的一种获取多客户端SSH加密内容的系统,所述解析策略的接收与处理模块还具有以下功能:根据IP地址区分不同的服务器,根据IP地址和PID区分不同的SSH客户端,支持下发策略控制,通过IP地址指定目标服务器。

实施例1:

本发明的基于HOOK技术获取SSH加密内容的方法,其原理和方法包括但不局限于使用/etc/ld.so.preload文件方式,其原理和方法适用的系统包括但不局限于Linux系统,也可能推广适用至Windows系统和mac os系统;

如图1至图8所示,本发明为了解决SSH协议无法通过解密通信流量获取通信内容的问题及不能监管一些重要文件或磁盘被违规删除、清空等问题,提供了一种基于HOOK技术获取SSH加密内容的方法;分析SSH服务端程序,使用strace动态追踪sshd进程,找到hook点,通过测试hook点,发现仅有部分数据库数据不能捕获,再通过GDB调试数据库客户端程序,寻找hook点,通过hook点获取SSH加密内容并缓存数据,然后解析数据还原出SSH加密的客户端用户操作的命令;

通过strace动态追踪sshd进程后,寻找的hook点为read函数,如图1所示,实现hook read逻辑编译成so文件,写入/etc/ld.so.preload文件,分析是否获取到明文数据;

如图2所示,不能获取明文数据时调试相关程序,寻找新的hook点;

如图3所示,开启hook功能时,SSH服务端程序和数据库客户端程序的调用libc库函数的流程。

实施例2:

本发明的一种获取多客户端SSH加密内容的系统,有以下特点:支持是否开启取证的下发策略;可同时批量化取证多台Linux服务器和多个客户端,取证时准确区分互不影响;可准确区分出客户端操作的是系统命令(如ls、ifconfig等)还是数据库命令(如use、select语句等),以及具体数据库类型;通过缓存数据和解析逻辑还原出SSH加密过的客户端的操作命令;实时获取SSH客户端的连接情况,一旦发现有SSH客户端退出,记录退出时间,删除该客户端相关的缓存文件和垃圾文件;支持日志记录功能,方便查看操作记录;也可获取当前用户保存的操作历史记录文件等;

工作流程如下:用户通过SSH客户端软件登录Linux系统服务端Server成功后,记录该客户端信息并缓存为自定义的.info文件,客户端用户执行命令后,记录操作的各种系统命令(如ls,ifconfig等)和多种数据库的登录及业务操作(如use,select等)缓存为.idata文件,客户端退出时记录时间并缓存为.exit文件。

1、开启取证功能时

获取的信息包括登录用户名、SSH客户端IP地址、SSH客户端Port、SSH服务端IP地址、SSH服务端Port、登陆时间、退出时间,系统操作的时间、ASCII码和命令、切换的用户名、数据库登录时间、数据库业务操作时间、ASCII信息和明文数据;

2、未开启取证功能时

仅获取当前所有登录客户的信息,包括登录用户名、SSH客户端IP地址、SSH客户端Port、SSH服务端IP地址、SSH服务端Port、登陆时间、退出时间。

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号