Главная » Безопасность » Как обнаружить шелл-кoд на взломанной машине?
обнаружить шелл-кoд

Как обнаружить шелл-кoд на взломанной машине?

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

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

Если IDS находит такую структуру, то пакет, содержащий эту сигнатуру, уничтожается до того, как он еще достигнет своей цели. Однако слабая позиция IDS состоит в данном случае в том, что если трафик закодирован, то распознать его не удастся. Теперь вы понимаете, почему так ценно шифрование?

Как обнаружить шелл-кoд

Для анализа семпла нам потребуется определенные инструменты:

  • IDA Pro (with plugins)
  • Ollydbg
  • PEiD (with Krypto ANALyzer)

Ну что же, приступим! Первым делом открываем PEiD и грузим туда наш семпл. Все как и ожидалось, никаких сюрпризов. Однако мы помним, что имеем дело с криптографией в коде малвари, поэтому попробуем запустить плагин Krypto ANALyzer (должен быть предварительно подгружен в PEiD). И вот что мы видим: сигнатуры обнаружены.

обнаружить шелл-кoд
Результат анализа файла в программе PEiD

Идем дальше. Открываем IDA Pro и загружаем туда семпл, минуя множество окон и малоинформативных сведений, обращаем внимание на таблицу ресурсов… Да, и здесь тоже нет ничего бросающегося в глаза.

обнаружить шелл-кoд
Отображение окна String в IDA Pro

Быть может, попытаем счастья в поиске сетевой активности? Хм… Запускаем Process Explorer, далее выделяем процесс, запущенный нашим вредоносом, переходим в «Свойства», жмем вкладку Strings и параллельно запускаем сетевую акулу Wireshark, в окне анализа пакетов можно обнаружить GET-запрос на веб-ресурс http://www.practicalmalwareanalysis.com. Данные на вкладке Strings утилиты Process Explorer и выдернутые из пакета Wireshark совпали.

обнаружить шелл-кoд
Сравнение данных String в Process Explorer и Wireshark

Вернемся к дизассемблеру IDA Pro. На графической диаграмме замечаем любопытные строки: подпрограмма @0x00401300 загружает некий ресурс в двоичном виде и применяет операцию XOR для некоторого значения ‘;’. На следующем скриншоте это весьма явно заметно.

обнаружить шелл кoд
Данные из IDA Pro

Ниже скриншот окна из IDA Pro, где желтым подсвечены инструкции шифрования с помощью операции XOR.

обнаружить шелл-кoд
Текст кода с инструкциями шифрования с помощью операции XOR

И у нас возникает закономерный вопрос: какой ключ (шифр) используется для кодирования и что конкретно он кодирует? Вспоминая то, что мы нашли раньше, можно сделать вывод, что ключ ‘;’ призван декодировать строку, содержащую URL http://www.practicalmalwareanalysis.com.

Итак, мы определили, какой алгоритм шифрования используется и какие данные он шифрует. Пора подключать плагины, которые помогут нам в декодировании. Мы будем использовать инструменты поиска сигнатур FindCrypt2, Krypto ANALyzer и IDA Entropy Plugin, чтобы определить другие механизмы кодирования.

обнаружить шелл-кoд
Окно с результатами парсинга семпла в Krypto ANALyzer

KANAL plugin обнаружил четыре адреса, использующих символы из строки ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/. Как думаете, на что это похоже? Да-да, мой друг, вы правильно подумали — этот набор символов представляет собой алфавит, из которого потом делаются перестановки.

А что же с сетевым трафиком?

Для его кодирования используется алгоритм Base64. Ниже представлен скрин из отладчика OllyDbg, иллюстрирующий закодированные строки.

обнаружить шелл-кoд
Закодированные строки Base64 в OllyDbg

А вот скриншот все из того же отладчика, содержащий инструкцию, которая отвечает за сам процесс кодирования.

Где-то в коде есть функция, отвечающая за декодирование информации по алгоритму Base64, и находится она по адресу 0x004010B1.

обнаружить шелл-кoд
Функция, отвечающая за декодирование информации по алгоритму Base64

Посмотрим этот код на диаграмме из IDA Pro, желтым подсвечены ключевые характеристики кодирования, а именно: максимальная длина сообщения — 12 символов. В описании алгоритма максимальная длина в Base64 составляет 16 байт.

обнаружить шелл кoд
Просмотр кода в IDA Pro

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

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

Надеюсь, вам было интересно и вы теперь знаете как обнаружить шелл-кoд. Узнали что-то новое для себя и теперь представляете, что такое работа вирусного аналитика.

Все спасибы и респекты автору статьи Ивану Пискунову и журналу X@ker.ру

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *