本文详细介绍后门技术和Linux LKM Rootkit详细解析
相反,利用LKM我们可有效的突破这些限制。首先,我们在重要的系统目录里不必修改或创建任何文件。我们可以把LKM程序放在/tmp或/var/tmp目录下,一般系统管理员是不会监视这些目录的。其次,我们可以隐藏我们想要的任何东西,象文件,进程,和网络连接。因为要得到这些信息,用户必须依赖系统调用。
因此我们可以修改内核结构,我们可以用我们自己的函数来替换原系统调用。最后,我们甚至可以攻击或修改TCP/IP协议栈并且去愚弄系统内核!以下部分,我们将介绍如何利用这些机制以及实现方法。
我们的LKM程序主要是基于LinuxKernel2.2.x及TCP/IP上的实现,因为一个优秀的后门程序一定会给远程用户访问该系统的权限。在目标机器上打开一个端口,运行一个服务是非常容易暴露的。我们需要尽可能的隐藏自己。
第一个想法是我们在目标机器上不运行任何进程来等待连接,我们在TCP/IP协议栈里来创建一个函数来替代它。无论何时一个特殊的udp或tcp包被接受,内核将会检查这个包来确定是否是指定的特殊包。假如是的话,内核将派生一个进程来执行命令。我们可以使用任何内核可以支持的协议包。
现在我们来实现它。在内核里,每个协议在*inet_protocol_base和*inet_protos[MAX_INET_PROTOS]hash注册自己。当系统初始化时,所有支持的协议会再inet_protocol_base注册。他们被加到inet_protos的哈希表里。不管什么时候一个IP包达到时,内核将检查这个哈希表,找相应的处理函数和系统调用。我们就在这个点上进行hack。我们将用我们的处理函数来替换原始的协议的处理函数。因此,我们可以截获数据包并且分析它。假如它是我们需要的,我们将执行我们的命令。假如不是,仅仅只需要调用原来的函数。
作者:korn 责编:豆豆技术应用
- Linux/Unix新闻
- Linux/Unix入门
- Linux/Unix命令
- Linux/Unix安装
- Linux/Unix编程
- Linux/Unix管理
- Linux/Unix桌面
- Linux/Unix内核
- Linux/Unix软件
- Linux/Unix发行版
- redhat/Fedora
- Ubuntu Linux
- IBM AIX
- FreeBSD
- Solaris
- NetBSD
- SCO Unix
- find基本用法
- ldd命令原理及用法例子
- su和sudo命令的区别与使用技巧
- Linux操作系统下的dd命令技巧
- 关于Top命令的参数详解
- 关于Tar命令的使用
- SSH实用技巧及常用命令使用
- Linux后台执行命令
- VI命令使用技巧集锦
- Vmstat命令列出的属性详解
- 如何查看及修改文件读写权限
- 最大可存储的单文件容量
- ext2/ext3文件系统介绍
- 常用压缩格式的压缩解压方法
- Linux系统的引导过程详细解析
- Configure参数解释说明
- Linux下硬盘和分区的命名方法
- 硬链接与软链接的区别
- 权限和所有权模型
- 存储设备的两种表示方法