Linux Rootkit之三:系统调用劫持简介
2015-07-24 22:09
621 查看
3.1 系统调用的功能
Linux中进程运行的模式有两个:用户态和内核态。运行的用户态的进程功能比较少,要想与硬件设备交互就必须切换到内核态。系统调用就是进程由用户态进入到内核态的唯一入口。这种实现方式有很多优点:
(1)简化编程方式
编码人员不需要学习过多的硬件设备的编程特性;
(2)极大地提高了系统的安全性
内核在满足莫个请求之前在接口级就可以检查这种请求的合法性;
(3)增强了程序的可移植性
系统通过维持接口不变来隐藏了不同的底层平台和硬件的差异,使得应用程序的跨平台移植更加容易。
3.2 系统调用的实现方式
Linux所有的系统调用的执行流程都是:(1)在用户态发起系统调用请求
(2)进程切换到内核态
(3)找到sys_call_table中与系统调用号对应的函数
(4)执行内核函数
(5)返回到用户态
根据进程切换到内核态所执行指令的不同系统调用可分为int 0x80模式、sysenter模式和syscall模式三种。
int 0x80中断模式是最古老的模式,它通过用户态进程使用int指令发起0x80中断的方式进入内核态,由相应的内核中断处理函数找到sys_call_table中的函数并执行。
进程使用sysenter指令也可以切换到内核态,且效率比int 0x80方式更高。在CPU支持sysenter的情况下,系统调用由sysenter指令实现。
在32位系统中Linux使用int 0x80和sysenter切换到内核态,在64位环境下使用的时syscall指令。
3.3 系统调用劫持简介
系统调用劫持是指在内核设置hook点,使得所有系统调用在陷入到先调用hook点中的函数,然后才调用真正的内核处理函数。这样就能截获并控制系统调用。系统调用劫持的方法有:
(1)截获sys_call_table
(2)截获0x80中断向量
(3)截获sysenter处理函数指针
(4)截获syscall处理函数指针
接下来详细讨论各种劫持方法。
相关文章推荐
- 基于Linux的智能家居的设计(2)
- linux at91看门狗驱动设置
- centos6.6下安装GreenPlum4.3.5.2
- 基于Linux的智能家居的设计(1)
- linux配置java环境变量(详细)
- 3.1 linux进程 2015/7/22
- dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
- linux 之makefile语法学习1
- Linux SSH 免密码登录
- Linux 多学习过程
- Linux内核学习方法
- Linux系统调用
- linux内核源码注解
- Linux - Ubuntu下JDK配置
- Linux Fedora 22 配置IP地址文件
- Linux Kernel系列 - 黄牛X内核代码凝视
- 七月二十二日 Linux操作系统c语言学习笔记
- 七月二十三日 Linux操作系统c语言学习笔记
- CentOS下php使用127.0.0.1不能连接mysql的解决方法
- linux 64位系统 mod_encoding解决中文文件名不能下载问题