Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
manul — Manul é um fuzzer paralelo guiado por cobertura para binários de código aberto e blackbox no Windows, Linux e MacOS. | Kitploit
Ferramentas/GitHubGitHub/mxmssh/manul
Análise Dinâmica (Sandboxing)Análise de VulnerabilidadesFuzzingAnálise de Binários
GitHubmxmssh/manul

manul

Manul é um fuzzer paralelo guiado por cobertura para binários de código aberto e blackbox no Windows, Linux e MacOS.

Ver Repositório
3356720há 6 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

Manul

Travis AppVeyor

Logo

O Manul é um fuzzer paralelo guiado por cobertura para binários de código aberto e caixa-preta no Windows, Linux e macOS (beta) escrito em Python puro.

Início Rápido

pip3 install psutil
git clone https://github.com/mxmssh/manul
cd manul
mkdir in
mkdir out
echo "AAAAAA" > in/test
python3 manul.py -i in -o out -n 4 "linux/test/test_afl @@"

Instalando o Radamsa

sudo apt-get install gcc make git wget
git clone https://gitlab.com/akihe/radamsa.git && cd radamsa && make && sudo make install

Não há necessidade de instalar o radamsa no Windows, o Manul é distribuído com a biblioteca nativa do radamsa nesta plataforma.

Lista de CVEs Públicas

CVE IDsProdutoDescobridor
CVE-2019-9631 CVE-2019-7310 CVE-2019-9959PopplerMaksim Shudrak
CVE-2018-17019 CVE-2018-16807 CVE-2019-12175Bro/ZeekMaksim Shudrak

Se você conseguiu encontrar um novo bug usando o Manul, entre em contato comigo e eu o adicionarei na lista.

Demonstração

Demonstração Rápida

Dependências

  1. Python3 (Python2 está obsoleto desde 1º de janeiro de 2020, mas o Manul ainda deve funcionar bem no Python2)
  2. psutil
  3. pywin32 (pip install pywin32) na plataforma Windows (necessário apenas para o modo de persistência DBI).

Fuzzing guiado por cobertura

Atualmente, o Manul suporta dois tipos de instrumentação: baseada em AFL (afl-gcc, afl-clang e afl-clang-fast) e DBI.

Fuzzing guiado por cobertura (modo de instrumentação AFL)

Instrumente seu alvo com afl-gcc ou afl-clang-fast e Address Sanitizer (recomendado para melhores resultados). Por exemplo:

CC=afl-gcc CXX=afl-g++ CFLAGS=-fsanitize=address CXXFLAGS=-fsanitize=address cmake <path_to_your_target>
make -j 8
USE_ASAN=1 CC=afl-clang-fast CXX=afl-clang-fast++ cmake <path_to_your_target>
make -j 8

Veja estas instruções para mais detalhes.

Fuzzing guiado por cobertura no modo DBI

Você não precisa instrumentar seu alvo neste modo, mas precisa baixar a versão mais recente do framework DynamoRIO para Windows ou Linux.

O Manul é distribuído com clientes pré-compilados x86/x64 para Linux e Windows. Você pode encontrá-los nas seguintes pastas:

linux/dbi_32|dbi_64/libbinafl.so (DynamoRIO client)
win/dbi_32|dbi_64/binafl.dll

Infelizmente, o DynamoRIO não é oficialmente suportado no MacOS.

Usando o DynamoRIO para fuzzear binários caixa-preta

Você pode encontrar os pacotes de lançamento mais recentes do DynamoRIO na página de download do DynamoRIO.

Você precisa descomentar as seguintes linhas no arquivo manul.config e fornecer o caminho correto para o lançador e cliente do DynamoRIO.

# Choose DBI framework to provide coverage back to Manul ("dynamorio" or "pin"). Example dbi = dynamorio
dbi = dynamorio
# If dbi parameter is not None the path to dbi engine launcher and dbi client should be specified.
dbi_root = /home/max/DynamoRIO/bin64/drrun
dbi_client_root = /home/max/manul/linux/dbi_64/libbinafl.so
dbi_client_libs = None

