3.来自系统策略的防御
Windows系统最大的灵活性在于它为用户提供的一种个性化设置方案,这个方案被称为“策略”(Policy),使用策略,管理员可以方便的为不同的用户和权限设置系统运行环境,策略又分为“系统策略”(System Policy)和“组策略”(Group Policy),通常我们要设置的都属于组策略,使用gpedit.msc控制台进入。
微软从Windows XP开始提供了一套内置的免费防火墙系统ICF,但是ICF的表现平平,只能达到勉强防御网络攻击的要求,其中一个原因就是因为ICF默认的规则比较少,而且在组策略里的相应设置也未开启,用户可以自行通过组策略让ICF的安全性稍微提高。
近来,针对XP的3389入侵又迎来了一番热潮,原因是市面上许多修改版的XP系统都开放了3389端口,而管理员账户Administrator为空密码,这就相当于系统自带了“后门”,入侵者可以不费吹灰之力的进入受害者的电脑。而防范的措施就是关闭“远程协助”功能,然后在“运行”里输入gpedit.msc,定位到“计算机配置”——“管理模板”——“网络”——“网络连接”——“Windows防火墙”,下面分别是“域配置文件”和“标准配置文件”,只要把里面的“允许远程桌面例外”设置为“禁用”就可以了。
除了对ICF进行设置以外,Windows NT以上的系统还提供了一种基于IP和端口的安全策略,使用它也能直接达到网络防火墙的作用。
首先我们要在网络上下载一个被称为“WINDOWS最强的安全策略”的文件,里面是一个以IPSEC为后缀的文件,现在打开控制面板,进入“管理工具”——“本地安全策略”,在“IP安全策略”上点击鼠标右键选择“所有任务”——“导入策略”,把下载回来的策略文件添加进去,就会出现一个“常用安全策略禁用不必要的端口”策略,双击即可对其进行配置,如果你四局域网用户,就要取消策略对445、139、137和138端口的封锁,至此用户的计算机就能得到比较安全的网络防护了。
三. 在和病毒做斗争的日子里
虽然上文介绍了如何使用免费查毒功能配合手工方法消灭病毒,可是在实际应用中,一部分用户会发现病毒没能彻底杀完,或者杀了病毒以后系统注册表被篡改的功能依然没有恢复正常,这是因为一部分私底下交流或经过再次加工的病毒并不能被流行杀毒软件所察觉,或者引起用户电脑故障的是流氓软件和浏览器劫持,这种形式的破坏并不属于杀毒软件能管的范围,自然也就无效了,因此我们还需要一套较为完善的安全防范工具大网。
1.CurrPorts告诉我,我的端口在干什么?
俗话说眼睛是心灵的窗户,而计算机界里,端口则是计算机与网络沟通的窗户,除了极少数不需要端口的报文协议,大部分数据传输都是建立在端口的基础上的,所以端口不仅成为用户和网络连接的门户,也成为入侵者们翻墙入室的途径,普通情况下,每个开启的端口都是由一个程序请求的,用户要想关闭某个端口,必须让幕后对应的程序停止运行或暂停某种网络服务的实现方法来达到目的。当我们怀疑机器是否感染了病毒开启了异常的数据传输时,稍有经验的用户会执行netstat –an来检查本机的端口使用情况,但是文字界面能表达的范围实在有限,很多情况下只能看到机器开了什么端口,下一步就没有头绪了,这个情况逐渐有人着手去解决,于是各式各样的端口状态查看工具便诞生了,从最初由文字界面扩展出来的FPorts,到早期的图形界面Active Ports,到现在小而强大的CurrPorts,普通用户自己动手检查木马已经不再是难题。
CurrPorts的界面很简洁,但是已经包含了大部分实用的功能,包括端口号、IP、对应的进程号、可执行文件名和路径、端口状态等,并可以直接从界面上设置进程的优先级、关闭掉相应的进程或关闭被打开的端口,这个功能使得它在同类产品里独树一帜。
2.更强大的进程检查器Process Explorer
许多刚接触计算机的用户无法理解“进程”是什么东西:常常听到高手说打开任务管理器关闭某某进程,但是一看到任务管理器列表里的一堆东西,头就大了。许多用户知道使用任务管理器关闭一些失去响应的任务,但是如果某个任务没有在“应用程序”列表里出现,用户就不知所措了。到底什么是“进程”呢?“进程”是指一个可执行文件在运行期间请求系统在内存里开辟给它的数据信息块,系统通过控制这个数据块为运行中的程序提供数据交换和决定程序生存期限,任何程序都必须拥有至少一个进程,否则它不被系统承认。进程从某一方面而言就是可执行文件把自身从存储介质复制在内存中的映像,它通常和某个在磁盘上的文件保持着对应关系,一个完整的进程信息包括很多方面的数据,我们使用进程查看工具看到的“应用程序”选项卡包含的是进程的标题,而“进程”选项卡包含的是进程文件名、进程标识符、占用内存等,其中“进程文件名”和“进程标识符”是必须掌握的关键,“进程标识符”是系统分配给进程内存空间时指定的唯一数字,进程从载入内存到结束运行的期间里这个数字都是保持不变的,而“进程文件名”则是对应着的介质存储文件名称,根据“进程文件名”我们就可以找到最初的可执行文件位置。
任务管理器的“应用程序”项里列出来的“任务”,是指进程在桌面上显示出来的窗口对象,例如用户打开Word 2003撰写文档,它的进程“WINWORD.EXE”会创建一个在桌面上显示的前台窗口,这个窗口就是任务管理器里看得见的“任务”了,而实际上真正在运行的是进程“WINWORD.EXE”。并不是所有的进程都会在任务管理器里留下“任务”的,像QQ、MSN和所有后台程序,它们并不会在任务列表里出现,但是你会在进程列表里找到它们,如果要它们在任务列表里出现该怎么办呢?只要让它们产生一个在桌面上出现的窗体就可以了,随便打开一个好友聊天,就会发现任务列表里终于出现了QQ的任务。因此,真正科学的终止程序执行方案是针对“进程”来结束程序的运行,而不是在任务列表里关闭程序,因为木马作者们是不会让自己的木马在任务列表里出现的,但是进程列表里一般人都是逃不过的。
虽然Windows系统已经内置了一个任务管理器,可是随着时代的变迁,它已经显得力不从心了:首先,它不能显示完整的程序路径信息,使得一部分使用障眼法的木马可以骗过经验不足的管理员;其次,它内置的模块保护规则使得一些伪装成系统核心进程的木马无法强行终止;再次,它无法提供详细的进程模块调用信息,更无法查找某个DLL文件的可执行载体,在这个动不动就来个线程注射的木马时代,任务管理器成了彻底的睁眼瞎,因此,用户不得不求助于更强大的第三方工具。
而著名的系统安全研究组织Sysinternals出品的Process Explorer,则很好的满足了这个要求。Process Explorer是一个单独的绿色EXE,体积稍微大了一些(超过1MB),功能也强大,除了具备任务管理器的一切功能以外,用户还能用它查看文件句柄和DLL模块信息、直接以不同用户权限执行指定的程序、以不同的颜色显示各个级别的进程,而它最强大的功能,则是直接查找某个DLL模块的进程信息!
这个功能有什么用呢?看看木马进化史,我们会发现其中有一段称为“远程线程注射”(RemoteThread Injection)的技术,使用该技术编写出来的木马程序并不是自身可执行的EXE,而是一个DLL文件。固然,直接编写EXE是要比DLL方便得多的,为什么技术黑客们偏偏要用如此复杂的技术去做一个木马呢?这是由Windows系统自身特性决定的,Windows自身就是大量使用DLL的系统,许多DLL文件在启动时便被相关的应用程序加载进内存里执行了,可是有谁在进程里直接看到过某个DLL在运行的?因为系统是把DLL视为一种模块性质的执行体来调用的,它内部只包含了一堆以函数形式输出的模块,也就是说每个DLL都需要由一个用到它的某个函数的EXE来加载,当DLL里的函数执行完毕后就会返回一个运行结果给调用它的EXE,然后DLL进程退出内存结束这次执行过程,这就是标准的DLL运行周期,而采用了“线程注射”技术的DLL则不是这样,它们自身虽然也是导出函数,但是它们的代码是具备执行逻辑的,这种模块就像一个普通EXE,只是它不能直接由自身启动,而是需要有一个特殊作用的程序(称为加载者)产生的进程把这个DLL的主体函数载入内存中执行,从而让它成为一个运行中的木马程序。了解Windows的用户都知道,模块是紧紧依赖于进程的,调用了某个模块的进程一旦退出执行,其加载的DLL模块也就被迫终止了,但是在DLL木马里,这个情况是不会因为最早启动的EXE被终止而发生的,因为它使用了“远程线程注射”技术,该技术的目的是让某个程序的执行代码进入另一个进程的内存领域,并作为它的一部分来执行,这个技术放到模块编写方面,就实现了DLL木马的“无进程运行”——实际上它还是必须依赖着可执行程序的,它的进程就是该程序的进程,只是它把自身代码放入了某个系统进程的领域里,我们自然就无法发现了,这样的行为就像吸附在鲸鱼身上四处游荡的吸盘生物一样难以察觉,而且它还有一个可怕的效果:即使用户发现了这个木马DLL,也无法把它终止,因为要关闭它就必须在那么多的系统进程里找到被它注射的进程,并将其终止,对一般用户来说,这是个不可能完成的任务,而如今,有了Process Explorer提供的“Find Handle or DLL”功能,这个曾经很难完成的任务在弹指间便有了答案。
最近比较流行一个被称为VIPTray的后门程序,已经有技术人士分析了它的相关文件并发布了查杀程序,但是很多用户发现根本无法查杀彻底,这是因为VIPTray病毒释放出来的DLL辅助模块已经插到系统进程里了(一般是Explorer.exe),使用Process Explorer查找WinDefendor.dll即可发现被它注射的进程名,只要把这个进程终止,VIPTray的最后一道防线也就崩溃了,结合一些注册表清理工作就能把VIPTray彻底赶出系统,所以,面对此类病毒只要了解其防护原理,你就会发现查杀它们并不是难事。
3.让rootkit现身的IceSword
除了传统意义上的后门和DLL注射形式后门,还有一种后门在威胁用户的信息安全,那就是rootkit,rootkit是运行在Ring 0内核层的木马,具有一般进程查看工具无法检测的特性,要检测这类木马就需要同样运行于Ring0层的进程查看工具,在这方面,国产的IceSword一直是优秀的安全作品。
IceSword分别从Ring0和Ring3层获取进程信息进行比较,由于rootkit会截断Ring3层的进程信息,两者自然无法匹配,IceSword等同类工具就是通过这个原理实现了rootkit的检测,与此同时它还有一套运行于Ring0层的文件和注册表检测技术,可以方便发现被rootkit隐藏起来的文件和注册表项目。
IceSword能检测到大部分系统模块变动情况,如SSDT、BHO、消息钩子等,只要简单的终止并删除被它标记为红色的进程和对应的文件就基本清理掉rootkit了。
4.追杀流氓的三个火枪手——RogueCleaner、upiea、HijackThis
所谓流氓,就是指各种恶意捆绑软件,如广告软件和恶意劫持软件等,这些软件把用户的机器当成自己的殖民地,不仅篡改用户的系统环境,还会严重拖慢系统速度,甚至让用户感染上病毒,在早期由于它们的特殊性质,许多杀毒软件不敢将其列入病毒范围查杀,只能任凭用户到处抱怨和求救,而如今在某家国际知名杀毒厂商吃了螃蟹以后,越来越多的杀毒软件厂商开始把这些流氓软件列为病毒来查杀了。
由于流氓软件并非直接危害电脑安全的罪魁,因此一般的杀毒软件厂商并不会花大功夫去专门清除此类不受欢迎的作品,在这个环境下,真正实用的流氓软件清理工具便应运而生。
首先是专业追杀流氓软件的RogueCleaner,这是升级得最勤快查杀效率最高的一个小工具,用户只需要点击一个按钮就能清理掉所有市面上叫得出名字的流氓软件了,当我们使用它清理掉不受欢迎的客人后,就该轮到upiea出场了。
Upiea是一个小巧的BHO免疫程序,只需要运行一次就能让你的系统从此不再受大部分流氓软件的骚扰,它的原理是在IE的注册表项目里伪造一个流氓软件已经安装的信息,这样系统就会认为浏览器已经有相应的BHO存在,自然就不会再次下载安装。
如果你的电脑不幸被浏览器劫持或加入了不希望出现的BHO,使用HijackThis就能迅速还你一个清新的环境,HijackThis严格说来是一款手工操作的系统环境检测修复工具,它的作用面很广泛,包括系统策略、启动项、BHO、LSP等项目检测,但是由于全面而带来的相对复杂的操作也是令一般用户头痛的,HijackThis并不负责自行判断某个项目是否异常,而是仅仅把它们列出来而已,要修复哪个项目还得用户自行判断,但是如果用户掌握了它的使用,这款利器可一次修复大部分系统故障,包括前面手工杀毒里没法清理的注册表残留项目。
5.其他安全工具
除了以上几个比较实用的工具,网络上还流行着许多相关的安全工具,如傻瓜化的黄山IE修复专家等,如果你实在不熟悉HijackThis的手工操作,就用它吧,也能清理大部分系统故障的,只是对于稍有经验的用户来说,傻瓜化的工具往往不够全面罢了。
前面我提到过使用Process Explorer消灭模块形式的木马,而在一般应用中,许多用户也会发现一些文件不知为何提示“正在被使用,无法删除”的信息,这时候如果想找出幕后的调用者,就需要一种特殊工具了,例如Who lock me、Unlocker等,它们会把某个文件正在被什么进程占用的信息显示出来,并且可以直接选择终止进程释放这个文件的占用,就像简化版的Process Explorer查找DLL功能一样。
四. 结束语
小许忙碌了1小时,终于在IceSword、Process Explorer、RogueCleaner和瑞星在线免费查毒的配合下把所有病毒清理干净了,然后使用Upiea对系统做了免疫(RogueCleaner在查杀时会破坏之前做好的免疫功能),又是一个深夜了,该不该装个实时监控的杀毒软件呢?小许看着窗外出神……
在这个越来越不安分的网络上,用户自由活动的空间已经很小了,随处发生的盗取银行密码案、资料加密勒索案、窃取QQ卖钱等黑手每刻都在进行着,而入侵者们之所以能如此猖狂,就是因为用户缺乏必要的电脑维护经验和相关安全工具导致,如今的网络再也没有当初的轻松了,虽然入侵技术的提高能促进安全技术的发展,但是这场战役中,无数普通网民都是技术的受害者,难道,是这个时代的人心都不再纯洁了吗?
[用户系统信息]Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)