qq安全原理

    故事总要有缘由,那么这个故事的缘由就是,当我以前写了一个获取其它进程密码框密码的时候(前几篇博客中有描述),我抱着试一试的心情去试探了一下能不能得到 QQ 的密码,当我抓到密码框的句柄,然后输入给程序的时候,结果令人失望,并没有任何结果,或许这根本就是一个假的密码框。这便激发了我的兴趣,便有了这次探究。

        QQ 的安全密码框果然是下了功夫的。网上搜索相关内容,才发现,以前腾讯用了韩国的技术来保证密码的安全性,但由于涉及到驱动,造成了一部分的不稳定性,所以最后取消掉了这种方法,那么最新的方法是如何做到密码安全呢?这种密码安全是否还有提升的空间呢?我决定试一试。

        首先想到的办法便是键盘钩子,大家都知道,键盘钩子可以监听系统中所有的击键信息,马上编码实现,主要调用为:

  1. HHOOK SetWindowsHookEx(          int idHook,  
  2.     HOOKPROC lpfn,  
  3.     HINSTANCE hMod,  
  4.     DWORD dwThreadId  
  5. );  

        传入的参数是:WH_KEYBOARD

        打开程序监听,目标程序选择了大家不太关注的QQMusic(手头上暂时只有这个程序),打开密码框输入我的密码,结果没有任何有用信息,为什么呢?我们知道如果在钩子链中前面的钩子没有显示调用后面的钩子,后面是得不到信息的,我们能不能把自己的钩子放到最前面呢。有两点需要注意,一,后安装的钩子会在钩子链的最前面,二,我们安装的是普通钩子,还有一种低级的键盘钩子会在其前面执行。那我们直接安装低级钩子并且尽量迟的调用不就行了么。

        程序完成后,我发现,确实可以收到键盘信息了,不过在收到的信息中有许多干扰信息,基于纯理论分析这一做法,可以猜测,肯定有一个定时发送模拟按键消息的 Timer 在执行,去掉这个 Timer,当然就没有了干扰信息。但事情进行的不是那么简单,我发现,每次我接收到的键盘消息并不是我真正按下去的按键,莫非它安装了一个在我前面的钩子,改掉了按键信息?于是我便写了一个程序,去分析当前系统中的钩子的信息,结果如下:

  1. 0x64b012d       0xc2cbf81               QQMusic.exe  
  2. 0x64b012d       0xc2cbf81               QQMusic.exe  
  3. 0x64c012d       0xc2cbf81               QQMusic.exe  
  4. 0x64c012d       0xc2cbf81               QQMusic.exe  
  5. 0x64c012d       0xc2cbf81               QQMusic.exe  
  6. 0x64d012d       0xc2cbf81               QQMusic.exe  
  7. 0x64d012d       0xc2cbf81               QQMusic.exe  
  8. 0x64d012d       0xc2cbf81               QQMusic.exe  
  9. 0x64e012d       0xc2cbf81               QQMusic.exe  
  10. 0x64e012d       0xc2cbf81               QQMusic.exe  
  11. 0x64e012d       0xc2cbf81               QQMusic.exe  
  12. 0x64f012d       0xc2cbf81               QQMusic.exe  
  13. 0x64f012d       0xc2cbf81               QQMusic.exe  
  14. 0x64f012d       0xc2cbf81               QQMusic.exe  
  15. 0x650012d       0xc2cbf81               QQMusic.exe  
  16. 0x650012d       0xc2cbf81               QQMusic.exe  
  17. 0x650012d       0xc2cbf81               QQMusic.exe  
  18. 0x651012d       0xc2cbf81               QQMusic.exe  
  19. 0x651012d       0xc2cbf81               QQMusic.exe  
  20. 0x652012d       0xc2cbf81               QQMusic.exe  
  21. 0x652012d       0xc2cbf81               QQMusic.exe  
  22. 0x652012d       0xc2cbf81               QQMusic.exe  
  23. 0x652012d       0xc2cbf81               QQMusic.exe  
  24. 0x652012d       0xc2cbf81               QQMusic.exe  
  25. 0x652012d       0xc2cbf81               QQMusic.exe  

        第一列便是钩子的句柄值,我是每隔一秒钟扫描一次的,可以清楚的发现,值在不断的变化,那么很容易便可以猜想到,它肯定在不断去设置新的钩子来达到使其在钩子最前端这一效果。那么去掉这个钩子,我们便能够使自己的钩子监听到键盘信息了。

        本文只给出了思路,可以看出,在密码安全这一方面,还是做了不少工夫的,现在密码的安全也越来越受到各个公司的重视,希望能够以此文互相交流,使我们的密码安全做到更好。

