只是笔记~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第一个工具 查询 进程虚拟空间内存 在根目录下 运行
(补充 open solaris 可以用 pmap -x <pid> OS X 操作系统中可以用vmmap <pid> 或者vmmap <procname>)
windows 用 Sysinternals Suite 不仅提供了 vmmap 还提供了很多有用的系统和进程的分析工具
http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
Linux 下 后补~_~ 先学习 WINDOWS linux 跳过~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
书籍代码在 http://www.attackingthecore.com/codex.php 可以下载
内核漏洞分类:
1 未初始化的/未验证的已损坏的指针解引用
NULL 指针解引用,Linux 下 以下划线开头的函数 是不会对提供的目标用户指针 进行检查验证的。
这个漏洞使得用户将一个内核地址传递到内核,从而直接访问/修改内核内存
2 内存破坏漏洞
是由程序中的错误操作 重写了内核区域的内存导致的。
1)内核栈漏洞,与内核态运行的进行+线程相关
内核态栈的功能 和 典型的用户态栈的功能一样,细微差异是通常有限制 x86 是4KB 8KB,因此采用那种使用近可能少的局部
变量的方式进行内核编程,并且所有进程的内核栈都是一个相同的虚拟地址空间的一部分,开始于不同的虚拟地址也占据不同的虚拟地址
有些操作系统如LINUX使用所谓的中断栈。这个栈用于处理硬件产生的中断,以分流内核栈的压力(内核栈很小)
2) 内核堆漏洞 内核区域中分配空间的小型对象+临时区域有关
内存的基本单元式页帧,可能大小不同,但最小不低于4KB 。 可能影响内核堆的漏洞往往是缓冲区溢出造成的。
3 整数误用
整数溢出 + 符号转换错误,整数和其他变量一样是有大小的,整数可以是有符号的,既能表示正整数,也能表示负整数,也可以是无符号的(正整数)
不容易利用,能够在某些情况下导致另外一类漏洞--内存溢出。
将一个超出了整数数值存储范围的数赋值给饿了一个整数变量。 导致无符号数数值改变,有符号数 改变符号。
发生在不加控制的加和乘运算中,堆参加运算的参数不加验证就极易发生此类问题。
4 竞争条件
工具Dtrace已先后被移植到FreeBSD、NetBSD及Max OS X等操作系统上
说明:http://blog.csdn.net/dingyilong/article/details/1900524
5 逻辑BUG
引用计数器溢出:共享资源最后一次引用关闭后一定腰释放资源,这就需要计数器了
便携的,可插拔的外部设备的技术叫做即插即用技术/热插拔技术,靠自动检测技术来完成的,当然,硬件设备也可以被劫持+恶意篡改。
6 内核生产的用户态漏洞