Skip to content
KitploitKITPLOIT
ツールブログ
Log in
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
manul — Manulは、Windows、Linux、MacOS上のオープンソースおよびブラックボックスバイナリ向けのカバレッジガイド並列ファザーです。 | Kitploit
ツール/GitHubGitHub/mxmssh/manul
動的分析 (サンドボックス)脆弱性分析ファジングバイナリ解析
GitHubmxmssh/manul

manul

Manulは、Windows、Linux、MacOS上のオープンソースおよびブラックボックスバイナリ向けのカバレッジガイド並列ファザーです。

リポジトリを見る
33567206年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Manul

Travis AppVeyor

ロゴ

Manulは、Windows、Linux、macOS(ベータ版)上でオープンソースおよびブラックボックスバイナリ向けの、カバレッジガイド付き並列ファザーです。純粋なPythonで書かれています。

クイックスタート

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 @@"

Radamsaのインストール

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

Windowsにradamsaをインストールする必要はありません。Manulは、このプラットフォームではradamsaネイティブライブラリと共に配布されています。

公開CVEの一覧

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

Manulを使用して新しいバグを見つけた場合は、私に連絡してください。リストに追加します。

デモ

簡単なデモ

依存関係

  1. Python3(Python2は2020年1月1日以降非推奨ですが、ManulはPython2でも問題なく動作するはずです)
  2. psutil
  3. pywin32(pip install pywin32)Windowsプラットフォーム(DBI永続モードのみ必要)。

カバレッジガイド付きファジング

現在、Manulは2種類のインストルメンテーションをサポートしています:AFLベース(afl-gcc、afl-clang、afl-clang-fast)とDBIです。

カバレッジガイド付きファジング(AFLインストルメンテーションモード)

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

詳細はこちらの手順を参照してください。

DBIモードでのカバレッジガイド付きファジング

このモードではターゲットをインストルメントする必要はありませんが、WindowsまたはLinux向けの最新バージョンのDynamoRIOフレームワークをダウンロードする必要があります。

Manulは、LinuxおよびWindows向けにx86/x64プリコンパイル済みクライアントと共に配布されています。以下のフォルダにあります:

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

残念ながら、DynamoRIOはMacOSでは公式にサポートされていません。

DynamoRIOを使用したブラックボックスバイナリのファジング

最新のDynamoRIOリリースパッケージはDynamoRIOダウンロードページにあります。

manul.configファイル内の以下の行をコメント解除し、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

さらに、永続的なインメモリファジングを使用することで、ブラックボックスファジングキャンペーンのパフォーマンスを向上させることができます。このモードでは、特定の関数をインストルメントするようにManulに指示し(はい、バイナリを逆アセンブルしてそれを見つける必要があります)、以下の行をコメント解除することでループで実行します:

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

winAFLの作者は、実際の仕組みについてこちらで非常に良い説明を提供しています。Manulは、winAFLインストルメンテーションライブラリのコードの大部分を使用して、ターゲットと通信し、インストルメントします。

重要なお知らせ:32ビットバイナリをファズするには32ビットランチャーと32ビットクライアントを使用し、64ビットバイナリには64ビットランチャーと64ビットクライアントを使用してください!

DynamoRIOクライアントライブラリのコンパイル

インストルメンテーションライブラリをコンパイルするには、DynamoRIOの最新バージョンを使用する必要があります。インストルメンテーションライブラリのソースコードは、Manulメインフォルダにあるdbi_clients_srcにあります。

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

On Windows, the easiest way to compile the library would be to install Visual Studio (tested on 2017 & 2013 versions), launch VS20XX Cross Tools Command Prompt and run the following commands:

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)

Intel PINを使用したLinuxでのブラックボックスバイナリのファジング

Manulは当初Intel PINカバレッジガイド付きファジングをサポートしていましたが、パフォーマンスが低く、メンテナンスのオーバーヘッドが高いため、現在はサポートされていません。

コマンドライン引数

最も頻繁に使用されるオプションはコマンドラインで指定できます。より多くのオプションは設定ファイル(manul.config)を使用してサポートされています。

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

positional arguments:
  target_binary  The target binary and options to be executed (don't forget to include quotes e.g. "target e @@").

optional arguments:
  -h, --help     show this help message and exit
  -n NFUZZERS    Number of parallel fuzzers
  -s             Run dumb fuzzing (no code instrumentation)
  -c CONFIG      Path to config file with additional options (see Configuration File Options section below)
  -r             Restore previous session

Required parameters:
  -i INPUT       Path to directory with initial corpus
  -o OUTPUT      Path to output directory

設定ファイルオプション

Manulはデフォルトのmanul.configファイルと共に配布されており、ユーザーはサポートされているすべてのオプションと使用例を見つけることができます。オプションは次の形式で指定する必要があります:Format: <option_name> = <value>。記号#を使用して行を無視できます。

辞書

dict = /home/max/dictionaries/test.dict。AFL変異戦略では、ユーザーがファズファイル内のランダムな場所に挿入できるカスタムトークンのリストを指定できます。Manulはこのオプションを介してこの機能をサポートしています(絶対パスが推奨されます)。

変異子の重み

mutator_weights=afl:7,radamsa:2,my_mutator:1。変異子の重みにより、ユーザーはManulに対して、特定のファザーが10回の実行あたり何回の変異を実行するかを指示できます。この例では、AFL変異子が7/10の変異で実行され、Radamsaが2/10、カスタムmy_mutatorが1/10の割合になります。特定の変異子を無効にする場合は、重みを0に設定します(例:mutator_weights=afl:0,radamsa:1,my_mutator:9)。

決定論的シード(Radamsaオプション)

deterministic_seed = False|True。Trueを指定すると、Radamsaの変異が決定論的になり、Manulの実行ごとに同じ出力が生成されます。

スレッドごとのサマリー表示

print_per_thread = False|True。このオプションを有効にすると、Manulは全体のサマリーの代わりに、実行中の各スレッドのサマリーを表示します。

揮発性パスの無効化

disable_volatile_bytes = False|True このオプションを有効にすると、Manulは揮発性パスをブラックリストに登録しません。

AFLのフォークサーバー(UNIXのみ)

forkserver_on = False|True AFLのフォークサーバーを有効または無効にします。

DBIオプション

dbi = dynamorio|pin。このオプションは、Manulがターゲットをインストルメントするために使用するDBIフレームワークを指定します。

dbi_root = <path>。このオプションは、ManulにDBIフレームワークのメインランチャーを見つける場所を指示します。

dbi_client_root = <path>。このオプションは、Manulにインストルメンテーションを実行するDBIクライアントを見つける場所を指示します。

dbi_client_libs = name_#1,name_#2|None。このオプションは、メインターゲットと一緒にインストルメントする必要があるライブラリのリストを指定するために使用できます(例:ターゲットライブラリをロードする実行可能ファイルと、バグを探したい他のいくつかのライブラリがある場合)。

dbi_persistence_mode = 0|1|2。このオプションは、DBI永続モードを選択するために使用されます。0 - 永続化なし、1 - 標準永続化(関数ラッピング)、2 - まだサポートされていません。

dbi-persistence_mode = 1|2の場合、以下のオプションを指定する必要があります:

ツールをダウンロード