作者:小金

一. 与流氓木马说再见

现在是深夜时分,网民周颖正在打开某个刚认识不久的QQ网友发来的页面,这个网友自称是周颖喜欢的某明星的粉丝,两人聊得十分投机,最后,网友发来一个地址,说是自己收集的所有资料,周颖便不假思索的点击了。
在看到一个相册图片显示完的同时,周颖的电脑也弹出了一个窗口提示“CreateProcess请求被拦截”,宿主程序为“iexplore.exe”,执行对象为“123.exe”,周颖皱了皱眉,点击了“拒绝”按钮,随手把网页也关闭了。然后她气愤的在QQ上发了一句话:“刚认识就发木马,你也太不厚道了吧,你这人真无聊,不理你了!”,对方发来一个问号,周颖不再理会,直接就把这人拖进了黑名单。
经历了这么一件事情,周颖的好心情也被破坏了个殆尽,她气呼呼的和群里熟悉的朋友们发了一阵牢骚后就关机睡觉了。
在周颖盖上被子的时候,远方某处有个在百度黑客贴吧以“黑客高手”自居并收取高额“教学和工具费用”的小青年在迷糊的梦中被手机铃声吵醒,他刚接通电话,那边就传来了一阵骂声:“你收老子3000元做这个网页木马,说绝对私人流通躲避查杀100%好用的,老子今晚刚测试第一次就被个小丫头发现了!什么破玩意儿!三天内不退钱我就把你举报到网监科去!”,电话挂断了,小青年也被吼得睡意全无,他首先想到的是难道自己最得意的“免杀版”被反病毒厂商收集到了?可是在看到所有用作病毒测试的防毒软件均未提示发现病毒,莫名其妙,遇上不想付钱的无赖了……

网络有毒,这是所有人都必须认同的一点,即使你只是打开了一个网页看些新闻时事,没准你的浏览器就正在进行下载执行来自远方的未知木马的操作——只要你的系统有些相关安全漏洞没补上,这一切就发生了。
有人会说,不怕,我有杀毒软件,再多病毒也躲不过的——实际上,许多人的机器里就出现过木马与杀毒软件共享一片天下的事情,这是因为传统杀毒软件的局限性导致的,它们依赖于病毒特征码检测,针对这个特性,木马和病毒作者或第三方人士只需要做些特殊修改,就能使程序的特征码改变而无法被杀毒软件检测到,这就是大众意义上的“免杀版”;另一种情况则是“地下流传”的私人后门,由于大部分私人后门并非公众化产物,反病毒厂商不可能得知其存在,更不可能拥有其标本,也就没办法加入特征库查杀了。
很明显,周颖遇到的就是所谓的“免杀版”木马,而且入侵者尝试利用的或许更是针对浏览器的0day攻击,保护她的并不是杀毒软件,而是前不久经由朋友介绍使用的“主机入侵防御系统”软件。

二. 主机入侵防御系统的概念

主机入侵防御系统(Host Intrusion Prevent System,HIPS)是近几年出现并迅速发展的新兴产物,与传统意义的防火墙和杀毒软件不同,它并不具备特征码扫描和主动杀毒等功能,所以想用它来替换传统杀毒软件然后安枕无忧睡大觉的用户可以不必尝试了,主机入侵防御系统是不会区别正常程序和木马的,它只有一个动作,那就是让你了解一个进程的加载情况并让你决定这个进程能否运行,换句话说,系统的安全性取决于用户本身,因为主机入侵防御系统只是一种将系统控制权交给用户的防御体系。
操作系统是一个复杂而庞大的平台,程序的执行也不是简单的功能,在Windows环境里,当用户点击某个程序图标时,系统便产生一个消息由外壳程序传递到系统内核,由内核进行诸多初始化工作如分配内存、产生进程标识、协助加载程序运行所需的组件等,这些系统步骤都是可以由特殊程序进行监视并干涉的,只是通常情况下普通用户无法拥有这种待遇,而主机入侵防御系统则为用户提供了对于这个系统加载的监视和拦截功能。这个监视和拦截的过程被称为“防御”(Defend)。
目前主机入侵防御系统可提供三种防御:应用程序防御体系AD(Application Defend)、注册表防御体系RD(Registry Defend)、文件防御体系FD(File Defend),这三种体系合称为“3D”,根据实际情况,并非所有HIPS都提供了完整的3D体系,例如文件防御体系就经常被取消。
应用程序防御体系(AD)在大部分HIPS里属于最重要的功能,这个功能的优劣足以直接影响到系统安全。AD通过拦截系统调用函数来达到监视目的,当一个程序请求执行时,系统会记录该程序的宿主(即该程序的执行请求由哪个程序发出),在Windows里,用户启动的程序,其宿主为Windows外壳程序Explorer.exe,因为用户的交互界面是由该程序负责的,用户双击鼠标执行一个程序时,实际上就是通过Explorer.exe向内核传递的消息,于是它便成为用户程序的宿主;而并非所有程序都是通过Explorer.exe执行的,系统自身也执行着许多基本进程,这些进程几乎都由smss.exe所产生,而这些通过smss.exe产生的进程又能成为其它进程的宿主,如services.exe成为svchost.exe的宿主等,这些层层叠叠的关系被称为“进程树”(Process Tree)。基于这个原理,许多伪造成系统程序的木马其实很容易被发现,因为它们大部分通过系统启动项加载,而这个启动项是属于Explorer.exe负责的,于是木马们的宿主就成了它——csrss.exe居然由Explorer.exe加载运行,这本身就违背了系统设计的初衷。

