Linux内核信号量分析
- 格式:pdf
- 大小:312.11 KB
- 文档页数:5


Linux内核分析——ELF⽂件格式分析
ELF⽂件(⽬标⽂件)格式主要三种:
1)可重定向⽂件:⽂件保存着代码和适当的数据,⽤来和其他的⽬标⽂件⼀起来创建⼀个可执⾏⽂件或者是⼀个共享⽬标⽂件。(⽬标⽂件或者静态库⽂件,即linux通常后缀为.a和.o的⽂件)2)可执⾏⽂件:⽂件保存着⼀个⽤来执⾏的程序。(例如bash,gcc等)3)共享⽬标⽂件:共享库。⽂件保存着代码和合适的数据,⽤来被下连接编辑器和动态链接器链接。(linux下后缀为.so的⽂件。)
⼀般的 ELF ⽂件包括三个索引表:
1)ELF header:在⽂件的开始,保存了路线图,描述了该⽂件的组织情况。2)Program header table:告诉系统如何创建进程映像。⽤来构造进程映像的⽬标⽂件必须具有程序头部表,可重定位⽂件不需要这个表。3)Section header table :包含了描述⽂件节区的信息,每个节区在表中都有⼀项,每⼀项给出诸如节区名称、节区⼤⼩这类信息。⽤于链接的⽬标⽂件必须包含节区头部表,其他⽬标⽂件可以有,也可以没有这个表。1、 分析ELF⽂件头(ELF header)
进⼊终端输⼊:cd /usr/include/elf.h,查看ELF的⽂件头包含整个⽂件的控制结构
顺便选取⼀个简单代码为例:
进⾏编译运⾏,⽣成elf可执⾏⽂件。
使⽤‘readelf ’命令,得到下⾯的ELF Header头⽂件的信息,如下图:
通过上图信息,可以得出Elf Header的Size为64bytes,所以可以使⽤hexdump⼯具将头⽂件的16进制表打开。如下图使⽤:‘hexdump –x elf1 –n 64’命令来查看elf⽂件头的16进制表(前64bytes)对格式进⾏分析。
第⼀⾏,对应e_ident[EI_NIDENT]。实际表⽰内容为7f454c46020101000000000000000000,前四个字节7f454c46(0x45,0x4c,46是'e','l','f'对应的ascii编码)是⼀个魔数,表⽰这是⼀个ELF对象。接下来的⼀个字节02表⽰是⼀个64位对象,接下来的⼀个字节01表⽰是⼩端法表⽰,再接下来的⼀个字节01表⽰⽂件头版本。剩下的默认都设置为0.第⼆⾏,e_type值为0x0002,表⽰是⼀个可执⾏⽂件。e_machine值为0x003e,表⽰是Advanced Micro Devices X86-64处理器体系结构。e_version值为0x00000100,表⽰是当前版本。e_entry值为0x 004003f0,表⽰⼊⼝点(下⾯会⽤到)。
Linux内核分析(⼀)---linux体系简介内核源码简介内核配置编
译安装
Linux内核分析(⼀)
从本篇博⽂开始我将对linux内核进⾏学习和分析,整个过程必将⼗分艰⾟,但我会坚持到底,同时在博⽂中如果那些地⽅有问题还请各
位⼤神为我讲解。
今天我们会分析到以下内容:
1.
Linux体系结构简介
2.
Linux内核源码简介
3.
Linux内核配置、编译、安装
l
Linux体系结构简介
1.
Linux体系结构(linux系统构成)
Linux可以分为两部分,分别为⽤户空间和内核空间具体如下图:
a)
⽤户空间包括:⽤户的应⽤程序、C库
b)
内核空间包括:系统调⽤接⼝、内核(狭义内核)、平台架构相关的代码
2.
为什么要分为内核空间和⽤户空间
我们在分析u-boot的时候就说到过,我们的cpu在不同的⼯作模式下可以访问的寄存器是不⼀样的,所以为了保护我们的操作系
统,避免⽤户程序将内核搞崩,所以进⾏了内核空间和⽤户空间的划分。
a)
Arm处理器⼯作模式划分:usr、FIQ、IRQ、svc、abt、und、sys(具体介绍在)
b)
X86处理器⼯作模式划分:Ring0—Ring3,Ring0下可以执⾏特权指令,可以访问IO设备,Ring3则有很多的限制
注:我们可以通过系统调⽤和硬件中断来完成⽤户空间到内核空间的转移
3.
Linux内核结构(⼴义内核)
Linux内核由七个部分构成,具体如下图:
a)
系统调⽤接⼝(SCI):open、read、write等系统调⽤
b)
进程管理(PM):创建进程、删除进程、调度进程等
c)
内存管理(MM):内存分配、管理等
d)
虚拟⽂件系统(VFS):为多种⽂件系统提供统⼀的操作接⼝
e)
⽹络协议栈:提供各种⽹络协议
f)
CPU架构相关代码(Arch):为的是提⾼⾄移植性
g)
设备驱动程序(DD):各种设备驱动,占到内核的70%左右代码
l
Linux内核源码简介
1.
源码获取
Linux内核获取有两种⽅法,⼀种是在 直接获取,另⼀种是使⽤git获取(具体⽅法参考⽹络)。
linux-2.6.35内核IMQ源码实现分析 2011-8-23 1 /9 本文档的Copyleft归wwwlkk所有,使用GPL发布,可以自由拷贝、转载,转载时请保持文档的完整性,严禁用于任何商业用途。
E-mail: wwwlkk@
来源: /?business&aid=6&un=wwwlkk#7
linux2.6.35内核IMQ源码实现分析
(1)数据包截留并重新注入协议栈技术 ................................................................................................. 1
(2)及时处理数据包技术 ......................................................................................................................... 2
(3)IMQ设备数据包重新注入协议栈流程 ............................................................................................ 4
(4)IMQ截留数据包流程 ........................................................................................................................ 4
(5)IMQ在软中断中及时将数据包重新注入协议栈 ............................................................................ 7
(6)结束语 ................................................................................................................................................. 9
上海交通大学硕士学位论文LINUX内核ROOTKIT的分析及实现姓名:刘传申请学位级别:硕士专业:通信与信息系统指导教师:薛质20061201上海交通大学硕士学位论文 LINUX内核ROOTKIT分析及实现
ILINUX内核ROOTKIT分析及实现 摘 要 随着信息技术的迅猛发展,互联网和信息共享成为信息社会的主要趋势,越来越多的信息系统依赖于当前的互联网,信息安全成为一个不可回避的话题逐渐摆在我们的面前。远程控制技术的研究成为网络安全研究中的热点之一,内核Rootkit(即用来保存和隐藏root权限)做为一种长期隐蔽控制计算机系统的有效工具,其相关技术是远程控制技术研究的重要组成部分。本文基于Linux系统环境下远程攻击控制平台,首先着重分析了Linux内核体系结构、系统启动过程、进程的管理调度和动态可加载模块,在此基础上,总结了基于系统调用替换实现内核Rootkit的方法,并做了逃避检测的改进;归纳了基于内核异常修复指针替换方法实现内核Rootkit的技术;提出并完成了基于Linux虚拟文件系统处理指针替换实现内核Rootkit的技术。虚拟文件系统处理指针的替换位于Linux系统的较低层次,很难被发现,并通过多种方式实现了文件隐藏、进程隐藏、网络连接隐藏、日志过滤、权限提升等功能模块。本文中的实现部分着重于隐蔽性和可用性方面,并在内核空间内,应用系统调用替换、隐藏模块、模块注入等多种方上海交通大学硕士学位论文 LINUX内核ROOTKIT分析及实现
II法对Rootkit模块进行隐藏;在用户空间中采用内核模块启动用户空间程序、用户空间处理脚本替换等方法加强Rootkit的隐蔽性,最后提出了内核Rootkit存在的缺陷与检测方法,并给出了今后的研究方向。 关键词:远程控制,可加载模块,虚拟文件系统,内核木马 上海交通大学硕士学位论文 LINUX内核ROOTKIT分析及实现
IIITHE ANALYSIS AND REALIZATION OF BACKDOOR BASED ON LINUX KERNEL ABSTRACT With the information technology developing rapidly, internet and information sharing become the trend of current information society. More and more information systems in diverse fields dependent on Internet currently. However, the information threats and security requirements is becoming the key of the problem which we have to be faced. Remote control techniques have become a focus in the studying of network security. Rootkit (which can be used to keep the root privilege) is a kind of tool used to control target's computer system permanently and secretly after successfully breaking into it, the correlation technical has become the important part of remote control technical. The article is based on the remote attack system, and firstly described the structure of linux Kernel , linux boot process, the management of task and LKM (loadable kernel module), then, summarized the method of realization kernel Rootkit which was based on replacing system call and make improvement on the hand of escaping check; sum up the technical of realization Rootkit based on exception fix pointer replacing; raised and finished the Rootkit, that is based on replacing the system call of VFS. The method of replacing the pointer of VFS was in the lower level so that it’s hard to be detected. The VFS backdoor can gain a very high privilege, such as hiding file, hiding process, hiding net connection, log filter and so on. The realization part in this article emphasize on concealment and useableness, furthermore, the hidden rootkit module technical used replacing system call, hidden module and module injection in kernel space, in user space, used the method kernel module started the program and replacing script. At last, some shortcomings were presented for the purpose of checking and raised the 上海交通大学硕士学位论文 LINUX内核ROOTKIT分析及实现