Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
shellnoob — Ein Toolkit zum Schreiben von Shellcode | Kitploit
Tools/GitHubGitHub/reyammer/shellnoob
ExploitationReverse EngineeringScripting & AutomatisierungShellcodeDebuggerBinäranalyseLernen & BildungShellcode-GenerierungPayload-Entwicklung
GitHubreyammer/shellnoob

shellnoob

Ein Toolkit zum Schreiben von Shellcode

69412176vor 1 JahrVon Kitploit geprüft
Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ShellNoob

Das Schreiben von Shellcodes hat immer super Spaß gemacht, aber einige Teile sind extrem langweilig und fehleranfällig. Konzentriere dich nur auf den lustigen Teil und benutze ShellNoob!

Für einen schnellen Überblick, schau dir die Folien des Black Hat Arsenal Vortrags an: Link

Möchtest du beitragen? Funktionswunsch? Fehlermeldung? Flüche? Jegliches Feedback ist willkommen!! (Aber manche Art von Feedback ist willkommener als andere :-)).

Du kannst mich gerne auf Twitter @reyammer anpingen oder mir eine E-Mail an yanick[AT]cs.ucsb.edu schreiben, falls du Fragen hast!

Mitwirkende & Danksagungen

  • Levente Polyak (@anthraxx42)
    • Unterstützung für Python 3 hinzugefügt
    • Fehlerbehebungen
  • @ToolsWatch & Black Hat Crew
    • Sie haben mir die Gelegenheit gegeben, mein Tool zu präsentieren :D

Neuigkeiten

  • 21.01.2014 - ShellNoob 2.1 ist draußen! Es kommt mit vollständiger Unterstützung für Python 3 und zahlreichen Fehlerbehebungen. Die volle Anerkennung gebührt Levente Polyak!

  • 29.07.2013 - ShellNoob 2.0 ist draußen!

  • 08.06.2013 - ShellNoob wurde bei Black Hat Arsenal angenommen! Siehe Ankündigung hier: Link.

Funktionen

  • Konvertiere Shellcode zwischen verschiedenen Formaten und Quellen. Derzeit unterstützte Formate: asm, bin, hex, obj, exe, C, python, ruby, pretty, safeasm, completec, shellstorm. (Alle Details im Abschnitt "Formatbeschreibung".)
  • Interaktiver Modus zur Umwandlung von asm zu Opcode (und umgekehrt). Dies ist nützlich, wenn du bestimmte Bytes im Shellcode nicht verwenden kannst und herausfinden möchtest, ob eine bestimmte Assembler-Anweisung Probleme verursacht.
  • Unterstützung sowohl für ATT- als auch für Intel-Syntax. Siehe den Schalter --intel.
  • Unterstützung für 32 und 64 Bit (beim Arbeiten auf einer x86_64-Maschine). Siehe den Schalter --64.
  • Löse Syscall-Nummern, Konstanten und Fehlernummern auf (jetzt wirklich implementiert! :-)).
  • Portabel und einfach bereitzustellen (benötigt nur gcc/as/objdump und python). Es ist nur ein eigenständiges Python-Skript und unterstützt sowohl Python2.7+ als auch Python3+.
  • Entwicklung vor Ort: führe ShellNoob direkt auf der Zielarchitektur aus!
  • Integrierte Unterstützung für Linux/x86, Linux/x86_64, Linux/ARM, FreeBSD/x86, FreeBSD/x86_64.
  • Option "Breakpoint voranstellen". Siehe den Schalter -c.
  • Einlesen von stdin / Ausgabe auf stdout (verwende "-" als Dateinamen)
  • Extrem günstiges Debugging: siehe die Optionen --to-strace und --to-gdb!
  • Benutze ShellNoob als Python-Modul in deinen Skripten! Siehe den Abschnitt "ShellNoob als Bibliothek".
  • Ausführlicher Modus zeigt die Schritte auf niedriger Ebene der Konvertierung: nützlich zum Debuggen / Verstehen / Lernen!
  • Zusätzliche Plugins: Binäres Patchen leicht gemacht mit den Optionen --file-patch, --vm-patch, --fork-nopper! (alle Details unten)

Anwendungsfälle

Integrierte Hilfe

