内核漏洞的利用与防范_学习

只是笔记~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

第一个工具 查询 进程虚拟空间内存   在根目录下 运行    


(补充 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  内核生产的用户态漏洞





















原文地址:https://www.cnblogs.com/zcc1414/p/3982333.html