脚本图片类后门病毒的完美使用方法

前两天,看了一篇《脚本注入图片新方法》的文章,相信很多人都通过这篇文章了解了如何在图片中加入脚本,以及如何在正常的asp(或php)文件中通过include函数使图片中的脚本产生效用 。
但是,这种方法的问题又随之而来了:有人问道:通常脚本网页文件中如果想要插入一个图片,简简单单的一个html标签就解决了,如果我们用include代替的话,是否太过明显?虽然这种语句放在大型页面中手工查找有点麻烦,但如果是杀毒软件用特征码查找,看到include的是以.gif.jpg等扩展名结尾的语句,相信肯定会报警 。
而我们若不用类似于include之类的函数的话,图片中的asp(或php)语句又怎会执行呢?难道要打电话叫网管帮忙吗?嘿嘿…… 所以问题就集中在用什么方法可以替代include函数的作用上了,因为注入图片的脚本可以变,所以可以不怕杀,怕就怕那句该死的include 。
有什么方法呢?我曾经想过我们在入侵成功后可以在IIS中添加应用程序映射,把.gif等图片的扩展名用asp.dll(或php.exe)解析,并把这虚拟目录的应用程序保护改为低,这样我们的后门就会有System权限了 。当我们注入图片的脚本的作用是执行cmd命令的,我们就可以通过本地表单POST我们要执行的命令给图片,当然也可以是GET: 代码 http://www.xxx.com/1.gif?cmd=dir 这种方法当然是好,可以突破include执行脚本了 。但仍有不足,而且是明显的:这种方式虽然杀毒软件是查不出了,但是仍可明显看出:管理员只要查看一下应用程序映射,那么我们所有的工作都白费了 。
想到这里,我突然想到了IIS的那个著名漏洞(涉及IIS5.0及IIS5.1),我们可以在任意一个站点下建立一个不可见的虚拟目录(指的是intenet服务管理器中不可见,但利用adsutil.vbs依然可见),而且由于IIS的特性,虚拟目录的应用程序映射及应用程序保护是与IIS的默认站点分开设置的 。由于虚拟目录不可见,他所有的属性当然也就不可见了 。
所以我们可以安全的设置此目录的属性,而不用怕管理员发现 。当我们把这个虚拟目录指向服务器上另一个装满图片的物理目录(至于那找这种目录?我找到个好地方:Windowz默认的墙纸目录,我的xp上是%SystemRoot%WebWallpaper目录)时……呵呵,大家想到什么了没?一旦我们修改其中两个图片,注入我们的脚本后门,然后把此目录的图片映射到asp.dll(或php.exe)上,应用程序保护改为低,就可以通过我上面讲的方法进行访问执行命令了 。
而且是System权限哦!呵呵,是不是很爽?管理员怎么也不会想到自己的图片却会是致命的后门!(其实这种方法动鲨曾在x档案上发文章说过,但他的方法有一个缺陷:在非web目录中有asp(或php)文件,一旦发现,的确让人怀疑 。而我们利用的是图片,相信管理员看到图片不会情绪过激的非要撕开了看个明白才罢休吧?呵呵……) 那么如何建立这个虚拟目录呢?我们可以在图形界面也可以利用自编脚本或是直接用IIS自带的adsutil.vbs操作 。
在此之前我先简单说明一下这个IIS漏洞的原因:我们知道IIS的配置文件是MetaBase.bin 。这个文件位于%SystemRoot%system32inetsrvMetaBase.bin,包含了几乎所有IIS的配置信息,是非常重要的系统文件 。简单的说,我们在“intenet服务管理器”中所作的一切设置最终都会被保存在MetaBase.bin中 。在日常的系统管理中除了通过“intenet服务管理器”来对MetaBase.bin进行操作外,Windows还提供了一个脚本adsutil.vbs可以对MetaBase.bin进行操作 。
MetaBase的结构类似于注册表,也是树形结构,有类似键、值、项的概念 。事实上在IIS3和PWS中,MetaBase的内容就是存储在注册表中的 。MetaBase有两个主键:LM和Schema 。其中,Schema保存了系统默认的一些配置,通常不需要修改,一旦改错也非常危险,所以无论是“intenet服务管理器”还是adsutil.vbs都没有提供修改Schema的机制 。LM中包含了IIS的HTTP服务,FTP服务,SMTP服务等的配置信息 。其中,LM/W3SVC/下是我们要用到的HTTP服务的配置信息 。

推荐阅读