$ ./shellnoob.py -h
shellnoob.py [--from-EINGABE] (eingabe_dateipfad | - ) [--to-AUSGABE] [ausgabe_dateipfad | - ]
shellnoob.py -c (einen Breakpoint voranstellen (Warnung: nur wenige Plattformen/OS werden unterstützt!)
shellnoob.py --64 (64-Bit-Modus, Standard: 32 Bit)
shellnoob.py --intel (Intel-Syntax-Modus, Standard: att)
shellnoob.py -q (leiser Modus)
shellnoob.py -v (oder -vv, -vvv)
shellnoob.py --to-strace (kompiliert & führt strace aus)
shellnoob.py --to-gdb (kompiliert & führt gdb aus & setzt Breakpoint am Einstiegspunkt)

Eigenständige "Plugins"
shellnoob.py -i [--to-asm | --to-opcode ] (für interaktiven Modus)
shellnoob.py --get-const <const>
shellnoob.py --get-sysnum <sysnum>
shellnoob.py --get-errno <errno>
shellnoob.py --file-patch <exe_fp> <datei_offset> <daten> (in hex). (Warnung: nur auf x86/x86_64 getestet)
shellnoob.py --vm-patch <exe_fp> <vm_adresse> <daten> (in hex). (Warnung: nur auf x86/x86_64 getestet)
shellnoob.py --fork-nopper <exe_fp> (dies entfernt die Aufrufe von fork(). Warnung: nur auf x86/x86_64 getestet)

"Installation"
shellnoob.py --install [--force] (dies kopiert das Skript einfach an eine geeignete Stelle)
shellnoob.py --uninstall [--force]

Unterstütztes EINGABE-Format: asm, obj, bin, hex, c, shellstorm
Unterstütztes AUSGABE-Format: asm, obj, exe, bin, hex, c, completec, python, bash, ruby, pretty, safeasm
Alle Kombinationen von EINGABE zu AUSGABE werden unterstützt!

Installation (nur falls gewünscht)

$ ./shellnoob.py --install

Dies kopiert das Skript einfach nach /usr/local/bin/snoob. Das war's. (Führe ./shellnoob.py --uninstall aus, um es rückgängig zu machen).

Konvertiere Shellcode von/in verschiedene Formate mit einer super flexiblen CLI.

$ snoob --from-asm shell.asm --to-bin shell.bin

Einige gleichwertige Alternativen (das Tool wird versuchen zu erraten, was du möchtest, basierend auf der Dateierweiterung..)

$ snoob --from-asm shell.asm --to-bin
$ snoob shell.asm --to-bin
$ snoob shell.asm --to-bin - > shell.bin
$ cat shell.asm | snoob --from-asm - --to-bin - > shell.bin

Formatbeschreibung

  • "asm" - Standard-Assembler. Standardmäßig ATT-Syntax, verwende --intel für Intel-Syntax. (Siehe Abschnitt "asm als Ausgabeformat" für weitere Details)
  • "bin" - Rohe Binärdaten ('\x41\x42\x43\x44')
  • "hex" - Rohe Binärdaten hexadezimal kodiert ('41424344')
  • "obj" - Eine ELF-Datei
  • "exe" - Eine ausführbare ELF-Datei
  • "c" - Etwas, das bereit ist, in ein C-Programm eingebettet zu werden.
  • "python", "bash", "ruby" - Gleiches hier.
  • "completec" - Kompilierbares C, das den Speicher ordnungsgemäß als RWX setzt (zur Unterstützung von selbstmodifizierenden Shellcodes)
  • "safeasm" - Assembler, der zu 100% assemblbar ist: manchmal ist die Ausgabe von objdump, aus der "asm" entnommen wird, nicht assemblbar. Dies gibt die "rohen" Bytes (in .byte-Notation) aus, damit sie von "as" assemblbar sind.
  • "shellstorm" - Der Schalter --from-shellstorm akzeptiert als Argument eine <shellcode_id>. ShellNoob holt den ausgewählten Shellcode aus der shell-storm Shellcode-Datenbank und konvertiert ihn in das gewünschte Format.

Einfaches Debugging

$ snoob -c shell.asm --to-exe shell
$ gdb -q shell
$ run
Reading symbols from ./shell...(no debugging symbols found)...done.
(gdb) run
Starting program: ./shell

Program received signal SIGTRAP, Trace/breakpoint trap.
0x08048055 in ?? ()
(gdb) 

Oder du kannst die neuen Schalter --to-strace und --to-gdb verwenden!

$ snoob open-read-write.asm --to-strace
Converting open-read-write.asm (asm) into /tmp/tmpBaQbzP (exe)
execve("/tmp/tmpBaQbzP", ["/tmp/tmpBaQbzP"], [/* 97 vars */]) = 0
[ Process PID=12237 runs in 32 bit mode. ]
open("/tmp/secret", O_RDONLY)           = 3
read(3, "thesecretisthedolphin\n", 255) = 22
write(1, "thesecretisthedolphin\n", 22thesecretisthedolphin
) = 22
_exit(0)  
$ snoob open-read-write.asm --to-gdb
Converting open-read-write.asm (asm) into /tmp/tmpZdImWw (exe)
Reading symbols from /tmp/tmpZdImWw...(no debugging symbols found)...done.
(gdb) Breakpoint 1 at 0x8048054
(gdb)

Beachte, wie ShellNoob automatisch einen Breakpoint am Einstiegspunkt setzt!

Syscall-Nummern, Konstanten und errno abrufen

$ snoob --get-sysnum read
i386 ~> 3
x86_64 ~> 0
$ snoob --get-sysnum fork
i386 ~> 2
x86_64 ~> 57
$ snoob --get-const O_RDONLY
O_RDONLY ~> 0
$ snoob --get-const O_CREAT
O_CREAT ~> 64
$ snoob --get-const EINVAL
EINVAL ~> 22
$ snoob --get-errno EINVAL
EINVAL ~> Invalid argument
$ snoob --get-errno 22
22 ~> Invalid argument
$ snoob --get-errno EACCES
EACCES ~> Permission denied
$ snoob --get-errno 13
13 ~> Permission denied
Tool herunterladen