让我们继续学习用户程序的执行过程,当程序执行的请求被系统捕获后,系统会产生一个创建进程的函数调用,称为CreateProcess,位于kernel32.dll,这个函数的功能是执行一些基本的初始化工作,然后将程序请求封装传递到内核接口ntdll的NtCreateProcess函数中,该函数把有关的参数从用户空间拷贝到内核并做进一步处理,直至最后新的进程被成功创建,而ntdll也只是个内核接口而已,实际的内核体是ntoskrnl.exe。程序员通过编写内核驱动拦截NtCreateProcess、NtCreateSection等函数就实现了对创建进程的控制,在这点上,病毒作者和安全专家做的事情都是相同的,只不过用来实现破坏系统安全作用的被称为Rootkit木马,用来保护系统的被称为“应用程序防御体系”而已。HIPS的“应用程序防御体系”也是通过驱动拦截实现的,只是它把创建进程的决定权交给用户。
在HIPS的监视下,当一个进程被请求创建时,用户层的应用程序接口函数CreateProcess被拦截并被获取调用参数来分析出程序的执行体和宿主等,而后HIPS将这个执行请求挂起(暂停执行CreateProcess及以后的步骤),并于桌面弹出一个对话框报告用户当前拦截的进程创建信息,其中包括执行体、宿主、被拦截的API等,最后等待用户决定是否继续让其执行。用户必须具备相关的进程概念,如桌面快捷方式和幕后调用的可执行程序实际文件名的对应关系,这样才不至于出现一头雾水的后果,用户的决定对于系统安全才是致命的,如果一个用户在双击“千千静听”后对着HIPS拦截的“Explorer.exe试图创建TTPlayer.exe进程”的报告感到不解,那么或许传统意义的杀毒软件更适合这类未入门的初哥。
HIPS的AD体系不仅能拦截到用户或某个程序产生的进程创建请求,它还能拦截到进程产生的所有操作,如DLL加载、组件调用等,这样我们也能用它来拦截一些DLL形态的进程注入,只要用户的基础知识达到一定程度,AD体系足以让你不再害怕大部分木马病毒的来袭,试想一下,如果用户在浏览网页时HIPS突然报告说浏览器进程“试图创建123.exe进程”、或者运行某些安装程序时HIPS拦截到该安装程序“试图创建1.exe进程”,只要用户选取了“拒绝执行”功能,这些潜在的木马就无法入侵用户的系统了——但是要注意一点,那就是木马本体已经被释放或下载回来了,只是它们无法被执行而已,HIPS不是杀毒软件,它不能阻止非法程序的下载和释放,更不提供自动删除文件的功能,它所做的,只是拦截进程操作而已,使用HIPS保护的系统安全取决于用户自身。

