Ethical Hacking Academy · Урок

Распаковка

Обход обфускации

Урок 4 из 413 шагов

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

Что такое упаковка

Упаковка сжимает или шифрует настоящий код программы и помещает его в небольшую распаковочную оболочку. Во время работы оболочка распаковывает исходный код в памяти и запускает его.

Авторы вредоносных программ используют упаковку, чтобы обходить сигнатуры и затруднять статический анализ.

Зачем выполнять распаковку

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

Распаковка восстанавливает исходный код, чтобы Вы могли проанализировать его статически и извлечь настоящие IOC.

Обнаружение упаковщика

Такие инструменты, как Detect It Easy (DIE) и PEiD, распознают известные упаковщики по сигнатуре. Высокая энтропия и очень маленькая таблица импорта также являются важными признаками.

К распространённым упаковщикам относятся UPX, ASPack и Themida.

die sample.exe
# Packer: UPX(3.96)

Распаковка UPX

UPX — распространённый безопасный упаковщик, который можно обратить с помощью собственного инструмента. Флаг -d распаковывает двоичный файл, возвращая его к исходному виду.

Во многих реальных образцах используется UPX или слегка изменённая версия UPX, поэтому это часто первая попытка распаковки.

upx -d sample.exe

Ручная распаковка: идея

Пользовательские упаковщики нельзя распаковать одним инструментом. Вместо этого нужно позволить оболочке распаковать себя в памяти, а затем перехватить результат.

План таков: запустить образец под отладчиком, остановиться сразу после завершения распаковки и выгрузить уже раскрытый код.

Поиск OEP

Исходная точка входа (OEP) — это место, куда передаётся управление после завершения распаковки. Достижение OEP означает, что настоящий код уже находится в памяти.

Для её поиска можно отслеживать дальний переход из оболочки или установить точку останова на область памяти, в которую оболочка записывает данные, а затем передаёт ей управление.

Точки останова для распаковки

Распространённый приём — установить аппаратную точку останова на стек (оболочка часто восстанавливает регистры прямо перед переходом к OEP) или точку останова на распространённые вызовы API, используемые распакованным кодом.

Когда точка останова срабатывает в OEP, исходный код полностью декодирован.

Выгрузка процесса

В OEP выгрузите содержимое памяти процесса в новый файл. Такие инструменты, как Scylla (встроенная в x64dbg) или PE-sieve, сохраняют распакованный образ.

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

Восстановление импортов

После выгрузки таблица адресов импорта часто оказывается повреждена, поскольку упаковщик разрешал импорты во время работы. Scylla может восстановить IAT, чтобы выгруженный файл можно было анализировать.

После исправления импортов можно загрузить очищенную выгрузку в Ghidra или IDA.

Другие виды обфускации

Помимо упаковки, вредоносные программы используют и другие виды обфускации: строки, расшифровываемые во время работы, мусорные инструкции, выравнивание потока управления и проверки на наличие отладчика.

С ними борются по отдельности, часто сочетая динамическое трассирование с внимательным статическим чтением.

Проверка распакованного образца

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

Если энтропия вернулась к нормальному уровню и API видимы, распаковка прошла успешно, и настоящий код готов к анализу.

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

Вспомните, что означает OEP при ручной распаковке.

Итоги

Теперь Вы понимаете, как выполняется распаковка:

  • Упаковка скрывает настоящий код; её можно обнаружить с помощью DIE/PEiD, высокой энтропии и малого числа импортов.
  • Известные упаковщики, такие как UPX, распаковываются инструментом (upx -d).
  • Для пользовательских упаковщиков запустите образец под отладчиком, найдите OEP, выполните выгрузку с помощью Scylla и восстановите импорты.
  • С другими видами обфускации (зашифрованными строками, защитой от отладки) работают по отдельности.

Вы завершили курс по реверс-инжинирингу вредоносных программ.

Можно начать бесплатно

Изучай Ethical Hacking Academy с ИИ-репетитором — бесплатно

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

Курсы
31
Уроки
111

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

Урок «Распаковка» бесплатный?

Да — полный текст урока «Распаковка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 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. Основы дизассемблирования
  4. Распаковка
← Назад к Ethical Hacking Academy