RSS订阅
RSS订阅TT安全
您现在的位置:TT安全 > Rootkit > 如何预防侦测rootkits

如何预防侦测rootkits

2008-1-10  选择字号:  | |
打印本文章

导读:当入侵者成功侵入机器之後,首要的目标就是抹掉入侵系统的相关记录以及隐藏自己的行踪,一旦忽略了这些事情,入侵者很容易被系统管理者逮到,而一般入侵者最常使用的方法就是使用rootkits。

关键词:rootkits root权限 入侵者 管理者 工具集

正在加载数据...

  当入侵者成功侵入机器之後,首要的目标就是抹掉入侵系统的相关记录以及隐藏自己的行踪,一旦忽略了这些事情,入侵者很容易被系统管理者逮到,而一般入侵者最常使用的方法就是使用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 不断的发展,入侵者的匿踪技巧越来越高超,要发现入侵者越来越困难,只能依赖系统管理者平时做好完善的安全政策,不让入侵者有可趁之机,如此才能确保系统安全的长久之道。

来源:网络搜集    作者:网络搜集    
Rootkit是很多想要访问受害者系统的攻击者选择的工具。有了这种恶意软件,攻击者可以在受害者的计算机上安装恶意代码,而用户很难检测到这种方式……
微软的Windows Vista操作系统中发现了一个安全漏洞。这个安全漏洞允许rootkits在使用Vista操作系统的计算机上隐藏起来或者实施拒绝服务器攻击……
9月10日发布的调查显示,公司对Web2.0的安全威胁越来越关注,而且正在采取步骤保护敏感用户信息和知识产权,91%的回应者都把网络犯罪作为主要的商业风险……
United States Computer Emergency Readiness Team(US-CERT) 警告Linux用户,他们正在成为使用窃取的SSH密钥的黑客的活跃目标……
随着虚拟机的普及,rootkit已经悄然进入了虚拟化的世界。目前可能还没发现黑客们开发这种更加恶毒的软件。即使不依靠虚拟化,目前的rootkit足以让一般的检测技术兴叹了……

当身份窃取猖獗的时候,有力地用户认证、客户认证和合作伙伴认证是至关重要的措施。有了用户名和密码就足够了吗?双因素认证是有效的方法吗?还是无力应对新出现的威胁呢?本专题将提供全面的信息,帮助理解目前的认证方式和面临的挑战,并且介绍如何采用安全的认证系统。

本专题将介绍一款免费的、开源的、可移动的适用于笔记本电脑的加密软件TrueCrypt。TrueCrypt适用于个人或者小型企业和团队,可以在任何系统上运行而不需要安装。TrueCrypt可以采用多种加密算法,有效地保护机密数据。
本专题可以帮助理解在无线网络中,无线入侵检测/防御系统(WIDS/WIPS)的价值,及时您所在的公司不支持无线局域网。此外,本专题还将介绍如何为公司环境选择合适的WIDS,以及如何防御无线拒绝服务攻击。
最新更新
专家答疑
技巧
Michael Cobb
渗透测试的目标不仅是要评估电脑系统或者网络的安全性,还要决定成功攻击的可行性和商业影响。那么如果选择合适的渗透测试人员呢?
Mike Chapple
渗透测试可以提供安全防御的有价值的信息,但是成本很高。为了渗透测试的可信性,通常必须要有独立的外部公司进行。如果使用内部人员和测试示范漏洞……
Ed Skoudis
问:社会工程应该是渗透测试的一部分吗?这样做是道德的吗?   答:这个问题的答案还在争论之中。