著录项信息
专利名称 | 一种远程桌面控制识别的方法和装置 |
申请号 | CN201210168060.5 | 申请日期 | 2012-05-25 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2013-12-04 | 公开/公告号 | CN103428190A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6查看分类表>
|
申请人 | 阿里巴巴集团控股有限公司 | 申请人地址 | 开曼群岛大开曼岛西湾路802号木槿街大展览馆31119号邮箱
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 创新先进技术有限公司 | 当前权利人 | 创新先进技术有限公司 |
发明人 | 黄冕 |
代理机构 | 北京润泽恒知识产权代理有限公司 | 代理人 | 赵娟 |
摘要
本申请提供了一种远程桌面控制识别的方法和装置,其中,所述方法包括:步骤S1,注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行HOOK;步骤S2,根据操作函数判断是否存在远程桌面控制操作,若是,则执行步骤S3;步骤S3,根据通信函数判断是否存在网络通信,若是,则执行步骤S4;步骤S4,配置所述通信函数按预设时间阻塞网络通信;步骤S5,判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则执行步骤S6;步骤S6,恢复网络通信,判断是否满足预置的检测次数,若是,则执行步骤S7;若否,则返回步骤S2;步骤S7,判定当前不可信进程为远程桌面控制进程。本申请可以提高计算机和各种用户终端应用的安全性。
1.一种远程桌面控制识别的方法,其特征在于,包括:
步骤S1,注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;所述注入为在一个进程中对另一个进程的数据和代码进行修改;
步骤S2,根据所述操作函数判断是否存在远程桌面控制操作,若是,则执行步骤S3;
步骤S3,根据所述通信函数判断是否存在网络通信,若是,则执行步骤S4;
步骤S4,配置所述通信函数按预设时间阻塞网络通信;
步骤S5,判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则执行步骤S6;
步骤S6,恢复网络通信,判断是否满足预置的检测次数,若是,则执行步骤S7;若否,则返回步骤S2;
步骤S7,判定当前不可信进程为远程桌面控制进程。
2.根据权利要求1所述的方法,其特征在于,所述操作函数包括软键盘消息发送函数,软鼠标消息发送函数,以及,屏幕抓取函数,所述远程桌面控制操作包括软键盘消息发送操作,软鼠标消息发送操作,以及,屏幕抓取操作;
所述步骤S2包括:
根据所述软键盘消息发送函数判断是否存在软键盘消息发送操作;
根据所述软鼠标消息发送函数判断是否存在软鼠标消息发送操作;
以及,
根据所述屏幕抓取函数判断是否存在屏幕抓取操作。
3.根据权利要求1或2所述的方法,其特征在于,在步骤S1之前,还包括:
过滤掉可信进程。
4.根据权利要求1或2所述的方法,其特征在于,还包括:
若根据所述操作函数判断不存在远程桌面控制操作,则判定当前不可信进程为非远程桌面控制进程;
和/或,
若根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断不存在网络通信,则判定当前不可信进程为非远程桌面控制进程;
和/或,
若在所述网络通信阻塞的时间内存在远程桌面控制操作,则判定当前不可信进程为非远程桌面控制进程。
5.根据权利要求1或2所述的方法,其特征在于,还包括:
向用户报告所述远程桌面控制进程;
和/或,
拦截所述远程桌面控制进程。
6.一种远程桌面控制识别的装置,其特征在于,包括:
钩挂处理模块,用于注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;所述注入为在一个进程中对另一个进程的数据和代码进行修改;
远程操作判断模块,用于根据所述操作函数判断是否存在远程桌面控制操作,若是,则调用通信判断模块;
通信判断模块,用于根据所述通信函数判断是否存在网络通信,若是,则调用通信阻塞模块;
通信阻塞模块,用于配置所述通信函数按预设时间阻塞网络通信;
阻塞内操作判断模块,用于判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则调用通信恢复模块;
通信恢复模块,用于恢复网络通信;
次数判断模块,用于判断是否满足预置的检测次数,若是,则调用第一判定模块,若否,则返回调用所述远程操作判断模块;
第一判定模块,用于判定当前不可信进程为远程桌面控制进程。
7.根据权利要求6所述的装置,其特征在于,所述操作函数包括软键盘消息发送函数,软鼠标消息发送函数,以及,屏幕抓取函数,所述远程桌面控制操作包括软键盘消息发送操作,软鼠标消息发送操作,以及,屏幕抓取操作;
所述远程操作判断模块包括:
软键盘操作判断子模块,用于根据所述软键盘消息发送函数判断是否存在软键盘消息发送操作;
软鼠标操作判断子模块,用于根据所述软鼠标消息发送函数判断是否存在软鼠标消息发送操作;
以及,
屏幕抓取操作判断子模块,用于根据所述屏幕抓取函数判断是否存在屏幕抓取操作。
8.根据权利要求6或7所述的装置,其特征在于,还包括:
过滤模块,与钩挂处理模块连接,用于过滤掉可信进程。
9.根据权利要求6或7所述的装置,其特征在于,还包括:
第二判定模块,用于在根据所述操作函数判断不存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程;
和/或,
第三判定模块,用于在根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断不存在网络通信时,判定当前不可信进程为非远程桌面控制进程;
和/或,
第四判定模块,用于在所述网络通信阻塞的时间内存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程。
10.根据权利要求6或7所述的装置,其特征在于,还包括:
通知模块,用于向用户报告所述远程桌面控制进程;
和/或,
拦截模块,用于拦截所述远程桌面控制进程。
一种远程桌面控制识别的方法和装置\n技术领域\n[0001] 本申请涉及网络信息安全处理的技术领域,特别是涉及一种远程桌面控制识别的方法和一种远程桌面控制识别的装置。\n背景技术\n[0002] 远程控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,早期的远程控制往往指在局域网中的远程控制,随着互联网的普及和技术革新,现在的远程控制往往指互联网中的远程控制,互联网中的远程控制必须通过网络才能进行。位于本地的计算机是操纵指令的发出端,称为主控端或客户端,非本地的被控计算机叫做被控端或服务器端。“远程”不等同于远距离,主控端和被控端可以是位于同一局域网的同一房间中,也可以是连入Internet的处在任何位置的两台或多台计算机。\n[0003] 远程桌面采用的是一种微软RDP技术,当某台计算机开启了远程桌面控制功能后,就可以在网络的另一端控制这台计算机,通过远程桌面功能可以实时的操作这台计算机,在上面安装软件,运行程序,所有的一切都好像是直接在该计算机上操作一样。这就是远程桌面的最大功能,通过该功能网络管理员可以在家中安全的控制单位的服务器,而且由于该功能是系统内置的所以比其他第三方远程控制工具使用更方便更灵活。\n[0004] 但目前,远程桌面控制功能被一些黑客和不法分子用作木马,来窃取被控端电脑的文件资料和用户个人信息、账户资料等,如冰河木马。为了防止这种木马,各大服务提供商都开始采用数字证书、USB-Key等方式加以控制。但是此类方法有一个缺陷就是数字证书是安装在用户终端上的,一旦用户终端遭到远程控制则用户身份仍然会被冒用,因而,如何识别计算机或用户终端上的远程桌面控制,以提高计算机和各种用户终端应用的安全性,成为本领域技术人员迫切需要解决的问题。\n发明内容\n[0005] 本申请的目的是提供一种远程桌面控制识别的方法和装置,用以提高计算机和各种用户终端应用的安全性,成为本领域技术人员迫切需要解决的问题。\n[0006] 为了解决上述问题,本申请公开了一种远程桌面控制识别的方法,包括:\n[0007] 步骤S1,注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;\n[0008] 步骤S2,根据所述操作函数判断是否存在远程桌面控制操作,若是,则执行步骤S3;\n[0009] 步骤S3,根据所述通信函数判断是否存在网络通信,若是,则执行步骤S4;\n[0010] 步骤S4,配置所述通信函数按预设时间阻塞网络通信;\n[0011] 步骤S5,判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则执行步骤S6;\n[0012] 步骤S6,恢复网络通信,判断是否满足预置的检测次数,若是,则执行步骤S7;若否,则返回步骤S2;\n[0013] 步骤S7,判定当前不可信进程为远程桌面控制进程。\n[0014] 优选地,所述操作函数包括软键盘消息发送函数,软鼠标消息发送函数,以及,屏幕抓取函数,所述远程桌面控制操作包括软键盘消息发送操作,软鼠标消息发送操作,以及,屏幕抓取操作;\n[0015] 所述步骤S2包括:\n[0016] 根据所述软键盘消息发送函数判断是否存在软键盘消息发送操作;\n[0017] 根据所述软鼠标消息发送函数判断是否存在软鼠标消息发送操作;\n[0018] 以及,\n[0019] 根据所述屏幕抓取函数判断是否存在屏幕抓取操作。\n[0020] 优选地,在步骤S 1之前,还包括:\n[0021] 过滤掉可信进程。\n[0022] 优选地,所述的方法,还包括:\n[0023] 若根据所述操作函数判断不存在远程桌面控制操作,则判定当前不可信进程为非远程桌面控制进程;\n[0024] 和/或,\n[0025] 若根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断不存在网络通信,则判定当前不可信进程为非远程桌面控制进程;\n[0026] 和/或,\n[0027] 若在所述网络通信阻塞的时间内存在远程桌面控制操作,则判定当前不可信进程为非远程桌面控制进程。\n[0028] 优选地,所述的方法,还包括:\n[0029] 向用户报告所述远程桌面控制进程;\n[0030] 和/或,\n[0031] 拦截所述远程桌面控制进程。\n[0032] 本申请实施例还公开了一种远程桌面控制识别的装置,包括:\n[0033] 钩挂处理模块,用于注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;\n[0034] 远程操作判断模块,用于根据所述操作函数判断是否存在远程桌面控制操作,若是,则调用通信判断模块;\n[0035] 通信判断模块,用于根据所述通信函数判断是否存在网络通信,若是,则调用通信阻塞模块;\n[0036] 通信阻塞模块,用于配置所述通信函数按预设时间阻塞网络通信;\n[0037] 阻塞内操作判断模块,用于判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则调用通信恢复模块;\n[0038] 通信恢复模块,用于恢复网络通信;\n[0039] 次数判断模块,用于判断是否满足预置的检测次数,若是,则调用第一判定模块,若否,则返回调用所述远程操作判断模块;\n[0040] 第一判定模块,用于判定当前不可信进程为远程桌面控制进程。\n[0041] 优选地,所述操作函数包括软键盘消息发送函数,软鼠标消息发送函数,以及,屏幕抓取函数,所述远程桌面控制操作包括软键盘消息发送操作,软鼠标消息发送操作,以及,屏幕抓取操作;\n[0042] 所述远程操作判断模块包括:\n[0043] 软键盘操作判断子模块,用于根据所述软键盘消息发送函数判断是否存在软键盘消息发送操作;\n[0044] 软鼠标操作判断子模块,用于根据所述软鼠标消息发送函数判断是否存在软鼠标消息发送操作;\n[0045] 以及,\n[0046] 屏幕抓取操作判断子模块,用于根据所述屏幕抓取函数判断是否存在屏幕抓取操作。\n[0047] 优选地,所述的装置,还包括:\n[0048] 过滤模块,与钩挂处理模块连接,用于过滤掉可信进程。\n[0049] 优选地,所述的装置,还包括:\n[0050] 第二判定模块,用于在根据所述操作函数判断不存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程;\n[0051] 和/或,\n[0052] 第三判定模块,用于在根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断不存在网络通信时,判定当前不可信进程为非远程桌面控制进程;\n[0053] 和/或,\n[0054] 第四判定模块,用于在所述网络通信阻塞的时间内存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程。\n[0055] 优选地,所述的装置,还包括:\n[0056] 通知模块,用于向用户报告所述远程桌面控制进程;\n[0057] 和/或,\n[0058] 拦截模块,用于拦截所述远程桌面控制进程。\n[0059] 与现有技术相比,本申请包括以下优点:\n[0060] 本申请基于远程桌面控制的工作原理,注入到不可信进程中,并HOOK(钩挂)相关的远程桌面控制行为函数,然后根据这些远程桌面控制行为函数判断当前设备是否存在远程桌面控制行为,若是,则判断当前是否存在网络通信,若是,则将网络阻塞一段时间,判断在这段时间内是否仍有远程桌面控制行为,若没有,且达到了预设的检测次数,则判定当前不可信进程为远程桌面控制进程。本申请易于实现,无需增加的硬件资源,并能获得快速、有效识别计算机或用户终端上的远程桌面控制的效果,从而提高计算机和各种用户终端应用的安全性。\n[0061] 此外,对于现有技术对于远程桌面控制木马或病毒的查杀而言,一种方式是出现远程桌面控制木马或病毒后,安全厂商提取远程桌面控制木马或病毒的特征,然后利用这些特征进行扫描判断,若判定是远程桌面控制木马或病毒则进行查杀,显然这种处理方法十分滞后,并且对于新出来的远程桌面控制木马或病毒无法识别,本申请实施例可以实时对远程桌面控制的情况进行识别,不用预先提取特征码,针对远程桌面控制木马或病毒的处理更为实时和有效。\n[0062] 现有技术还有一种对于远程桌面控制木马或病毒的查杀的方法,具体是通过一系列的关键API调用顺序来判断,但此方法对于桌面远程不可靠,由于这些API都是一些常用API,通过此类方法进行判断,肯定很容易出现误报的问题。本申请实施例则很好地避免了这种误报情况的发生,能有效提高远程桌面控制识别的准确性和有效性。\n附图说明\n[0063] 图1是本申请的一种远程桌面控制识别的方法实施例1的步骤流程图;\n[0064] 图2是本申请的一种远程桌面控制识别的方法实施例2的步骤流程图;\n[0065] 图3是本申请的一种远程桌面控制识别的装置实施例的结构框图。\n具体实施方式\n[0066] 为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。\n[0067] 为使本领域技术人员更好地理解本申请,以下简单介绍远程桌面控制技术:\n[0068] 远程桌面控制是在网络上由一台电脑(主控端Remote/客户端)远距离去控制另一台电脑(被控端Host/服务器端)的技术,主要通过远程桌面控制软件实现。具体而言,远程桌面控制软件的工作原理是:远程桌面控制软件一般分客户端程序(Client)和服务器端程序(Server)两部分,通常将客户端程序安装到主控端的电脑上,将服务器端程序安装到被控端的电脑上。使用时客户端程序向被控端电脑中的服务器端程序发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程桌面控制命令,控制被控端电脑中的各种应用程序运行,就像利用遥控器遥控电视的音量、变换频道或者开关电视机一样。不过,有一个概念需要明确,那就是主控端电脑只是将键盘和鼠标的指令传送给被控端电脑,同时将被控端电脑的屏幕画面通过通信线路回传过来。也就是说,控制被控端电脑进行操作似乎是在眼前的电脑上进行的,实质是在远程的电脑中实现的,不论打开文件,还是上网浏览、下载等都是存储在远程的被控端电脑中的。\n[0069] 本专利发明人发现,一般远程桌面控制软件都会有涉及以下过程:\n[0070] 1)网络通信;\n[0071] 2)通过软键盘发送函数,发送键盘消息;\n[0072] 需要说明的是,该函数只负责软键盘消息发送,真实键盘消息发送不会通过该函数。\n[0073] 3)通过软鼠标发送函数,发送鼠标消息;\n[0074] 需要说明的是,该函数只负责软鼠标消息发送,真实鼠标消息发送不会通过该函数。\n[0075] 据此,本专利发明人提出本申请实施例的核心构思之一在于,基于上述远程桌面控制的工作原理,注入到不可信进程中,并HOOK(钩挂)相关的远程桌面控制行为函数,然后根据这些远程桌面控制行为函数判断当前设备是否存在远程桌面控制行为,若是,则判断当前是否存在网络通信,若是,则将网络阻塞一段时间,判断在这段时间内是否仍有远程桌面控制行为,若没有,且达到了预设的检测次数,则判定当前不可信进程为远程桌面控制进程。\n[0076] 参照图1,示出了本申请的一种远程桌面控制识别的方法实施例1的步骤流程图,具体可以包括如下步骤:\n[0077] 步骤101,注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;\n[0078] 步骤102,当根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断存在网络通信时,配置所述通信函数按预设时间阻塞网络通信;\n[0079] 步骤103,判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若是,则执行步骤107;若否,则执行步骤104;\n[0080] 步骤104,恢复网络通信;\n[0081] 步骤105,判断是否满足预置的检测次数,若是,则执行步骤106;若否,则返回步骤\n102;\n[0082] 步骤106,判定当前不可信进程为远程桌面控制进程。\n[0083] 步骤107,判定当前不可信进程为非远程桌面控制进程。\n[0084] 在本申请实施例中,所述不可信进程,是相对于可信进程而言的。可信进程是指经过可信计算(Trusted Computing,TC)获得的可信进程。\n[0085] 以下对可信计算进行简单介绍:\n[0086] 信息安全具有四个侧面:设备安全、数据安全、内容安全与行为安全。可信计算为行为安全而生。行为安全应该包括:行为的机密性、行为的完整性、行为的真实性等特征。从概念上来说,可信这个概念就是提出一种能够超越预设安全规则,执行特殊行为的运行实体。操作系统中将这个实体运行的环境称为可信计算基(Trusted Computing Base,简称TCB)。\n[0087] 一直以来,从应用程序层面,从操作系统层面,从硬件层面来提出的TCB相当多。最为实用的是以硬件平台为基础的可信计算平台(Trustec Computing Platform),它包括安全协处理器、密码加速器、个人令牌、软件狗、可信平台模块(Trusted Platform Modules,TPM)以及增强型CPU、安全设备和多功能设备。这些实例的目标是实现:数据的真实性、数据的机密性、数据保护以及代码的真实性、代码的机密性和代码的保护。这些平台的实现目的包括两个层面的意思:\n[0088] 1、保护指定的数据存储区,防止敌手实施特定类型的物理访问;\n[0089] 2、赋予所有在计算平台上执行的代码以证明它在一个未被篡改环境中运行的能力。\n[0090] 从广义的角度,可信计算平台为网络用户提供了一个更为宽广的安全环境,它从安全体系的角度来描述安全问题,确保用户的安全执行环境,突破被动防御打补丁方式。\n[0091] 可信计算包括以下5个关键技术概念:\n[0092] 1、Endorsement key签注密钥:\n[0093] 签注密钥是一个2048位的RSA公共和私有密钥对,它在芯片出厂时随机生成并且不能改变。这个私有密钥永远在芯片里,而公共密钥用来认证及加密发送到该芯片的敏感数据。\n[0094] 2、Secure input and output安全输入输出:\n[0095] 安全输入输出是指电脑用户和他们认为与之交互的软件间受保护的路径。当前,电脑系统上恶意软件有许多方式来拦截用户和软件进程间传送的数据。例如键盘监听和截屏。\n[0096] 3、Memory curtaining储存器屏蔽:\n[0097] 储存器屏蔽拓展了一般的储存保护技术,提供了完全独立的储存区域。例如,包含密钥的位置。即使操作系统自身也没有被屏蔽储存的完全访问权限,所以入侵者即便控制了操作系统信息也是安全的。\n[0098] 4、Sealed storage密封储存:\n[0099] 密封存储通过把私有信息和使用的软硬件平台配置信息捆绑在一起来保护私有信息。意味着该数据只能在相同的软硬件组合环境下读取。例如,某个用户在他们的电脑上保存一首歌曲,而他们的电脑没有播放这首歌的许可证,他们就不能播放这首歌。\n[0100] 5、Remote attestation远程认证:\n[0101] 远程认证准许用户电脑上的改变被授权方感知。例如,软件公司可以避免用户干扰他们的软件以规避技术保护措施。它通过让硬件生成当前软件的证明书。随后电脑将这个证明书传送给远程被授权方来显示该软件公司的软件尚未被干扰(尝试破解)。\n[0102] 可信计算是安全的基础,从可信根出发,解决PC机结构所引起的安全问题,具有以下功能:\n[0103] (1)确保用户唯一身份、权限、工作空间的完整性/可用性;\n[0104] (2)确保存储、处理、传输的机密性/完整性;\n[0105] (3)确保硬件环境配置、操作系统内核、服务及应用程序的完整性确保密钥操作和存储的安全;\n[0106] (4)确保系统具有免疫能力,从根本上阻止病毒和黑客等软件的攻击。\n[0107] 在具体实现中,可以通过过滤掉可信进程确定不可信进程,在本申请的一种优选实施例中,所述不可信进程可以为没有合法数字签名的系统中的进程,当然,所述不可信进程还可以采用其它判断方式,如采用云安全技术提取进程的摘要信息,看有多少人使用过该进程,据此来判断当前进程是否为可信进程,本领域技术人员根据实际情况任意选用均可,本申请实施例对此不作限制。\n[0108] 对于所述钩挂HOOK技术,以下以较为通用的WINDOWS系统为例进行说明:\n[0109] 通常,把拦截API(应用程序接口)的调用的这个过程称为是安装一个API钩子(API Hook)。一个API钩子至少有两个模块组成:一个是钩子服务器(Hook Server)模块,一般为EXE的形式;一个是钩子驱动器(Hook Driver)模块,一般为DLL的形式。\n[0110] 服务器主要负责向目标进程注入钩子驱动器,使得驱动器工作在目标进程的地址空间中,这是关键的第一步。驱动器则负责实际的API拦截工作,便API函数调用的前后能做一些需要的工作。一个比较常见的API钩子的例子就是一些实时翻译软件(像金山词霸)中必备的的功能:屏幕抓词,它主要是对一些GDI函数进行了拦截,获取它们的输入参数中的字符串,然后在自己的窗口中显示出来。针对上述的两个部分,有以下两点需要考虑的:一是选用何种DLL注入技术,二是采用何种API拦截机制。\n[0111] 具体而言,注入技术的选用由于在Win32系统中各个进程的地址是互相独立的,因此无法在一个进程中对另一个进程的代码进行有效的修改。而要完成API钩子的工作就必须进行这种操作。因此,需要采取某种独特的手段,使得API钩子(准确的说是钩子驱动器)能够成为目标进程中的一部分,才有较大的可能来对目标进程数据和代码进行有控制的修改。\n[0112] 通常有以下几种进程注入方式:\n[0113] 进程注入方式1:\n[0114] 利用注册表:如果准备拦截的进程连接了User32.dll,也就是使用了User32中的API(一般图形界面的应用程序都符合这个条件),那么就可以简单把钩子驱动器DLL的名字作为值添加在下面注册表的键下:HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersio n\Windows\AppInit_DLLs,值的形式可以为单个DLL的文件名,或者是一组DLL的文件名,相邻的名称之间用逗号或空格间隔。所有由该值标识的DLL将在符合条件的应用程序启动的时候装载。\n[0115] 进程注入方式2:\n[0116] 建立系统范围的Windows钩子要向某个进程注入DLL,一个十分普遍也是比较简单的方法就是建立在标准的Windows钩子的基础上。Windows钩子一般是在DLL中实现的,这是一个全局性的Windows钩子的基本要求。当成功地调用SetWindowsHookEx函数之后,便在系统中安装了某种类型的消息钩子,这个钩子可以是针对某个进程,也可以是针对系统中的所有进程。一旦某个进程中产生了该类型的消息,操作系统会自动把该钩子所在的DLL映像到该进程的地址空间中,从而使得消息回调函数(在SetWindowsHookEx的参数中指定)能够对此消息进行适当的处理,在这里,并不需要关注对消息进行什么处理,因此在消息回调函数中只需把消息钩子向后传递就可以了,但是所需的DLL已经成功地注入了目标进程的地址空间,从而可以完成后续工作。\n[0117] 不同进程中使用的DLL之间是不能直接共享数据的,因为它们活动在不同的地址空间中。但在Windows钩子DLL中,有一些数据,例如Windows钩子句柄HHook,这是由SetWindowsHookEx函数返回值得到的,并且作为参数将在CallNextHookEx函数和UnhookWindoesHookEx函数中使用,显然使用SetWindowsHookEx函数的进程和使用CallNextHookEx函数的进程一般不会是同一个进程,因此需要能够使句柄在所有的地址空间中都是有效的有意义的,也就是说,它的值必须在这些钩子DLL所挂钩的进程之间是共享的。为了达到这个目的,可以把它存储在一个共享的数据区域中。\n[0118] 进程注入方式3:\n[0119] 使用CreateRemoteThread函数:任何一个进程都可以使用LoadLibrary来动态地加载一个DLL。但问题是,如何让目标进程在我们的控制下来加载我们的钩子DLL(也就是钩子驱动器)呢?这里有一个API函数CreateRemoteThread,通过它可在一个进程中可建立并运行一个远程的线程。调用该API需要指定一个线程函数指针作为参数,该线程函数的原型如下:Function ThreadProc(lpParam:Pointer):DWORD;再来看一下LoadLibrary的函数原型:Function LoadLibrary(lpFileName:PChar):HModule;可以看出,这两个函数原型实质上是完全相同的(其实返回值是否相同关系不大,因为无法得到远程线程函数的返回值的),只是叫法不同而已,这种相同可以直接把LoadLibrary当做线程函数来使用,从而在目标进程中加载钩子DLL。\n[0120] 进程注入方式4:\n[0121] 通过BHO来注入DLL:当注入DLL的对象仅仅是Internet Explorer。可以利用Browser Helper Objects(BHO)。一个BHO是一个在DLL中实现的COM对象,它主要实现了一个IObjectWithSite接口,而每当IE运行时,它会自动加载所有实现了该接口的COM对象。\n[0122] 拦截机制在钩子应用的系统级别方面,有两类API拦截的机制——内核级的拦截和用户级的拦截。本申请实施例主要涉及用户级的拦截。用户级的钩子通常是在普通的DLL中实现整个API的拦截工作,具体而言,拦截API函数的调用,一般可有以下几种方法:\n[0123] 拦截方法1:\n[0124] 代理DLL(特洛伊木马):一个容易想到的可行的方法是用一个同名的DLL去替换原先那个输出准备拦截的API所在的DLL。当然代理DLL也要和原来的一样,输出所有函数。\n[0125] 拦截方法2:\n[0126] 改写执行代码:有许多拦截的方法是基于可执行代码的改写。其中一个就是改变在CALL指令中使用的函数地址。它的基本思路是检索出在内存中所有要拦截的API的CALL指令,然后把原先的地址改成为你自己提供的函数的地址。另外一种代码改写的方法的实现方法更为复杂,它的主要的实现步骤是先找到原先的API函数的地址,然后把该函数开始的几个字节用一个JMP指令代替(有时还不得不改用一个INT指令),使得对该API函数的调用能够转向我们自己的函数调用。\n[0127] 拦截方法3:\n[0128] 以调试器的身份进行拦截:另一个可选的方法是在目标函数中安置一个调试断点,使得进程运行到此处就进入调试状态。它需要一个额外的调试模块来处理所有的异常,整个进程将一直在调试状态下运行,直至它运行结束。\n[0129] 拦截方法4:\n[0130] 改写输入地址表。\n[0131] 当然,上述注入进程及进行HOOK的方法仅仅用作示例,本领域技术人员根据实际情况采用任一种方法都是可行的,本申请对此不作限制。还需要说明的是,上述函数的说明都是基于windows操作系统而言的,实际上,对于其他的操作系统,例如,Windows、Linux、MacOS、FreeBSD,Unix,Solaris等等,以及用于移动终端的PalmOS,Windows Mobile,Symbian等等;不同操作系统中的函数调用可能会有所不同,在此无法一一列举,所以下面的描述中也仅仅以windows操作系统为例进行说明,当然,本领域技术人员应该知悉,本申请并不限定于windows操作系统中。\n[0132] 本申请实施例通过注入到不可信进程中,并HOOK(钩挂)相关的远程桌面控制行为函数,然后根据这些远程桌面控制行为函数判断当前不可信进程是否为远程桌面控制进程,易于实现,无需增加的硬件资源,并能获得快速、有效识别计算机或用户终端上的远程桌面控制的效果,从而提高计算机和各种用户终端应用的安全性。\n[0133] 参考图2,示出了本申请的一种远程桌面控制识别的方法实施例2的步骤流程图,具体可以包括:\n[0134] 步骤201,注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;\n[0135] 其中,所述远程桌面控制行为函数可以包括软键盘消息发送函数,软鼠标消息发送函数,屏幕抓取函数,以及,通信函数。\n[0136] 步骤202,根据所述软键盘消息发送函数和软鼠标消息发送函数,判断是否存在软键盘消息发送操作和软鼠标消息发送操作;若是,则执行步骤203,若否,则执行步骤210;\n[0137] 步骤203,根据所述屏幕抓取函数判断是否存在屏幕抓取操作。若是,则执行步骤\n204,若否,则执行步骤210;\n[0138] 步骤204,根据所述通信函数判断是否存在网络通信,若是,则执行步骤205;若否,则执行步骤210;\n[0139] 步骤205,配置所述通信函数按预设时间阻塞网络通信;\n[0140] 步骤206,判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若是,则执行步骤210;若否,则执行步骤207;\n[0141] 步骤207,恢复网络通信;\n[0142] 步骤208,判断是否满足预置的检测次数,若是,则执行步骤209;若否,则返回步骤\n202;\n[0143] 步骤209,判定当前不可信进程为远程桌面控制进程。\n[0144] 步骤210,判定当前不可信进程为非远程桌面控制进程。\n[0145] 在具体实现中,以WINDOWS系统为例,所述远程桌面控制行为函数包括:\n[0146] 软键盘消息发送函数,软鼠标消息发送函数:\n[0147] SendInput\n[0148] keybd_event\n[0149] mouse_event\n[0150] 屏幕抓取函数:\n[0151] CreateCompatibleBitmap\n[0152] 网络通信函数:\n[0153] Send\n[0154] Recv\n[0155] 通过HOOK到上述函数,判断上述函数是否调用,即可确定是否发生相应的操作,例如,判断是否调用了SendInput、keybd_event、mouse_event函数,若是,则确定发生了软键盘、软鼠标的消息发送操作;或如,判断是否调用了CreateCompatibleBitmap函数,若是,则确定发生了屏幕抓取操作;又如,判断是否调用了Send和Recv函数,若是,则确定发生了网络通信行为。在实际中,Hook住Send和Recv函数后,Sleep一小段时间便可达到阻塞网络的效果。\n[0156] 本实施例通过过滤掉可信程序,注入系统中运行的不可信的程序,Hook不可信进程的网络通信函数,软鼠标、软键盘消息发送函数。抓取屏幕函数。检测应用程序是否存在发送鼠标、键盘消息以及抓取屏幕的行为,如果存在,继续判断其是否存在网络通信的行为,如果存在网络通信行为,则阻塞网络通信函数一小段时间,如100毫秒,同时判断在网络通信被阻塞的时间段内,是否还存在鼠标、键盘消息行为,重复若干次,如50次,如果发现一旦阻塞网络则不会存在鼠标键盘消息发送行为,则证明该进程存在远程控制的可能。\n[0157] 在具体应用中,本申请实施例还可以包括如下步骤:\n[0158] 向用户报告所述远程桌面控制进程;\n[0159] 和/或,\n[0160] 拦截所述远程桌面控制进程。\n[0161] 例如,通过向当前设备关联的用户发送短信,让用户确认该操作是否为其本人发起的操作;或者,拦截所述远程桌面控制进程,并提示用户,由用户确认是否继续操作等等。\n[0162] 当然,上述具体应用的场景也仅仅用作示例,本申请对此无需加以限制。\n[0163] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。\n[0164] 参照图3,示出了本申请的一种远程桌面控制识别的装置实施例的结构框图,具体可以包括如下模块:\n[0165] 钩挂处理模块301,用于注入不可信进程,对所述不可信进程中的远程桌面控制行为函数进行钩挂HOOK;其中,所述远程桌面控制行为函数包括操作函数和通信函数;\n[0166] 远程操作判断模块302,用于根据所述操作函数判断是否存在远程桌面控制操作,若是,则调用通信判断模块303;\n[0167] 通信判断模块303,用于根据所述通信函数判断是否存在网络通信,若是,则调用通信阻塞模块304;\n[0168] 通信阻塞模块304,用于配置所述通信函数按预设时间阻塞网络通信;\n[0169] 阻塞内操作判断模块305,用于判断在所述网络通信阻塞的时间内是否存在远程桌面控制操作,若否,则调用通信恢复模块306;\n[0170] 通信恢复模块306,用于恢复网络通信;\n[0171] 次数判断模块307,用于判断是否满足预置的检测次数,若是,则调用第一判定模块308,若否,则返回调用所述远程操作判断模块302;\n[0172] 第一判定模块308,用于判定当前不可信进程为远程桌面控制进程。\n[0173] 在本申请的一种优选实施例中,所述操作函数包括软键盘消息发送函数,软鼠标消息发送函数,以及,屏幕抓取函数,所述远程桌面控制操作包括软键盘消息发送操作,软鼠标消息发送操作,以及,屏幕抓取操作;在这种情况下,所述远程操作判断模块302可以包括如下子模块:\n[0174] 软键盘操作判断子模块,用于根据所述软键盘消息发送函数判断是否存在软键盘消息发送操作;\n[0175] 软鼠标操作判断子模块,用于根据所述软鼠标消息发送函数判断是否存在软鼠标消息发送操作;\n[0176] 以及,\n[0177] 屏幕抓取操作判断子模块,用于根据所述屏幕抓取函数判断是否存在屏幕抓取操作。\n[0178] 在具体实现中,本实施例还可以包括如下模块:\n[0179] 过滤模块,与钩挂处理模块连接,用于过滤掉可信进程。\n[0180] 作为本申请实施例具体应用的一种示例,本申请实施例还可以包括如下模块:\n[0181] 第二判定模块,用于在根据所述操作函数判断不存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程;\n[0182] 和/或,\n[0183] 第三判定模块,用于在根据所述操作函数判断存在远程桌面控制操作,且根据所述通信函数判断不存在网络通信时,判定当前不可信进程为非远程桌面控制进程;\n[0184] 和/或,\n[0185] 第四判定模块,用于在所述网络通信阻塞的时间内存在远程桌面控制操作时,判定当前不可信进程为非远程桌面控制进程。\n[0186] 在具体应用中,本申请实施例还可以包括如下模块:\n[0187] 通知模块,用于向用户报告所述远程桌面控制进程;\n[0188] 和/或,\n[0189] 拦截模块,用于拦截所述远程桌面控制进程。\n[0190] 本说明书中的各个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。\n[0191] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。\n[0192] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。\n[0193] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。\n[0194] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。\n[0195] 尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。\n[0196] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0197] 以上对本申请所提供的一种远程桌面控制识别的方法和一种远程桌面控制识别的装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
法律信息
- 2019-12-27
专利权的转移
登记生效日: 2019.12.09
专利权人由阿里巴巴集团控股有限公司变更为创新先进技术有限公司
地址由英属开曼群岛大开曼资本大厦一座四层847号邮箱变更为开曼群岛大开曼岛西湾路802号木槿街大展览馆31119号邮箱
- 2016-11-30
- 2013-12-25
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201210168060.5
申请日: 2012.05.25
- 2013-12-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-08-01
|
2006-01-24
| | |
2
| |
2008-07-23
|
2007-09-05
| | |
3
| |
2011-04-20
|
2010-12-14
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |