下面就不调试了,直接去分析这个处理函数了,找到模块npAliSecCtrl,先脱壳,然后找到偏移ca008
然后就逆吧……我没有把这些代码逆完,只是一个大致框架出来了。
其实只要知道他的HOOK实现机制就Ok了,这个控件的原理就是当控件获取焦点的时候就设置一个低级键盘钩子,这个键盘钩子的作用就是截获WM_KEYDOWN然后处理消息,修改消息。在调试中还发现,在其设置了一个低级键盘钩子之后并没有再设置一个调试钩子,这样就很容易突破这种保护机制了,只要照准时机在他的低级键盘钩子设置后再设置一个低级键盘钩子,那么就可以先于控件自身的钩子获取到键盘输入消息了,不知道这个是否属于考虑欠缺的一个设计,不过即使加一个调试钩子,也并不是毫无破绽的,仍让有方法可以攻击。
2.4 支x宝安全密码控件攻击实例
上面说了即使加了调试钩子,也还是不能阻止攻击的,原因是Windows 消息钩子的层次太高了,在如此高的系统层次上面去做一些防护,基本没有办法做到绝对安全。对于支x宝的密码控件,只要一个Inline Hook就可以完全破除了。
原理:进入到浏览器的进程内存空间,Inline Hook住User32!SetWindowsHookExW/A函数,分析该函数的参数,判断如果传入的模块是属于目标模块并且钩子类型是低级键盘钩子,则调用原函数,等待原函数返回成功之后,再调用原函数设置一个低级键盘钩子,然后返回。这样就相当于在控件本身的钩子之上加了一个钩子,而这个钩子是我们的钩子,我们可以先于控件钩子得到键盘输入,从而计算出用户输入的字符,达到键盘记录的目的。
xxxx种原因,我不能在这里提供源码,只有一图和一个bin供各位研究了。
(责任编辑:安博涛)