2005年10月28日


你还在用Windows XP吗?

  如果你在用,那么你肯定受以下问题的侵扰:
  1、 你必须安装杀毒程序并天天更新;
  2、 你必须安装防火墙;
  3、 你必须经常更新;
  4、 你必须照着微软给你思路来做事,就像玩一台傻瓜照相机;
  5、 你必须担心你是否中了木马,否则你的网络游戏帐号就会被盗;
  6、 你必须担心是不是有人给你开了后门,正在遥远的地方偷偷监视你的行动、或者偷你的文件;
  7、 你必须时常整理磁盘,否则Windows会把磁盘管理得像个垃圾站;
  ……

  太多了的必须和担心了,但是就这样也是不够的!笔者就曾经中过一个传奇木马,这木马竟然把我的*星杀毒软件弄的不启动了,要知道我的*星是正版并且天天升级。还好我不玩传奇,不然损失就大了!可以这么说,杀毒软件对于网络上太多的变种病毒和木马来说,是“睁眼瞎”!Windows是不安全的,杀毒软件也帮不了他,所以用Windows + IE(包括Maxthon等IE外壳)上网,就等于把自己变成别人的猎物。

  那么我们该怎么办呢?

  我们可以用Linux,两年前,Linux还是高手和黑客的事情,但是感谢我们拥抱了技术时代,现在的Linux已经和Windows一样易用了,而且还更好!不信?那就让我们来看看Linux桌面家族中的Ubuntu——最人性化的Linux!

  “Ubuntu”是一个古非洲语单词,意思是“乐于分享”。Ubuntu Linux 也将“乐于分享”的精神带到了软件世界。不像Windows的天价,Ubuntu是完全免费的,而且他的中文站点http://www.ubuntu.org.cn里边有全中文的文档,可以回答你想知道的一切关于Ubuntu的知识,不但如此,他同时提供3种版本:i386版(包括Intel和AMD),64位版(AMD64或者EM64T比如Athlon64和EM64T Xeon)和MAC(G3, G4和G5 computers包括iBooks和 PowerBooks)版,所以不论你使用哪种PC,Ubuntu都有适合你的版本。

  不但如此,Ubuntu 包含了超过1000 种软件,覆盖了所有的桌面应用程序, 包含了文字处理,电子表格, internet 应用程序, web server 软件,,email 软件,开发设计工具,常用工具,当然还有一些游戏。不要以为这些程序难以替代Windows下的那些,他们有的可是比Windows下的好多了,其实,Windows下的好多程序还是从Unix/Linux移植的,比如著名的AutoCAD。

  说了这么多好,那么到底怎么样呢?就让我们来一步步进入Ubuntu的世界吧!首先看看他的安装。

  Ubuntu 5.10 版已经于十月十六日发布,代号“The Breezy Badger”,你可以到http://www.ubuntu.org.cn/download 下载,同时提供了教育网下载,你可以选择硬盘安装或光盘安装,这里我们介绍硬盘安装。光盘安装更加简单,懂硬盘安装的话,光盘安装就没有问题了。

  下载到安装文件ubuntu-5.10-install-i386.iso后,首先,我们要给Ubuntu准备硬盘空间,4G足够了,越大越好,看你具体情况,然后在“控制面板”-“管理工具”“计算机管理”种,选择“磁盘管理”,选中我们刚才准备的盘,右键点击,选择“删除逻辑驱动器”,当然这样以来,这个盘的一切文件就删除了,你应该仔细备份后再删除,如果你删除多个连续的逻辑驱动器,你可以在图中看出,它们自动连成一片了,我们就是要这样给Ubuntu连续空间,如果你准备给Ubuntu你的d:盘和f:盘,我建议你把e:盘的东东全部移到的d:盘,然后给Ubuntu e:盘f:盘这段区域。

  当删除逻辑驱动器后,你就可以看到如图一的样子,笔者把第二块磁盘,也就是磁盘1装Ubuntu,可见它的状态应该是“未指派”,同时,你需要一个FAT32格式的文件系统,如果你的文件系统都是NTFS,那么就在未指派的空间中,新建一个700M的逻辑分区,注意要把文件系统改为FAT32,默认的可是NTFS,建好以后,把我们的安装文件拷贝到这个分区来,记住要拷贝到根目录,安装系统会自动找到它的。
 

图一

  接下来,我们要下载三个启动文件,他们负责启动系统到Ubuntu安装界面,他们是GRUB(点击此处下载)、vmlinuz(点击此处下载)和initrd.gz(点击此处下载),或者到这里查看下载地址(点击此处下载)把他们都拷贝到c:盘根目录下,注意一点,grldr和vmlinuz是没有后缀的,initrd.gz后缀是gz,在下载的过程中,IE有时会自动加上.Dat的扩展名,如果如此,将文件名grldr.dat 改为grldr。

  接着,打开c:根目录下的boot.int文件,你如果看不到它,就在“控制面板”-“文件夹选项”-“查看”-“高级设置”中选择“显示所有文件和文件夹”,去掉“隐藏受保护的操作系统文件(推荐)”前边的对号。然后右键点击它,去掉“只读”属性前的对号,这样就可以保存了。打开后,在最下边加入一行:C:\GRLDR="GRUB" ,这样我们就可以启动GRUB来硬盘安装Ubuntu啦,如图二所示。
 

图二

 然后我们重新启动计算机,在启动界面选择GRUB启动,如图三所示:

图三

  进入GRUB后,选择第二项,进入命令行模式。在grub提示符后,依次输入命令,回车:

  grub>find /vmlinuz
  grub>kernel (hd0,0)/vmlinuz root=/dev/ram ramdisk_size=20000 devfs=mount,dall
  grub>initrd (hd0,0)/initrd.gz
  grub>boot

  图中的 find /vmlinuz 命令不是必须的,仅仅返回一个 vmlinuz 文件的所在信息如(hd0,0),这个地址与下面的保持一致。
如图五所示:

图五



  输入boot回车后,Ubuntu的安装就开始了,看着一行行的字符滚动,很有成就感吧,开始安装了,出现如图六所示的语言选择,我们默认使用英语来安装,启动到选择安装语言的界面,等到安装完毕后,我们再来统一设置语言。如果你习惯汉语安装,那就选择中文(简体)吧。

图六


 
  下一步选择当前所在地,我们选择其它。 

  下一步选择国家的位置,我们选择当前所在地为亚洲中国。

  下一步键盘的类型,我们选择当前的键盘的类型为美国英语。

  下一步可能出现内核警告,如果出现当前的内核和ISO上的内核不一致,这是因为ISO的打包的内核不及时,没有我们使用的内核新,不过并不是问题。选择yes继续安装。如图十所示:

图十


 

  下一步,如果没有网卡,或者网卡不能被识别,会出现一个警告信息,没有关系的,我们选择继续安装,选择continue回车。如图十一所示:
 

图十一

  没有正确识别网卡时,会出现配置网络失败的警告信息,这种发生在没有网卡,或者没有检测到网卡的情况下,一般不用理会。继续安装,选择Continue,回车。

  下一步是设置电脑主机名,默认的主机名是 ubuntu,你可以修改成新的主机名,回车,继续。如图十三所示:

