研究了下恶意桌面广告的原理
原文在我的BLOG内:
http://hi.baidu.com/aegisys/blog/item/90bb03f5ffed3228bc3109d7.html最近接到了一个比较奇怪的案例:桌面上有恶意软件的广告,但是删除不了,也不能重命名。
在IceSword和其它工具中找不到它的存在。显然问题出在了Explorer上。
正好我的桌面上也有一个请不走的蓝牙链接。如图:
用FixIE这个工具清理掉它,发现其实秘密就在注册表HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace项下,这个项顾名思义就是Explorer的一些配置。
Explorer提供一种名叫“Namespace”的配置,可以在桌面上添加快捷方式。这种快捷方式就像上面提到的那样,删除不掉而且在注册表中又很难直接搜索到(回收站就是这么来的)。如果我们想添加一个,具体怎么做呢?
首先,我们需要一个CLSID。听说过COM组件的同学们可能知道,它是一个128位的大数,意在概率意义上标识“唯一”的COM组件。CLSID完全可以手写一个,只要不与已知的重名就可以了。然后编写一个COM组件。实际上现在没有必要去写一个真正的COM组件。我们只需要在注册表上做手脚罢了。
1.注册一个假的CLSID。
现在点击“开始”,“运行”,输入“regedit.exe”确定。打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID 后,新建一个项。项名为随便写的一个128位CLSID,格式和其他CLSID尽量保持一致,内容可以瞎编。只要不和已知的重复就可以了。例如我的这个就基本写了一堆0。
然后在右边的“默认”键中填写我们需要显示的文字(比方我们要做打开任务管理器的快捷方式):
在这个CLSID下再新建一个子项,项名为Shell,再在Shell下面再创建一个子项,项名为菜单的名称,再在这个项下面键一个名为Command的子项,然后将右边的“默认”一键的键值设为taskmgr.exe。
如图:
然后进行最关键的一步操作(之一)!在我们编的那个CLSID项下建立一个名为ShellFolder的项,并在它下建立一个名为Attributes的二进制键,键值为00 00 00 00。这一步的重要性是——有了它之后,右击图标后“删除”选项就没了~~~……
如果觉得想搞个图标,就在我们的CLSID项建立一个名为DefaultIcon项,在右边的“默认”键中填入想要的图标的路径就可以了。(可以使用shell32.dll中的图标,如图)
Shell32.dll,130是一个蝴蝶的图标,看起来不错。
到这里,我们伪造的CLSID就完成了。之所以说伪造,因为我们没有实际的COM组件,甚至连InprocServer32项也没有,很好很山寨。
2.设置桌面快捷方式
现在进入项:
HKEY_CURRENT_USER或者HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\Namespace
新建一个项,项名就是我们的CLSID值。保存后刷新桌面。看看效果还不错吧?
用户系统信息:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322)