展开阅读全文

QQ安全设计缺陷

04-22

QQ是腾讯公司的当家产品,是我国用户拥有量最大的一个即时通信软件。但是,当前QQ也成为一个众多病毒依附的软件。特别是现在腾讯的众多附加服务,使得QQ成为黑客越来越感兴趣的一个目标。rnrn 这些病毒之所以影响越来越大,部分原因却在于QQ这个软件的安全模式存在缺陷。比如下面就是其中两个。rnrn 第一,QQ的用户数据存放位置不当。默认情况下,QQ安装在 c:\program files\tencent\qq 文件夹下(这里c:根据实际情况,可能是其他盘符),而所有QQ账号信息都存储于这个文件夹下。根据Microsoft 的建议,与Windows 良好兼容的个人软件,应当把用户数据放在个人的profile文件夹内,或者可以另外制定数据存放的位置。为什么呢?因为微软建议,我们平时使用计算机的时候,应该使用受限用户组(或者说 users组)成员账号登录系统。而如果计算机采用安全的配置,安装这个系统的驱动器应该采用 NTFS文件系统。但是,安装这样安装起来的系统,采用受限用户登录的时候,你会发现这个受限用户竟然无法正常运行QQ。rn 为什么呢?原因很简单。按照这样配置,这个受限用户他的权限是无法修改 program files 下面的文件的。他启动的QQ是使用当前用户的安全灵牌,当然也无法修改这个文件夹的文件内容。因此,这种情况下软件运行当然会有问题。rn 使用管理员账号登录,QQ当然可以运行。但是,使用管理员账号登录,对系统安全是重大的威胁。这个建议不可取。rn 还有一种方法是利用管理员权限登录系统,将 tencent那个文件夹更改为 users 组成员可以完全控制。这种方法相对比较好,但是如果木马作者也意识到这一点的时候,那么木马的影响仍然比较大。rn 另外,还可以在安装之后,直接把 tencent那个文件夹复制到桌面上或者其他该用户可以完全控制的地方。以后直接运行复制过来的版本。rn 总之,QQ的用户数据存放位置不当,导致我们不得不在系统安全和QQ可用性之间进行折衷,使得QQ本身的安全甚至系统的安全受到影响。正确的方法是将QQ的账号数据与程序本身分开存放,然后在注册表中存放用户数据的位置。rnrn 第二,QQ的键盘加密策略不当。rn QQ为了防止木马偷取用户密码,采取了一些驱动过滤程序来防范。应该说,腾讯的用意是好的,但是效果可能适得起反。为什么呢?其实还是跟权限有关。一般,一个软件需要管理员权限,才能够安装这类驱动程序。但是,这个时候,如果有木马的话,事实木马也可以在加一个键盘驱动过滤在前面,因此并不能从根本上防止窃取键盘数据。而且,如果已经中了木马的话,木马大可直接修改QQ的主程序来获取密码了。虽然这样做难度更大,但是可以说成功率更高(因为木马的运行权限已经是管理员了)。因此,这个措施实际效果会大打折扣。rn 另一方面,很多用户不懂,天真地以为这个东西很有用,看不到QQ上面那把锁就以为不安全。实际上,在安全的使用模式下(使用受限用户登录系统),腾讯这个驱动总是安装不上去,看不到那把锁。但是,实际情况时:这种情况一般更安全。依靠Windows 本身固有的安全性,大部分情况比利用QQ所提供的键盘加密技术要来得更安全一些。因此,我认为腾讯基本可以放弃这个方面的努力,而代之是提醒用户修补系统漏洞和加强计算机系统安全设置。rnrn 上面两点主要是对安全方面的影响。事实上,不光是对安全性有影响,而且对软件的兼容性也有影响。最近有报道说QQ在Windows Vista系统上不能正常运行,事实上这个早在我的预料之中。驱动程序的编程一般兼容性都是很差的。很多不明所以的人甚至认为是Microsoft 故意为之,实际是QQ 的错误。可以说上面所提的两个方面肯定等影响了QQ在Vista中的兼容性。rn 论坛

没有更多推荐了,返回首页