图十三

  下一步就是最关键的分区了,以前很多用户不会操作这一步,但是现在不用操心了,我们之前已经设置好了一块空的硬盘空间,这里,我们选择“保存所有分区,自动使用最大的空闲空间”,Ubuntu就会自动设置好我们刚才空出的那块空间,比以前的fdisk命令简单安全多了吧。

  然后完成分区表设置,我们选择“完成分区并且写入到磁盘”。回车继续,如图十四所示:

图十四

  下一步,提示是否写入分区表,我们选择yse,写入磁盘,回车继续。

  然后计算机会安装基本系统过程。

  接下来选择时区,我们选择上海(shanghai),如图十七所示:

图十七

接着输入你的帐号名,回车继续,如图十八所示:

图十八

  下一步是设置用户的密码,直接回车就选择上一步输入的帐号,也就是给刚才建立的用户输入密码。

  下一步是输入密码,记住,这里不显示任何东西,也就是说不会出现一个 “*”号来表示你输入了一个密码。如图二十所示:

图二十

  下一步重新输入密码,回车继续。 

  下一步询问是否从 Internet 下载最新的安装包,因为我们安装以后也可以更新,所以不必在安装时耽误时间,我们需要选择否,也就是NO ,回车继续。

  下一步自动安装 GRUB 的启动器。

  下一步“安装复制”完成,准备重启,选择“Continue”,继续安装。

  重新启动后,进入当前安装的系统,如图二十五所示,我们成功启动了Ubuntu,内核是2.6.10,正在启动中……

图二十五


 
  下一步Ubuntu开始自动解压缩安装包,并且真正的的安装开始了,其实Windows的安装也是一样的,都是复制压缩包,然后解压缩再安装文件。安装完毕后,重新启动,终于出现我们的登陆界面了,怎么样,很清爽吧,如图三十所示:

图三十

输入你的用户名(Username),再输入你的密码(password),开始登陆!如图三十一所示:
 

图三十一

  终于进入Ubuntu了,欢迎来到Ubuntu的世界,很清爽,和XP类似也有开始菜单,第一项是程序(Application),类似于XP开始菜单的“所有程序”,如图三十二所示:

图三十二


 
  右边是位置菜单(Places),类似XP的“我的电脑”和“网上邻居”,如图三十三所示:

图三十三


 
  位置的右边是系统(System),类似XP的“控制面板”,如图三十四所示:

图三十四



  系统的最下边是注销(Log out),就像XP,我们可以在这里选择注销或者是关机。如图三十五所示:

图三十五



  好了,Ubuntu就安装成功了,很有成就感吧,进入Linux后你就觉得,你离真正高手不远了,换句话说,真正的高手才不屑用傻瓜化的Windows呢,好像一个顶级的摄影师,会喜欢用傻瓜照相机吗?不会!如果一个很有天赋摄影师,只喜欢用傻瓜照相机,不会使用高性能、功能复杂的照相机,他能成为一流的高手吗,答案同样是:不可能!

  但是Ubuntu的界面还是英文的,而且没有安装我们常用的软件啊,比如bt客户端、emule客户端、msn messeger、Tomskype、Winamp、QQ、浏览器、Realplayer等等等等,别急,凡是XP有的软件,Ubuntu里都有更好替代品,不信啊,请看我的下几篇文章《你还在用Microsoft Windows吗 之 汉化与美化篇》和《你还在用Microsoft Windows吗 之 常用软件安装篇》。



相信经常玩木马的朋友们都会知道一些木马的特性,也会有自己最喜爱的木马,不过,很多朋友依然不知道近年兴起的“DLL木马”为何物。什么是“DLL木马”呢?它与一般的木马有什么不同?

一、从DLL技术说起
要了解DLL木马,就必须知道这个“DLL”是什么意思,所以,让我们追溯到几年前,DOS系统大行其道的日子里。在那时候,写程序是一件繁琐的事情,因为每个程序的代码都是独立的,有时候为了实现一个功能,就要为此写很多代码,后来随着编程技术发展,程序员们把很多常用的代码集合(通用代码)放进一个独立的文件里,并把这个文件称为“库”(Library),在写程序的时候,把这个库文件加入编译器,就能使用这个库包含的所有功能而不必自己再去写一大堆代码,这个技术被称为“静态链接”(Static Link)。静态链接技术让劳累的程序员松了口气,一切似乎都很美好。可是事实证明,美好的事物不会存在太久,因为静态链接就像一个粗鲁的推销员,不管你想不想要宣传单,他都全部塞到你的手上来。写一个程序只想用到一个库文件包含的某个图形效果,就因为这个,你不得不把这个库文件携带的所有的图形效果都加入程序,留着它们当花瓶摆设,这倒没什么重要,可是这些花瓶却把道路都阻塞了——静态链接技术让最终的程序成了大块头,因为编译器把整个库文件也算进去了。
时代在发展,静态链接技术由于天生的弊端,不能满足程序员的愿望,人们开始寻找一种更好的方法来解决代码重复的难题。后来,Windows系统出现了,时代的分水岭终于出现。Windows系统使用一种新的链接技术,这种被称为“动态链接”(Dynamic Link)的新技术同样也是使用库文件,微软称它们为“动态链接库”——Dynamic Link Library,DLL的名字就是这样来的。动态链接本身和静态链接没什么区别,也是把通用代码写进一些独立文件里,但是在编译方面,微软绕了个圈子,并没有采取把库文件加进程序的方法,而是把库文件做成已经编译好的程序文件,给它们开个交换数据的接口,程序员写程序的时候,一旦要使用某个库文件的一个功能函数,系统就把这个库文件调入内存,连接上这个程序占有的任务进程,然后执行程序要用的功能函数,并把结果返回给程序显示出来,在我们看来,就像是程序自己带有的功能一样。完成需要的功能后,这个DLL停止运行,整个调用过程结束。微软让这些库文件能被多个程序调用,实现了比较完美的共享,程序员无论要写什么程序,只要在代码里加入对相关DLL的调用声明就能使用它的全部功能。最重要的是,DLL绝对不会让你多拿一个花瓶,你要什么它就给你什么,你不要的东西它才不会给你。这样,写出来的程序就不能再携带一大堆垃圾了——绝对不会让你把吃剩的东西带回家,否则罚款,这是自助餐。(图1——静态链接与动态链接)
DLL技术的诞生,使编写程序变成一件简单的事情,Windows为我们提供了几千个函数接口,足以满足大多数程序员的需要。而且,Windows系统自身就是由几千个DLL文件组成,这些DLL相互扶持,组成了强大的Windows系统。如果Windows使用静态链接技术,它的体积会有多大?我不敢想。

