突破[某著名IM软件]的nprotect键盘加密技术
近段时间,[国内某著名IT公司]公司一直在吹牛他们如何保护[某著名IM软件]用户的帐号和密码安全,Nprotect键盘加密技术多么强大,由于鄙人近期要做一个密码安全保护控件,就仔细分析了[某著名IM软件]的密码保护功能框,结果发现[某著名IM软件]漏洞较多,安全措施都能获得突破,下面一一道来:
鄙人声名:分析[某著名IM软件]的目的,不是盗取[某著名IM软件]帐号,而是提高[某著名IM软件]的安全,促进[某著名IM软件]的发展。信息安全需要很多事情要做,本人只是贡献点微薄之力。信息安全需要多一份实在,少一份浮躁,多研究点安全问题,少想点如何盗窃,这样我们的信息安全就会更好。
一、Nprotect键盘加密技术
[某著名IM软件的东家]使用的Nprotect键盘加密技术来自一家韩国的公司,该技术已经在很多地方都使用,包括银行、证券、保险、游戏、信用卡、电子政务和电子商务等,用户比较多,使用面比较广。
nProtect键盘加密保护系统是一种针对个人用户信息安全的产品,它用来保护用户的信息不被黑客的键盘记录程序所获取。通过键盘加密技术即使用户的PC中有木马程序,黑客也无法正确读取输入的键盘信息,从而根本上防止了互联网用户在进行网上交易、网络游戏以及使用电子银行时可能出现的帐号被盗的情况。
nProtect键盘加密保护系统功能如下:
阻止黑客工具读取键盘信息
自动检测键盘信息记录黑客程序
对于每一次键盘敲击,绿色卫士键盘保护产品可以实时的进行加密和解密(采用国际标准的RSA 128位算法)
支持不同类型的键盘(ps/2,usb键盘 101 / 103 / 106 / 109,等等)
二、[某著名IM软件]采用的安全措施
当前[某著名IM软件](包括[某著名IM软件] BETA1、BETA2、正式版、正式版(SP1)、正式版(SP2))所采取的措施大致包括:
1、采取Nprotect技术保护帐号密码
A、屏蔽密码窗口获取内容消息
B、屏蔽密码窗口设置内容消息
C、屏蔽密码窗口光标位置消息
D、屏蔽ACTIVEX键盘钩子
E、屏蔽键盘状态消息
F、屏蔽全局键盘钩子
G、屏蔽键盘驱动
H、发送键盘扰乱信息
I、键盘输入内容加密
2、采取虚拟键盘
A、屏蔽虚拟键盘按钮窗口
B、虚拟键盘按钮窗口随意变动
3、[某著名IM软件]采取的相关措施
A、屏蔽登录按钮窗口
B、系统漏洞扫描
C、盗号木马扫描
D、发出安全警告
E、其他安全功能
三、[某著名IM软件]目前能够阻止绝大多少键盘记录器
1、nProtect技术本身就能够防止一般的键盘记录器,如ACTIVEX键盘钩子、全局键盘钩子和键盘驱动
2、通过键盘光标的过滤,能够防止目前绝大多数键盘钩子,使键盘输入的内容不知道插入到什么位置
3、通过与虚拟键盘的组合,几乎是当前绝大多少键盘记录器的终结者
四、当前[某著名IM软件]用户一般的做法
1、在桌面机器上安装防火墙、防病毒软件
2、无法杜绝和检测新出现的病毒、盗号木马
3、故意输入错误密码,防止键盘记录器
4、故意打乱密码输入次序,防止键盘记录器
5、申请[某著名IM软件]密码保护
6、使用复杂密码
7、密码长度保证
8、经常更换密码
9、不上乱七八糟的网站,以免被植木马
10、密码修改手机短信提示
11、等等
以上所有的做法,都滞后,没有就[某著名IM软件]帐号安全这个根本上考虑和解决问题,只能是依靠民众的智慧,将[某著名IM软件]盗号损失降低到最低,下面就来分析当前[某著名IM软件]存在的安全问题。
五、[某著名IM软件]破解全过程
表面上[某著名IM软件]使用了很多安全措施,足以保障[某著名IM软件]登录密码安全。但仔细分析下,你会发现,还存在很多问题,还不足以防止密码被盗。
第一步、我写了一个API全局钩子
第二步、我加载了一个窗口钩子,能够获取[某著名IM软件]窗口句柄和内容
第三步、我加载了一个列举子窗口函数,能够获取[某著名IM软件]帐号窗口句柄和内容,能够获取[某著名IM软件]密码窗口句柄和类型
,但无法[某著名IM软件]密码窗口内容,总是返回一个固定的标题,估计[某著名IM软件]做了安全防范
第四步、我加载了一个键盘钩子,能够获得[某著名IM软件]帐号窗口输入,但获取不到[某著名IM软件]密码窗口输入内容
第五步、我写了一个键盘状态钩子,能够获取键盘信息,但发现有乱码,估计[某著名IM软件]做了一些工作
第六步、我写了一个键盘驱动,发现键盘输入内容经过加密
第七步、我写了一个I/O读写驱动,发现能够拦截[某著名IM软件]密码窗口输入
第八步、我写了一个键盘光标程序,发现[某著名IM软件]密码窗口总是返回错误,估计[某著名IM软件]做了相关安全
第九步、我改变一下思路,不从获取[某著名IM软件]密码窗口获取光标消息,结果测试成功
第十步、开始考虑破解[某著名IM软件]虚拟键盘,因为键盘输入已经全部搞定
第十一步、我用窗口钩子,能够截获[某著名IM软件]虚拟键盘窗口,但无法获得虚拟键盘按钮
第十二步、我试着使用金山词霸进行屏幕取词,结果能够获得[某著名IM软件]虚拟键盘内容
第十三步、我写了一个屏幕取词程序,成功实现虚拟键盘内容截获
第十四步、为了截获虚拟键盘点击时间,我在API HOOK的基础上,加载了一个鼠标钩子,专门拦截点击鼠标点击事件
第十五步、程序测试,发现些小BUG,如删除(delete/backspace)、随意插入、组合键等,但基本大功告成,整个[某著名IM软件]的nProtect技术保护就让我这样被成功破解。
六、[某著名IM软件]破解程序能够实现
1、能够实现键盘钩子
2、能够实现鼠标钩子
3、能够实现窗口钩子
4、能够实现[某著名IM软件]窗口监控
5、能够实现键盘记录功能
6、能够突破nProtect加密保护
7、能够实现键盘光标监控
8、能够实现字符大小写
9、能够实现特殊字符
10、能够实现组合键输入
11、能够实现字符剪切
12、能够实现字符粘贴
13、能够实现字符删除
14、能够实现字符随意插入
15、能够记录虚拟键盘输入内容
七、[某著名IM软件]存在的主要问题
现在来回过头来总结下[某著名IM软件]中存在的问题,大致如下:
1、帐号窗口没有任何保护,使窗口钩子能够轻易获得其句柄和内容
2、密码窗口聚焦时启动Nprotect保护,失去焦点时就存在保护真空,容易被人利用
3、键盘光标位置没有进行保护,只对获取密码窗口的键盘位置消息进行了过滤,还有其他的方法可以获取
4、[某著名IM软件]界面没有伪装,包括界面的类型和界面标题,都可以轻易获取
5、没有防止窗口钩子,包括窗口创建、出现、消失和销毁,致使其他程序就可以轻易进行监控
6、键盘加密驱动无法拦截I/O读写驱动,致使键盘输入内容轻易被他人截取
7、可以使用屏幕取词技术获得虚拟键盘上的按钮单词,从而可以突破虚拟键盘的保护
8、没有屏蔽鼠标钩子,使其他程序能够截获鼠标点击事件,从而拦截虚拟键盘留下致命漏洞
9、没有屏蔽屏幕截屏,使截屏软件能够获得虚拟键盘的输入
八、总结
虽然[某著名IM软件]在吹牛它现在的nProtect技术多么牛B,但事实不是如此,经过我半天的时间就轻易破解,当然还有很多其他的方法可以破解,我没有去试,应该问题不大,包括注入、假窗口、假界面和假控件等,当然还可以利用窗口钩子来控制其加密驱动的启动和停止,这些都不是我想要的,我不是来盗号,而是研究密码输入框的安全问题,在此也非常逼视那些盗号者。
其实,在此也非常感谢[某著名IM软件],能够提供给我这么多思路,让我的密码框安全控件能够更加成熟。虽然[某著名IM软件]存在问题,但相比与MSN和网银来说,应该是安全得多,也请[某著名IM软件的东家]赶快把漏洞尽快打上,避免给客户造成帐号和密码丢失,带来不必要的麻烦。
当然,目前[某著名IM软件]用户也不用担心[某著名IM软件]号码被盗,毕竟现在能够突破Nprotect键盘加密技术的木马还不多,只要今后小心和组合使用里面的功能,被盗的机会很少。