如何预防侦测rootkits

日期: 2008-01-09 作者:网络搜集 来源:TechTarget中国

  当入侵者成功侵入机器之後,首要的目标就是抹掉入侵系统的相关记录以及隐藏自己的行踪,一旦忽略了这些事情,入侵者很容易被系统管理者逮到,而一般入侵者最常使用的方法就是使用rootkits。许多人会以为rootkits是用来取得系统中root权限的神奇程式,然而事实上,rootkits是一堆能窃取密码,监听网路流量,留下後门等的程式集,如果入侵者在系统中成功植入rootkits,一般人将很难发现已经被入侵,或是只是觉得系统"怪怪的",却不知道哪边出了问题,而对於入侵者来说,将能轻易控制系统,而且通行无阻。

  底下将介绍rootkits如何达成这些目的,以及如何预防侦测rootkits。

  Rootkits 是一些工具集,trojaned 程式,窜改过的系统程式的集合,工具集中的程式通常用来抹掉系统中相关的纪录,?plastlog/utmp/wtmp这些会记录使用者登入状况的系统记录档,trojaned 程式会留下後门,让入侵者能再次轻易地进入系统之中,而被窜改过的系统程式会隐藏入侵者的档案、行程、连线等等,管理者通常信任这些程式的输出,而让管理者难以发现入侵者的踪迹。

  目前最常见的 rootkit 是 Linux Rootkit(lrk),以 lrk 为例,底下列出这些程式及其功用,工作集包含有:

  ● fix – 改变档案的 timestamp 和 checksum,用来把窜改过的程式的timestamp 和checksum,更动为和原先的系统中的程式相同。

  ● linsniffer – 窃取特定网路讯息(ftp / telnet / imap..)的sniffer。

  ● sniffchk – 检查 linsniffer 是否在运作。

  ● wted – 查阅或移除 wtmp 中指定的栏位。

  ● z2 – 移除某个使用者最後的 utmp/wtmp/lastlog 纪录

  包含的 trojaned 程式有:
 
  ● inetd – 会listen在某个port(预设是5002),任何人只要利用这个 port 进入系统就拥有 root 权限。

  ● bindshell – 将 root shell bind 在某个 port。

  ● chfn / chsh / login / passwd / su – 输入特定密码就能拥有 root shell。

  ● rshd – 让入侵者以特定帐号登入就能以 root 权限执行程式。

  ● sshd – 入侵者以特定帐号密码登入就能拥有 root shell。

  窜改过的系统程式有:

  ● crontab – 执行特定的 crontab 档案,并且隐藏这些栏位。

  ● du / find / ls  – 隐藏特定的档案,通常是与 rootkit 相关的档案。

  ● ifconfig – 当启动 PROMISC 时(sniffing),不显示 PROMISC flag。

  ● netstat – 隐藏指定 address / uid / port 的连线。

  ● killall – 无法删除指定的行程。

  ● pidof / ps / top  – 输出结果时滤掉指定的行程,例如以 root 执行的行程,或行程名称内有特定字串的行程。

  ● syslogd – 移除系统纪录档中包含特定字串的讯息。

  ● tcpd – 不会纪录以及允许特定连线。

  此外,还有一些 rootkits 会以 kernel module 的方式载入系统之中,置换掉某些 system calls,或是取代掉某些 kernel 的功能,另外,也有的 rootkits 会取代系统中的 library,使得使用到这些 library 的程式相当於都有潜在的问题。那我们要如何预防这些 rootkit 安装到系统内部呢?在此提供几点建议:

  ● 将放置系统程式的档案系统设定为唯读或是使用 chattr 将重要档案设定为唯读。

  ● 不要启用 kernel module 的功能。

  ● 重要的程式使用 static-link 的方式避免连结到被窜改过的 library。

  ● 使用 md5 或是 pgp 等严密的验演算法确认档案的正确性。

  若要侦测 rootkits 窜改系统档案,一般使用 tripwire,提供许多演算法如MD5 / Snefu / SHA 等,可以验档案是否被窜改,如果与原先的档案不符,将提醒管理者。可参阅 http://www.tripwire.org/ 得到更多详细讯息。

  如果怀疑自己可能已经被植入 rootkits,可以使用 chkrootkit 来检查,chkrootkit 提供许多工具检查是否被植入 rootkits,例如 chkrootkit 会检查几个可能被窜改过的系统程式,以及检查是否有 rootkits 常使用的工具,此外ifpromisc 用来检查 PROMISC flag 是否开启, chkwtmp / chklastlog 可用来确认lastlog / wtmp 的正确性,另外如果系统拥有 process file system,就可以使用chkproc 来比对 ps 的输出和 process file system 的差异。可参阅http://www.chkrootkit.org/ 得到更多详细讯息。

  我们也可以利用一些简单的方式来检查是否被植入 rootkits,例如使用 echo * 的输出和 ls 的输出比对,或着是检查 /dev/底下有没有任何"正常"(regular)的档案,通常/dev/ 底下都是 block special file 或是 character special file,像 lrk的设定档预设值就是放在 /dev/ 底下,或着使用 nmap 等类似的 port scanner 来检查系统是否有对外开出任何不正常的 port,另外也建议使用没有被’污染’的系统程式来检查系统,并更动PATH使用正常的程式来一一检查可能被入侵的系统。

  以上大略介绍过 lrk,其他 *NIX 平台的 rootkits 大致上相同,而对於Windows平台的NT Rootkits,除了隐藏档案目录之外,也隐藏 registry,甚至拥有自己的TCP/IP Stack,一但被植入非常难发现。

  随着 rootkits 不断的发展,入侵者的匿踪技巧越来越高超,要发现入侵者越来越困难,只能依赖系统管理者平时做好完善的安全政策,不让入侵者有可趁之机,如此才能确保系统安全的长久之道。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐

  • Netgear推beta版补丁,修复路由器中重大安全漏洞

    近日,Netgear推出补丁以修复路由器中重大安全漏洞,此前,专家建议用户完全放弃使用Netgear路由器。该漏洞出现在某些Netgear路由器部署web服务器时,它允许未经验证用户注入root权限命令,本质上接管设备并可执行任意代码。

  • 2010年文件共享成黑客最佳攻击方式

    据国外媒体报道,卡巴斯基和CA等互联网安全厂商表示,2010年的安全形势不容乐观,新的恶意软件将层出不穷,破坏力也越来越大。而文件共享成黑客最佳攻击方式……

  • 了解你的敌人之获得root权限之后

    本文是对入侵者进行研究系列文章中的第三篇。第一篇讲述了入侵者们的探测行为、分类及利用漏洞的过程,第二篇聚焦于如何探测入侵企图、鉴别使用的工具、漏洞,这篇文章……

  • 关闭无用端口 堵住入侵大门

    自己使用的电脑经常受到别人攻击,其实很多时候并不是入侵者的技术本领有多高,而是因为我们自己主动打开无数扇大门,让入侵者自由出入