悄然开启的“后门”
什么是后门(backdoor)
一台计算机上共有65535个端口,如果我们把它比作一间屋子,那么这65535个端口就可以被看做是与外界连接的65535扇门。有些门是主人用来提供服务的,有些则是主人为了访问远程服务而开设的。理论上讲,剩余的门都应该是关闭的,但是在主人不知晓的情况下,这些门却被悄然打开,使主人的隐私被刺探,正常的服务被打扰,屋内的“东西”也变得一片狼藉……这悄然开启的门,就是我们要说的后门。 在上一期的“木马解析”中我们曾经提到过,安装后门的目的是为了清除注册表中黑客入侵的证据,一个“高级”的后门程序可以在入侵行为被管理员发现,并实施查杀木马、更改密码、堵塞漏洞等一系列补救措施之后,仍然能够让黑客“自由进出”于服务器中。 后门的应用与技巧
在Windows操作系统中,添加新的服务是藏匿后门最常见的方法。通常,入侵者利用srvany.exe、srvinstw.exe和netcat.exe 这三个的程序来完成这项工作。其过程是先安装srvany.exe服务,用它来许可netcat.exe作为另一项服务运行,最后,监听服务端口是否建立了链接,一旦链接完成,就可以通过cmd.exe在服务器中生成一个远程控制器,从而获得系统的支配权。 在安装后门之前,黑客一定会调查服务器中所有启用的服务,他们会在添加新的服务之后给它命名一个不引人注意的名字。更为有效的办法是选择一个未用过或已经不再使用的服务,用srvinstw.exe将其移除,再用同样的名字安装另一个服务,这样就减少了被管理员发现的可能性,因为系统管理员通常不会在系统默认的服务上花太大的功夫。在黑客眼中,藏匿后门最完美的地方就是系统目录,这和在系统目录中藏匿木马客户端的道理是一样的。如果再给服务添上一个以假乱真的名字,管理员在没拿到足够的“证据”之前是不敢将其随便删除的。 由于netcat.exe 和srvany.exe 这样的工具很容易在任务管理器中暴露自己,黑客们往往会修改这些工具的名称使其不引人注意。 Rootkit
为了不让后门被发现,黑客将后门程序藏匿或将其更名,但这个过程却是显而易见的。通过netstat,管理员可以掌握任何端口的信息,从而轻易地发现异常程序对某个端口的监听。俗话说:“道高一尺,魔高一丈”,为了清除入侵的痕迹,黑客们开始使用Rootkit这样的工具。 Rootkit出现于20世纪九十年代初,近年来,其技术发展非常迅速,应用越来越广泛,检测难度也越来越大。在Unix的世界里,Rootkit是一些被修改过的Unix命令,专门用于一些恶意行为,也有少部分的Rootkit没有攻击性,例如用来虚拟光驱的Alcohol 120%软件等。伴随着Windows操作系统的飞速发展,曾一度局限于Unix的Rootkit编写者如今正转向针对Windows系统的攻击。
传统Rootkit及原理
传统的Rootkit是一种比普通木马后门更为阴险的后门。很多人认为Rootkit是用于获得系统Root用户访问权限的工具。实际上,Rootkit并不能让攻击者直接获得权限,相反,它是在攻击者通过各种方法获得权限后才能使用的一种保护权限的措施。在获取系统根权限(Root权限,Unix系统的最高权限)以后,Rootkit提供了一套工具用来建立后门和隐藏形迹,从而让攻击者保住权限。它主要通过替换系统文件来达到目的。利用网络上常见的Rootkit工具,攻击者可以隐藏文件、进程、系统服务、系统驱动、注册表、打开的端口以及虚拟磁盘。同时还可以在内存中伪装所有的改动,并且暗中控制被隐藏的进程。 为了理解Rootkit后门,我们有必要先了解一下Unix的基本工作流程。当用户访问Unix服务器时,/bin/login程序都会运行,系统将通过/bin/login来收集并核对该用户的账号和密码。Rootkit使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者只需输入根权限后门的密码便能进入系统。就算管理员更改了原来的系统密码或者把密码清空,入侵者仍能够使用后门密码以根用户身份登陆。在攻入Unix系统后,入侵者通常会进行一系列的攻击行为,如安装嗅探器来收集重要数据等。尽管Unix系统中有些系统文件会监视这些攻击行为,比如ifconfig等,但Rootkit同样会替换这些系统文件。通常会被Rootkit替换的系统程序有login,ifconfig,du,find,ls,netstat,ps等。
内核级Rootkit (kernel-based rootkit)
内核级的Rootkit(kernel-based rootkit)是一种更加危险的工具。在大多数操作系统中(各种Unix和Windows),内核是操作系统最基本的部件,它控制着对网络设备、进程、系统内存、磁盘等的访问。当你打开一个文件时,打开文件的请求被发送到内核,内核负责从磁盘得到文件的“比特位”并运行你的文件浏览程序。内核级Rootkit使攻击者获得对系统底层的完全控制权。攻击者可以修改内核,大多数内核级Rootkit都能进行执行重定向,即截获运行某一程序的命令,将其重定向到入侵者所选中的程序并运行此程序。也就是说用户或管理员要运行程序A,被修改过的内核假装执行A,实际却执行了程序B。 和传统的Rootkit不同,Unix的/bin/login并未被修改,但所有执行/bin/login 的请求(当登陆系统时将产生)都被重定向到攻击者制作的隐藏文件/bin/backdoorlogin,这样当系统管理员使用检测传统Rootkit的方法就行不通了,因为/bin/login并没有被改变。同样的道理,攻击者对其他的系统程序也进行了重定向,这样用户的操作实际就是按照入侵者的意愿执行了。 内核级Rootkit不仅仅会进行重定向,许多内核级Rootkit还支持文件隐蔽。传统的Rootkit是通过替换ls程序来实现文件的隐藏,而内核级的Rootkit则是通过对内核的修改来对ls程序欺骗,更加阴险隐蔽。另外内核级的Rootkit还能对进程和网络进行隐藏,用户将得不到真实的系统情况报告。
防御Rootkit小窍门
狡猾的黑客们总是绞尽脑汁想要藏匿他们的踪迹,但是系统管理员面对他们并非无计可施。虽然Rootkit是相当强大的工具,但Rootkit本身在设计上就是一把双刃剑,编写者的粗心大意也会使Rootkit留下一些蛛丝马迹。 后门程序中通常会有一个配置文件,这个配置文件会将哪些文件需要隐藏、哪些文件需要显示列举出来。黑客们通常会忘记隐藏这个配置文件,加上/Dev 本身就是配置文件的默认位置,因此在这里往往会有些意想不到的发现。 Rootkit 本身不能够影响名字中带有“_root_”进程。换句话说当系统管理员用“Regedit.exe”分析系统注册表时不能看到隐藏的输入项目。但是如果把“Regedit.exe”改成 “_root_regedit.exe”,那么我们将可以看到所有的隐藏项目以及登记输入。这对所有程序都能使用,例如“任务管理器”。 Rootkit 的另一个弱点:虽然内核级的Rootkit可以让用户得不到真实的系统情况报告,但是如果从另一台机器上映射一个远程的网络控制驱动就可以清楚的看到目标机器上的一切真相,因为远程控制的电脑内核未被感染,所映射出来的是未被内核Rootkit修改、过滤后的进程。 无论用什么方法,一但发现系统遭受到Rootkit的攻击,我们必须完全重装“所有”系统文件的部件和程序,以确保安全。
后门的监察与防御
怎样才能知道系统是否安全呢?系统被攻击的绝大部分原因都可归咎于自身防御能力的薄弱,因此定期对系统的基础安全进行检查是最基本的措施。虽然杀毒软件及系统中的单机防火墙(软件防火墙)并不能完全保障系统安全,但是不断升级更新的杀毒软件还是能够防御一般的病毒和木马。 定期核查重要系统文件的完整性很重要,可以诊断系统中是否有可疑的服务或进程。“Host scanning” 就是一个不错的选择,如果发现有可疑的端口被打开,把它截下来,再检查该端口是否被认可。 我们还可以借助 “Tcpview”、“Activeport”等工具对应用程序进行诊断。 利用这些工具还可以让系统管理员避免使用netstat,因为事实上netstat很可能已经被内核Rootkit替换掉了。 与系统启动程序相关的注册表键值也是应该重点关注的地方,因为这些注册表键值常会留有一些入侵者的痕迹。这些键值有: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\KnownDLLs HKEY_LOCAL_MACHINE\System\ControlSet001\Control\Session Manager\KnownDLLs HKEY_LOCAL_MACHINE\System\ControlSet\Services HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\Run HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\RunOnce HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current Version\RunOnceEx HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WinLogon HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows (run) HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\Run HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\RunOnce HKEY_CURRENT_USER\Software\Microsoft\Windows\Current Version\RunOnceEx HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows (run) HKEY_CLASSES_ROOT\exefile\shell\open\command 保持对这些键值的权限许可非常重要。系统管理员应该不断地进行监察,防止入侵者的不良企图。 基础设施完善的系统都会有坚固的防火墙对后门进行防御,就算入侵者可以安装后门,但是防火墙可以阻止他对任何端口的监听。(现在已经有很多黑客工具可以穿越最坚固的防火墙,在此不多作讨论) 需要提醒注意的是,不要以为用提前做好的备份磁盘恢复系统、装上补丁、升级数据库、更换密码后就万事大吉。系统很可能在备份之前就已经被黑客攻陷,而那份备份的数据也是含有后门的“版本”。所以系统管理员应特别注意在每次做系统备份时都要对系统进行全面的检查。 黑客们正在利用他们的木马、后门等各种新型攻击方式威胁网络安全,因此一定要主动做好防御反击的工作,因为没人知道自己的免疫系统何时会被攻破。
|