Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
nautilus — Ein grammatikbasierter Feedback-Fuzzer | Kitploit
Tools/GitHubGitHub/nautilus-fuzz/nautilus
SchwachstellenanalyseFuzzingBinäranalyseLernen & Bildung
GitHubnautilus-fuzz/nautilus

nautilus

Ein grammatikbasierter Feedback-Fuzzer

Repository anzeigen
47567vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Nautilus 2.0

Nautilus ist ein coverage-gesteuerter, grammatikbasierter Fuzzer. Sie können ihn nutzen, um Ihre Testabdeckung zu verbessern und mehr Fehler zu finden. Durch die Angabe der Grammatik semi-gültiger Eingaben ist Nautilus in der Lage, komplexe Mutationen durchzuführen und interessantere Testfälle aufzudecken. Viele der Ideen hinter diesem Fuzzer sind in einem Paper dokumentiert, das auf der NDSS 2019 veröffentlicht wurde.

Version 2.0 hat viele Verbesserungen an diesem frühen Prototypen vorgenommen und ist jetzt 100 % kompatibel mit AFL++. Neben allgemeinen Benutzerfreundlichkeitsverbesserungen enthält Version 2.0 viele tolle neue Funktionen:

  • Unterstützung für den AFL-Qemu-Modus
  • Unterstützung für in Python spezifizierte Grammatiken
  • Unterstützung für nicht-kontextfreie Grammatiken mittels Python-Skripten zur Generierung von Eingaben aus der Struktur
  • Unterstützung für die Angabe binärer Protokolle/Formate
  • Unterstützung für die Angabe regex-basierter Terminals, die nicht Teil der gerichteten Mutationen sind
  • Bessere Fähigkeit, die wiederholte Generierung derselben sehr kurzen Eingaben zu vermeiden
  • Massives Aufräumen der Codebasis
  • Hilfreiche Fehlerausgabe bei ungültigen Grammatiken
  • Behob einen Fehler im Timeout-Code, der gelegentlich zu einem Deadlock des Fuzzers führte

Wie funktioniert Nautilus?

Sie spezifizieren eine Grammatik mit Regeln wie EXPR -> EXPR + EXPR oder EXPR -> NUM und NUM -> 1. Aus diesen Regeln konstruiert der Fuzzer einen Baum. Diese interne Repräsentation erlaubt es, viel komplexere Mutationen anzuwenden als bei rohen Bytes. Dieser Baum wird dann in eine echte Eingabe für die Zielanwendung umgewandelt. In normalen kontextfreien Grammatiken ist dieser Prozess unkompliziert: Alle Blätter werden konkateniert. Der linke Baum im folgenden Beispiel würde zur Eingabe a=1+2 umgeformt und der rechte zu a=1+1+1+2. Um die Ausdruckskraft Ihrer Grammatiken zu erhöhen, können Sie mit Nautilus Python-Funktionen für den Unparsing-Prozess bereitstellen, um viel komplexere Spezifikationen zu ermöglichen.

Einrichtung

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

Beispiele

Hier verwenden wir Python, um eine Grammatik für gültige XML-ähnliche Eingaben zu generieren. Beachten Sie die Verwendung einer Skriptregel, um sicherzustellen, dass die öffnenden und schließenden Tags übereinstimmen.

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]+")

Um Ihre Grammatiken zu testen, können Sie den Generator verwenden:

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>

Sie können Nautilus auch in Kombination mit AFL verwenden. Geben Sie einfach AFL -o auf das gleiche Arbeitsverzeichnis, und AFL wird sich mit Nautilus synchronisieren. Beachten Sie, dass dies eine Einbahnstraße ist. AFL importiert Nautilus-Eingaben, aber nicht umgekehrt.

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

Trophäen

  • 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
Tool herunterladen