二、应用程序接口API
上面我们对DLL技术做了个大概分析,在里面我提到了“接口”,这又是什么呢?因为DLL不能像静态库文件那样塞进程序里,所以,如何让程序知道实现功能的代码和文件成了问题,微软就为DLL技术做了标准规范,让一个DLL文件像奶酪一样开了许多小洞,每个洞口都注明里面存放的功能的名字,程序只要根据标准规范找到相关洞口就可以取得它要的美味了,这个洞口就是“应用程序接口”(Application Programming Interface),每个DLL带的接口都不相同,尽最大可能的减少了代码的重复。
用Steven的一句话:API就是一个工具箱,你根据需要取出螺丝刀、扳手,用完后再把它们放回原处。
在Windows里,最基本的3个DLL文件是kernel32.dll、user32.dll、gdi32.dll。它们共同构成了基本的系统框架。

三、DLL与木马
DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。那么,DLL与木马能扯上什么关系呢?如果你学过编程并且写过DLL,就会发现,其实DLL的代码和其他程序几乎没什么两样,仅仅是接口和启动模式不同,只要改动一下代码入口,DLL就变成一个独立的程序了。当然,DLL文件是没有程序逻辑的,这里并不是说DLL=EXE,不过,依然可以把DLL看做缺少了main入口的EXE,DLL带的各个功能函数可以看作一个程序的几个函数模块。DLL木马就是把一个实现了木马功能的代码,加上一些特殊代码写成DLL文件,导出相关的API,在别人看来,这只是一个普通的DLL,但是这个DLL却携带了完整的木马功能,这就是DLL木马的概念。也许有人会问,既然同样的代码就可以实现木马功能,那么直接做程序就可以,为什么还要多此一举写成DLL呢?这是为了隐藏,因为DLL运行时是直接挂在调用它的程序的进程里的,并不会另外产生进程,所以相对于传统EXE木马来说,它很难被查到。

四、DLL的运行
虽然DLL不能自己运行,可是Windows在加载DLL的时候,需要一个入口函数,就如同EXE的main一样,否则系统无法引用DLL。所以根据编写规范,Windows必须查找并执行DLL里的一个函数DllMain作为加载DLL的依据,这个函数不作为API导出,而是内部函数。DllMain函数使DLL得以保留在内存里,有的DLL里面没有DllMain函数,可是依然能使用,这是因为Windows在找不到DllMain的时候,会从其它运行库中找一个不做任何操作的缺省DllMain函数启动这个DLL使它能被载入,并不是说DLL可以放弃DllMain函数。

五、DLL木马技术分析
到了这里,您也许会想,既然DLL木马有那么多好处,以后写木马都采用DLL方式不就好了吗?话虽然是这么说没错,但是DLL木马并不是一些人想象的那么容易写的。要写一个能用的DLL木马,你需要了解更多知识。

1.木马的主体
千万别把木马模块写得真的像个API库一样,这不是开发WINAPI。DLL木马可以导出几个辅助函数,但是必须有一个过程负责主要执行代码,否则这个DLL只能是一堆零碎API函数,别提工作了。
如果涉及一些通用代码,可以在DLL里写一些内部函数,供自己的代码使用,而不是把所有代码都开放成接口,这样它自己本身都难调用了,更不可能发挥作用。
DLL木马的标准执行入口为DllMain,所以必须在DllMain里写好DLL木马运行的代码,或者指向DLL木马的执行模块。

2.动态嵌入技术
Windows中,每个进程都有自己的私有内存空间,别的进程是不允许对这个私人领地进行操作的,但是,实际上我们仍然可以利用种种方法进入并操作进程的私有内存,这就是动态嵌入,它是将自己的代码嵌入正在运行的进程中的技术。动态嵌入有很多种,最常见的是钩子、API以及远程线程技术,现在的大多数DLL木马都采用远程线程技术把自己挂在一个正常系统进程中。其实动态嵌入并不少见,罗技的MouseWare驱动就挂着每一个系统进程-_-
远程线程技术就是通过在另一个进程中创建远程线程(RemoteThread)的方法进入那个进程的内存地址空间。在DLL木马的范畴里,这个技术也叫做“注入”,当载体在那个被注入的进程里创建了远程线程并命令它加载DLL时,木马就挂上去执行了,没有新进程产生,要想让木马停止惟有让挂接这个木马DLL的进程退出运行。但是,很多时候我们只能束手无策——它和Explorer.exe挂在一起了,你确定要关闭Windows吗?(图2–DLL挂钩)

3.木马的启动
有人也许会迫不及待的说,直接把这个DLL加入系统启动项目不就可以了。答案是NO,前面说过,DLL不能独立运行,所以无法在启动项目里直接启动它。要想让木马跑起来,就需要一个EXE使用动态嵌入技术让DLL搭上其他正常进程的车,让被嵌入的进程调用这个DLL的DllMain函数,激发木马运行,最后启动木马的EXE结束运行,木马启动完毕。
启动DLL木马的EXE是个重要角色,它被称为Loader,如果没有Loader,DLL木马就是破烂一堆,因此,一个算得上成熟的DLL木马会想办法保护它的Loader不会那么容易被毁灭。记得狼狈为奸的故事吗?DLL木马就是爬在狼Loader上的狈。
Loader可以是多种多样的,Windows的rundll32.exe也被一些DLL木马用来做了Loader,这种木马一般不带动态嵌入技术,它直接挂着rundll32进程运行,用rundll32的方法(rundll32.exe [DLL名],[函数] [参数])像调用API一样去引用这个DLL的启动函数激发木马模块开始执行,即使你杀了rundll32,木马本体还是在的,一个最常见的例子就是3721中文实名,虽然它不是木马。(图3–启动项)
注册表的AppInit_DLLs键也被一些木马用来启动自己,如求职信病毒。利用注册表启动,就是让系统执行DllMain来达到启动木马的目的。因为它是kernel调入的,对这个DLL的稳定性有很大要求,稍有错误就会导致系统崩溃,所以很少看到这种木马。
有一些更复杂点的DLL木马通过svchost.exe启动,这种DLL木马必须写成NT-Service,入口函数是ServiceMain,一般很少见,但是这种木马的隐蔽性也不错,而且Loader有保障。

4.其它
到这里大家也应该对DLL木马有个了解了,是不是很想写一个?别急,不知道大家想过没有,既然DLL木马这么好,为什么到现在能找到的DLL木马寥寥无几?现在让我来泼冷水,最重要的原因只有一个:由于DLL木马挂着系统进程运行,如果它本身写得不好,例如没有防止运行错误的代码或者没有严格规范用户的输入,DLL就会出错崩溃。别紧张,一般的EXE也是这样完蛋的,但是DLL崩溃会导致它挂着的程序跟着遭殃,别忘记它挂接的是系统进程哦,结局就是……惨不忍睹。所以写一个能公布的DLL木马,在排错检查方面做的工作要比一般的EXE木马多,写得多了自己都烦躁……

