APP下载

Windows快捷方式漏洞分析

2011-06-12张伟李宁杨康

网络安全技术与应用 2011年1期
关键词:快捷方式控制面板图标

张伟 李宁 杨康

南京邮电大学计算机学院 江苏 210046

0 前言

本文分析基于此漏洞传播的恶意软件的工作方式以及感染lnk病毒后的症状和解决方法,使得更多的用户认识该漏洞,减少此漏洞造成的危害。本文分为四部分,第一部分介绍lnk漏洞的背景;第二部分描述漏洞行为,包括感染该漏洞后的症状以及利用此漏洞病毒的传播方式;第三部部分分析漏洞原理;第四部分实验测试,设计实现了一个恶意的lnk文件来触发该漏洞,并对其绕过杀毒软件的能力进行了测试。

1 漏洞行为描述

lnk漏洞中毒的典型症状为系统运行缓慢、打开程序很久没有反应。网速的反应迟缓,如果所装的杀毒软件开启了实时监控,会不时弹出非法访问的提示,系统的各个盘符下莫名其妙出现autorun.inf和各种无规律的exe可执行文件。

lnk漏洞对传播者而言具有非常好的触发性,形象描述为“看一眼就中毒”,病毒传播者构造一个特殊的lnk文件和一个lnk调用的病毒文件。通过U盘、移动硬盘、数码存储卡复制传播这些文件,也可以将病毒文件打包在正常程序的压缩包中。病毒被复制或解压到目标位置,当用户使用资源管理器软件去访问这些文件夹时,不需要其它任何操作,病毒程序就会被立即执行。如果病毒保存在USB存储器上,对于多数启动了U盘自动运行功能的电脑,插入U盘的动作即可运行病毒。在局域网的共享文件夹中若存在这样的文件,正常电脑访问这些共享文件夹,就会立即中毒。也可以通过及时聊天工具,如QQ、MSN、UC等软件的聊天信息,或发送垃圾邮件的方式附带基于lnk漏洞的病毒文件进行传播。

2 漏洞的原理分析

2.1 lnk文件格式

为了方便用户操作,Windows操作系统中用户可以创建各类文件的快捷方式,快捷方式实质上只保存了打开该文件的路径,或称为链接(link)。其作用就是使用户在其它方便的地方打开该文件或程序双击程序的快捷方式,再由快捷方式启动相应的程序。快捷方式的扩展名为lnk,lnk文件多存在于桌面、开始菜单的各个程序组、任务栏的快速启动栏。lnk文件结构如表1。

表1为lnk文件整体结构,其中内容2至内容8在lnk文件中是可选项,即不是必须存在的,但是如果存在,则必须按照图1的顺序组织。出现漏洞的控制面板程序的快捷方式没有内容3到内容8,所以这里只介绍和lnk漏洞相关的文件头和shell Item Id List段。

表1 lnk文件结构

(1)文件头:内容1为lnk文件的文件头,其偏移0x14处的值是重要的Flags,用来标识.lnk文件中有哪些可选属性,也就是哪些节是可选的,Flags的含义如表2。

表2 lnk文件结构

(2)Shell Item Id List 段:该段是可选结构,由文件头中偏移 0x14位置处的bit值来决定,bit值为1时,表示该lnk文件包含该结构。如果存在该结构,偏移0x4c的位置的一个unsigned short int是Shell Item Id List结构的大小标识,后面紧跟一个SHITEMID结构,该结构体定义如下:

typedef struct _SHITEMID

{

unsigned short int cb;

unsigned char abID[0];

}SHITEMID,*LPSHITEMID;

SHITEMID结构的第一个成员cb标识的是SHITEMID数据的大小,因为SHITEMID结构的第二个成员abID是一个指针,存储具体数据,大小不固定,其指向的第0项里的数据是不能修改的(通常为电脑的GUID),否则lnk文件无法运行。图1是用WinHex打开的控制面板程序上的“显示”快捷方式。

图1是一个控制面板程序的快捷方式,从偏移0x14处的值0x81,对照前面表2中每个bit位代表的含义可以看出该lnk文件没有表1所示的内容3至内容8。

图1 控制面板程序“显示”的lnk文件

2.2 漏洞工作原理

Windows操作系统为了在快捷方式显示对应的图标,会派发一个任务给 Shell32.dll去完成快捷方式图标的解析工作。对于一般文件的快捷方式,它会解析这个lnk文件的内容 8,即图标文件段,然后试图读取图标文件。但是对于没有图标文件段的控制面板程序(以CPL为后缀的文件),其快捷方式的偏移0x7A 位置有一个值,这个值是系统图标的ID,系统默认有多个图标ID,图1中的9CFFFF是其中的一个。Shell32可以通过这个ID获得图标,具体解析控制面板程序快捷方式图标的过程如图2所示。

图2 shell32解析控制面板程序快捷方式图标的过程

