漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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
最新状态:
暂无