该项目在 CODE BLUE 2023 上展示,论文题为 使用符号执行和污点分析增强 WDM 驱动程序漏洞挖掘,它引入了 IOCTLance,一种增强在 Windows 驱动程序模型 (WDM) 驱动程序中检测多种漏洞类型能力的工具。在针对 104 个已知存在漏洞的 WDM 驱动程序和 328 个未知驱动程序进行的全面评估中,IOCTLance 成功地在 26 个不同的驱动程序中发现了 117 个先前未知的漏洞。最终,报告了 41 个 CVE,包括 25 个拒绝服务案例、5 个访问控制不足案例和 11 个权限提升案例。
docker build .
docker run -it <IOCTLance IMAGE ID> bash
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
# 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 十六进制)
-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 中