Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
fisy-fuzz — 这是我于4月在Hack in the Box 2020 Lockdown Edition会议上展示的完整文件系统模糊测试框架。 | Kitploit
工具/GitHubGitHub/0xricksanchez/fisy-fuzz
漏洞分析漏洞利用模糊测试
GitHub0xricksanchez/fisy-fuzz

fisy-fuzz

这是我于4月在Hack in the Box 2020 Lockdown Edition会议上展示的完整文件系统模糊测试框架。

查看仓库
150233年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FI(le) SY(stem) - FUZZer

这是我在2020年4月Hack in the Box 2020 Lockdown Edition大会上展示的完整文件系统模糊测试框架。

  • 大会演讲
    • 大会演讲单视频
  • 大会资料

框架概览

目标

该框架的目标是发现UNIX系统(重点关注BSD系统)上的内核安全漏洞。 它是在针对FreeBSD、OpenBSD和NetBSD进行开发和重度测试的,同时也已初步支持基于Linux的主机。 我们成功发现了超过100个针对UFS和EXT文件系统的独特内核漏洞,同时也在ZFS(最近添加的支持)上获得了大量洞见。

测试用例生成器

makeFS2.py 可作为一个独立工具,用于生成各种有效的文件系统。 详细用法在大会资料仓库中进行了说明。

需求

该框架仅在Ubuntu 18.04上测试过。 它依赖于KVM、QEMU和libvirt。 Requirements.sh 会安装所有必要的依赖项。 该框架可能完全兼容最新的Ubuntu 20.04版本。 其他非基于apt的主机系统应该也能轻松支持,只需对Requirements.sh进行少量修改即可。 完成需求安装后,即可继续执行设置步骤!

设置

请参考SETUP.md。如果某些步骤不清楚,请与我联系!

开始模糊测试

启动模糊测试器只需执行:python3 run.py。 根据你的设置,可能需要sudo权限。 当一切成功启动后,你可以通过以下命令连接到tmux模糊测试会话:

root@kitploit:~
(sudo) tmux attach-session -t fsfuzzer

配置

该框架可通过脚本src/config/fuzzing_config.py进行配置:

root@kitploit:~

# [模糊测试任务规格]
# 字典列表,指定每个模糊测试实例
fuzzer = [
    {
        "name": "fuzz1",  # 用于内部记账的名称
        "fs_creator_vm": "genBox",  # 在libvirt中指定处理文件系统生成的VM名称,可跨所有实例相同
        "fuzzing_vm": "fuzzBox_0",  # 在libvirt中指定处理文件系统生成的VM名称
        "mutation_engine": "radamsa, 0",  # 要使用的变异引擎,以及变异大小(radamsa不接受大小参数)
        "target_fs": "ufs2",  # 目标文件系统
        "target_size": 15,  # 最大文件系统大小(以MB为单位)
        "populate_with_files": 10,  # 将要生成的文件数量
        "max_file_size": 1024,  # 每个生成文件的最大大小(以字节为单位)
        "enable_dyn_scaling": False,  # 动态缩放将定期增加文件系统大小
    },
]

# [凭据]
# VM的root用户凭据
# 预计所有实例的凭据相同,但不一定必须是root
user = "root"
pw = "root"

可用的变异引擎包括:

  • radamsa
  • byte_flip_seq
  • byte_flip_rnd
  • metadata

动态缩放最初是为了测试文件系统大小是否影响可能的崩溃而实现的。 我未能找到文件系统大小导致崩溃变化的触发值,因此此标志可以保持禁用。 这也可以防止长时间运行时性能下降,因为较大的文件系统需要更长的变异时间。

其余配置参数不言自明。

PoC

下面的视频快速演示了两个模糊测试实例,分别用radamsa变异的UFS2和随机字节翻转的EXT文件系统针对FreeBSD进行模糊测试。 变异的UFS文件系统直接导致崩溃,展示了你能多快让内核崩溃。

asciicast

模糊测试示例

功能集

  • 完全支持FFS、UFS、EXT和ZFS文件系统
    • 部分支持APFS
  • 完全支持FreeBSD、NetBSD和OpenBSD
    • 实验性支持Ubuntu(可能还有其他基于Debian的衍生版)
  • 通过以下方式进行变异
    • radamsa
    • 全局随机字节翻转
    • 全局随机字节序列变化
    • 仅超级块变化
  • 完全随机化的用户模拟,用于访问/更改已挂载但损坏的文件系统
  • 崩溃数据库
  • 崩溃验证
  • 通过快照重置VM
  • 全自动化模糊测试过程
  • 合理的命令行用户界面

未来工作

  • 支持更多/不同的变异引擎
  • 自动VM设置
  • 检查是否存在可用的快照,若缺失则在模糊测试前创建
  • 支持macOS
  • 性能优化
    • 使框架异步化
      • 持续生成样本,无需等待模糊测试运行
    • 在生成新样本前,对同一样本进行不同变异
    • 重新设计算法/交互以加速
  • 代码清理与重构
    • 使日志详细程度可切换

奖杯

通过此设置,我在FreeBSD、NetBSD和OpenBSD上针对UFS和EXT文件系统发现了超过100个独特的内核漏洞。 在这些崩溃中,有一些非常有趣的情况:

  • 越界读取
  • 越界写入
  • EXT中的双重错误
  • UFS中的三重错误
  • 具有超过6个独特核心转储的非确定性内核漏洞

大多数崩溃属于内核拒绝服务(DoS)。 此外,截至今天(2020年5月),遇到的大多数崩溃仍未修复。 所以,快来文件系统实现中寻找内核漏洞吧 :)。

免责声明

整个项目是“信任驱动开发”的产物,意思是它从一个简单的PoC想法开始,增长得太大太快。 因此,没有测试,而且很可能存在一些漏洞。 如果您遇到(非内核恐慌相关的)崩溃,很抱歉,但欢迎您提交PR或联系我,我会尽快修复!

联系方式

Twitter: @0xricksanchez

下载工具