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

news2024/9/20 14:37:38

关于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1943691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数模·插值和拟合算法

插值 将离散的点连成曲线或者线段的一种方法 题目中有"任意时刻任意的量"时使用插值&#xff0c;因为插值一定经过样本点 插值函数的概念 插值函数与样本离散的点一一重合 插值函数往往有多个区间&#xff0c;多个区间插值函数样态不完全一样&#xff0c;简单来说就…

动态住宅IP和静态住宅IP主要区别是什么?

在互联网连接的世界中&#xff0c;IP地址是我们识别和访问网络资源的关键。住宅IP地址&#xff0c;特别是动态住宅IP和静态住宅IP&#xff0c;是两种不同类型的IP分配方式&#xff0c;它们在使用和功能上存在显著差异。 1. IP地址的稳定性 动态住宅IP&#xff1a;这种IP地址是…

redis命令超详细

redis数据结构介绍 redis是一个key-value的数据库&#xff0c;key一般是String类型&#xff0c;但是value的类型有很多&#xff1a; 基本类型&#xff1a;String,Hash,List,Set,SortedSet(可排序的不能重复的集合) 特殊类型&#xff1a;GEO,BitMap,HyperLog等 文档官网&…

CSS3雷达扫描效果

CSS3雷达扫描效果https://www.bootstrapmb.com/item/14840 要创建一个CSS3的雷达扫描效果&#xff0c;我们可以使用CSS的动画&#xff08;keyframes&#xff09;和transform属性。以下是一个简单的示例&#xff0c;展示了如何创建一个类似雷达扫描的动画效果&#xff1a; HTM…

Python -numpy 基础-------1

NumPy&#xff08;Numerical Python&#xff09;是Python的一个开源数值计算扩展库。它支持大量的维度数组与矩阵运算&#xff0c;此外也针对数组运算提供大量的数学函数库。NumPy的数组&#xff08;ndarray&#xff09;对象是一个快速且灵活的多维数组对象&#xff0c;用于存储…

power bi-all 相关函数

power bi-all 相关函数 1. all 函数2. allselected 函数3. allexcept&#xff08;&#xff09;函数4. allnoblankrow() 函数 1. all 函数 作用&#xff1a; 清除筛选返回&#xff1a;清除筛选后的表格或列总结 当all参数为表时&#xff0c;忽略所有的筛选条件&#xff0c;无论…

github连接不上的解决方案(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

鸿蒙仓颉语言【模块module】

module 模块 模块配置文件&#xff0c;这里指项目的modules.json 文件&#xff0c;用于描述代码项目的基础元属性。 {"name": "file name", //当前项目的名称"description": "项目描述", //项目描述"version": "1.0…

十、Docker版Redis集群搭建

目录 一、3主3从Redis集群配置 1、新建6个docker容器实例 2、进入容器redis-node-1并为6台机器构建集群关系 3、以6381为切入点&#xff0c;查看集群状态 二、主从容错切换迁移案例 1、数据读写存储 2、假如6381宕机了&#xff0c;他的从库6386会不会切换 三、主从扩容案…

(C语言) 文件读写基础

文章目录 &#x1f5c2;️前言&#x1f4c4;ref&#x1f4c4;访问标记&#x1f5c3;️文件访问标记 &#x1f5c2;️Code&#x1f4c4;demo&#x1f4c4;分点讲解&#x1f5c3;️打开/关闭&#x1f5c3;️写&#x1f5c3;️读 &#x1f5c2;️END&#x1f31f;关注我 &#x1f…

Linux-socket详解

前言 OSI七层模型和TCP/IP四层模型在这里就不说了。 套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将IO插入到网络中&#xff0c;并与网络…

Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换

什么是管道&#xff08;Pipe&#xff09;&#xff1f; 在 Nest.js 中&#xff0c;管道&#xff08;Pipelines&#xff09; 是一种强大的功能&#xff0c;用于预处理进入控制器方法的请求数据&#xff0c;如请求体、查询参数、路径参数等。管道允许开发者在数据到达控制器方法之…

使用GoAccess进行Web日志可视化

运行网站的挑战之一是了解您的 Web 服务器正在做什么。虽然各种监控应用程序可以在您的服务器以高负载或页面响应缓慢运行时提醒您&#xff0c;但要完全了解正在发生的事情&#xff0c;唯一的方法是查看 Web 日志。阅读日志数据页面并了解正在发生的事情可能需要花费大量时间。…

慎用 readFileSync 读取大文件, 教你一招如何优雅处理大文件读取

我们在编写 nodejs 服务的时候&#xff0c;有时候需要使用 fs.readFileSync api 去读取文件&#xff0c;但是使用 fs.readFileSync 会将文件读取在内存中&#xff0c;如果遇到了文件很大时&#xff0c;fs.readFileSync 会占据服务器大量的内存&#xff0c;即使读取的文件比较小…

代发考试战报:7月16号武汉参加HCIP-Transmission传输 H31-341考试通过

代发考试战报&#xff1a;7月16号武汉参加HCIP-Transmission传输 H31-341考试通过&#xff0c;&#xff0c;有2个题好像没见到过&#xff0c;其他都是题库里的原题&#xff0c;题库很准&#xff0c;这个题库也不是一直不变的&#xff0c;也没规律可循什么时候变题&#xff0c;哪…

【TAROT学习日记】韦特体系塔罗牌学习(6)——教皇 THE HIEROPHANT

韦特体系塔罗牌学习&#xff08;6&#xff09;——教皇 THE HIEROPHANT 目录 韦特体系塔罗牌学习&#xff08;6&#xff09;——教皇 THE HIEROPHANT牌面分析1. 基础信息2. 图片元素 正位牌意1. 关键词/句2.爱情婚姻3. 学业事业4. 人际财富5. 其他象征意 逆位牌意1. 关键词/句2…

PostgreSQL 中如何实现数据的批量插入和更新?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何实现数据的批量插入和更新&#xff1f;一、批量插入数据1. 使用 INSERT INTO 语句结…

PSINS工具箱函数介绍——r2d

介绍工具箱里面r2d这个小函数的作用。 程序源码 function deg r2d(rad) % Convert angle unit from radian to degree % % Prototype: deg r2d(rad) % Input: rad - angle in radian(s) % Output: deg - angle in degree(s) % % See also r2dm, r2dms, d2r, dm2r, dms2r% …

运维锅总详解VLAN

本文介绍了VLAN作用、公司多个部门VLAN举例、VLAN间路由、VLAN协议控制字段解释及工作流程、VLAN历史演进等方面对VLAN技术进行详细分析。希望对您理解VLAN有所帮助&#xff01; 一、VLAN作用 VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;…

FreeSWITCH 1.10.10 简单图形化界面26-在网页上播放SIP设备视频

​ FreeSWITCH 1.10.10 简单图形化界面26-在网页上播放SIP设备视频 1、前言2、大概流程3、测试环境4、安装流媒体服务器5、设置流媒体服务器接口6、简单写个web接口7、测试一下1、web播放在线播放器1在线播放器2本地video控件 2、vlc播放vlc播放rtmpvlc播放rtsp 8、总结 1、前…