lnk漏洞的关键在于调用LoadLibrary函数,当偏移0x7A处的值为0时,也就是shell32无法通过此处的数值获得预设的图标,那么shell32就会调用LoadLibrary函数来加载目标文件,即一个cpl文件(cpl文件是一种特殊的dll文件)来获取图标信息。lnk漏洞就是利用了这个解析机制的安全缺陷,攻击者恶意构造一个特殊的控制面板程序的lnk文件,使其0x7A处的偏移为0,需要加载的目标文件为攻击者构造的恶意dll文件,当shell32将这个恶意dll文件加载到内存中执行时,病毒获得执行。所以Windows在显示lnk文件并解析恶意构造的lnk文件时被触发恶意代码,造成“看一眼就中毒”的现象。

2.3 防范手段

为了不受lnk漏洞的影响,用户应该及时打上微软发布的补丁,对于无法及时打上补丁的用户,可以采用下面的一些临时防范方法:①不要打开未知或不可信任来源的带有lnk扩展名的文件或浏览其属性;②下载360safe、金山、瑞星、趋势科技、nod32等病毒专杀工具;③关闭快捷方式图标显示,不过这会让桌面变的很简陋。

3 实验测试

为了对上述的漏洞原理进行验证,我们实现了一个恶意lnk文件来呈现lnk漏洞被利用的过程。实验环境为Windows 7操作系统,使用的分析工具包括winhex、VS2008和ollydbg。

实验首先创建一个正常的“显示”lnk文件,步骤如下:到“控制面板”下面,右键点“显示”,点“创建快捷方式”,把快捷方式创建在桌面上。然后在桌面用WinHex打开“显示.lnk”文件,如上面图1所示。

实验第二步对该lnk文件进行修改,把偏移7A处的9C FF FF FF改成00 00 00 00,把后面的文件名C:WINDOWSsystem32desk.cpl改成C:ox.dll(UNICODE格式)。保存文件,并把这个文件复制到任意目录下,当用户浏览该目录时,就会加载C:ox.dll文件,图3为修改后的lnk文件。

图3 修改过的lnk文件

lnk的目标文件存放在Shell Item Id List的SHITEMID结构里面,这个结构按照层来表示一个目标的,每一层就是前面讲述的一个SHITEMID结构。图3显示lnk文件中,第一层是

00000040 14 00

00000050 F 50 E0 4F D0 20 EA 3A 69 10 A2 D8 08 00 2B 30

00000060 30 9D

14 00代表长度,后面的16字节是“我的电脑”的GUID{20D04FE0-3AEA-1069-A2D8-08002B30309D}。第二层是

00000060 14 00 2E 00 20 20 EC 21 EA 3A 69 10 A2 DD

00000070 08 00 2B 30 30 9D

14 00代表长度,后面的是“控制面板”的 GUID{21EC2020-3AEA-1069-A2DD-08002B30309D}。第三层就是后面长度为0xA2的目标文件,图3中显示的Shell Item Id List所指向的文件就是:我的电脑->控制面板->C:ox.dll。

实验第三步是提供一个恶意的dll,把一个写好的box.dll放入C盘,我们的例子调用此dll文件就会弹出一个对话框,浏览lnk文件所在的快捷方式,系统就会加载这个box.dll。

图4是测试用的一个简单的dll程序代码,该dll文件有一个入口函数DllMain,当dll文件被载入内存后就会先执行DllMain函数,所以把触发木马或病毒的程序放在 DllMain适当的位置,当用户浏览快捷方式的目录时就会激活恶意代码。

实验结果如图 5,当仅仅浏览快捷方式所在的目录时就会弹出一个hello的对话框,这也证实了前面对于漏洞的分析。

我们将测试用的lnk文件上传到VirusTotal上检测其绕过反病毒软件的能力,VirusTotal是一款免费提供对可疑文件进行分析Web服务,通过各种知名反病毒引擎,对所上传的文件进行检测,以判断文件是否被病毒,蠕虫,木马,以及各类恶意软件感染。

图4 测试用box.dll 的代码

图5 测试结果

4 总结

Windows lnk漏洞不需要用户运行任何程序,仅仅浏览其所在目录就可触发,其影响范围比较广泛。随着微软发布了官方的补丁,加上众多安全软件对lnk病毒的查杀,预计这个漏洞和利用此漏洞的病毒可能很快会消失。分析该漏洞的本质,其利用了lnk文件的解析过程和dll文件装载过程的安全检查不够的缺陷,dll文件的安全装载并不是一个新问题,lnk漏洞只不过是发现了该缺陷的一个新应用场合,所以加强主动性防御才是根本性解决方法。

[1]Windows快捷方式LNK文件自动执行文件漏洞.http://www.hackbase.com/news/2010-07-18/36546.html.

[2]windows lnk 漏洞. http://news.mop.com/domestic/2076668.shtml.

[3]lnk 0day漏洞完全解析.http://bbs.ijinshan.com/thread-13020-1-1.html.

猜你喜欢

快捷方式控制面板图标
这些桌面快捷方式你会创建吗
Android手机上那些好看的第三方图标包
恢复开始按钮右键菜单“控制面板”选项
搞定Windows 7的快捷方式
快捷方式
图标
多种方法找回传统控制面板
中国风图标设计
医院手术室电气控制面板的改造设计与应用
基于人机工学的压力机控制面板设计