- 陶小凡
-
来自碎片对象文件(.shs)的威胁
--------------------------------------------------------------------------------
*碎片对象文件*
很多人都应该都见过windows产生的碎片文件,windows中有一种被称为碎片对象的文件(.shs文件)。如果你在邮件附件中收倒一份这样的文件,你敢不敢打开它呢。估计很多人都不会觉得这种文件是一个威胁。原因有几点:
1 碎片对象文件的缺省图标是一个和记事本文件图标相类似的图标,很容易会被误认为是一些文本的文档,用户对他的警惕心理也比较小。
2 .shs是一个无条件隐藏扩展名的文件。即使是在“资源管理器工具文件夹选项查看”属性中将"隐藏已知文件扩展名"属性设为不隐藏,.shs文件仍然是隐藏。很多人都喜欢将文件扩展名显示出来(包括我),这样对文件的情况了解的更清楚些。可是一个test.txt.shs文件在浏览器中显示依然是test.txt.在你已经习惯了看到文件扩展名的情况下,你会对这样一个文件起疑心吗?
3 即使有疑心,你用任何杀毒软件都不会找到这个文件的一点问题,因为这个文件本身就没有病毒,也不是可执行的,而且还是系统文件。你会怀疑这样的文件吗?*技术原理*
---- OLE(Object Linking And Embedding)
---- 对象链接与嵌入,OLE允许你通过使用来自两个或多个WINDOWS应用程序的资源来创造复杂的 文本,OLE提供了方便的技术用来将文字和来自不同程序的数字表、图象和其他类型的数据组合起 来。为此,OLE定义了将对象附属于宿主文本的两个基本方法,链接与嵌入:
---- 嵌入:一个嵌入对象包含在宿主文本中。要创建或编辑一个嵌入对象的数据时,你可以在不 离开宿主文本的情况下激活源应用程序。此结果对象将保存在宿主文本中,而不是另外其它的文件。例如,你创建了一个字处理文本,其中包含嵌入Excel工作表。为了执行在此工作表上的操作, 你可以在此文本内部激活Excel。在保存了此字处理文件后,你同时也将嵌入的工作表数据保存了下来。
---- 链接:相比之下,一个链接对象却保存在外部文件中。宿主文本包含了对数据的引用以及对链接对象的映象,而不保存数据本身。在修订对象数据时,所做的改变显示在宿主文本中但却保存在外部文件中。例如,包含一个链接Excel工作表对象的字处理文本提供给你对用于编辑工作表数据的Excel资源的完整访问能力。此文本包含了对分立工作表文件的引用。如果此工作表恰好被链接入任何其它文本中则可以从任何一个它的宿主文本中编辑其数据。Windows在需要时可以更新此链接关系(简称链),这样便可以给每一个宿主文本提供数据的最新版本。
也就是说,我们所输入的命令作为OLE对象嵌入到对象包装程序新建的文件中了,而微软为了能方便的将嵌入到文件的对象进行复制,使用了一种技术Shell Scrap Object(简称SHS),就是说,当你在不同文件间复制对象时,windows是将对象包装成一个碎片对象来进行复制的。因此,一旦我们不是在文件间进行复制粘贴,而是直接将碎片对象粘贴到硬盘上,就会产生一个.shs文件。这个碎片对象文件保存了原来对象的所具备的功能,原来对象包含的命令同样会被解析执行。*解决方法*
shs文件既然不是可执行文件,当然需要其他的程序来解析执行了,我们去掉解析执行的关联就可以简单防止这种文件中潜伏的威胁了。
打开注册表编辑器:regedit.exe
在[HKEY_CLASSES_ROOT.shs]主键下,将默认值ShellScrap删除,然后在双击.shs文件,这回不会去执行了,弹出让我们选择打开.shs文件需要的程序的对话框。跟彻底一点的办法是将[HKEY_CLASSES_ROOTShellScrapshellopencommand]下的打开.shs文件的关联完全去掉,现在即使双击.shs文件,连选择运行的程序也对话框也不打开了,直接要求在控制面板重建文件关联。*题外的话*
在windows系统中,还存在其他一些类似的的文件后缀名,如.shb、.lnk等等,例如攻击者可以在快捷方式文件属性指向中同样嵌入恶意命令,对系统造成危害。
- wio
-
* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示!http://hi.b***.com/rzhy/blog/item/916b653884da013596ddd86b.html看看我的这个办法,我反正成功了]
- 康康map
-
打开一个word。将shs文件拖动到word空白处,就会显示出来。然后保存,就ok啦]
- 可可
-
这是碎片文件,在 XP 及之前的版本里,将文件中的任意内容直接拖到桌面或其它文件夹就会生成碎片文件。据我所知,Windows 7 已不再提供对碎片文件的支持,因此还是在 XP 下打开它吧。]
- 西柚不是西游
-
如果想打开shs文件 运行--regedit,在HKEY_CLASSES_ROOT.shs主键下,将默认值 ShellScrap删除,现在双击.SHS文件,看,不会执行了吧?弹出了一个对话框,让我们选择打开.SHS文件需要的程序,此时你选择“记事本”程序看就非常安全了。更彻底一点的办法是将HKEY_CLASSES_ROOTShellScrapshellopencommand下的打开.SHS文件的关联完全去掉,现在双击.SHS文件,连选择运行程序的对话框也不出现了,它会直接要求在控制面板重建文件关联</CA>]
- 左迁
-
什么系统? win7还是winxp]