the definitive guide for hackers, virus coders and system administrators
简介
第一部分 基础知识
1.1 什么是LKMs
1.2 什么是系统调用
1.3 什么是内核符号表(Kernel-Symbol-Table)
1.4 如何实现从用户空间到内核空间的转换
1.5 使用用户空间函数的方法
1.6 常用内核空间函数列表
1.7 什么是内核守护进程
1.8 创建你自己的设备
第二部分 渐入佳境
2.1 如何截获系统调用
2.2 一些有趣的系统调用
2.2.1 发现有趣的系统调用(strace方法)
2.3 迷惑内核的系统表
2.4 和文件系统有关的攻击
2.4.1 如何隐藏文件
2.4.2 如何隐藏文件的内容(完全的)
2.4.3 如何隐藏文件的某一部分(一个实现原型)
2.4.4 如何重新定向或者监视文件操作
2.4.5 如何避免任何文件权限问题
2.4.6 如何使的一个有入侵工具的目录不可存取
2.4.7 如何改变CHROOT环境
2.5 和进程有关的入侵
2.5.1 如何隐藏任何进程
2.5.2 如果改变文件的执行结果
2.6 和网络(Socket)有关的入侵
2.6.1 如果控制Socket操作
2.7 TTY纪录的方法
2.8 用LKMs写病毒
2.8.1 如何让LKM病毒感染任何文件(不仅仅是模块)
2.8.2 如何让LKM病毒帮助我们进入系统
2.9 使我们的LKM不可见,而且不可卸载
2.10 其他的入侵kerneld进程的方法
2.11 如何检查当前的我们的LKM
第三部分 解决方案(给系统管理员)
3.1 LKM检测的理论和想法
3.1.1 一个使用的检测器的原形
3.1.2 一个密码保护的create_module(...)的例子
3.2 防止LKM传染者的方法
3.3 使你的程序不可以被跟踪(理论)
3.3.1 一个反跟踪的实用例子
3.4 使用LKMs来防护你的linux内核
3.4.1 为什么我们必须允许任何一个程序都拥有可执行的权限
3.4.2 链接的补丁
3.4.3 /proc权限的补丁
3.4.4 安全级别的补丁
3.4.5 底层磁盘补丁
第四部分 一些更好的想法(给hacker的)
4.1 击败系统管理员的LKM的方法
4.2 修补整个内核-或者创建Hacker-OS
4.2.1 如何在/dev/kmem中找到内核符号表
4.2.2 新的不需要内核支持的'insmod'
4.3 最后的话
第五部分 最近的一些东西:2.2.x版本的内核
5.1 对于LKM作者来说,一些主要的不同点
第六部分 最后的话
6.1 LKM传奇以及如何使得一个系统即好用又安全
6.2 一些资源链接
附录(源码)
a) LKM Infection by Stealthf0rk/SVAT
b) Heroin - the classic one
by Runar Jensen
c) LKM Hider / Socket Backdoor
by plaguez
d) LKM TTY hijacking by halflife
e) AFHRM - the monitor tool
by Michal Zalewski
f) CHROOT module trick by
FLoW/HISPAHACK
g) Kernel Memory Patching by ?
h) Module insertion without
native support by Silvio Cesare
摘自《赛迪网》 pragmatic/THC,(版本1.0)/文