IOCTLance:一款针对x64 WDM驱动程序的漏洞检测工具

关于IOCTLance

IOCTLance是一款针对x64 WDM驱动程序的漏洞检测工具,该工具来源于CODE BLUE 2023上展示的一个名为“使用符号执行和污点分析增强 WDM 驱动程序漏洞检测 ”的项目。该工具能够有效增强检测Windows驱动程序模型(WDM)驱动程序中各种漏洞的能力。

在对104个已知包含漏洞的WDM驱动程序和328个未知是否包含漏洞的WDM驱动程序进行全面的安全检测时,IOCTLance成功发现了26个不同驱动程序中的117个以前未发现的漏洞。扫描结果还报告了41 个CVE,其中包括25个拒绝服务漏洞、5个访问控制缺失漏洞和11个特权提升漏洞。

功能介绍

支持扫描得到目标漏洞类型

1、映射物理内存

2、可控进程句柄

3、缓冲区溢出

4、空指针引用

5、读/写可控地址

6、任意shellcode执行

7、任意wrmsr

8、任意输出

9、危险文件操作

可选自定义

1、长度限制

2、循环界限

3、总超时

4、IoControlCode 超时

5、递归

6、符号化数据部分

工具要求

angr==9.2.18

ipython==8.5.0

ipdb==0.13.9

工具下载&安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3环境。

广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/zeze-zeze/ioctlance.git

切换到项目目录中,根据需求选择安装方式即可:

cd ioctlance

源码构建

dpkg --add-architecture i386

apt-get update

apt-get install git build-essential python3 python3-pip python3-dev htop vim sudo \

                openjdk-8-jdk zlib1g:i386 libtinfo5:i386 libstdc++6:i386 libgcc1:i386 \

                libc6:i386 libssl-dev nasm binutils-multiarch qtdeclarative5-dev libpixman-1-dev \

                libglib2.0-dev debian-archive-keyring debootstrap libtool libreadline-dev cmake \

                libffi-dev libxslt1-dev libxml2-dev

 

pip install angr==9.2.18 ipython==8.5.0 ipdb==0.13.9

Docker使用

docker build .

工具帮助信息

# python3 analysis/ioctlance.py -h

usage: ioctlance.py [-h] [-i IOCTLCODE] [-T TOTAL_TIMEOUT] [-t TIMEOUT] [-l LENGTH] [-b BOUND]

                    [-g GLOBAL_VAR] [-a ADDRESS] [-e EXCLUDE] [-o] [-r] [-c] [-d]

                    path

 

positional arguments:

  path                  包含待分析驱动程序的目录或文件路径

 

optional arguments:

  -h, --help            显示帮助信息和退出

  -i IOCTLCODE, --ioctlcode IOCTLCODE

                        分析指定的IoControlCode (例如:22201c)

  -T TOTAL_TIMEOUT, --total_timeout TOTAL_TIMEOUT

                        符号执行的总超时 (默认为1200, 0为不限制)

  -t TIMEOUT, --timeout TIMEOUT

                        分析每一个IoControlCode的超时 (默认为40, 0为不限制)

  -l LENGTH, --length LENGTH

                        限制LengthLimiter的指令数量 (默认为0, 0为不限制)

  -b BOUND, --bound BOUND

                        LoopSeer边界 (默认为0, 0为不限制)

  -g GLOBAL_VAR, --global_var GLOBAL_VAR

                        .data字段中的字节数据量 (默认为0 hex)

  -a ADDRESS, --address ADDRESS

                        ioctl句柄地址 (例如:140005c20)

  -e EXCLUDE, --exclude EXCLUDE

                        要排除的函数地址,用逗号分隔 (例如:140005c20,140006c20)

  -o, --overwrite       如果x.sys已被分析则覆盖x.sys.json (默认为False)

  -r, --recursion        递归检测模式 (默认为False)

  -c, --complete         获取完整的基状态 (默认为False)

  -d, --debug           分析过程中输出调试信息 (默认为False)

执行安全评估

# python3 evaluation/statistics.py -h

usage: statistics.py [-h] [-w] path

 

positional arguments:

  path        目标目录或文件路径

 

optional arguments:

  -h, --help    显示帮助信息和退出

  -w, --wdm   将WDM驱动程序拷贝至<path>/wdm

许可证协议

本项目的开发与发布遵循GPL-3.0开源许可协议。

项目地址

IOCTLance:【GitHub传送门

参考资料

https://codeblue.jp/2023/en/

https://drive.google.com/file/d/1lEegyJ1SBB_lDts6F3W3JPySucM3nugR/view?usp=sharing

GitHub - ucsb-seclab/popkorn-artifact

GitHub - eclypsium/Screwed-Drivers: "Screwed Drivers" centralized information source for code references, links, etc.

GitHub - koutto/ioctlbf: Windows Kernel Drivers fuzzer

LOLDrivers

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 19:46:03       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 19:46:03       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 19:46:03       45 阅读
  4. Python语言-面向对象

    2024-07-21 19:46:03       55 阅读

热门阅读

  1. [强化学习马里奥 MarioRL]-- 环境ENV 3

    2024-07-21 19:46:03       17 阅读
  2. ubuntu 上安装中文输入法

    2024-07-21 19:46:03       17 阅读
  3. 记一次通过udev自动加在i2c接口触摸驱动过程

    2024-07-21 19:46:03       16 阅读
  4. 优选算法之滑动窗口(下)

    2024-07-21 19:46:03       18 阅读
  5. Linux常用命令(备忘自查)

    2024-07-21 19:46:03       15 阅读
  6. 计算机视觉发展历程

    2024-07-21 19:46:03       17 阅读
  7. python中的fire和Linux shell中的参数传递

    2024-07-21 19:46:03       14 阅读