六、DLL木马的发现和查杀
经常看看启动项有没有多出莫名其妙的项目,这是Loader的所在,只要杀了狼,狈就不能再狂了。而DLL木马本体比较难发现,需要你有一定编程知识和分析能力,在Loader里查找DLL名称,或者从进程里看多挂接了什么陌生的DLL,可是对新手来说……总之就是比较难啊比较难,所以,最简单的方法:杀毒软件和防火墙(不是万能药,切忌长期服用)。笔者水平有限,错误之处还请各位多多包涵。



  相信许多人都喜欢使用Maxthon(傲游)或腾讯TT来上网冲浪,它们的亮点就是多页面浏览和广告过滤。为了减少广告的骚扰一般都打开了“自动过滤”或“智能屏蔽”功能。这样虽然过滤了许多无聊的广告,但麻烦也随之而来。

       案例一:Maxthon无法购买QQ秀

        Maxthon的广告过滤功能非常强大,在购买QQ秀时,点击“购买”按钮后没有反应,难道Maxthon与QQ秀有仇?

        病因:由于点击“购买”按钮后QQ秀的网页会使用JavaScript来“弹出窗口”进行确认购买,而Maxthon的广告猎手中恰巧有“启用弹出窗口过滤”和“启用弹出窗口自动过滤”功能,如果为了拦截广告而启用了这两项,那么在购买QQ秀时就会出现不能正常购买的问题。

        解决方法:关闭上述两项功能。找到Maxthon的“选项→广告猎手”,在子菜单中不勾选“启用弹出窗口过滤”和“启用弹出窗口自动过滤”就可以了。

        案例二:建设银行网银无法登录

        一天,笔者使用腾讯TT进入建设银行(www.ccb.cn)个人网银登录页面,飞快地填入账号后,却发现密码无法输入!怀疑中了木马,马上打开防火墙和杀毒软件,监视每一个端口,扫描所有硬盘,却发现电脑并无异常。

        病因:现在许多网银,B2C网站为了提高安全性,防止监视键盘输入的木马程序,普遍采用了“软键盘”来输入密码,而“软键盘”实际上是网页中的一个浮动层,TT将这些“软键盘”识别成了“浮动网页广告”,于是就将它们给屏蔽了。

        解决方法:在TT里将“智能屏蔽”中的“隐藏浮动网页元素”选项取消即可看到软键盘。

        以上仅仅是常见的广告过滤引起的麻烦,当然现实中有许多故障也是由广告过滤引起的,请朋友们举一反三,遇到类似情况先注意你的浏览器广告过滤功能。



现在市面上大多数闪存盘都可以作为启动闪盘,但不少厂商为了节省成本,并没有赠送启动盘制作程序,即使赠送的,也多是在Windows 98才能正常使用。遇到Windows 2000/XP,就无法完成制作了,虽然我们以前介绍过用WinImage 7.0来制作,但这是一款英文共享软件,不太方便,所以这里为大家介绍一款不到600KB的小软件。

实例一:制作引导型闪存盘

第一步:插入闪存盘,运行软件,从列表中选择插入的闪存盘。

第二步:点击“仅进行引导处理,不格式化磁盘”项,勾选要使用的模式。通常早期的闪存盘使用FDD模式引导的可能性较大,如果你的闪存盘是移动硬盘(或被识别为硬盘的闪存盘),则要使用“HDD模式”(见图1),其他闪存盘则可根据需要使用任一模式。

小提示

★如果选择“引导处理”项,虮硎静桓袷交链媾蹋苯幼鲆即恚嗍榭鱿轮谱鞒龅纳链媾滩荒芤肌?

★使用“备份到文件”及“从文件恢复”项可以像使用Ghost那样为闪存盘做备份或恢复。

第三步:点击“开始”按钮,这时会弹出数据将被销毁的警告,点击“是”,稍候按提示拨出闪存盘,再重新插入后,就能完成引导文件的复制,同时完成引导型闪存盘的制作。

实例二:定制启动闪存盘

USBoot在制作启动闪存盘时,会自动向闪存盘中写入IO.SYS、MSDOS.SYS、COMMAND.COM三个文件,这三个文件位于USBOOT.PAK文件中。如果你需要定制引导型闪存盘中的内容,可以右击USBoot主界面右下角的图标,选择“添加”,然后就可以加入其他文件了(见图2)。

小编有话说:如果用闪存盘引导后,主板没有认出闪存盘,那引导起来希望渺茫;如果提示Invalid system disk,press any key to reboot等信息,则表示闪存盘的格式有问题,切换模式一般就能引导;如果提示Invalid partition table或Missing operating system或Error loading operating system等信息,则表示主板支持闪存盘启动,但只能支持一些老闪存盘。

2005年10月27日

 

用过DOS的人对参数并不陌生,DOS下的很多程序都有参数,尽管是枯燥的英文字母,但功能却非常强大。Ghost是一个典型的支持参数的DOS程序,充分利用它的参数,我们可以更好地控制Ghost。让它们更好地为我们工作,前面几个例子,我们就使用了Ghost的参数做出了一张自动备份和恢复硬盘数据的自启动光盘。正是因为Ghost参数众多,功能强大,我们才有必要把一些最最常用的参数列出,供大家平时参考使用。

  小提示

  ★参数(Parameter)是程序提供给我们一些隐藏选项,通过添加参数,可以实现正常启动程序无法实现或者能够实现,但需要很多步骤才能够实现的功能,可以给我们带来很多的方便。

  ★参数与程序、参数与参数之间用空格符分隔。

★我们可以把Ghost的参数写入到一些BAT文件中,并通过控制语句来用它更方便地克隆和恢复我们的系统。

  1.磁盘对磁盘拷贝

  图形界面: Disk To Disk

  参数例子: ghost -clone,mode=copy,src=1,dst=2 -sure -fx

  参数功能: 拷贝磁盘一的全部内容到磁盘二,不必询问,完成后退出Ghost。

  2.把磁盘上的所有内容备份成映像文件

  图形界面: Disk To Image

  参数例子: ghost -clone,mode=dump,src=1,dst=d:\Win98sys.gho -z3 -sure -fx

  参数功能: 备份机器第一块硬盘上的全部内容到另一台硬盘d:\Win98sys.gho文件中,高压缩,不必询问,完成后退出Ghost。

  3.从备份的映像文件复原到磁盘

  图形界面: Disk From Image

  参数例子: ghost -clone,mode=load,src=d:\Win98sys.gho,dst=1 -sure -fx

  参数功能: 从备份在另一块硬盘d:\Win98sys.gho的映像文件复原到第一块硬盘上,不必询问,完成后退出Ghost。

  4.分区对分区拷贝

  图形界面: Partition To Partition

  参数例子: ghost -clone,mode=pcopy,src=1:1,dst=2:1 -sure -fx

  参数功能: 拷贝第一块硬盘第一个分区上的所有内容到第二块硬盘的第一个分区上,不必询问,完成后退出Ghost。

  5.把分区内容备份成映像文件

  图形界面: Partition To Image

  参数例子: ghost -clone,mode=pdump,src=1:1,dst=d:\Win98sys.gho -z9 -sure -fx

  参数功能: 备份第一块硬盘第一分区到d:\Win98sys.gho,采用最高压缩率,不必询问,完成后退出Ghost。

