Читаем Кибероружие и кибербезопасность. О сложных вещах простыми словами полностью

Количество и размер code cave’oe варьируется от файла к файлу, но в целом общий размер будет меньше, чем при добавлении новой секции. При использовании code cave’oe код бэкдора следует уменьшать настолько, насколько возможно. Второй недостаток — это набор флагов. Поскольку выполнение будет перенаправляться в code cave, у секции должны быть права на выполнение. В случае с некоторыми шелл-кодами (которые сами себя кодируют или подвергают обфускации) требуется права на запись для того, чтобы выполнять изменения внутри секции.


Использование нескольких code cave’oe позволяет преодолеть ограничения с пространством. Здесь же дополнительный плюс в том, что обычно программный троян собирается из отдельных кусков. Однако изменение привилегий секции будет выглядеть подозрительным. Существуют продвинутые методы для модификации привилегий у областей памяти во время выполнения приложения с целью избежания прямого изменения флагов секции, но поскольку эти техники требуют специализированного шелл-кода, кодирования и парсинга таблицы IAT, эта тема будет затронута в следующих статьях.

При помощи утилиты Cminer очень легко подсчитать все code cave’bi бинарного файла. Используем команду./Cminerputty.exe 300 для поиска code cave’oe более 300 байт.

В нашем случае найдено 5 хороших экземпляров для последующего использования. Стартовый адрес задает адрес виртуальный памяти (virtual memory address, УМА) у code cave при загрузке

Puc. 8.26. Параметры найденных Code cave’oe


РЕ-файла в память. Смещение файла, измеряемого в байтах, — адрес местонахождения нужной области внутри РЕ-файла.

По результатам поиска выяснилось, что большинство областей находятся внутри секции данных. Поскольку в этих секциях не установлен флаг на выполнения, потребуются изменения. Размер бэкдо-ра около 400–500 байт, и области Cave 5 хватит за глаза. Стартовый адрес этой области нужно сохранить, а после изменения привилегий секции первый этап внедрения вредоноса можно считать завершенным. Теперь нужно перенаправить выполнение на нашу область.

8.7.4. Перехват текущего потока выполнения

На этом этапе нужно перенаправить поток выполнения на код бэкдора при помощи модификации нужной инструкции в исполняемом файле. Здесь следует упомянуть важную деталь относительно выбора инструкции для изменения. Все бинарные инструкции имеют размер в байтах. Чтобы перейти к адресу расположения бэкдора потребуется длинный переход (long jump) размером, который использует 5 или 6 байт. При изменении бинарного файла инструкция, которая будет патчиться, должна быть того же размера, что и длинный переход, иначе предыдущая и последующая инструкция будут испорчены.

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

Сокрытие внутри пользовательских функций

Первое, что приходит в голову, для обхода песочницы и динамического анализа — отложенное выполнение шелл-кода или использование детектора песочницы, по результатам работы которого выполняется та или иная ветка алгоритма. С другой стороны, в большинстве случаев из-за ограничений по размерам мы не можем добавить лишние участки кода в PE-файл. Кроме того, реализация техник антидетектирвоания на низком уровне требует много времени и сил.

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

По нажатию кнопки «Open» из графической оболочки запускается функция проверки установленного IP-адреса.


Рис. 8.27. Графическая оболочка для настройки putty

Если поле IP-адреса не пустое, и значение корректное, запускается функция для соединения с указанным IP-адресом.

Если клиент успешно создал ssh-сессию, появится новое окно для ввода имени пользователя и пароля.

Рис. 8.28. Окно для ввода учетных сведений

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


При помощи несложных методов реверс-инжиниринга, предназначенных для работы со строками и ссылками на строки, будет не сложно найти адрес функции соединения после того, как клиент установил соединение с назначенным IP-адресом. Строка «login as:», появляющаяся во всплывающем окне, поможет нам найти адрес функции соединения. В поисках ссылок на строки нам поможет IDA Pro.

Для нахождения строки «login as:» в IDA Pro открываем Views->Open Subviews->Strings on IDA.


Перейти на страницу:

Похожие книги

Компьютер для тех, кому за…
Компьютер для тех, кому за…

В наш век высоких технологий без компьютера не обходится практически ни один человек. Но что делать, если вам уже за…, а компьютер вы так и не освоили? Не стоит отчаиваться! Эта книга была написана специально для тех, кто по каким-то причинам не смог освоить его раньше. Легким и доступным языком в книге изложены основные принципы работы на компьютере. Вы узнаете, как создать документ в текстовом редакторе, выстроить таблицы и диаграммы в экселе, освоите графический редактор, который позволит вам рисовать и редактировать фото и рисунки, научитесь самостоятельно подключать принтер и печать, общаться с родными и друзьями по скайпу и ICQ, узнаете, какие бывают игры, как выбрать игру для себя, и многое-многое другое.Никогда не поздно осваивать что-то новое! А уж тем более — компьютер. Он откроет вам целый мир безграничных возможностей. Не упустите свой шанс узнать что-то новое и интересное — дайте компьютеру прочно войти в вашу жизнь. Ведь пользоваться им так же просто, как и обычным телефоном, только в тысячу раз интереснее!

Оксана Грибова

Зарубежная компьютерная, околокомпьютерная литература / Интернет / Программное обеспечение / Прочая компьютерная литература / Книги по IT