Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
fisy-fuzz — Esta é a estrutura completa de fuzzing de sistema de arquivos que apresentei na conferência Hack in the Box 2020 Lockdown Edition em abril. | Kitploit
Ferramentas/GitHubGitHub/0xricksanchez/fisy-fuzz
Análise de VulnerabilidadesExploraçãoFuzzing
GitHub0xricksanchez/fisy-fuzz

fisy-fuzz

Esta é a estrutura completa de fuzzing de sistema de arquivos que apresentei na conferência Hack in the Box 2020 Lockdown Edition em abril.

Ver Repositório
150232há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

FI(le) SY(stem) - FUZZer

Este é o framework completo de fuzzing de sistema de arquivos que apresentei na conferência Hack in the Box 2020 Lockdown Edition em Abril.

  • Palestra da Conferência
    • Vídeo Único da Palestra
  • Material da Conferência

Visão geral do framework

Objetivo

O objetivo deste framework é descobrir bugs de segurança no kernel em sistemas UNIX com forte foco em sistemas BSD. Foi desenvolvido e amplamente testado contra FreeBSD, OpenBSD e NetBSD, mas já possui algum suporte menor para sistemas baseados em Linux. Conseguimos descobrir com sucesso mais de 100 bugs únicos de kernel para sistemas de arquivos baseados em UFS e EXT, enquanto também obtivemos muitos insights sobre a adição recente do ZFS.

Gerador de casos de teste

O makeFS2.py pode ser usado como um utilitário independente para gerar diferentes sistemas de arquivos válidos. O uso é explicado em detalhes no repositório do material da conferência

Requisitos

O framework foi testado apenas no Ubuntu 18.04. Ele depende de KVM, QEMU e libvirt. O Requirements.sh configura todas as dependências necessárias. O framework pode ser totalmente funcional na versão mais recente do Ubuntu 20.04. Outros sistemas host não baseados em apt devem ser facilmente suportados e requerem apenas pequenas alterações no Requirements.sh. Depois de cumprir os requisitos, você pode continuar com as etapas de configuração!

Configuração

Consulte o SETUP.md. Se alguma etapa não estiver clara, entre em contato!

Fuzz it!

Iniciar o fuzzer requer apenas a execução de: python3 run.py. Dependendo da sua configuração, você pode precisar de privilégios sudo. Quando tudo iniciar com sucesso, você pode anexar à sessão tmux de fuzzing através de:

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

Configuração

O framework pode ser configurado com o script src/config/fuzzing_config.py:

root@kitploit:~

# [especificações das tarefas de fuzzing]
# Lista de dicionários especificando cada instância de fuzzing
fuzzer = [
    {
        "name": "fuzz1",  # Algum nome para contabilidade interna
        "fs_creator_vm": "genBox",  # Nome conforme especificado no libvirt para a VM que gerencia a geração do sistema de arquivos, pode ser o mesmo em todas as instâncias
        "fuzzing_vm": "fuzzBox_0",  # Nome conforme especificado no libvirt para a VM que gerencia a geração do sistema de arquivos
        "mutation_engine": "radamsa, 0",  # Mecanismo de mutação a ser usado e tamanho da mutação (radamsa não aceita argumento de tamanho)
        "target_fs": "ufs2",  # Sistema de arquivos alvo
        "target_size": 15,  # Tamanho máximo do sistema de arquivos em Megabyte
        "populate_with_files": 10,  # Quantidade de arquivos que serão gerados
        "max_file_size": 1024,  # Tamanho máximo do arquivo em bytes para cada arquivo gerado
        "enable_dyn_scaling": False,  # O escalonamento dinâmico aumentará o tamanho do sistema de arquivos periodicamente
    },
]

# [credenciais]
# Credenciais para o usuário root nas VMs
# Espera-se que sejam as mesmas em todas as instâncias, mas não necessariamente root
user = "root"
pw = "root"

Os mecanismos de mutação disponíveis são:

  • radamsa
  • byte_flip_seq
  • byte_flip_rnd
  • metadata

O escalonamento dinâmico foi implementado inicialmente para testar se o tamanho de um sistema de arquivos afeta as possíveis falhas. Não consegui identificar um valor de gatilho para o tamanho do sistema de arquivos onde as falhas mudam, então esta flag pode permanecer desabilitada. Isso também evita sofrer uma queda de desempenho em execuções mais longas, pois sistemas de arquivos maiores levam mais tempo para sofrer mutação.

Os parâmetros de configuração restantes devem ser autoexplicativos.

PoC

O vídeo abaixo mostra uma demonstração rápida onde duas instâncias de fuzzing, ambas visando FreeBSD, com um sistema UFS2 mutado por radamsa e um sistema EXT com bytes aleatórios invertidos. O sistema de arquivos UFS mutado leva diretamente a uma falha, demonstrando a rapidez com que é possível causar uma falha no kernel.

asciicast

exemplo_fuzz

Conjunto de funcionalidades

  • Suporte total para sistemas de arquivos FFS, UFS, EXT e ZFS
    • Suporte parcial para APFS
  • Suporte total para FreeBSD, NetBSD e OpenBSD
    • Suporte experimental para Ubuntu (e provavelmente outros derivados baseados em Debian)
  • Mutações via
    • radamsa
    • inversão global aleatória de bytes
    • alterações globais aleatórias de sequência de bytes
    • alterações apenas no superbloco
  • Emulação de usuário totalmente aleatória para acessar/alterar sistema de arquivos montado mas quebrado
  • Banco de dados de falhas
  • Verificação de falhas
  • Reinicialização de VM via snapshots
  • Processo de fuzzing totalmente automatizado
  • Interface de usuário razoável na linha de comando

Trabalho Futuro

  • Suporte a mais/diferentes mecanismos de mutação
  • Configuração automatizada de VM
  • Verificar se há snapshots disponíveis e, se faltarem, criar alguns antes do fuzzing
  • Suporte para macOS
  • Ajustes de desempenho
    • Tornar o framework assíncrono
      • Criação contínua de amostras sem esperar pela execução do fuzzing
    • Usar a mesma amostra com diferentes mutações antes de gerar uma nova
    • Reestruturar algoritmos/interações para ganho de velocidade
  • Limpeza e refatoração do código
    • Tornar a verbosidade do logging alternável

Troféus

Com esta configuração, consegui encontrar mais de 100 bugs únicos de kernel no FreeBSD, NetBSD e OpenBSD para sistemas de arquivos baseados em UFS e EXT. Entre essas falhas, tive várias muito interessantes:

  • Leituras fora dos limites
  • Escritas fora dos limites
  • Dupla Falha no EXT
  • Tripla Falha no UFS
  • Bug de kernel não determinístico com > 6 core dumps únicos

A maioria das falhas foram DoS do kernel. Além disso, a maioria das falhas encontradas ainda não foram corrigidas até hoje (Maio de 2020). Então vá em frente e encontre bugs de kernel em implementações de sistemas de arquivos :).

Aviso

Tudo isso foi construído com 'desenvolvimento orientado pela confiança', o que significa que cresceu rápido demais e ficou grande demais a partir de uma simples ideia de PoC. Portanto, também não há testes e muito provavelmente alguns bugs. Peço desculpas se você se deparar com falhas (que não sejam relacionadas a kernel panic), mas fique à vontade para fazer um PR ou me contatar e corrigirei as coisas o mais rápido possível!

Contato

Twitter: @0xricksanchez

Baixar ferramenta