6.从备份的映像文件克隆到分区

  图形界面: Partition From Image

  参数例子: ghost -clone,mode=pload,src=d:\Win98sys.gho:1,dst=1:1 -sure -fx

  参数功能: 把d:\Win98sys.gho中的第一个分区内存克隆到第一块硬盘第一分区上,不必询问,完成后退出Ghost。

  7.平行端口电缆线直接连接电脑客户机

  图形界面: LPT/Slave

  参数例子: ghost -lps

  参数功能: 启动客户机 (两台电脑必须同时执行Ghost)。

  8.平行端口电缆线直接连接服务机

  图形界面: LPT/Master

  参数例子: ghost -lpm -clone,mode=dump,src=1,dst=c:\Win98sys.gho -sure -fx

  参数功能: 将服务机第一块硬盘上的内容备份到客户机c:\Win98sys.gho文件中,不必询问,完成后退出Ghost。

  9.硬盘间直接克隆

  参数例子:ghost -clone,mode=copy,src=1,dst=2 -sure

  参数功能:在内部模式拷贝第一块硬盘到第二块硬盘,无需提示,直接克隆。

  10.网络备份

  参数例子:ghost -nbm -clone,mode=dump,src=2,dst=c:\xxxx.gho

  参数功能:由NetBIOS模式连接到正在进行ghost\slave的网络远程个人电脑并备份本机第二块硬盘到远程硬盘C:\xxxx.gho成一映像压缩文件。

  小提示

  该远程客户机必须使用ghost -nbs命令来启动。

  11.将映像文件克隆到硬盘

  参数例子:ghost -clone,mode=load,src=e:\savdsk.gho,dst=1

  参数功能:读入E:\SAVEDSK.gho文件,并把它克隆到第一块硬盘上。

  12.将第二个分区备份为映像文件(还原)

  参数例子:ghost -clone,mode=pdump,src=1:2,dst=g:\imgs\part2.gho

  参数功能:备份第一块硬盘的第二分区到g:\imgs\part2.gho映像文件。

  参数例子:ghost -clone,mode=pload,src=g:\imgs\part2.gho:2,dst=1:2

  参数功能:载入(恢复)映像文件内的第二分区到内部硬盘第一块硬盘的第二分区。

  13.不同硬盘不同分区复制

  参数例子:ghost -clone,mode=pcopy,src=1:2,dst=2:1

  参数功能:拷贝第一块硬盘的第二分区到第二块硬盘的第一分区。

  14.还原到第二块硬盘并调整分区大小

  参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=2,sze1=60P,sze2=40P

  参数功能:克隆g:\imgs\2prtdisk.gho映像文件到第二块硬盘, 并重整按60%和40%大小分配分区大小。
15.还原到第一块硬盘并调整分区大小

  参数例子:ghost -clone,mode=load,src=e:\imgs\3prtdisk.gho,dst=1,sze1=450M,sze2=1599M,sze3=2047M

  参数功能:克隆e:\imgs\3prtdisk.gho映像文件到第一块硬盘, 并重整分区大小为: 第一分区450MB,第二分区1599MB,第三分区2047MB。

  16.保留第一分区,其他不分配

  参数例子:ghost -clone,mode=copy,src=1,dst=2,sze1=F,sze2=V,sze3=V

  参数功能:拷贝有三个分区的第一块硬盘到第二块硬盘并保持第一分区与来源大小相同,但是其他分区所剩余空间保留不予分配。

  17.还原到最后的分区并调整分区大小

  参数例子:ghost -clone,mode=load,src=g:\imgs\2prtdisk.gho,dst=1,szeL

  参数功能:载入映像文件到磁盘最后的分区并按照容量重整其大小,第一分区则利用剩余的空间。

  18.从参数文件读取

  参数例子:GHOST.EXE @(参数文件)

  参数功能:GHOST命令行参数可从参数文件读取并执行(注意参数文件是文本格式的)。

  小提示

  参数文件中可以以文本格式编写包含任何Ghost命令行参数,除了-AFILE=和-DFILE= 参数外。

  19.备份并自动分割

  参数例子:ghost -sure -clone,mode=pdump,src=1:1,dst=system.gho -span -split=630

  参数功能:它的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,如果生成的system.gho大于630MB,则会分割生成的GHO文件,这个参数在备份大的分区,并把它们烧录到650MB的CD-R上时非常有用。

  20.备份并加密

  参数例子:ghost -sure -pwd,666888 -clone,mode=pdump,src=1:1,dst=system.gho

  参数功能:该语句的作用是把第一块硬盘第一分区信息备份到当前文件夹下的system.gho中,并且以666888作为生成后GHO文件的密码,以便加密。以后用Ghost恢复system.gho文件,或者用Ghost Explorer来释放其中的文件时,都必须输入密码,否则无法恢复或释放文件,从而起到了保密的作用。如果输入ghost -sure -pwd -clone,mode=pdump,src=1:1,dst=system.gho,即-pwd后面不带密码,则Ghost在制作GHO文件前会询问用户加密GHO的密码,你必须记牢。给GHO文件加密后,别人就无法随意查看或恢复我们的文件了。
 
 

2005年10月26日

hack都免不了碰到MD5加密数据,现在许多数据库密码等都是通过MD5加密,如动网数据库密码就是通过MD5加密过的,等等还有许多都是,普遍的很呐。那你又要问了,有办法破解吗,当然有,但是这些破解是靠的运气,暴力破解嘛,是没有绝对的成功。但是我们要在有最好的运气之前有最好的条件,这就要求我们有足够好的工具武器来帮忙,别说我又用工具,我反正没有王小云教授那么厉害可以破解MD5的加密,如果你有这个本事就跳过此页,没有的话可以看看下面几个不错的MD5破解工具。

MD5Crack V3.1

MD5Crack V3.1是目前MD5Crack的最新版本,它也是我感觉MD5破解中最棒也是最经常用的。其最大特点还是其功能和速度,尤其是速度方面比很多同类工具中领先,其新版本之速度更加提高,但它却是用大量内存来换取速度的。我们先看下它的样子(如图1-1)。

可以看得出来操作简单直观,其实功能更强大,接着我们就说说其功能和使用。

1、密文设置:可以选择破解单个或多个密文,破解单个只须选择 破解单个密文 并将密文输入到其后的框中;破解多个密文时选择上它,点击后面的设置,弹出对话框(如图1-2)。

如果要破解的文件很多,你就可以保存为txt文件然后点 浏览 来读取文件,如果不是太多,就可以选择下面那个 使用列表中的密文输入后点添加就可以了,想删除可以直接删除或批量删除。

2、字符设置:这里有3种方式可选择,分别是:使用字符集、使用字典、使用插件。A.使用字符集比较简单,如果你对数据有大概知情,比如已经知道是被加密的数据是数字,那你就可以只选择数字其他的都不选择,这样就可以大大减少解密的时间了,或如果知道被加密数据就是1-6之间的数字组成的,你就可以直接只选择自定义且在里输入1-6几个数字就可以了,破解会更快!B.使用字典:如果你已经有或者专门为为破解次加密数据而生成的字典了,你可以使用这项了,如数据是姓名和生日组成的,就可以先用字典生成器做好字典文件后,用此项,反正目的都是为了尽快破解出密文,呵呵。C.插件方式是这个比较特色的一个功能,还是比不错,其实也相当于一个字典生成工具,不同的是它不将字符串保存到文件中,而是直接传给主程序,这样倒可以避免字典文件占大量的空间。目前版本上插件有birthday和模板插件(如图1-3),


