zoukankan      html  css  js  c++  java
  • 内核漏洞的利用与防范_学习

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

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


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





















  • 相关阅读:
    apple苹果产品国行和港行的区别
    iOS ifdef ifndef endif
    objectiveC【语法】修饰符 static extern const
    iOS关于Xcode上的Other linker flags
    win7 64位旗舰版下载
    关于ios 和 android 录音(语音)对聊文件格式问题
    关于 NSData 的数据类型(2进制,16进制之间)及深入剖析
    iOS调用系统相册、相机 显示中文标题
    xcode各个版本下载 xcode7 xcode6 xcode5
    IOS开发之----全局变量extern的使用
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982333.html
Copyright © 2011-2022 走看看