• 内核漏洞利用技术


    有漏洞的驱动exploitme.sys

    在Ring3可以通过设备名称“\.ExploitMe”打开设备,得到设备句柄,进而使用DeviceIoControl函数调用驱动的派遣例程,与驱动进行交互。

    输入、输出地址都是由Ring3程序指定,读写是在Ring0中完成。因此Ring3可以将输出缓冲区地址指定为内核高端地址,可以篡改内核中任意地址的数据。

    内核漏洞利用思路

    能够篡改系统内核内存数据或执行Ring0 Shellcode的漏洞,主要为三种:任意地址写任意数据,固定地址写任意数据,任意数据和任意地址写固定数据类型的内核漏洞。

    内核漏洞利用方法

    1、篡改内核内存数据。2、执行Ring0 Shellcode

     ProfileSource不为ProfileTime或者ProfileAlignmentFixup 就是我们想要的了

    内核漏洞利用实战与编程

    Explitme.sys漏洞:存在于对IOCTL_EXPLOIT_ME的IoControlCode处理过程。由于IOCTL_EXPLOIT_ME最后两位为3,代表所使用的通信方式为METHOD_NEITHER方式,派遣例程中没有使用ProbeForRead和ProbeForWrite探测输入输出地址是否可读,可写。

    1.获取HalDispatchTable表地址x

      HalDispatch Table 是由内核模块导出的。得到他在内核中的准确地址,首先要得到内核模块的基地址,再加上HalDispatchTable与内核模块基址的偏移

    2.在0x0处申请一段内存,并写入Ring0 Shellcode

    3.利用漏洞向地址y写入0x0

    4.调用NtQueryIntervalProfile函数

    5.Ring0 Shellcode被执行

    Ring0 Shellcode的编写

    提权到SYSTEM:

    恢复内核Hook/Inline Hook:

    添加调用门,中断门,任务门,陷阱门《rootkit ring3进ring0之门系列》 四篇:

    内核方面 以后涉及到了,再学吧

  • 相关阅读:
    如何开发一款浏览器[转]
    粒子滤波实现物体跟踪的算法原理:
    Canny边缘检测(转)
    [转载] 图像处理常用边缘检测算子总结
    [转载]Sobel边缘检测
    Android读取手机联系人信息
    【Android】动态注册广播接收器
    Android对话框的生成
    C语言基础丨(六)程序结构——顺序结构【1】
    C语言丨指针基础知识详解
  • 原文地址:https://www.cnblogs.com/Ccmr/p/7363474.html
Copyright © 2020-2023  润新知