后门
一般黑客都会在攻入系统后不只一次地进入该系统。为了下次再进入系统时方便一点,黑客会留下一个后门,特洛伊木马就是后门的最好范例。Unix中留后门的方法有很多种,下面介绍几种常见的后门,供网络管理员参考防范。 密码破解后门 这是入侵者使用的最早也是最老的方法,它不仅可以获得对Unix机器的访问,而且可以通过破解密码制造后门。这就是破解口令薄弱的帐号。以后即使管理员封了入侵者的当前帐号,这些新的帐号仍然可能是重新侵入的后门。多数情况下,入侵者寻找口令薄弱的未使用帐号,然后将口令改的难些。当管理员寻找口令薄弱的帐号是,也不会发现这些密码已修改的帐号。因而管理员很难确定查封哪个帐号。 Rhosts 后门 在连网的Unix机器中,象Rsh和Rlogin这样的服务是基于rhosts文件里的主机名使用简单的认证方法。用户可以轻易的改变设置而不需口令就能进入。入侵者只要向可以访问的某用户的rhosts文件中输入" ",就可以允许任何人从任何地方无须口令便能进入这个帐号。特别当home目录通过NFS向外共享时,入侵者更热中于此。这些帐号也成了入侵者再次侵入的后门。许多人更喜欢使用Rsh,因为它通常缺少日志能力。许多管理员经常检查" ",所以入侵者实际上多设置来自网上的另一个帐号的主机名和用户名,从而不易被发现。 校验和及时间戳后门 早期,许多入侵者用自己的trojan程序替代二进制文件。系统管理员便依靠时间戳和系统校验和的程序辨别一个二进制文件是否已被改变,如Unix里的sum程序。入侵者又发展了使trojan文件和原文件时间戳同步的新技术。它是这样实现的:先将系统时钟拨回到原文件时间,然后调整trojan文件的时间为系统时间。一旦二进制trojan文件与原来的精确同步,就可以把系统时间设回当前时间。Sum程序是基于CRC校验,很容易骗过。入侵者设计出了可以将trojan的校验和调整到原文件的校验和的程序。MD5是被大多数人推荐的,MD5使用的算法目前还没人能骗过。 Login后门 在Unix里,login程序通常用来对telnet来的用户进行口令验证。入侵者获取login.c的原代码并修改,使它在比较输入口令与存储口令时先检查后门口令。如果用户敲入后门口令,它将忽视管理员设置的口令让你长驱直入。这将允许入侵者进入任何帐号,甚至是root。由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生一个访问的,所以入侵者可以登录获取shell却不会暴露该帐号。管理员注意到这种后门后,便用"strings"命令搜索login程序以寻找文本信息。许多情况下后门口令会原形毕露。入侵者就开始加密或者更好的隐藏口令,使strings命令失效。所以更多的管理员是用MD5校验和检测这种后门的。 Telnetd后门 当用户telnet到系统,监听端口的inetd服务接受连接随后递给in.telnetd,由它运行login.一些入侵者知道管理员会检查login是否被修改,就着手修改in.telnetd.在in.telnetd内部有一些对用户信息的检验,比如用户使用了何种终端。典型的终端设置是Xterm或者VT100.入侵者可以做这样的后门,当终端设置为"letmein"时产生一个不要任何验证的shell.入侵者已对某些服务作了后门,对来自特定源端口的连接产生一个shell。 服务后门 几乎所有网络服务曾被入侵者作过后门。Finger,rsh,rexec,rlogin,ftp,甚至inetd等等的作了的版本随处多是。有的只是连接到某个TCP端口的shell,通过后门口令就能获取访问。这些程序有时用刺娲□?Ucp这样不用的服务,或者被加入inetd.conf作为一个新的服务,管理员应该非常注意那些服务正在运行,并用MD5对原服务程序做校验。 Cronjob后门 Unix上的Cronjob可以按时间表调度特定程序的运行。入侵者可以加入后门shell程序使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问。也可以查看cronjob中经常运行的合法程序,同时置入后门。 库后门 几乎所有的UNIX系统使用共享库,共享库用于相同函数的重用而减少代码长度。一些入侵者在象crypt.c和_crypt.c这些函数里作了后门;象login.c这样的程序调用了crypt()。当使用后门口令时产生一个shell。因此,即使管理员用MD5检查login程序,仍然能产生一个后门函数,而且许多管理员并不会检查库是否被做了后门。对于许多入侵者来说有一个问题:一些管理员对所有东西多作了MD5校验,有一种办法是入侵者对open()和文件访问函数做后门。后门函数读原文件但执行trojan后门程序。所以当MD5读这些文件时,校验和一切正常,但当系统运行时将执行trojan版本的,即使trojan库本身也可躲过MD5校验,对于管理员来说有一种方法可以找到后门,就是静态编连MD5校验程序然后运行,静态连接程序不会使用trojan共享库。 内核后门 内核是Unix工作的核心,用于库躲过MD5校验的方法同样适用于内核级别,甚至连静态连接多不能识别。一个后门作的很好的内核是最难被管理员查找的,所幸的是内核的后门程序还不是随手可得,每人知道它事实上传播有多广。
文件系统后门 入侵者需要在服务器上存储他们的掠夺品或数据,并不能被管理员发现,入侵者的文章常是包括exploit脚本工具,后门集,sniffer日志,email的备分,原代码,等等!有时为了防止管理员发现这么大的文件,入侵者需要修补"ls","du","fsck"以隐匿特定的目录和文件,在很低的级别,入侵者做这样的漏洞:以专有的格式在硬盘上割出一部分,且表示为坏的扇区。因此入侵者只能用特别的工具访问这些隐藏的文件,对于普通的管理员来说,很难发现这些"坏扇区"里的文件系统,而它又确实存在。 Boot块后门 在PC世界里,许多病毒藏匿与根区,而杀病毒软件就是检查根区是否被改变。Unix下,多数管理员没有检查根区的软件,所以一些入侵者将一些后门留在根区。 TCPShell后门 入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCPShell后门.许多情况下,他们用口令进行保护以免管理员连接上后立即看到是shell访问。管理员可以用netstat命令查看当前的连接状态,那些端口在侦听,目前连接的来龙去脉。通常这些后门可以让入侵者躲过TCPWrapper技术。这些后门可以放在**TP端口,许多防火墙允许e-mail通行的. UDPShell后门 管理员经常注意TCP连接并观察其怪异情况,而UDPShell后门没有这样的连接,所以netstat不能显示入侵者的访问痕迹,许多防火墙设置成允许类似DNS的UDP报文的通行,通常入侵者将UDPShell放置在这个端口,允许穿越防火墙。 ICMPShell后门 Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一。许多防火墙允许外界ping它内部的机器,入侵者可以放数据入Ping的ICMP包,在ping的机器间形成一个shell通道,管理员也许会注意到Ping包暴风,但除了他查看包内数据,否者入侵者不会暴露。 加密连接 管理员可能建立一个sniffer试图某个访问的数据,但当入侵者给网络通行后门加密后,就不可能被判定两台机器间的传输内容了。