HIPS里还有个相当重要的功能是注册表防御体系(RD),众所周知,在Windows系统结构中,注册表一直扮演着一个重要角色,许多非法程序和木马也通过修改注册表达到许多黑暗目的,如主页修改劫持等,而木马等程序的自启动也是由注册表的启动项负责的,因此,要进一步确保系统安全的话,对注册表的监视保护是必须的,从很早以前就开始使用电脑的用户应该会记得当初流行的许多注册表监视工具,然而这些工具并不能帮助用户保护注册表,因为它们仅仅是位于用户层的程序而已,其调用的API函数也是经过层层封装返回的,在当前许多进入了核心层的木马面前,这些程序根本就是被耍猴的对象,要正确监视到真正的注册表操作,就必须进入核心层,抢先拦截到系统相关的底层注册表操作函数,这就是注册表防御体系的工作。
系统提供了一系列的注册表读写访问函数来实现用户层的功能,而这些API和之前提到的创建进程函数一样,也是一种对系统内核导出函数的封装传递,如果相关函数被驱动木马拦截,普通的注册表监视程序,包括系统自带的注册表编辑器也无法发现某些项目或执行相关操作,这就是“删不掉的启动项”的来由。
在内核层中,注册表的名称并非为Registry,而是“HIVE”(蜂巢),它的数据结构称为“Cell”(蜂室),这是最底层最不可被欺骗的注册表形态结构,许多高级的Rootkit分析程序都提供分析注册表的功能,实际上就是通过分别读取用户层返回和HIVE数据结构来判断对比系统中是否存在被恶意隐藏的数据项,分析HIVE文件是漫长的过程,这是对付高级隐藏时才不得以而为之的方法,而平时安全工具只需要拦截到内核层导出的操作函数如NtOpenKey、NtCreateKey、NtQueryKey等就可以了,这正是注册表防御体系要做的事情。
RD默认提供了对几个常见的系统敏感注册表项进行监视,如启动项、服务驱动项、系统策略项、浏览器设置项等,所有木马要自启动都必须经过启动项或服务驱动项的添加修改来实现,而要对浏览器进行劫持和主页修改就得通过修改浏览器设置项等,而这些操作默认都被RD视为敏感行为而拦截挂起,并弹出警告框报告用户该次操作的具体内容和发出操作请求的执行体,操作最终能否通过也同样取决于用户本身,由于它拦截了系统核心层导出的API函数,无论是木马还是用户程序的操作都逃不过法眼,从而实现了真正有效的监视和拦截。

最后是文件防御体系(FD),这个功能的作用是监视系统敏感目录的文件操作,如修改删除系统目录里的任何文件或创建新文件等,也可用来发现被驱动木马隐藏的文件本体,FD体系在许多杀毒软件里已经提供,一部分HIPS为了提高效率,并不具备FD,因为它相对要消耗的资源比较大,而前面的AD+RD+有一定经验的用户操作,就已经足够防止危害的文件操作产生了。
实现文件防御体系的要点同样也是拦截系统底层函数如NtOpenFile等,HIPS默认对系统敏感目录进行监控保护,一旦发现异常读写,则把相关操作挂起,并提示用户是否放行,FD不仅仅只有HIPS提供,其他安全工具如360安全卫士、超级巡警等也具备此功能,该功能运作起来要比前两者消耗的资源大些。
目前主流的HIPS软件有以下几款:
SNS(Safe and Sec Personal)、EQSecure、SSM(System Safety Monitor)、PG(ProcessGuard)、GSS(Ghost Security Suite)、SS(SafeSystem 2006)
国内公认较好用的HIPS是SSM,下面就以SSM为范本,对HIPS的实际操作进行解说。

三. SSM的使用

简介

System Safety Monitor,简称SSM,是一款对系统进行全方位监测的防火墙工具,它不同于传统意义上的防火墙,因此与任何网络和病毒防火墙都不相冲突。
之所以选择SSM,是因为相对于其他HIPS而言,SSM的操作比较简便,适应普遍大众的接受能力,且提供了中文版支持,其他如PG、SNS等操作相对烦琐了些,国产的S3在安全性上不如SSM,所以,对于一般环境的用户而言,SSM是最佳选择,而且由于HIPS不会与当前的传统防火墙产生冲突(不过要小心HIPS遭遇某些防火墙的误杀),用户在HIPS的基础上保留原有的防火墙也不失为一种更加强安全的选择——当然,这样的做法会消耗更多系统资源,如果硬件配置不够,建议根据个人实际能力来决定保留HIPS还是保留传统防火墙吧,开着HIPS照样被木马进驻的用户并非少数,而遭遇入侵的关键在于用户自己的操作过程,因为前面已经说过,HIPS仅仅用作行为拦截和警报而已。
SSM可由以下地址获得:http://www.syssafety.com/files.html

安装

HIPS并不强求用户安装时的系统环境是否染毒(文件型的除外,如熊猫烧香),也就是说,即使当前的环境中存在木马甚至Rootkit,在安装HIPS后照样能不慌不乱的对其进行限制操作,但是为了避免以后出现针对HIPS安装环境的木马,最好还是养成预先准备的习惯为好,经验告诉我们,“亡羊补牢”总是会晚一步的。
SSM的安装过程并不复杂,与一般的安装程序没什么差别,用户可以像安装QQ一样简单的完成它,安装完成后会提示重启以便SSM生效。

基本设置