birthday是个生日字典插件(如图1-4),如果是生日的加密数据用这个非常不错,分别有年月日范围设置和显示方法,如年可以显示4位或2位,通过选择 使用2位的年表示法 来改变,月和日1-9前是否加0的设置,而且在右面实例预览处显示共有多少条字典项让你心里有个低啊。

模板插件1.0(如图1-5)可以让做出更准确的选择、范围更小,不必让你再找字典生成器来生成字典,直接用这个,看似麻烦,其实不然,我把它自带的说明给大家看下,仔细看下就可以理解的。

匹配模式格式说明:
为了对模板的使用有一个大概印象,先给出一个例子:

[p][r]3[a-z]2-4{0,3,6-8}

模板由 [] {} 构成基本元素,里面表示使用的字符集.可以是

用逗号(,)分隔开的列表,也可以是用短扛(-)表示的序列.

元素前加上数字可表示重复的次数,在这点上 [] {} 有些差别:

1.默认时(前面没有数字) [] 表示重复 1 ; {} 表示重复 0 1 .

2.前面带一个数字时( x[..] , x{..} ), [] 表示重复 x ;

{} 表示重复 0 x .

3.前面带两个数字时( x-y[..] , x-y{..} ) 相同,都表示重复 x y .

[...] == 1-1[...] {…} == 0-1{…}

3[...] == 3-3[...] 3{…} == 0-3{…}

下面给出一些例子来说明:

[a][b][c] : abc

[a,b,c] == [a-c] : a;b;c

{a-c} : NULL;a;b;c

2[a-c] : aa;ab;ac;ba;bb;bc

2{a-c} : NULL;a;b;c;aa;ab;ac;ba;bb;bc;ca;cb;cc

其它还有保存进度功能,比如跑了一段时间了,如果停止就浪费了太多时间,这时候你就可以把进度保存到机子上,等下次回来再来读取进度就可以了。
在高级设置里有 将结果保存到文件txthtm格式,完成后关闭计算机,和破解多个密码时,找到一个即结束等功能。
长度和线程都可以自己设置,注意线程并不是设置数字越大时间就短,要根据实际情况来定,多实践就明白了。
例如我们破解1b81df96b15534e6数据,把数据粘贴到破解单个密文框,框右下边会有提示,有效2字变黑体,如果不是16位的会显示为灰色,如图1-6然后选择破解方式,我选择的是 使用字符集 ,再选择 小写字母 项(我就是用字母转换成的这个MD5数据,呵呵),设置好长度和线程,我使用的都是默认的,线程一般破解MD5数据时为8就可以了,太大或太小速度并不会有太大变化,相反有时候还会变慢,点开始就可以了,时间一秒一秒在我们眼前走过,突然密码也就展现在了眼前,(呵呵)如图1-7。破解5位字母用了10秒时间如图1-8提示。速度还可以吧。^_^



MD5Crack V3.1功能使用基本侃完了,如有不理解的,也可以看工具自带的帮助,大家如果试了就会明白其速度比其同类快多了~~~

DV .exe

