Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
shellnoob — Набор инструментов для написания шеллкода | Kitploit
Инструменты/GitHubGitHub/reyammer/shellnoob
ЭксплуатацияОбратная инженерияСкриптинг и автоматизацияШелл-кодОтладчикиАнализ Бинарных ФайловОбучение и ОбразованиеГенерация ШеллкодаРазработка Полезной Нагрузки
GitHubreyammer/shellnoob

shellnoob

Набор инструментов для написания шеллкода

694121781 год назадПроверено Kitploit
Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

ShellNoob

Написание шеллкодов всегда было супер веселым, но некоторые части чрезвычайно скучны и чреваты ошибками. Сосредоточьтесь только на веселой части и используйте ShellNoob!

Для быстрого ознакомления посмотрите слайды доклада на Black Hat Arsenal: ссылка

Есть желание внести вклад? Предложить функцию? Сообщить об ошибке? Обругать? Любая обратная связь приветствуется!! (Но некоторые виды обратной связи приветствуются больше, чем другие :-)).

Не стесняйтесь пинговать меня в твиттере @reyammer или писать на email yanick[AT]cs.ucsb.edu с любыми вопросами!

Участники и благодарности

  • Levente Polyak (@anthraxx42)
    • добавлена поддержка Python 3
    • исправление ошибок
  • @ToolsWatch и команда Black Hat
    • Они дали мне возможность показать мой инструмент :D

Новости

  • 01/21/2014 - Вышел ShellNoob 2.1! Включает полную поддержку Python 3 и множество исправлений ошибок. Вся заслуга принадлежит Levente Polyak!

  • 07/29/2013 - Вышел ShellNoob 2.0!

  • 06/08/2013 - ShellNoob был принят на Black Hat Arsenal! Объявление здесь: ссылка.

Возможности

  • преобразование шеллкода между различными форматами и источниками. Поддерживаемые форматы: asm, bin, hex, obj, exe, C, python, ruby, pretty, safeasm, completec, shellstorm. (Все подробности в разделе "Описание форматов".)
  • интерактивный режим преобразования asm в опкод (и наоборот). Это полезно, когда вы не можете использовать определенные байты в шеллкоде и хотите понять, вызовет ли конкретная инструкция ассемблера проблемы.
  • поддержка как синтаксиса ATT, так и Intel. Используйте ключ --intel.
  • поддержка 32 и 64 бит (при работе на машине x86_64). Используйте ключ --64.
  • разрешение номеров системных вызовов, констант и кодов ошибок (теперь реализовано по-настоящему! :-)).
  • портативность и простота развертывания (зависит только от gcc/as/objdump и python). Это всего лишь один самостоятельный скрипт Python, поддерживающий как Python2.7+, так и Python3+.
  • разработка на месте: запускайте ShellNoob непосредственно на целевой архитектуре!
  • встроенная поддержка Linux/x86, Linux/x86_64, Linux/ARM, FreeBSD/x86, FreeBSD/x86_64.
  • опция "добавить точку останова". Используйте ключ -c.
  • поддержка чтения из stdin / записи в stdout (используйте "-" в качестве имени файла)
  • супердешевая отладка: опции --to-strace и --to-gdb!
  • используйте ShellNoob как модуль Python в ваших скриптах! Смотрите раздел "ShellNoob как библиотека".
  • подробный режим показывает низкоуровневые шаги преобразования: полезно для отладки / понимания / обучения!
  • дополнительные плагины: бинарное патчинг стало проще с опциями --file-patch, --vm-patch, --fork-nopper! (все подробности ниже)

Примеры использования

Встроенная справка

$ ./shellnoob.py -h
shellnoob.py [--from-INPUT] (input_file_path | - ) [--to-OUTPUT] [output_file_path | - ]
shellnoob.py -c (prepend a breakpoint (Warning: only few platforms/OS are supported!)
shellnoob.py --64 (64 bits mode, default: 32 bits)
shellnoob.py --intel (intel syntax mode, default: att)
shellnoob.py -q (quite mode)
shellnoob.py -v (or -vv, -vvv)
shellnoob.py --to-strace (compiles it & run strace)
shellnoob.py --to-gdb (compiles it & run gdb & set breakpoint on entrypoint)

Standalone "plugins"
shellnoob.py -i [--to-asm | --to-opcode ] (for interactive mode)
shellnoob.py --get-const <const>
shellnoob.py --get-sysnum <sysnum>
shellnoob.py --get-errno <errno>
shellnoob.py --file-patch <exe_fp> <file_offset> <data> (in hex). (Warning: tested only on x86/x86_64)
shellnoob.py --vm-patch <exe_fp> <vm_address> <data> (in hex). (Warning: tested only on x86/x86_64)
shellnoob.py --fork-nopper <exe_fp> (this nops out the calls to fork(). Warning: tested only on x86/x86_64)

"Installation"
shellnoob.py --install [--force] (this just copies the script in a convinient position)
shellnoob.py --uninstall [--force]

Supported INPUT format: asm, obj, bin, hex, c, shellstorm
Supported OUTPUT format: asm, obj, exe, bin, hex, c, completec, python, bash, ruby, pretty, safeasm
All combinations from INPUT to OUTPUT are supported!

Установка (только если хотите)

$ ./shellnoob.py --install

Это просто скопирует скрипт в /usr/local/bin/snoob. Вот и всё. (Запустите ./shellnoob.py --uninstall, чтобы отменить).

Преобразование шеллкода из/в различные форматы с помощью чрезвычайно гибкого CLI.

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

Некоторые эквивалентные альтернативы (инструмент попытается угадать, что вам нужно, по расширению файла..)

$ 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

Описание форматов

  • "asm" - стандартный ассемблер. По умолчанию синтаксис ATT, используйте --intel для синтаксиса Intel. (см. раздел "Asm как выходной формат" для подробностей)
  • "bin" - сырой бинарник ('\x41\x42\x43\x44')
  • "hex" - сырой бинарник, закодированный в hex ('41424344')
  • "obj" - ELF-объект
  • "exe" - исполняемый ELF
  • "c" - готовый к встраиванию в программу на C.
  • "python", "bash", "ruby" - то же самое.
  • "completec" - компилируемый C, который правильно устанавливает память как RWX (для поддержки самомодифицирующихся шеллкодов)
  • "safeasm" - ассемблер, который на 100% ассемблируется: иногда вывод objdump, из которого берется "asm", не ассемблируется. Это выводит "сырые" байты (в нотации .byte), чтобы их можно было ассемблировать с помощью "as".
  • "shellstorm" - Ключ --from-shellstorm принимает в качестве аргумента <shellcode_id>. ShellNoob загрузит выбранный шеллкод из базы шеллкодов shell-storm и преобразует его в выбранный формат.

Простая отладка

$ 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) 

Или вы можете использовать новые ключи --to-strace и --to-gdb!

$ 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)

Обратите внимание, как ShellNoob автоматически устанавливает точку останова на точке входа!

Получение номеров системных вызовов, констант и errno

$ 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

Интерактивный режим

$ ./shellnoob.py -i --to-opcode
asm_to_opcode selected
>> mov %eax, %ebx
mov %eax, %ebx ~> 89c3
>> 
./shellnoob.py -i --to-asm
opcode_to_asm selected
>> 89c3
89c3 ~> mov %eax,%ebx
>>

ShellNoob как библиотека

$ python
>>> from shellnoob import ShellNoob
>>> sn = ShellNoob(flag_intel=True)
Скачать инструмент