重启完成后用户大概会习惯性的以为SSM会如传统意义上的防火墙软件一样在开机时出现在系统托盘里,那么SSM就让你失望了,它默认并不会随系统启动,首次运行还得用户手工进入开始菜单的程序组里寻找“System Safety Monitor”项运行它,在一些用户的系统上,SSM首次运行时还会出现svchost.exe与explorer.exe进程通讯被拦截的情况,如果遇到这种情况,用户必须在短时间内选择“允许”操作,否则会导致系统蓝屏。
首次运行SSM,用户会看到一堆英文,不用担心,进入Options,将里面的Language设置为Chinese,点击Apply Options即可,SSM就变成中文了,然后记得选中“自动启动”以确保SSM每次都能随系统启动。
对于高级用户,如果使用IceSword检查SSDT列表,会发现“祖国河山一片大红”的壮观景象,几乎所有的系统函数都被一个“safemon.sys”给“吸收”过去了,这是正常现象,这个文件就是SSM的核心驱动。

学习使用SSM

由于HIPS是一种特殊的系统防护程序,而并非传统的防火墙,这就注定了它不能像一般防火墙那样安装后定期更新一下病毒库就可以放任不管了,刚安装完毕的SSM仅对基本的几个系统进程给与信任关系,其他程序在首次运行时会被SSM拦截,这就需要用户手工运行常用的程序并设置规则为“永久允许”。
SSM会拦截所有进程创建的详细信息,并报告用户当前是什么程序试图执行另一个程序,并显示出所有运行参数,通常情况下用户自己请求运行的程序,其加载者为Explorer.exe,可以放心的通过执行。而一些由用户启动的程序在运行时可能会产生Hook调用和组件调用等,这些操作在通常情况下也是正常的。
如何判断一个程序的运行过程是否正常,关系到HIPS能否保护系统的关键,对于普通无经验用户来说,必须牢记以下几点:
•记住自己刚才运行了什么程序
•仔细观察被拦截的程序名和路径是否合法
•观察加载的DLL是否程序路径下或文件版权完整、且文件名不为胡乱组合字符
•一个浏览器程序在正常使用过程中(浏览网页)突然弹出执行另一个程序请求的,100%属于危险操作

用户只要至少牢记以上几点,就能防范80%的危险操作了,如果不慎允许了一些危险程序的执行,也不必惊慌,开启SSM的进程监控器选项,找到相应进程,点击右键选择“编辑规则”,然后设置为“阻止”即可,即使该危险程序有几个进程辅助运行,在HIPS面前也是小儿科罢了,因为被HIPS阻止运行的进程是永无翻身之日的,只会一个一个减少直到没有一个能够执行。

标准状态下,SSM仅开启了应用程序防御(AD)体系,要增加注册表防御(RD)体系,还得我们选择“模块”项,点中注册表,然后勾选“启用该模块”,从此注册表的敏感操作也就会被记录拦截了,默认情况下SSM已经提供了几个常见的敏感项,用户可酌情添加。
只要有木马程序试图操作敏感项目,SSM就会跳出“模块报警”并默认对其拦截操作,接下来又要用户自行判断是否放行该操作。与上面提及的一样,用户要记住执行该注册表操作的程序是否自己指定的,否则就不要通过,宁可错杀一个,也不要放过任何自己不敢保证的程序。
与注册表操作监视的形式,SSM也提供了服务监视,这对于一些通过设置服务达到隐秘启动的木马和Rootkit来说可谓灭顶之灾,那么这里该如何判断呢?同样的道理,不是自己运行或安装某个值得信任的工具时弹出的提示以外,一律不要允许!
SSM属于HIPS类程序中最简便的一款,通过使用和熟悉它,用户可掌握基本的HIPS知识,以便为日后换用更高级的HIPS做准备。

四. 结语

在木马和病毒横行的今天,已经难以有一款安全产品的出现足以让用户们产生眼前一亮的感觉了,HIPS类产品的问世解决了大部分安全专家和有经验用户头痛的防毒问题,然而美中不足的是,HIPS类产品距离大部分普通家庭用户仍然太远,其相关的一些操作需要用户具备一定的系统知识方可使用,就在一定程度上阻碍了HIPS的普及,这个尴尬的门槛,广大用户什么时候才能跨过去呢?是将HIPS的所谓“操作难度”降低、增加自动操作功能,使其最后沦为传统的杀毒防御产品一类的地步,还是让用户学习一定的计算机知识,以跨过这种在具备一定经验知识的用户眼里不足畏惧的所谓“门槛”?无论选择哪种,这都是个难题……
Technology | Comments(1) | Trackbacks(0) | Reads(8093)
January 13, 2008 21:42
作者写的非常好,这样的文章难得一见
!4p47hy replied on January 13, 2008 23:10
恩..是的...看完后收获很大..
Pages: 1/1 First page 1 Final page
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Nickname   Password   Optional
Site URI   Email   [Register]
               

Security code Case insensitive