软键盘的技术风险透析及防范
- 格式:pdf
- 大小:285.29 KB
- 文档页数:4
-I m
软键盘的技术风险透析及防范
中国工商银行股份有限公司数据中心(北京) 蒋家棠
随着网上转账、网上购物、网上缴费等网上银行业
务的普及,一些不法分子开发了各种恶意程序,其中有
一种被称为“键盘钩子”的技术,可以通过截获物理
键盘的按键消息得到用户输入的用户名和密码等敏感信 息。为了防范该技术引发的安全风险,许多网上服务提
供商采取了软键盘输入方法。软键盘能防范“键盘钩 子”技术的威胁是因为设计良好的软键盘能规避物理键
盘按键消息,从而使“键盘钩子”失去了“钩”的目
标。然而,道高一尺、魔高一丈,通常情况下软键盘能 够防范“键盘钩子”的威胁,但是也存在很多潜在风
险。本文将从软键盘与物理键盘安全性比较、不同软键
盘技术特点对比、软键盘安全风险及防范三个方面来探
讨软键盘的安全性问题。
一、软键盘与物理键盘安全性比较
在Windows系统中,计算机用户每次在物理键盘上 击键时,都会产生一个按键消息,通常Windows系统将
通过消息队列的方式把该消息传送给对应的应用程序。
例如当用户在密码输入框中用物理键盘输入密码时, Windows系统的消息机制将把物理键盘按键消息通过
消息队列发送给密码输入框的相关处理程序。密码输
入框为了安全起见,一般都会将密码回显为“ ’等特
殊字符。 但是Window S消息机制为了满足某些应用的需
要提供了拦截消息的接口——消息钩子。Windows
74 FINANclAL c。MPuTER 0F cHlNA 消息机制可以设置l s种类型的消息钩子,其中包
括键盘钩子WH—KEYBOARD、低层键盘消息钩子
WH~KEYBOARD—LL、鼠标消息钩子WH—MOUSE、消
息队列钩子WH—GETMESSAGE等等。通过这些钩子就
能截获用户敲击物理键盘时的按键消息,从而窃取用户 输入的敏感信息,包括用“ ’回显的密码。对于该类
技术我们统称为“键盘钩子”技术。 软键盘,顾名思义是一种通过软件实现的模拟键盘
输入技术,它通过在屏幕上显示一些按键的图像,然后 由鼠标点击相应按键图像完成输入。一方面,对绝大多
数软键盘来说,点击软键盘按键时不会产生物理键盘按
键消息,所以木马无法通过“键盘钩子”技术拦截按键
消息来截获密码等敏感信息。另一方面,软键盘为软件
模拟实现,在软键盘开发过程中,开发者可以加入自己
的软件安全机制来进一步提高安全性,比如将软键盘的
输入按照某种算法进行加密变形或者增加干扰信息等 等。
通过上述对比分析可知,通常的软键盘都规避了
物理键盘消息,能有效防范基于“键盘钩子”技术木
马的威胁。由于当前主流木马都是通过“键盘钩子”
技术来截获密码,因此使用软键盘将使大量密码窃取
木马失效,从而能较大程度上提高安全性。需要特别
说明的是由于软键盘是通过软件实现的,其安全性与
软件实现过程中所使用的具体技术有关系,比如有一
种软键盘,它通过模拟发送物理键盘消息来实现击键 功能,由于这种软键盘并没有规避物理键盘消息,
如果它没有额外引进一些保护机制,则无法防范
“键盘钩子”技术,所以这种软键盘安全性并不比 物理键盘高。
二、不同软键盘技术的特点对比
目前,主流的软键盘可以按照技术特点分为三
类:JavaScript软键盘、ActiveX控件软键盘、客户端
程序软键盘。由于软键盘的安全性及其实现技术密切
相关,所以下面就对几种主流软键盘技术的特点做一
个对比分析。 1.JavaScript软键盘
JavaScript是一种可以通过浏览器来解析执行的脚本
语言,互联网中应用十分普遍。使用JavaScript实现的软
键盘不需要用户安装,客户体验较好。目前绝大多数浏
览器都支持JavaScript,所以JavaScript软键盘对浏览器
的依赖性较小,使用范围较为广泛。而且JavaScript软键 盘在实现上也相对较为简单。JavaScript软键盘能有效防
范基于“键盘钩子”技术的键盘记录恶意程序。但是,
由于目前用户使用最多的浏览器是IE浏览器和基于IE内
核的浏览器,对于这类浏览器,黑客可以使用IE的COM
接LI编程来截获软键盘的输入。JavaScript软键盘还有另
外一个严重问题就是通过浏览器可以获得源代码,从而
大大方便黑客攻击。此外Javascript软键盘通过浏览器
来解析执行,其安全性还受制于浏览器的安全性。所以
JavaScript软键盘的优点是客户体验好、依赖性小、开发
难度较小,但是安全性相对较低。
2.ActiveX控件软键盘 ActiveX控件是一种软件组件,安装后可以被网页
脚本或其他应用程序调用。对于ActiveX控件实现的
软键盘,用户第一次使用时需要安装,而且ActiveX
控件安装会受系统安全等级设置影响,所以用户体验
相对较差。由于ActiveX控件依赖于IE内核浏览器, 业务 新l Business Innovation I
对于非IE内核的浏览器则无法支持,或支持性不佳,
或需要安装其他插件,使用范围受限。ActiveX控件
软键盘不仅能防范基于“键盘钩子”技术的键盘记录
恶意程序,也能防范基于“COM接口”技术的键盘记 录恶意程序,安全性较高,而且还能通过加载驱动的
方式进一步提高安全性。但是ActiveX技术本身有一
定安全风险,如果ActiveX控件软键盘自身设计不合
理,将严重影响其安全性。从总体看,ActiveX控件软
键盘相对于JavaScript软键盘来说其优点是安全性有很
大地提高,但是客户体验较差、依赖性较大、开发难 度更大。
3.客户端程序软键盘
客户端程序软键盘是指各种客户端程序上自带的
软键盘,比如操作系统自带的软键盘、QQ程序的软键 盘、各种输入法的软键盘、卡巴斯基提供的软键盘等
等。这些软键盘使用的技术不尽相同,安全性也参差不
齐。比如卡巴斯基提供的软键盘具有防“键盘钩子”和 防屏幕截图的功能,具有很高的安全性;而Windows操
作系统自带的软键盘“屏幕键盘”(命令行中输入OSK
即可打开)则采用模拟发送物理键盘消息的方式实现击
键功能,无法防范基于“键盘钩子”技术的木马威胁,
2011.
2/中国金融电脑 75 …I m
其安全 和物理键盘没有本质区别。一般情况下,基于
安全输入目的而设计的客户端程序软键盘都会采用多种 安全防护机制,所以安全性较高,但其开发实现也较为
复杂。
各种不同技术软键盘的特点总结如表1所示。
三、软键盘安全风险及防范
虽然一般情况下不同的软键盘技能够提高用户输入
的安全性,但还存在不少安全风险。
1.截屏和屏幕录像 截屏是一种抓取屏幕显示信息的技术。由于软键盘
的按键布局必须显示给用户看,所以截屏是对软键盘进
行攻击的最简单方法,但是如果软键盘使用了键盘布局
动态变化技术,则能有效防范截屏攻击。为此,在截屏
技术基础上又出现了一种屏幕录像技术,该技术能使攻
击者监控被攻击者完整的软键盘点击操作。屏幕录像技
术和截屏技术二者并没有本质的区别,实际上截屏的频
率高到一定程度即可视为屏幕录像。
截屏和屏幕录像所使用的技术手段有:①模拟发 送物理键盘的PrtSc键消息进行截屏;②调用视频输出
相关系统API进行截屏;③从内核读取显卡驱动程序 数据进行截屏。
第一种截屏和屏幕录像技术最简单。对于该技术,
一种可行的防范方法是:在用户进行网银输入时,在底
层将PrtSc键屏蔽。
第二种截屏和屏幕录像技术目前使用最广泛。对于
该技术,可以采用的防范手段是在底层监控视频输出相
关API,并对视频输出进行控制。 第三种截屏和屏幕录像技术难度较大,而且只能
针对具体的驱动程序进行开发,兼容性不好,稳定性 也较差,但是能绕过几乎所有的用户形态的安全保护
措施。针对这种攻击,只能通过安装内核级的驱动保
护程序来解决,但这将同样带来稳定性和兼容性的问
题,影响客户体验。
2.钩子
软键盘通过规避物理键盘消息的方式来应对“键
盘钩子”技术的威胁,但是钩子技术除了有“键盘
钩子”外也还有“鼠标钩子”、“消息队列钩子
等。由于软键盘还需要使用鼠标,所以如果没有防 钩子的保护机制,攻击者则可以使用“鼠标钩子”
截获鼠标的点击位置信息,再通过窗口句柄、IE的
IHTMLInputTextElement接口等方式获得软键盘的位置
表1不同软键盘技术特点对比
类型 3avaScrip,软键盘 ActiveX控件软键盘 客户端程序软键盘
安全水平 一般 较高 高(取决于具体设计)
客户体验 最好 一般 较好
适用范围 较』一 只有IE内核的浏览器可以很好地支持 受操作系统限制
开发难度 较简单 较复杂 复杂(取决于具体设计)
76 FINANclAL c。MPuTER oF cHlNA
及分布信息,结合鼠标点击位置信息以及软键盘的位置
及分布信息则有可能截获输入的字符,这种攻击方法对
于字符排列保持不变的软键盘尤其有效。除了鼠标消息
外,如果软键盘软件实现过程中使用了Windows ̄息机
制的其他方面,比如使用了消息队列,则也同样会面临
钩子技术的威胁。对于钩子技术的威胁,一方面要使软
键盘的布局可以动态变化;另一方面要采取一些检查并
防范各种钩子的安全措施。
3.内存嗅探 软键盘的操作可能会在内存中存有临时驻留信息,
比如软键盘输入的密码可能需要先放置在某个内存变量 中供浏览器使用,对于这些敏感内存区域如果不进行加
密保护,攻击者就有可能通过内存搜索嗅探的方式截获
软键盘的输入。对于这种攻击可以使用内存敏感数据加
密的措施来防范。 4.程序篡改
软键盘的本地程序文件或者加载到内存中的指令序 列如果没有很好的防篡改机制,攻击者则可以通过篡改
程序流程的方式拦截软键盘的输入。对于这种攻击,可
以通过对软键盘的本地程序文件和加载到内存中的指令
序列增 ̄UCRC校验等来防范。另外,还可以通过使用
压缩、加密、花指令、关键代码虚拟化等加壳技术来保
护软键盘程序,加大攻击者对软键盘程序进行反汇编跟
踪调试的难度,从而提高攻击者篡改的难度。不过现在
也已经有一些成熟的脱壳工具能自动脱除各种常见的
“壳”,而且有些“壳”的特征可能都被防病毒软件列
入病毒特征码中,因此,对软键盘程序进行加壳保护时
必须对所使用的“壳”进行精心设计。
5.底层劫持
除前面所述的几种攻击威胁外,攻击者还可能通过 编写内核驱动程序劫持系统调用,从内核层截获软键盘
输入信息。但是这种攻击难度非常大,发生的可能性较
小。对于此类攻击技术也只能通过安装内核级的驱动保 业务 _新l Business Innovation l
护程序来解决,但这将带来稳定性和兼容性的问题,客
户体验也非常不好。 6.来自系统的漏洞 由于JavaScript软键盘和ActiveX控件软键盘都依赖 于浏览器,如果浏览器的COM技术、ActiveX控件技术
等相关技术存在漏洞,将给软键盘带来极大的安全威
胁,但是此类漏洞挖掘难度很大,对黑客的技术要求
非常高。对于这类威胁,最重要的就是要及时安装相
关安全补丁。
四、总结
综上所述,绝大多数软键盘都规避了物理键盘的按
键消息,能有效抵御当前大量基于“键盘钩子”技术的