安全控件

0x01 定义

    简单说,安全控件是一种为了提升账户安全性,防止账户密码等私密信息被木马或病毒窃取的客户端程序,安全控件大多小巧,可以通过 ActiveX 或者手工下载的方式安装。

0x02 使用安全控件

    随着移动互联网的普及和网上支付的盛行,越来越多的恶意软件病毒木马针对用户的键盘鼠标操作进行记录,从而窃取用户的账号密码等。因此,如何让用户的帐号信息输入更安全,如何防止木马和病毒盗取用户帐号信息成为互联网信息安全的首要问题,在这样的背景下,要求我们必须通过安全控件这种技术手段加强对用户帐号信息的安全保护。
安全控件一般通过以下方式保护用户输入信息的安全:
1)  模拟密码框( ( 防止读取密码框) ) ;
2)  模拟( ( 屏幕) ) 键盘( ( 防止监听键盘输入) ) ;
3)  扫描后台程序,检测 k Hook  程序。
     关于钩子( Hook ): :钩子(Hook)是盗号密码的常用伎俩,日常生活中,鱼钩是用来钓鱼的,一旦鱼咬了钩,钩子就一直钩住鱼了,任凭鱼在水里怎么游,也逃不出鱼钩的控制。同样的,Windows 的钩子 Hook 也是用来钩东西的,比较抽象的是他是用来钩 Windows 事件或者消息的。最常见的就是鼠标和键盘钩子,用 Hook 钩子钩住鼠标、键盘,当你的鼠标、键盘有任何操作时,通过 Hook 就能知道他们都做了什么了。

0x03 安全控件现状

   目前各家网银、第三方支付公司等所使用的安全控件存在明显的安全隐患,不能很好的保护用户的帐号信息安全,主要体现在:
1)  安全控件面对内核级到应用级的多种钩子无能为力;
2)  内存动 态捕获的木马更是防不胜防;
3)  软键盘 保护 技术,没有有效的防止后台录 、截 屏软件工作。
       Windows 系统是建立在事件驱动的机制上的,也就是整个Windows 系统都是通过消息的传递来实现的。而钩子是 Windows 系统中非常重要的系统接口,用它可以截获并处理传递给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。
       因此,可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能,很多黑客也正是利用了钩子技术制作出各式各样的木马,用于窃取用户的帐号信息。为了避免各种钩子程序获取用户帐号信息,安全控件就必须优先于各种钩子程序处理用户的输入信息以及用户端屏幕显示(屏显)。

       可以确认目前的各种钩子程序主要通过两种方式获取用户的帐户信息:第一类是键盘类 Hook 程序,包括从应用层到核心层多种 Hook 方式;第二类是屏显Hook 程序。常见的类型有:COM 接口调用【IE COM 接口 】、API Hook【Windows Procedure--(WM_CHAR, WM_KEYDOWN )、API 函数(PostMessage)hook 】、消息钩子【SendMessage(WM_GETTEXT)  、SetWindowsHookEX(WH_KEYBOARD)、SetWindowsHookEx(WH_KEYBOARD_LL)】、API 调用【GetKeyboardState 、GetAsyncKeyState 、GetKeyState】、标准设备过滤驱动【键盘过滤驱动(FDO)】、键盘类驱动【针对 PS/2 键盘类驱动(kbdClass)Dispatch
Routine Hook;、针对 USB 键盘类驱动(hidusb、usbhub 】、Inline Hook、OBJECT Hook 、IDT Hook、端口读写 、屏幕显示类

0x04 工作原理

键盘消息处理原理

       对于采用 PS2 接口的键盘,键盘事件是通过键盘中断来实现的。当有一个键被按下或者抬起,就会引发一个中断事件,此时, CPU 会查找并调用相关中断服务处理函数进行处理,中断函数处理后便会调用上层驱动设置的回调函数(如果存在 )进行键盘事件已完成的向上传递过程。而对于采用 USB 接口的键盘,则较为复杂。读取 kbdclass 设备的 IRP 请求,会被转化成针对 USB 设备的 URB 请求块,传输方式设置为中断或批量传输方式,并通过 USB 总线驱动投递到 USB 物理总线上。当按键时, USB 控制器(像键盘这种 legacy 设备,会使用 UHCI 类型控制器进行管理)会过设置与操作系统共享的内存块中的数据结构,也即 TD 块( Transfer Descriptor ),并中断操作系统进行处理。而操作系统中断调用对应中断服务处理函数进行该数据的处理,并完成 URB 请求,继而完成对应的 IRP请求并向上层驱动传递。

键盘消息传递安全漏洞分析

ring0 按键拦截过滤技术
A. Attach 到键盘类驱动( kbdClass )的设备栈上( PS/2 和 USB ),进行
键盘数据过滤;
B. 针对 PS/2 键盘实现 i8042ptr 的过滤驱动;
C. 针对 USB 键盘实现的过滤驱动( hidusb 等);
D. 针对 PS/2 键盘类驱动( kbdClass ) Dispatch Routine Hook ;
E. 针对 USB 键盘类驱动( hidusb 、 usbhub 等) Dispatch Routine Hook ;
F. KbdClassServiceCallBack Routine Hook ( PS/2 和 USB );
G. 针对 PS/2 键盘的 PSIDT Hook ;
H. 针对 PS/2 键盘的 IOAPIC 编程;
I. 针对 PS/2 键盘的 I/O

ring3 按键拦截过滤技术
A. WM_GETTEXT 消息
B. Hook PostMessage API
C. SetWindowsHookEx 设置消息钩子
 WH_KEYBORAD
 WH_KEYBORAD_LL
 其他消息钩子
D. RawInput
E. GetKeyboardState  和 GetAsyncKeyState API

欢迎大家分享更好的思路,热切期待^^_^^ !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值