两个linux内核rootkit--导语

晨曦之光 发布于 2012/04/10 15:00
阅读 237
收藏 0

MySQL连接为什么挂死了?别踩坑!>>>

曾经说过,linux由于其内秉的文件删除机制导致一旦发现有恶意代码很容易被清除掉,即使发现内核本身被感染也是很容易被清除掉,但是这并不能表示linux就是绝对安全的,这仅仅说明linux的补救措施很有效,因此如果想黑掉linux系统,那么首要的不是想如何让用户删不掉恶意程序,而是尽可能严谨的隐藏恶意程序,隐藏的含义有必要澄清一下。

考虑一下用户或者管理员通过什么来探知系统的行为,无非就是一些当前的系统快照以及以往的记录,快照我们可以举出很多例子,比如进程,端口,文件,用户等等,而记录则可以被理解为日志信息,除了快照和记录之外,还有一些软性的因素可以帮助用户或者管理员探知系统,这就是性能检测,如果无缘无故发现性能变差了但是又没有检查出额外进程或者端口,那么很可能系统被攻击了,因此只要我们将恶意程序相关的进程,端口,文件以及文件内容都隐藏,将与恶意程序有关的日志信息都屏蔽掉,并且恶意程序运行期间不会太影响性能,那么攻击就算成功了,而且很有效。虽然这样的攻击的确很酷,但是这并不能说linux系统本身有漏洞或者说linux本身不安全,linux系统的安全责任在两方面,一个是系统,另一个是使用系统的人,从系统攻击linux几乎是很难成功的,需要复杂的漏洞扫描过程,那么在黑掉系统之前必须先黑掉使用系统的人,只要有了root权限在linux中是什么都可以做的,我在前面的文章中也提到过,不要觉得写一个内核木马就很酷,那仅仅说明你有c语言基本的变成知识并且你拥有该系统的root权限,如果你能以一个普通用户的身份通过漏洞进入内核,那么你才是高手。

黑掉使用系统的人不是技术范畴的事,因此不讨论,现在假设已经获得了root权限,我们考虑一下具体要做哪些工作,首先最基本的,要隐藏进程而相关的文件,加载入内核的模块以及使用的端口,其次要屏蔽日志信息,具体来说就是拦截syslogd的行为,只要是恶意程序写的日志,那么过滤掉,utmp和wtmp也是需要关注的,因为who命令通过读取上述文件就可以知道登录记录,如果恶意程序涉及登录的话,那么屏蔽掉,幸运的是日志行为最后都落实为写文件,在linux中均由文件系统来负责,参照rootkit隐藏文件的方式,我们只需要拦截文件系统的系统调用就可以了。说到这里,拦截方式有两种,一种是直接拦截系统调用本身,另一种是拦截文件系统的回调函数,也就是file_operations中的函数,前者很容易被发现而后者却很隐蔽,毕竟前者属于机制性的东西,一般比较固定,反黑软件一般都可以查的出来,而后者属于具体文件系统的策略,不是那么固定,因此反黑软件很难入手,两种方式也代表了两种风格,难易程度相当,不过我还是觉得拦截文件系统回调函数来得更容易些。好了,接下来的两篇文章将阐释两个著名又很简单的rootkit。


原文链接:http://blog.csdn.net/dog250/article/details/5303685
加载中
返回顶部
顶部