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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
nautilus — 文法ベースのフィードバックファザー | Kitploit
ツール/GitHubGitHub/nautilus-fuzz/nautilus
脆弱性分析ファジングバイナリ解析学習と教育
GitHubnautilus-fuzz/nautilus

nautilus

文法ベースのフィードバックファザー

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

人気

すべて見る →

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

すべてのツールを探索

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

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

Nautilus 2.0

Nautilusはカバレッジガイド型の文法ベースのファザーです。テストカバレッジを向上させ、より多くのバグを見つけるために使用できます。半有効な入力の文法を指定することで、Nautilusは複雑な突然変異を実行し、より興味深いテストケースを発見することができます。このファザーの背後にある多くのアイデアは、NDSS 2019で発表された論文に文書化されています。

バージョン2.0では、この初期プロトタイプに多くの改良が加えられ、AFL++と100%互換性を持つようになりました。一般的な使いやすさの改善に加えて、バージョン2.0には多数の輝く新機能が含まれています:

  • AFL-Qemuモードのサポート
  • Pythonで指定された文法のサポート
  • 構造から入力を生成するPythonスクリプトを使用した非文脈自由文法のサポート
  • バイナリプロトコル/フォーマットの指定のサポート
  • 指示された突然変異の一部ではない正規表現ベースの終端記号の指定のサポート
  • 同じ非常に短い入力を繰り返し生成するのを回避する機能の向上
  • コードベースの大規模なクリーンアップ
  • 無効な文法に関する有用なエラー出力
  • ファザーを時々デッドロックさせるタイムアウトコードのバグを修正

Nautilusの動作方法

EXPR -> EXPR + EXPR や EXPR -> NUM、NUM -> 1 のようなルールを使って文法を指定します。これらのルールから、ファザーはツリーを構築します。この内部表現により、生のバイトよりもはるかに複雑な突然変異を適用できます。このツリーはその後、ターゲットアプリケーションの実際の入力に変換されます。通常の文脈自由文法では、このプロセスは簡単です: すべての葉が連結されます。以下の例の左のツリーは入力 a=1+2 に解析され、右のツリーは a=1+1+1+2 になります。文法の表現力を高めるために、Nautilusを使用すると、アンパースプロセスにPython関数を提供して、より複雑な指定を可能にすることができます。

セットアップ

root@kitploit:~
# checkout the git
git clone '[email protected]:nautilus-fuzz/nautilus.git'
cd nautilus
/path/to/AFLplusplus/afl-clang-fast test.c -o test #afl-clang-fast as provided by AFL

# all arguments can also be set using the config.ron file
cargo run --release -- -g grammars/grammar_py_example.py -o /tmp/workdir -- ./test @@

# or if you want to use QEMU mode:
cargo run /path/to/AFLplusplus/afl-qemu-trace -- ./test_bin @@

例

ここでは、有効なXMLライクな入力のための文法を生成するためにPythonを使用します。開始タグと終了タグが一致することを保証するためにスクリプトルールを使用していることに注意してください。

root@kitploit:~
#ctx.rule(NONTERM: string, RHS: string|bytes) adds a rule NONTERM->RHS. We can use {NONTERM} in the RHS to request a recursion. 
ctx.rule("START","<document>{XML_CONTENT}</document>")
ctx.rule("XML_CONTENT","{XML}{XML_CONTENT}")
ctx.rule("XML_CONTENT","")

#ctx.script(NONTERM:string, RHS: [string]], func) adds a rule NONTERM->func(*RHS). 
# In contrast to normal `rule`, RHS is an array of nonterminals. 
# It's up to the function to combine the values returned for the NONTERMINALS with any fixed content used.
ctx.script("XML",["TAG","ATTR","XML_CONTENT"], lambda tag,attr,body: b"<%s %s>%s</%s>"%(tag,attr,body,tag) )
ctx.rule("ATTR","foo=bar")
ctx.rule("TAG","some_tag")
ctx.rule("TAG","other_tag")

#sometimes we don't want to explore the set of possible inputs in more detail. For example, if we fuzz a script
#interpreter, we don't want to spend time on fuzzing all different variable names. In such cases we can use Regex
#terminals. Regex terminals are only mutated during generation, but not during normal mutation stages, saving a lot of time. 
#The fuzzer still explores different values for the regex, but it won't be able to learn interesting values incrementally. 
#Use this when incremantal exploration would most likely waste time.

ctx.regex("TAG","[a-z]+")

文法をテストするには、ジェネレータを使用できます:

root@kitploit:~
$ cargo run --bin generator -- -g grammars/grammar_py_exmaple.py -t 100 
<document><some_tag foo=bar><other_tag foo=bar><other_tag foo=bar><some_tag foo=bar></some_tag></other_tag><some_tag foo=bar><other_tag foo=bar></other_tag></some_tag><other_tag foo=bar></other_tag><some_tag foo=bar></some_tag></other_tag><other_tag foo=bar></other_tag><some_tag foo=bar></some_tag></some_tag></document>

NautilusをAFLと組み合わせて使用することもできます。AFLの-oを同じ作業ディレクトリに指定するだけで、AFLはNautilusと同期します。これは一方向であることに注意してください。AFLはNautilusの入力をインポートしますが、その逆はありません。

root@kitploit:~
#Terminal/Screen 1
./afl-fuzz -Safl -i /tmp/seeds -o /tmp/workdir/ ./test @@

#Terminal/Screen 2
cargo run --release -- -o /tmp/workdir -- ./test @@

トロフィー

  • https://github.com/Microsoft/ChakraCore/issues/5503
  • https://github.com/mruby/mruby/issues/3995 (CVE-2018-10191)
  • https://github.com/mruby/mruby/issues/4001 (CVE-2018-10199)
  • https://github.com/mruby/mruby/issues/4038 (CVE-2018-12248)
  • https://github.com/mruby/mruby/issues/4027 (CVE-2018-11743)
  • https://github.com/mruby/mruby/issues/4036 (CVE-2018-12247)
  • https://github.com/mruby/mruby/issues/4037 (CVE-2018-12249)
  • https://bugs.php.net/bug.php?id=76410
  • https://bugs.php.net/bug.php?id=76244
ツールをダウンロード