将linux操作系统用于服务器在现在是越来越普遍了.因此,入侵linux在今天也变得越来越有趣.目前最好的攻击linux的技术就是修改内核代码.由于一种叫做可卸载内核(loadable 【程序编程相关:Linux管理员手册(5)--引导和关机】
简介 【推荐阅读:Linux管理员手册(6)--登录和注销】
然而为什么我再重新写这些关于lkms的东西呢?下面是我的一些理由: 【扩展信息:进入Linux的知识问答】
kernelmodules(lkms))的机制,我们有可能编写在内核级别运行的代码,而这种代码可以允许我们接触到操作系统中非常敏感的部分.在过去有一些很好的关于lkm知识的文本或者文件,他们介绍一些新的想法,方法以及一名hacker所梦寐以求的完整的lkms.而且也有一些很有趣的公开的讨论(在新闻组,邮件列表).
在过去的教材中常常没有为那些初学者提供很好的解释.而这个教材中有很大一部分的基础章节.这是为了帮助那些初学者理解概念的.我见过很多人使用系统的缺陷或者监听器然而却丝毫不了解他们是如何工作的.在这篇文章中我包含了很多带有注释的源代码,只是为了帮助那些认为入侵仅仅是一些工具游戏的初学者!
每一个发布的教材不过把话题集中在某个特别的地方.没有一个完整的指导给那些关注lkms的hacker.这篇文章会覆盖几乎所有的关于lkms的资料(甚至是病毒方面的).
这篇文章是从hacker或者病毒的角度进行讨论的,但是系统管理员或者内核的开发者也可以参考并从中学到很多东西.
以前的文章介绍一些利用lkms进行入侵的优点或者方法,但是总是还有一些东西是我们过去从来没有听说过的.这篇文章会介绍一些新的想法给大家.(不是所有的新的资料,只是一些对我们有帮助的)
这篇文章会介绍一些简单的防止lkm攻击的方法,同时也会介绍如何通过使用一些像运行时内核补丁(runtime kernel patching)这样的方法来对付这些防御措施.
要记住这些新的想法仅仅是通过利用一些特殊的模块来实现的.要在现实中真正使用他们还需要对他们进行改进.这篇文章的主要目的是给大家在整个lkm上一个大方向上的指导.在附录a中,我会给大家一些实用的lkms,并附上一些简短的注释(这是为那些新手的),以及如何使用他们.
整篇文章(除了第五部分)是基于 linux 2.0.x的80x86机器的.我测试了所有的程序与代码段.为了能够正常使用这里提供的绝大部分代码,你的linux系统必须有lkm支持.只有在第四部分会给大家一些不需要lkm支持的源代码.本文的绝大多数想法一样可以在linux2.2.x上实现(也许你会需要一些小小的改动).
这篇文章会有一个特别的章节来帮助系统管理员进行系统安全防护.你(作为一名hacker)也必须仔细阅读这些章节.你必须要知道所有系统管理员知道的,甚至更多.你也会从中发现很多优秀的想法.这也会对你开发高级的入侵系统的lkms有所帮助.
第一部分. 基础知识
1.1 什么是lkms
lkms就是可卸载的内核模块(loadable kernel
modules).这些模块本来是linux系统用于扩展他的功能的.使用lkms的优点有:他们可以被动态的加载,而且不需要重新编译内核.由于这些优点,他们常常被特殊的设备(或者文件系统),例如声卡等使用.
每个lkm至少由两个基本的函数组成:
... 下一页