Além disso, você pode aumentar o desempenho da sua campanha de fuzzing caixa-preta usando fuzzing persistente em memória. Neste modo, você deve instruir o Manul a instrumentar uma função específica (sim, você precisa encontrá-la desmontando seu binário) e ele a executará em um loop descomentando as seguintes linhas:

dbi_persistence_mode = 1
dbi_target_module = afl_test
dbi_target_method = open_file
#dbi_target_offset = 0x3198 # optionally you can provide offset of this function instead of name
dbi_fuzz_iterations = 1000

Os autores do winAFL fornecem uma explicação muito boa sobre como isso realmente funciona aqui. O Manul usa uma grande parte do código da biblioteca de instrumentação do winAFL para se comunicar e instrumentar um alvo.

NOTA IMPORTANTE: Você deve usar o lançador de 32 bits e o cliente de 32 bits para fuzzear binários de 32 bits e o lançador de 64 bits e o cliente de 64 bits para binários de 64 bits!

Compilando a biblioteca do cliente DynamoRIO

Para compilar a biblioteca de instrumentação, você precisa usar a versão mais recente do DynamoRIO. O código fonte da biblioteca de instrumentação pode ser encontrado em dbi_clients_src localizado na pasta principal do Manul.

64-bit Linux

cd dbi_clients_src
wget <DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz> - download the latest DynamoRIO
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-x86_64-Linux-X.XX.XXXX-X.tar.gz/cmake
make
32-bit Linux
cd dbi_clients_src
wget <DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz> - download the latest DynamoRIO
tar xvf DynamoRIO-x86_64-X.XX.XXXX-X.tar.gz
mkdir client_64
cd client_64
CFLAGS=-m32 CXXFLAGS=-m32 cmake ../dr_cov/ -DDynamoRIO_DIR=/home/max/manul/dbi_clients_src/DynamoRIO-i386-Linux-X.XX.XXXX-X.tar.gz/cmake
make

No Windows, a maneira mais fácil de compilar a biblioteca seria instalar o Visual Studio (testado nas versões 2017 e 2013), iniciar o VS20XX Cross Tools Command Prompt e executar os seguintes comandos:

64-bit Windows
cd dbi_clients_src
<Download and extract the latest version of DynamoRIO>
mkdir client_64
cd client_64
cmake -G"Visual Studio 15 Win64" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (or just Debug if needed)
32-bit Windows
cd dbi_clients_src
<Download and extract the latest version of DynamoRIO>
mkdir client_32
cd client_32
cmake -G"Visual Studio 15" ..\dr_cov\ -DDynamoRIO_DIR=C:\Users\max\manul\dbi_clients_src\DynamoRIO-Windows-XXXX.XX.X.X\cmake
cmake --build . --config RelWithDebInfo (or just Debug if needed)

Usando Intel PIN para fuzzear binários caixa-preta no Linux

O Manul inicialmente suportava fuzzing guiado por cobertura com Intel PIN, mas devido ao baixo desempenho e alta sobrecarga de manutenção, isso não é mais suportado.

Argumentos da Linha de Comando

As opções mais usadas podem ser fornecidas via linha de comando. Mais opções são suportadas usando o arquivo de configuração (manul.config).

Example: python3 manul.py -i corpus -o out_dir -n 40 "target @@"

argumentos posicionais:
  target_binary  O binário alvo e opções a serem executados (não esqueça de incluir aspas, ex.: "target e @@").

argumentos opcionais:
  -h, --help     mostra esta mensagem de ajuda e sai
  -n NFUZZERS    Número de fuzzers paralelos
  -s             Executar fuzzing burro (sem instrumentação de código)
  -c CONFIG      Caminho para o arquivo de configuração com opções adicionais (veja a seção Opções do Arquivo de Configuração abaixo)
  -r             Restaurar sessão anterior

Parâmetros obrigatórios:
  -i INPUT       Caminho para o diretório com o corpus inicial
  -o OUTPUT      Caminho para o diretório de saída

Opções do Arquivo de Configuração

Baixar ferramenta