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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
uniFuzzer — UnicornとLibFuzzerに基づくクローズドソースバイナリ向けファジングツール | Kitploit
ツール/GitHubGitHub/pagalaxylab/unifuzzer
組み込みシステムセキュリティIoTセキュリティファジングバイナリ解析
GitHubpagalaxylab/unifuzzer

uniFuzzer

UnicornとLibFuzzerに基づくクローズドソースバイナリ向けファジングツール

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

人気

すべて見る →

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

すべてのツールを探索

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

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

uniFuzzer

uniFuzzerは、UnicornとLibFuzzerをベースにした、クローズドソースバイナリ向けのファジングツールです。現在、ARM/MIPS上の32ビットLSB ELFファイル(IoTデバイスでよく見られる)のファジングをサポートしています。

中文介绍

特徴

  • ハックが非常に少なく、容易にビルド可能
  • 任意の指定関数やコードスニペットをターゲットにできる
  • カバレッジガイド方式のファジングで実行速度も良好
  • 依存関係を自動的に解決・ロード
  • PRELOADによるライブラリ関数のオーバーライド

ビルド

  1. ターゲットバイナリをリバースエンジニアリングし、ファジングに適した関数を見つけます。
  2. callbackディレクトリに.cファイルを作成し、以下のコールバックを記述します。
  • void onLibLoad(const char *libName, void *baseAddr, void *ucBaseAddr):Unicorn内で依存ライブラリがロードされるたびに呼び出されます。
  • int uniFuzzerInit(uc_engine *uc):すべてのバイナリがUnicornにロードされた直後に呼び出されます。ここでスタック/ヒープ/レジスタを設定できます。
  • int uniFuzzerBeforeExec(uc_engine *uc, const uint8_t *data, size_t len):各ラウンドのファジング実行前に呼び出されます。
  • int uniFuzzerAfterExec(uc_engine *uc):各ラウンドのファジング実行後に呼び出されます。
  1. makeを実行し、ufという名前のファジングツールを生成します。

実行

uniFuzzerは以下の環境変数をパラメータとして使用します。

  • UF_TARGET:ターゲットELFファイルのパス
  • UF_PRELOAD:プリロードライブラリのパス。ライブラリのアーキテクチャがターゲットと一致していることを確認してください。
  • UF_LIBPATH:依存ライブラリが存在するディレクトリのパス。複数のパスは:で区切ります。

ファジングは以下のコマンドで開始できます。

root@kitploit:~
UF_TARGET=<target> [UF_PRELOAD=<preload>] UF_LIBPATH=<libPath> ./uf

デモ

基本的な使い方のデモがあります。デモには以下のファイルが含まれています。

  • demo-vuln.c:ファジングのターゲットです。スタック/ヒープオーバーフローに対して脆弱なvuln()という簡単な関数を含みます。
  • demo-libcpreload.c:PRELOADフック用です。空のprintf()と簡略化されたmalloc()/free()を定義しています。
  • callback/demo-callback.c:デモのvuln()関数をファジングするために必要なコールバックを定義しています。

まず、mipsel用のgcc(Debianではgcc-mipsel-linux-gnuパッケージ)をインストールしてデモをビルドします。

root@kitploit:~
# ターゲットバイナリ
# '-Xlinker --hash-style=sysv' はシンボルルックアップに'DT_GNU_HASH'ではなく'DT_HASH'を使用するようgccに指示します。
# 現在uniFuzzerは'DT_GNU_HASH'をサポートしていません。
mipsel-linux-gnu-gcc demo-vuln.c -Xlinker --hash-style=sysv -no-pie -o demo-vuln

# プリロードライブラリ
mipsel-linux-gnu-gcc -shared -fPIC -nostdlib -Xlinker --hash-style=sysv demo-libcpreload.c -o demo-libcpreload.so

あるいは、上記のコマンドでコンパイル済みのdemo-vulnとdemo-libcpreload.soファイルを直接使用することもできます。

次に、makeを実行してuniFuzzerをビルドします。自分でMIPSデモをコンパイルした場合、アドレスがプリビルド版と異なる可能性があるため、demo-callback.cを適宜更新してください。

最後に、MIPSのlibcライブラリが用意されていることを確認します。Debianではlibc6-mipsel-crossパッケージをインストールした後、/usr/mipsel-linux-gnu/lib/にあります。これをUF_LIBPATHに指定します。

root@kitploit:~
UF_TARGET=<path to demo-vuln> UF_PRELOAD=<path to demo-libcpreload.so> UF_LIBPATH=<lib path for MIPS> ./uf

Unicornへのハック

Unicornはこの問題によりQEMUのJITキャッシュをクリアします。これにより、ターゲットバイナリが各ラウンドの実行中にJIT再コンパイルされるため、ファジングの速度が低下します。

パフォーマンス向上のために、その問題で指摘されているtb_flush(env);をコメントアウトすることができます。

TODO

  • システムコールのサポート
  • 他のアーキテクチャおよびバイナリ形式のサポート
  • GNU_HASHのサポート
  • IFUNCのサポート
  • 環境設定の統合とAPIの提供
ツールをダウンロード