关于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://drive.google.com/file/d/1lEegyJ1SBB_lDts6F3W3JPySucM3nugR/view?usp=sharing
https://github.com/ucsb-seclab/popkorn-artifact
https://github.com/eclypsium/Screwed-Drivers