当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2011-03605

漏洞标题:QQDLL加载漏洞可能导致用户密码被窃取

相关厂商:腾讯

漏洞作者: liyang

提交时间:2011-12-11 13:07

修复时间:2012-01-25 13:07

公开时间:2012-01-25 13:07

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:5

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2011-12-11: 细节已通知厂商并且等待厂商处理中
2011-12-12: 厂商已经确认,细节仅向厂商公开
2011-12-15: 细节向第三方安全合作伙伴开放
2012-02-05: 细节向核心白帽子及相关领域专家公开
2012-02-15: 细节向普通白帽子公开
2012-02-25: 细节向实习白帽子公开
2012-01-25: 细节向公众公开

简要描述:

QQDLL加载漏洞可能导致用户密码被窃取

详细说明:

利用了Windows加载DLL的一个特点。由于输入表中只包含DLL名而没有它的路径名,因此加载程序必须在磁盘上搜索DLL文件,而不是按照指定路径加载。
在Windows XP sp2以上的系统会默认开启Safe Dll Search Mode,启用了这个模式后,DLL文件的搜索顺序是:
可执行程序的加载目录
系统目录(即system32文件夹)
16位系统目录
Windows目录
当前目录
Path环境变量中列出的目录
伪造的DLL制作好后,放到程序目录下,这样当原程序调用原函数时就会优先调用了伪造的DLL文件,进入劫持DLL的代码。该文件也提供了和系统文件一样的输出表,并最终转向真正的系统文件。
Lpk.dll是系统关键文件之一,QQ启动时也要加载这个文件。在平时我们使用普通的键盘记录器记录的QQ密码是错误的,因为QQ的密码框使用了特殊的设计,保护密码安全。但是我制作了一个假冒的lpk.dll,这个文件能够通过Hook部分API函数解除对QQ密码框的保护。
先到http://www.kuaipan.cn/file/id_774356833665645.html下载键盘记录器及lpk.dll文件(只支持Windows XP系统)。然后将lpk.dll文件复制到QQ目录下(一般是C:\Program Files\Tencent\QQ\Bin文件夹。启动QQ,查看lpk.dll文件的调用情况。


这里显示QQ的两个进程加载了两个lpk.dll文件。别忘了,真正的lpk.dll文件最后也是要加载的。我们再看一下这两个文件的路径,一个是system32文件夹,一个是QQ目录。说明DLL劫持试验成功。
QQ加载的这个文件破坏了密码框的保护,在输入密码的时候,我们记录下了正确的密码。


所以为了断绝木马窃取密码的另一种方式,请修复该漏洞。

漏洞证明:

修复方案:

微软的解释请访问http://msdn.microsoft.com/en-us/library/ff919712(VS.85).aspx
  (1)调用LoadLibrary,LoadLibraryEx,CreateProcess的,或者的ShellExecute等涉及到模块加载的函数的时候,指定DLL加载的完整路径,貌似应该有API可以获取当前程序运行的目录的
  (2)考虑使用的DLL重定向或Manifests文件,以确保程序使用正确的DLL。
  HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSessionManagerKnownDLLs
  (3)确保DLL安全搜索模式被激活。未使用安全搜索设置的话,第二加载项就是当前目录。
  HKLMSystemCurrentControlSetControlSessionManagerSafeDllSearchMode
  (4)从搜索列表中取消当前目录,可以通过调用SetDllDirectory参数设置为一个空字符串

版权声明:转载请注明来源 liyang@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:5

确认时间:2011-12-12 09:59

厂商回复:

thanks

最新状态:

暂无