Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
fisy-fuzz — Este es el framework completo de fuzzing del sistema de archivos que presenté en la conferencia Hack in the Box 2020 Lockdown Edition en abril. | Kitploit
Herramientas/GitHubGitHub/0xricksanchez/fisy-fuzz
Análisis de VulnerabilidadesExplotaciónFuzzing
GitHub0xricksanchez/fisy-fuzz

fisy-fuzz

Este es el framework completo de fuzzing del sistema de archivos que presenté en la conferencia Hack in the Box 2020 Lockdown Edition en abril.

Ver Repositorio
150232hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

FI(le) SY(stem) - FUZZer

Este es el framework completo de fuzzing de sistemas de archivos que presenté en la conferencia Hack in the Box 2020 Lockdown Edition en abril.

  • Charla de la conferencia
    • Video único de la charla
  • Material de la conferencia

Framework overview

Objetivo

El objetivo de este framework es descubrir bugs de seguridad del kernel en sistemas UNIX con un fuerte enfoque en sistemas BSD. Fue desarrollado y probado intensamente contra FreeBSD, OpenBSD y NetBSD, pero también tiene soporte menor para sistemas basados en Linux. Pudimos descubrir con éxito más de 100 bugs únicos del kernel para sistemas de archivos basados en UFS y EXT, obteniendo también mucho conocimiento sobre la reciente adición de ZFS.

Generador de casos de prueba

El makeFS2.py se puede utilizar como una utilidad independiente para generar diferentes sistemas de archivos válidos. El uso se explica en detalle en el repositorio de material de la conferencia

Requisitos

El framework se probó únicamente en Ubuntu 18.04. Depende de KVM, QEMU y libvirt. El Requirements.sh configura todas las dependencias necesarias. El framework puede ser completamente funcional en la última versión de Ubuntu 20.04. Otros sistemas anfitrión no basados en apt deberían ser fácilmente soportados y solo requieren cambios menores en el Requirements.sh. Una vez que hayas completado los requisitos, ¡puedes continuar con los pasos de configuración!

Configuración

Consulta el SETUP.md. Si algunos pasos no están claros, ¡por favor contacta!

¡A fuzzear!

Iniciar el fuzzer solo requiere ejecutar: python3 run.py. Dependiendo de tu configuración, puedes requerir privilegios de sudo. Cuando todo se haya iniciado correctamente, puedes conectarte a la sesión de tmux del fuzzing mediante:

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

Configuración

El framework se puede configurar con el script src/config/fuzzing_config.py:

root@kitploit:~

# [fuzzing task specs]
# List of dictionaries specifying each fuzzing instance
fuzzer = [
    {
        "name": "fuzz1",  # Some name for internal bookkeeping
        "fs_creator_vm": "genBox",  # Name as specified in libvirt for the VM handling the file system generation, can be the same across all instances
        "fuzzing_vm": "fuzzBox_0",  # Name as specified in libvirt for the VM handling the file system generation
        "mutation_engine": "radamsa, 0",  # Mutation Engine that is to be used, and size of mutation (radamsa takes no size argument)
        "target_fs": "ufs2",  # Target file system
        "target_size": 15,  # Max file system size in Megabyte
        "populate_with_files": 10,  # Amount of file that will be generated
        "max_file_size": 1024,  # Maximum file size in bytes for each generated file
        "enable_dyn_scaling": False,  # Dynamic scaling will increase the filesystem size periodically
    },
]

# [credentials]
# Credentials for the root user for the VMs
# It is expected that these are the same across all instances, but not necessarily root
user = "root"
pw = "root"

Los motores de mutación disponibles son:

  • radamsa
  • byte_flip_seq
  • byte_flip_rnd
  • metadata

El escalado dinámico se implementó inicialmente para probar si el tamaño de un sistema de archivos afecta los posibles fallos. No pude identificar un valor de activación para el tamaño del sistema de archivos donde los fallos cambien, por lo que esta bandera puede permanecer deshabilitada. Esto también evita sufrir una caída de rendimiento en ejecuciones más largas, ya que los sistemas de archivos más grandes tardan más en mutarse.

Los parámetros de configuración restantes deberían ser autoexplicativos.

PoC

El video a continuación muestra una demostración rápida donde dos instancias de fuzzing, ambas apuntando a FreeBSD, con un sistema de archivos UFS2 mutado con radamsa y un sistema de archivos EXT con bytes aleatorios volteados. El sistema de archivos UFS mutado conduce directamente a un fallo, mostrando qué tan rápido se puede hacer fallar un kernel.

asciicast

fuzz_example

Conjunto de características

  • Soporte completo para sistemas de archivos FFS, UFS, EXT y ZFS
    • Soporte parcial para APFS
  • Soporte completo para FreeBSD, NetBSD y OpenBSD
    • Soporte experimental para Ubuntu (y probablemente otros derivados basados en Debian)
  • Mutaciones mediante
    • radamsa
    • volteos aleatorios globales de bytes
    • cambios globales aleatorios en secuencias de bytes
    • cambios solo en el superbloque
  • Emulación de usuario completamente aleatorizada para acceder/cambiar un sistema de archivos roto pero montado
  • Base de datos de fallos
  • Verificación de fallos
  • Reinicio de VM mediante instantáneas
  • Proceso de fuzzing completamente automatizado
  • Interfaz de usuario razonable en la línea de comandos

Trabajo futuro

  • Soporte para más/diferentes motores de mutación
  • Configuración automatizada de VMs
  • Verificar instantáneas disponibles y si faltan, tomar algunas antes del fuzzing
  • Soporte para macOS
  • Ajustes de rendimiento
    • Hacer el framework asíncrono
      • Creación continua de muestras sin esperar la ejecución de fuzzing
    • Usar la misma muestra con diferentes mutaciones antes de generar una nueva
    • Rediseñar algoritmos/interacciones para acelerar
  • Limpieza y refactorización de código
    • Hacer que la verbosidad del registro sea conmutable

Trofeos

Con esta configuración, pude encontrar más de 100 bugs únicos del kernel en FreeBSD, NetBSD y OpenBSD para sistemas de archivos basados en UFS y EXT. Entre estos fallos, tuve un montón de muy interesantes:

  • Lecturas fuera de los límites
  • Escrituras fuera de los límites
  • Doble fallo en EXT
  • Triple fallo en UFS
  • Bug no determinista del kernel con más de 6 volcados de núcleo únicos

La mayoría de los fallos fueron DoS del kernel. Además, la mayoría de los fallos encontrados aún no están solucionados a día de hoy (mayo de 2020). ¡Así que anímate a encontrar bugs del kernel en implementaciones de sistemas de archivos :)!

Aviso legal

Todo esto fue construido con 'desarrollo impulsado por la confianza', lo que significa que creció demasiado grande y demasiado rápido a partir de una simple idea de PoC. Por lo tanto, tampoco hay pruebas y probablemente algunos bugs. Lamento si te encuentras con fallos (que no estén relacionados con pánico del kernel), pero siéntete libre de hacer un PR o contactarme y arreglaré las cosas lo antes posible.

Contacto

Twitter: @0xricksanchez

Descargar herramienta