系统后门的真面目<一>
关注+2004-10-08作者:蓝点
他们就努力发展能使自己重返被入侵系统的技术或后 门.本文将讨论许多常见的后门及其检测方法. 更多的焦点放在Unix系统的后门, 同时讨论一些未来将会出现的Windows NT的后门. 本文将描述如何测定入侵者使 用的方法这样的复杂内容和管理员如何防止入侵者重返的基础知识. 当管理员懂 的一旦入侵者入侵后要制止他们是何等之难以后, 将更主动于预防第一次入侵. 本文试图涉及大量流行的初级和高级入侵者制作后门的手法, 但不会也不可能覆盖到所有可能的方法.
大多数入侵者的后门实现以下二到三个目的:
即使管理员通过改变所有密码类似的方法来提高安全性,仍然能再次侵入. 使再次 侵入被发现的可能性减至最低.大多数后门设法躲过日志, 大多数情况下 即使入 侵者正在使用系统也无法显示他已在线. 一些情况下, 如果入侵者认为管 理员可 能会检测到已经安装的后门, 他们以系统的 脆弱性作为唯一的后门, 重而 反复 攻破机器. 这也不会引起管理员的注意. 所以在 这样的情况下,一台机器的 脆 弱性是它唯一未被注意的后门.
密码破解后门
这是入侵者使用的最早也是最老的方法, 它不仅可以获得对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来的用户进行口令验证. 入侵者获取logi n.c的原代码并修改,使它在比较输入口令与存储口令时先检查后门口令. 如果用 户敲入后门口令,它将忽视管理员设置的口令让你长驱直入. 这将允许入侵者进 入 任何帐号,甚至是root.由于后门口令是在用户真实登录并被日志记录到utmp和 wt mp前产生一个访问的, 所以入侵者可以登录获取shell却不会暴露该帐号. 管 理员 注意到这种后门后, 便用"strings"命令搜索login程序以寻找文本信息. 许 多情 况下后门口令会原形毕露. 入侵者就开始加密或者更好的隐藏口令, 使str ings命 令失效. 所以更多的管理员是用MD5校验和检测这种后门的.
Telnetd后门
当用户telnet到系统, 监听端口的inetd服务接受连接随后递给in.telnetd,由它 运行login.一些入侵者知道管理员会检查login是否被修改, 就着手修改in.tel n etd. 在in.telnetd内部有一些对用户信息的检验, 比如用户使用了何种终端. 典 型的终端设置是Xterm或者VT100.入侵者可以做这样的后门, 当终端设置为" letm ein"时产生一个不要任何验证的shell. 入侵者已对某些服务作了后门, 对 来自特 定源端口的连接产生一个shell .
服务后门
几乎所有网络服务曾被入侵者作过后门. finger, rsh, rexec, rlogin, ftp, 甚 至inetd等等的作了的版本随处多是. 有的只是连接到某个TCP端口的shell,通过 后门口令就能获取访问.这些程序有时用刺娲□?ucp这样不用的服务,或者被加 入 inetd.conf作为一个新的服务.管理员应该非常注意那些服务正在运行, 并用 MD5 对原服务程序做校验.
Cronjob后门
Unix上的Cronjob可以按时间表调度特定程序的运行. 入侵者可以加入后门shell 程序使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问. 也可以查看 c ronjob中经常运行的合法程序,同时置入后门. 库后门 `````` 几乎所有的UNIX系统使用共享库. 共享库用于相同函数的重用而减少代码长度. 一些入侵者在象crypt.c和_crypt.c这些函数里作了后门. 象login.c这样的程序 调用了crypt(),当使用后门口令时产生一个shell. 因此, 即使管理员用MD5检查 login程序,仍然能产生一个后门函数.而且许多管理员并不会检查库是否被做了 后 门.对于许多入侵者来说有一个问题: 一些管理员对所有东西多作了MD5校验. 有一种办法是入侵者对open()和文件访问函数做后门. 后门函数读原文件但执行 trojan 后门程序. 所以 当MD5读这些文件时,校验和一切正常. 但当系统运行时 将执行t rojan版本的. 即使trojan库本身也可躲过 MD5校验. 对于管理员来说有 一种方法可以找到后门, 就是静态编连MD5校验程序 然后运行. 静态连接程序不 会使用trojan共享库.
内核后门
内核是Unix工作的核心. 用于库躲过MD5校验的方法同样适用于内核级别,甚至连 静态连接多不能识别. 一个后门作的很好的内核是最难被管理员查找的, 所幸的 是内核的后门程序还不是随手可得, 每人知道它事实上传播有多广.
文件系统后门
入侵者需要在服务器上存储他们的掠夺品或数据,并不能被管理员发现. 入侵者的 文章常是包括exploit脚本工具,后门集,sniffer日志,email的备分,原代码,等等 . 有时为了防止管理员发现这么大的文件, 入侵者需要修补"ls","du","fsck"以 隐匿特定的目录和文件.在很低的级别, 入侵者做这样的漏洞: 以专有的格式在 硬 盘上割出一部分, 且表示为坏的扇区. 因此入侵者只能用特别的工具访问这些 隐 藏的文件. 对于普通的管理员来说, 很难发现这些"坏扇区"里的文件系统, 而 它 又确实存在. Boot块后门 `````` 在PC世界里,许多病毒藏匿与根区, 而杀病毒软件就是检查根区是否被改变. Uni x下,多数管理员没有检查根区的软件, 所以一些入侵者将一些后门留在根区.
隐匿进程后门
入侵者通常想隐匿他们运行的程序. 这样的程序一般是口令破解程序和监听程序 (sniffer).有许多办法可以实现,这里是较通用的: 编写程序时修改自己的a rg v[]使它看起来象其他进程名. 可以将sniffer程序改名类似in.syslog再执 行. 因此当管理员用"ps"检查运行进程时, 出现 的是标准服务名. 可以修改 库函数 致使"ps"不能显示所有进程. 可以将一个后门或程序嵌入中断驱动程序使 它不会 在进程表显现. 使用这个技术的一个后门 例子是amod.tar.gz : http://star.n iimm.spb.su/~maillist/bugtraq.1/0777.html 也可以修改内核隐匿进程.
Rootkit
最流行的后门安装包之一是rootkit. 它很容易用web搜索器找到.从Rootkit的README里,可以找到一些典型的文件:
z2 - removes entries from utmp, wtmp, and lastlog.
Es - rokstars ethernet sniffer for sun4 based kernels.
Fix - try to fake checksums, install with same dates/perms/u/g.
Sl - become root via a magic password sent to login.
Ic - modified ifconfig to remove PROMISC flag from output.
ps: - hides the processes.
Ns - modified netstat to hide connections to certain machines.
Ls - hides certain directories and files from being listed.
du5 - hides how much space is being used on your hard drive.
ls5 - hides certain files and directories from being listed.
网络通行后门
入侵者不仅想隐匿在系统里的痕迹, 而且也要隐匿他们的网络通行. 这些网络通 行后门有时允许入侵者通过防火墙进行访问. 有许多网络后门程序允许入侵者建 立某个端口号并不用通过普通服务就能实现访问. 因为这是通过非标准网络端口 的通行, 管理员可能忽视入侵者的足迹. 这种后门通常使用TCP,UDP和ICMP, 但 也 可能是其他类型报文.
TCP Shell 后门
入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCP Shell后门. 许多情况 下,他们用口令进行保护以免管理员连接上后立即看到是shell访问. 管理员可以 用netstat命令查看当前的连接状态, 那些端口在侦听, 目前连接的来龙去脉. 通 常这些后门可以让入侵者躲过TCP Wrapper技术. 这些后门可以放在SMTP端口, 许 多防火墙允许e-mail通行的.
UDP Shell 后门
管理员经常注意TCP连接并观察其怪异情况, 而UDP Shell后门没有这样的连接, 所以netstat不能显示入侵者的访问痕迹. 许多防火墙设置成允许类似DNS的UDP报 文的通行. 通常入侵者将UDP Shell放置在这个端口, 允许穿越防火墙.