本文主要讲述UNIX或者NT系统如果被侵入,应该如何应对。
注意:你在系统恢复过程中的所有步骤都应该与你所在组织的网络安全策略相符。
A.准备工作
1.商讨安全策略
如果你的组织没有自己的安全策略,那么需要按照以下步骤建立自己的安全策略。
1.1.和管理人员协商
将入侵事故通知管理人员,可能在有的组织中很重要。在be aware进行事故恢复的时候,网络管理人员能够得到内部各部门的配合。也应该明白入侵可能引起传媒的注意。
1.2.和法律顾问协商
在开始你的恢复工作之前,你的组织需要决定是否进行法律调查。
注意CERT(Computer Emergency Response Team)只提供技术方面的帮助和提高网络主机对安全事件的反应速度。它们不会提出法律方面的建议。所以,对于法律方面的问题建议你咨询自己的法律顾问。你的法律顾问能够告诉你入侵者应该承担的法律责任(民事的或者是刑事的),以及有关的法律程序。
现在,是你决定如何处理这起事故的时候了,你可以加强自己系统的安全或者
选择报警。
如果你想找出入侵者是谁,建议你与管理人员协商并咨询法律顾问,看看入侵者是否触犯了地方或者全国的法律。根据这些,你可以报案,看看警方是否愿意对此进行调查。
针对与入侵事件,你应该与管理人员和法律顾问讨论以下问题:
如果你要追踪入侵者或者跟踪网络连接,是否会触犯法律。
如果你的站点已经意识到入侵但是没有采取措施阻止,要承担什么法律责任。
入侵者是否触犯了全国或者本地的法律。
是否需要进行调查。
是否应该报警。
1.3.报警
通常,如果你想进行任何类型的调查或者 *** 入侵者,最好先跟管理人员和法律顾问商量以下。然后通知有关执法机构。
一定要记住,除非执法部门的参与,否则你对入侵者进行的一切跟踪都可能是非法的。
1.4.知会其他有关人员
除了管理者和法律顾问之外,你还需要通知你的恢复工作可能影响到的人员,例如其他网络管理人员和用户。
2.记录恢复过程中所有的步骤
毫不夸张地讲,记录恢复过程中你采取的每一步措施,是非常重要的。恢复一个被侵入的系统是一件很麻烦的事,要耗费大量的时间,因此经常会使人作出一些草率的决定。记录自己所做的每一步可以帮助你避免作出草率的决定,还可以留作以后的参考。记录还可能对法律调查提供帮助。
B.夺回对系统的控制权
1.将被侵入的系统从网络上断开
为了夺回对被侵入系统的控制权,你需要将其从网络上断开,包括播号连接。断开以后,你可能想进入UNIX系统的单用户模式或者NT的本地管理者(local administrator)模式,以夺回系统控制权。然而,重启或者切换到单用户/本地管理者模式,会丢失一些有用的信息,因为被侵入系统当前运行的所有进程都会被杀死。
因此,你可能需要进入C.5.检查网络嗅探器节,以确定被侵入的系统是否有网络嗅探器正在运行。
在对系统进行恢复的过程中,如果系统处于UNIX单用户模式下,会阻止用户、入侵者和入侵进程对系统的访问或者切换主机的运行状态。如果在恢复过程中,没有断开被侵入系统和网络的连接,在你进行恢复的过程中,入侵者就可能连接到你的主机,破坏你的恢复工作。
2.复制一份被侵入系统的影象
在进行入侵分析之前,建议你备份被侵入的系统。以后,你可能会用得着。
如果有一个相同大小和类型的硬盘,你就可以使用UNIX命令dd将被侵入系统复制到这个硬盘。
例如,在一个有两个SCSI硬盘的Linux系统,以下命令将在相同大小和类型的备份硬盘(/dev/sdb)上复制被侵入系统(在/dev/sda盘上)的一个精确拷贝。 # dd if=/dev/sda of=/dev/sdb
请阅读dd命令的手册页获得这个命令更详细的信息。
还有一些其它的方法备份被侵入的系统。在NT系统中没有类似于dd的内置命令,你可以使用一些第三方的程序复制被侵入系统的整个硬盘影象。
建立一个备份非常重要,你可能会需要将系统恢复到侵入刚被发现时的状态。它对法律调查可能有帮助。记录下备份的卷标、标志和日期,然后保存到一个安全的地方以保持数据的完整性。
C.入侵分析
现在你可以审查日志文件和系统配置文件了,检查入侵的蛛丝马迹,入侵者对系统的修改,和系统配置的脆弱性。
1.检查入侵者对系统软件和配置文件的修改
a.校验系统中所有的二进制文件
在检查入侵者对系统软件和配置文件的修改时,一定要记住:你使用的校验工具本身可能已经被修改过,操作系统的内核也有可能被修改了,这非常普遍。因此,建议你使用一个可信任的内核启动系统,而且你使用的所有分析工具都应该是干净的。对于UNIX系统,你可以通过建立一个启动盘,然后对其写保护来获得一个可以信赖的操作系统内核。
你应该彻底检查所有的系统二进制文件,把它们与原始发布介质(例如光盘)做比较。因为现在已经发现了大量的特洛伊木马二进制文件,攻击者可以安装到系统中。
在UNIX系统上,通常有如下的二进制文件会被特洛伊木马代替:telnet、in.te
lnetd、login、su、ftp、ls、ps、netstat、ifconfig、find、du、df、libc、sync、inetd和syslogd。除此之外,你还需要检查所有被/etc/inetd.conf文件引用的文件,重要的网络和系统程序以及共享库文件。
在NT系统上。特洛伊木马通常会传播病毒,或者所谓的"远程管理程序",例如Back Orifice和NetBus。特洛伊木马会取代处理网络连接的一些系统文件。
一些木马程序具有和原始二进制文件相同的时间戳和sum校验值,通过校验和无法判断文件是否被修改。因此,对于UNIX系统,我们建议你使用cmp程序直接把系统中的二进制文件和原始发布介质上对应的文件进行比较。
你还可以选择另一种方法检查可疑的二进制文件。向供应商索取其发布的二进制文件的MD5校验值,然后使用MD5校验值对可疑的二进制文件进行检查。这种方法适用于UNIX和NT。
b.校验系统配置文件
在UNIX系统中,你应该进行如下检查:
检查/etc/passwd文件中是否有可疑的用户
检查/etc/inet.conf文件是否被修改过
如果你的系统允许使用r命令,例如rlogin、rsh、rexec,你需要检查/etc/hosts.equiv或者.rhosts文件。
检查新的SUID和SGID文件。下面命令会打印出系统中的所有SUID和SGID文件:
#find / ( -perm -004000 -o -perm -002000 ) -type f -print
对于NT,你需要进行如下检查:
检查不成对的用户和组成员
检查启动登录或者服务的程序的注册表入口是否被修改
检查"net share"命令和服务器管理工具共有的非验证隐藏文件
检查pulist.ext程序无法识别的进程
2.检查被修改的数据
入侵者经常会修改系统中的数据。所以建议你对web页面文件、ftp存档文件、用户目录下的文件以及其它的文件进行校验。
3.检查入侵者留下的工具和数据
入侵者通常会在系统中安装一些工具,以便继续监视被侵入的系统。
入侵者一般会在系统中留下如下种类的文件:
网络嗅探器
网络嗅探器就是监视和记录网络行动的一种工具程序。入侵者通常会使用网络嗅探器获得在网络上以明文进行传输的用户名和密码。(见C.5)
嗅探器在UNIX系统中更为常见。
特洛伊木马程序
特洛伊木马程序能够在表面上执行某种功能,而实际上执行另外的功能。因此,入侵者可以使用特洛伊木马程序隐藏自己的行为,获得用户名和密码数据,建立后门以便将来对系统在此访问被侵入系统。
后门
后门程序将自己隐藏在被侵入的系统,入侵者通过它就能够不通过正常的系统验证,不必使用安全缺陷攻击程序就可以进入系统。
安全缺陷攻击程序
系统运行存在安全缺陷的软件是其被侵入的一个主要原因。入侵者经常会使用一些针对已知安全缺陷的攻击工具,以此获得对系统的非法访问权限。这些工具通常会留在系统中,保存在一个隐蔽的目录中。
入侵者使用的其它工具
以上所列无法包括全部的入侵工具,攻击者在系统中可能还会留下其它入侵工具。这些工具包括:
系统安全缺陷探测工具
对其它站点发起大规模探测的脚本
发起拒绝服务攻击的工具
使用被侵入主机计算和网络资源的程序
入侵工具的输出
你可能会发现入侵工具程序留下的一些日志文件。在这些文件中可能会包含被牵扯的其它站点,攻击者利用的安全缺陷,以及其它站点的安全缺陷。
因此,建议你对系统进行彻底的搜索,找出上面列出的工具及其输出文件。一定要注意:在搜索过程中,要使用没有被攻击者修改过的搜索工具拷贝。
搜索主要可以集中于以下方向:
检查UNIX系统/dev/目录下意外的ASCII文件。一些特洛伊木马二进制文件使用的配置文件通常在/dev目录中。
仔细检查系统中的隐藏文件和隐藏目录。如果入侵者在系统中建立一个一个新的帐户,那么这个新帐户的起始目录以及他使用的文件可能是隐藏的。
检查一些名字非常奇怪的目录和文件,例如:...(三个点)、..(两个点)以及空白(在UNIX系统中)。入侵者通常会在这样的目录中隐藏文件。对于NT,应该检查那些名字和一些系统文件名非常接近的目录和文件。
4.审查系统日志文件
详细地审查你的系统日志文件,你可以了解系统是如何被侵入的,入侵过程中,攻击者执行了哪些操作,以及哪些远程主机访问了你的主机。通过这些信息,你能够对入侵有更加清晰的认识。
记住:系统中的任何日志文件都可能被入侵者改动过。
对于UNIX系统,你可能需要查看/etc/syslog.conf文件确定日志信息文件在哪些位置。NT通常使用三个日志文件,记录所有的NT事件,每个NT事件都会被记录到其中的一个文件中,你可以使用Event Viewer查看日志文件。其它一些NT应用程序可能会把自己的日志放到其它的地方,例如ISS服务器默认的日志目录是c:winntsystem32logfiles。
以下是一个通常使用的UNIX系统日志文件列表。由于系统配置的不同可能你的系统中没有其中的某些文件。
messages
messages日志文件保存了大量的信息。可以从这个文件中发现异常信息,检查入侵过程中发生了哪些事情。
*** erlog
如果被侵入系统提供FTP服务, *** erlog文件就会记录下所有的FTP传输。这些信息可以帮助你确定入侵者向你的系统上载了哪些工具,以及从系统下载了哪些东西。
utmp
保存当前登录每个用户的信息,使用二进制格式。这个文件只能确定当前哪些用户登录。使用who命令可以读出其中的信息。
wtmp
每次用户成功的登录、退出以及系统重启,都会在wtmp文件中留下记录。这个文件也使用二进制格式,你需要使用工具程序从中获取有用的信息。last就是一个这样的工具。它输出一个表,包括用户名、登录时间、发起连接的主机名等信息,详细用法可以使用man last查询。检查在这个文件中记录的可疑连接,可以帮助你确定牵扯到这起入侵事件的主机,找出系统中的哪些帐户可能被侵入了。
secure
某些些版本的UNIX系统(例如:RedHat Linux)会将tcp_wrappers信息记录到secure文件中。如果系统的inetd精灵使用tcp_wrappers,每当有连接请求超出了inetd提供的服务范围,就会在这个文件中加入一条日志信息。通过检查这个日志文件,可以发现一些异常服务请求,或者从陌生的主机发起的连接。
审查日志,最基本的一条就是检查异常现象。
5.检查网络嗅探器
入侵者侵入一个UNIX系统后,为了获得用户名和密码信息,一般会在系统上安装一个网络监视程序,这种程序就叫作嗅探器或者数据包嗅探器。对于NT,入侵者会使用远程管理程序实现上述目的。
判断系统是否被安装了嗅探器,首先要看当前是否有进程使你的网络接口处于混杂(Promiscuous)模式下。如果任何网络接口处于promiscuous模式下,就表示可能系统被安装了网络嗅探器。注意如果你重新启动了系统或者在单用户模式下操作,可能无法检测到Promiscuous模式。使用ifconfig命令就可以知道系统网络接口是否处于promoscuous模式下(注意一定使用没有被侵入者修改的ifconfig):
#/path-of-clean-ifconfig/ifconfig -a
有一些工具程序可以帮助你检测系统内的嗅探器程序:
cpm(Check Promiscuous Mode)--UNIX可以从以下地址下载:
ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/
ifstatus--UNIX可以从以下地址下载:
ftp://coast.cs.purdue.edu/pub/tools/unix/ifstatus/
neped.c可以从以下地址的到:
ftp://apostols.org/AposTolls/snoapshots/neped/neped.c
一定要记住一些合法的网络监视程序和协议分析程序也会把网络接口设置为promiscuous模式。检测到网络接口处于promicuous模式下,并不意味着系统中有嗅探器程序正在运行。
但是,在Phrack杂志的一篇文章:(Phrack Magazine Volume 8,Issue 53 July
8,1998,article 10 of 15, Interface Promiscuity Obscurity)中,有人提供了一些针对FreeBSD、Linux、HP-UX、IRIX和Solaris系统的模块,可以擦除IFF_PROMISC标志位,从而使嗅探器逃过此类工具的检查。以此,即使使用以上的工具,你没有发现嗅探器,也不能保证攻击者没有在系统中安装嗅探器。
现在,LKM(Loadable Kernel Model,可加载内核模块)的广泛应用,也增加了检测难度。关于这一方面的检测请参考使用KSAT检测可加载内核模块。
还有一个问题应该注意,嗅探器程序的日志文件的大小会急剧增加。使用df程序查看文件系统的某个部分的大小是否太大,也可以发现嗅探器程序的蛛丝马迹。建议使用lsof程序发现嗅探器程序打开的日志文件和访问访问报文设备的程序。在此,还要注意:使用的df程序也应该是干净的。
一旦在系统中发现了网络嗅探器程序,我们建议你检查嗅探器程序的输出文件确定哪些主机受到攻击者威胁。被嗅探器程序捕获的报文中目的主机将受到攻击者的威胁,不过如果系统的密码是通过明文传输,或者目标主机和源主机互相信任,那么源主机将受到更大的威胁。