此工具也也许就叫这个名字吧,(我接触这个工具时,就是这样写的)这个是工具是个CMD下操作的MD5破解工具,估计作者开发是为破解动网论坛v5.0密码数据而开发的。这个工具虽是CMD下使用,但并不是很麻烦,来我们打开CMD窗口运行:dv后,出现其使用方法说明(如图2-1

看了返回信息后使用就很明白了吧,比如我们要破解被加密数据都放到a.txt放的格式如图2-2


前面是MD5加密数据后是跟用户名,然后我们在CMD输入命令dv ?p a.txt ?w x.dic ?o b.txt ?b num|char 我来解释下,-p a.txt是读取MD5数据和用户的存放的文件a.txt;-w x.dic是读取字典x.dic文件,如果不用字典就可以省略了;-o b.txt是把破解出的密码和对应用户名存放的文件b.txt,如果不写直接回显到屏幕,为方便多数量数据破解时使用;-b num|char注意这里破解数字时用-b num,破解字母加密数据时用-b char,不可以同时写上?

2005年10月23日

什么是组策略?70%的人不知道;25%用过;5%的人常用。他是用来干什么的呢?可以这么说:他是半个“优化大师”。准确的说他比“优化大师”还要强大!他对系统的修改同注册表是一样的,但最大的优点就是直观,你可以不懂E文,通过不复杂的文字就能把系统这匹“野马”驯服!不过要注意的是,组策略在2000以下的系统是没有的~~~(不知道对不对~~)现在就让我们一起走近他,丢开“优化大师”!

1.打开组策略

如图1


在运行中输入:g p e d i t . m s c(我在中间用了空格,就是希望大家自己背下来,不要复制!)注意后面的.msc是必须加上的,不然系统不认识他~

2.基本信息类型

如图2

组策略分为“计算机配置”和“用户配置”,其功能就跟注册表里一样,“计算机配置”针对所有本地用户;而“用户配置”则针对当前用户,一般来说如果我们只是优化一下界面之类的东西的话是用不着去动“计算机配置”的。不过要提一下的是“计算机配置——管理模版——系统”分支下的东西,里面仍然有很多有用的东西,喜欢研究的朋友不要放过哦~

3.用户配置

如图3

我们的重点就是这些:用户配置中的管理模版!

图3的任务栏分支对我这种喜欢简洁的人超级有用!可以看到右边的很多关于开始菜单的设置。有时候删掉一些选项也可以防止别人的误操作及修改自己系统。

图4是关于桌面的设置,通过这些设置可以大量减少你桌面的图标(比如笔者的桌面就网络连接、临时文本、4个文件夹,看上去超清爽!)也可以让你养成用热键的习惯,如:不要“我的电脑”,用Win+E代替等等。

图5是关于当前用户的系统设置的,常用的有:禁用注册表、关闭自动播放、自动更新等

图6则是WINDOWS自带组件的管理。一目了然!

通过组策略我们还可以设置个用户的权限(网络上有很多文章介绍)等等,这些都是我们的好帮手。刚开始你可能觉得不习惯,不过时间久了你就会觉得比“优化大师”好用多了!而且也告别了“优化大师”修改系统后不稳定的“臭名声”。

欢迎有新发现的朋友给我留言!

(第一次写长点的技术型文章~写得不好希望大家包含~)

出处:http://blog.donews.com/sink/                              作者:第②天使

2005年10月22日

“我想,我们应该烧掉这个东西。”3000多年前,面对希腊人突然遗留在战场废墟上的这只巨大的木马,特洛伊王国的小王子帕里斯对他的父王说。因为他有一种不安的感觉,这个突然出现的物体会带来厄运。然而没有人听他的话,整个军队固执的把这只庞然大物作为战利品运回了城里。
几天后的夜里,藏在木马里的希腊士兵从内部打开了特洛伊那坚不可摧的城门——特洛伊因此沦陷。
如果帕里斯仍有灵魂存在的话,他也许会苦苦思索这个问题:如果当初我坚持把这个带来厄运的东西焚烧掉,那么特洛伊将会是怎样一种结局呢?

请允许我改编情感作家姜汤的一句话:“二十一世纪的网络是木马横行的世界,人类在解决病毒战争之后,最大的困惑就是木马后门的攻防难题。”
众所周知,木马(Trojan,或称后门“BackDoor”)是一种危害巨大的程序,它们让被害的计算机对着未知的入侵者敞开了大门,使得受害者的系统和数据暴露在混乱的网络世界里。和病毒一样,木马也经历了好几代的演变,使得它越藏越深,成为另一种难以揪除的寄生虫。
——如果,我们趁早把木马焚烧掉呢?


认识木马
简言之,信息领域的木马,就是一种能潜伏在受害者计算机里,并且秘密开放一个甚至多个数据传输通道的远程控制程序,它由两部分组成:客户端(Client)和服务器端(Server),客户端也称为控制端。木马的传播感染其实指的就是服务器端,入侵者必须通过各种手段把服务器端程序传送给受害者运行,才能达到木马传播的目的。当服务器端被受害者计算机执行时,便将自己复制到系统目录,并把运行代码加入系统启动时会自动调用的区域里,借以达到跟随系统启动而运行,这一区域通常称为“启动项”。当木马完成这部分操作后,便进入潜伏期——偷偷开放系统端口,等待入侵者连接。到此为止,木马还只处于被特洛伊的市民拉入城内的阶段,是不会进行破坏行动的。
当入侵者使用客户端连接上木马服务器端开放的端口后,特洛伊的城门就被打开了,到这里,木马的噩梦才正式开始……(图1.木马破坏的三个时期)


所以,在木马屠城的军号吹响之前,如果帕里斯及时点燃了这只庞然大物,特洛伊也许就不会消失——至少,它不会是被一只木马给毁掉的。


阻止木马进城——不同时期的木马形态与相应的系统保护
特洛伊被木马计的前提是因为特洛伊人自己把藏有希腊士兵的木马运进了城内,让木马计得以成功实施,换个角度,如果当初特洛伊人任凭木马搁在海滩上发霉发臭,或者直接焚烧了这只装载着厄运的东西,那么“特洛伊木马”将会被作为与“马奇诺防线”同样性质的著名无效战略而被列入史册,而且后世可能再也不会采用这种攻击手段。
但是希腊人的木马计成功了,正如现在数以千计的现代网络木马计成功了一样。现代的希腊人——入侵者积极使用各种手段让现代的特洛伊人——受害者把那只木马程序高高兴兴的领回家去。
早期的防病毒思想并不盛行,那时候的网民也比较单纯,使用网络防火墙的人也只有少数,所以那时候的入侵者可以算是幸福的,他们只需要一点简单的社会工程学手段就能把木马程序传输给对方执行,这一时期的木马种植手段(如今的普遍称谓为“下马”)基本上不需要牵涉到技术,也许唯一需要的技术就是如何配置和使用一个木马,因为那时候木马也还是个新产物而已。那时候的网民,只能依靠自己的判断和技术,才能免受或摆脱木马之害。因此,当木马技术刚在国内开始的时候,任意一个IP段都有可能存在超过40%的受害计算机开放着大门等待入侵者进攻,可以毫不夸张的说,那时候是木马的第一黄金时期,唯一美中不足的制约条件就是当时的网络速度普遍太慢了。(图2.利用社会工程学手段传播的木马)


随着时间的流逝,木马技术发展日益成熟,但网民的安全意识也普遍提高,更出现了初期的病毒防火墙概念,这个时期的入侵者必须掌握更高级的社会工程学手段和初期的入侵技术才能让对方受害了,这时期的木马虽然隐蔽性有了相对提高,但仍然是基于客户端寻找连接服务器端的模式。由于出现了病毒防火墙,网民判断和查杀木马的效率大大提高,而且大部分人也知道“人心不古”了,不再轻易接收陌生人给的程序,使得木马不再像上时期那样肆无忌弹的横行,但是因为病毒防火墙是个新兴产物,仍然有相对多的人没有安装使用,以至于许多老旧的木马依然可以横行无忌。
再后来,随着网络防火墙技术诞生和病毒防火墙技术的成熟,木马作者被迫紧跟着防病毒厂商的脚步更新他们的作品以避免马儿过早“殉职”,同时由于网络防火墙技术的出现,让计算机与网络之间不再直接,尤其是网络防火墙实现的“拦截外部数据连接请求”与“审核内部程序访问网络请求”的策略,导致大部分木马纷纷失效,这时期的木马逐渐分裂成两个派别:一种依然采用客户端连接服务器端的方式,只是改为了其他传输途径,如E-MAIL、FTP等,或者在内部除掉网络防火墙,以便自己畅通无阻;另一种则改变了入侵的思维,把“客户端连接服务器端”变为“服务器端连接客户端”,再加上一点社会工程学技术,从而突破了网络防火墙的限制,也因此诞生了一种新的木马技术——“反弹型”木马。这一时期里,入侵者与受害者之间的战争终于提升到技术级别,若想保护自己,除了安装网络防火墙和病毒防火墙,以及接触网络攻防技术以外别无他法,这个“基础互动”一直保持到今天的XP时代。(图3.各个派系的木马)


到了XP时代,网络速度有了质的飞跃,黑客攻防战更是越来越多的浮上水面,因为系统变了,一个专门为网络应用而诞生的操作系统,必定会存在与网络有关的缺陷。没错,WinXP相对于Win9x的弱点就是它的网络漏洞太多了,无论是利用MIME漏洞传播的信件木马,还是通过LSASS溢出而放下的木马,都能在XP系统上分到一块肉。你也许会说,Win9x同样有许多漏洞,但是为什么它没有XP的烦恼?这是因为Win9x的网络功能太弱了,几乎没有什么系统组件需要依靠网络运行!所以现在的用户,除了使用网络防火墙和病毒防火墙把自己包裹得严严实实以外,还要三天两头去微软的系统更新站点安装各种漏洞修复程序……(图4.Windows Update)


 


别让士兵们下马!——防止木马启动
话说藏在木马里的希腊士兵入城以后,并没有急着下马屠城,而是待到夜深人静之时,才出来打开了牢固的城门,为特洛伊的毁灭奏响了哀歌。而计算机内部没有人类社会的地理和时间关系,即使你的硬盘里现在就存放着100个木马程序,它们也比特洛伊海滩上那只大木马的处境好不到哪里去,因为对于操作系统来说,任何有害程序只要没有运行,它就可以等同于那些未能下马的士兵,一律视为无害。要让系统变成特洛伊城的黑夜,唯一的方法只能是启动木马的服务器端,而启动木马的最简单途径,就是通过“启动项”加载运行。(图5.查看启动项的工具)


任何操作系统都会在启动时自动运行一些程序,用以初始化系统环境或额外功能等,这些被允许跟随系统启动而运行的程序被放置在专门的区域里供系统启动时加载运行,这些区域就是“启动项”,不同的系统提供的“启动项”数量也不同,对于Win9x来说,它提供了至少5个“启动项”:DOS环境下的Autoexec.bat、Config.sys,Windows环境下的“启动”程序组、注册表的2个Run项和1个RunServices项,分别是:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices

到了2000/XP系统时代,DOS环境被取消,却新增了一种称之为“服务”的启动区域,注册表也在保持原项目不变的基础上增加了2个“启动项”:
项目 键名
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows AppInit_DLLs
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows run

这么多的启动入口,木马自然不会放过,于是我们经常在一些计算机的启动项里发现陌生的程序名,这时候就只能交由你或者病毒防火墙来判断了,毕竟系统自身会在这里放置一些必要的初始化程序,还有一些正常工具,包括病毒防火墙和网络防火墙,它们也必须通过启动项来实现跟随系统启动。(图6.各个启动项位置)


此外还有一种不需要通过启动项也能达到跟随系统启动的卑劣手法,那就是“系统路径遍历优先级欺骗”,Windows系统搜寻一个不带路径信息的文件时遵循一种“从外到里”的规则,它会由系统所在盘符的根目录开始向系统目录深处递进查找,而不是精确定位的,这就意味着,如果有两个同样名称的文件分别放在C:\和C:\Windows下,Windows会执行C:\下的程序,而不是C:\Windows下的。这样的搜寻逻辑就给入侵者提供了一个机会,木马可以把自己改为系统启动时必定会调用的某个文件名,并复制到比原文件要浅一级以上的目录里,Windows就会想当然的执行了木马程序,系统的噩梦就此拉开序幕。这种手法常被用于“internat.exe”,因为无论哪个Windows版本的启动项里,它都是没有设置路径的。
要提防这种占用启动项而做到自动运行的木马,用户必须了解自己机器里所有正常的启动项信息,才能知道木马有没有混进来。至于利用系统路径漏洞的木马,则只能靠用户自己的细心了。


为什么它无法根除?——文件并联型木马的查杀
某些用户经常会很郁闷,自己明明已经删除了木马文件和相应的启动项,可是不知道什么时候它自己又原封不动的回来了,这还不算,更悲惨的是有时候杀掉某个木马后,系统也出了故障:所有应用程序都打不开了。这时候,如果用户对计算机技术的了解仅限于使用杀毒软件,那可只能哭哭啼啼的重装系统了!
为什么会这样?难道这种木马还恶意修改了系统核心?其实答案很简单,因为这种木马修改了应用程序(EXE文件)的并联方式。
什么是“并联方式”呢?在Windows系统里,文件的打开操作是通过注册表内相应键值指定的应用程序来执行的,这个部分位于注册表的“HKEY_CLASSES_ROOT”主键内,当系统收到一个文件名请求时,会以它的后缀名为依据在这里识别文件类型,进而调用相应的程序打开。而应用程序自身也被视为一个文件,它也属于一种文件类型,同样可以用其他方式开启,只不过Windows设置它的调用程序为“"%1" %*”,让系统内核理解为“可执行请求”,它就会为使用这种打开方式的文件创建进程,最终文件就被加载执行了,如果有另外的程序更改了这个键值,Windows就会调用那个指定的文件来开启它。一些木马程序把EXE后缀名对应的exefile类型的“打开方式”改成了“木马程序 "%1" %*”,运行程序时系统就会先为“木马程序”创建进程,把紧跟着的文件名作为参数传递给它执行,于是在我们看来程序被正常启动了。因为木马程序被作为所有EXE文件的调用程序,使得它可以长期驻留内存,每次都能恢复自身文件,所以在一般用户看来,这个木马就做到了“永生不死”。然而一旦木马程序被删除,Windows就会找不到相应的调用程序,于是正常程序就无法执行了,这就是所谓的“所有程序都无法运行”的情况来源,并不是木马更改了系统核心,更没必要因此重装整个系统。(图7.被木马更改了EXE打开方式的系统)


根除这种木马的最简单方法只需要查看EXE文件的打开方式被指向了什么程序,立即停止这个程序的进程,如果它还产生了其他木马文件的话,也一起停止,然后在保持注册表编辑器开启着的情况下(否则你的所有程序都会打不开了)删除掉所有木马文件,把exefile的“打开方式”项(HKEY_CLASSES_ROOT\exefile\shell\open\command)改回原来的“”%1” %*”即可。
如果删除木马前忘记把并联方式改回来,就会发现程序打不开了,这时候不要着急,如果你是Win9x用户,请使用“外壳替换大法”:重启后按F8进入启动菜单选择MS-DOS模式,把Explorer.exe随便改个名字,再把REGEDIT.EXE改名为Explorer.exe,再次重启后会发现进入Windows只剩下一个注册表编辑器了,赶快把并联方式改回来吧!重启后别忘记恢复以前的Explorer.exe。
对于Win2000/XP用户而言,这个操作更简单了,只要在开机时按F8进入启动菜单,选“命令提示符的安全模式”,系统就会自动调用命令提示符界面作为外壳,直接在里面输入REGEDIT即可打开注册表编辑器!XP用户甚至不需要重启,直接在“打开方式”里浏览到CMD.EXE就能打开“命令提示符”界面运行注册表编辑器REGEDIT.EXE了。

偷梁换柱——追回被盗的系统文件
除了添加自己到启动项、路径欺骗和更改文件并联以外,一般的木马还有一种计俩可以使用,那就是替换系统文件。由于如今的操作系统都是由许多文件共同构造的,并不是所有用户都能明白系统文件夹里每个文件的作用,这就给了木马可乘之机,它们盯上了系统里那些不会危害到系统正常运行而又经常会被调用的程序文件,像输入法指示程序internat.exe、让动态链接库可以像程序一样运行的rundll32.exe等。木马先把系统原来的文件改名成只有它们自己知道的一个偏僻文件名,再把自己改名成那个被替换的文件,这样就完成了隐藏极深的感染工作,从此只要系统需要调用那个被替换的程序进行工作,木马就能继续驻留内存了。那么文件被替换会不会导致系统异常呢?只要木马没有被删除,就不会造成系统异常,因为木马在作为原来的程序而被系统启动时,会获得一个由系统传递来的运行参数,这就是系统要求该程序工作的关键所在,木马会直接把这个参数传递给被改名的程序执行,像接力比赛那样完成数据操作,这样在系统看来就是命令被正常执行了,自然不会出现异常。但是也因为这样的特性导致木马被查杀后,系统的某些命令无法传递到本该执行操作的程序中,反而让系统出错了。(图8.被替换的RUNDLL32.EXE)


要修复它其实很简单,只要记住这个木马的文件名,在删除它之后再从系统光盘复制一个“原配”文件就可以了,如果没有系统光盘,就必须通过工具追踪木马传递参数的目标程序名,再把它改回来。


结语
木马的发展促进了安全技术的提高,而安全技术的提高又迫使木马必须往更高的级别发展,到现在木马已经形成了多个派系的共存,侦测它们的方法也不能再像以前那样简单了,例如检测异常端口的方法对于反弹木马而言是无效的,它并不在本机开放端口;就算防火墙能阻止内部未授权程序访问网络,但那只能针对TCP/UDP协议的木马,别忘记了还有ICMP后门的存在,防火墙通常不会阻止这类报文的。虽然ICMP协议的数据报文能完成的事情相对较少,但是对于一般的命令控制,它已经足够了……
木马之战,何时才能停歇呢?