APT-атака одним человеком, часть I: Изображение, способное выполнить код на целевой машине

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
152
Депозит
-8.95$
Вы когда-нибудь задумывались, можно ли воспроизвести скрытное поведение современной кибератаки с помощью искусственного интеллекта? В рамках своего исследования я сосредоточился на методах, используемых вредоносной программой Koske, основанной на Linux. Эта вредоносная программа умело прячется в созданных ИИ изображениях панды и выполняет ряд действий, таких как выполнение кода в памяти, манипуляция системой и майнинг криптовалют.

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

image-1.png

Источник изображения: Aquasec

На этом изображении показана схема атаки Koske, модульной угрозы на базе Linux, которая использует сгенерированные искусственным интеллектом изображения Panda для скрытой доставки полезной нагрузки. Она начинается с полиглотного изображения, размещенного в сети, которое содержит встроенный код на языке C или шелл-код. После запуска полезная нагрузка устанавливает компоненты непосредственно в память, использует распространённые механизмы персистентности (такие как .bashrc, crontab или пользовательские службы systemd) и развёртывает руткит с помощью LD_PRELOAD. Заключительный этап включает в себя развёртывание криптомайнера, настройку прокси-сервера и манипуляцию процессами — всё это предназначено для незаметного захвата системы, оставаясь незамеченным.

Но для меня идея этого проекта началась с простого вопроса: может ли изображение также выступать в роли исполняемого кода? Это побудило меня изучить файлы-полиглоты, в частности, как один и тот же файл может быть одновременно и изображением, и скриптом оболочки. На скриншоте ниже показано первое взаимодействие, с которого всё началось. С этого момента я начал экспериментировать с созданием файлов изображений, которые выглядят безобидно при обычном открытии, но могут вести себя по-другому при работе с командными инструментами, такими как grep или cat. Эта двойственность стала основной концепцией моей симуляции.

image-2.png

Имитация казни по картинке

Для имитации этапа выполнения атаки я создал файл полиглота: корректное изображение, содержащее скрытый внутри скрипт оболочки. Ключевым моментом было выбрать простой, но реалистичный способ «извлечь и выполнить» скрипт, не требующий сложных инструментов. Именно здесь пригодится команда grep -a -A9999 “# PAYLOAD” polyglot.jpg | bash.

Эта строка имитирует поведение Koske, где полезная нагрузка встроена в изображение и выполняется напрямую, без записи на диск. Используя grep -a (чтобы рассматривать файл как текст) и маркер типа # PAYLOAD, я мог бы изолировать скрипт и передать его в bash, запустив его выполнение из образа — точно так же, как Koske загружает и запускает свой шелл-код в памяти после загрузки файла изображения с удалённого сервера.

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

image-3.png

Полезная нагрузка в действии

Как только я описал свои потребности, ИИ-инструмент сгенерировал для меня изображение полиглота — уже созданное и готовое к использованию. Мне не пришлось вручную добавлять скрипт или самостоятельно выстраивать структуру файла. Результатом стал polyglot.jpg — один файл, который выглядел как обычное изображение, но содержал скрытую полезную нагрузку оболочки.

image-4.png

Как показано на скриншоте ниже, файл выглядит и ведёт себя как обычное изображение. Он нормально открывается в программе просмотра изображений, и даже команда «File» подтверждает, что это корректный JPEG-файл. На первый взгляд, ничего необычного. Именно это делает этот метод таким обманчивым и таким интересным для изучения. Полезная информация остаётся невидимой, если только кто-то точно не знает, что искать и как её извлечь.

image-5-1024x329.png

На GIF-изображении ниже вы можете увидеть момент, когда иллюзия разрушается: то, что выглядит как невинная картинка, внезапно запускает новый терминал при обработке простой командой grep. Это тонкий, но яркий пример того, как полиглот-файлы могут вести себя совершенно по-разному в зависимости от способа обработки.

Polyglot1-1.gif

Делаем шаг вперед

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


Он вернул простой, но эффективный фрагмент кода, который проверяет доступность curl или wget, а затем использует доступный метод для отправки запроса по целевому URL. Я ничего из этого не писал — ИИ сгенерировал запрос мгновенно. Это важно, поскольку демонстрирует, насколько легко ИИ может воссоздать поведение, которое мы часто наблюдаем в реальных атаках: скрытное взаимодействие, адаптируемость к среде и минимальные зависимости. Речь уже не просто о сокрытии в файле, а о том, чтобы установить присутствие и связаться с противником, как это делает настоящее вредоносное ПО на этапе командования (C2).

image-6.png

Специальная полезная нагрузка, полностью встроенная

Увидев, что ИИ может генерировать работающие скрипты на лету, я развил эту идею немного дальше. Я спросил: можно ли встроить этот новый скрипт — вместе с проверками среды и имитацией вызова C2 — непосредственно в новое полиглотное изображение?

Именно это и сделал ИИ. Он вернул обновлённый файл изображения polyglot_custom.jpg, в который был встроен полный скрипт. При запуске он запускает новый терминал и немедленно запускает встроенную логику. Это имитирует работу некоторых реальных APT-атак, включая Koske, — используя модульные полезные нагрузки, которые адаптируются к системе, на которой они оказываются, и инициируют контакт с удалённым сервером, часто не оставляя видимых следов на диске.

Опять же, мне не пришлось писать ни строчки вручную — ИИ полностью самостоятельно сгенерировал код и переупаковал полезную нагрузку.

image-7.png

Неожиданно, но актуально: запутывание

На этом этапе моё внимание привлекло то, о чём я даже не просил. После того, как обновлённое изображение полиглота было сгенерировано и всё заработало, ИИ проактивно предложил: «Дайте мне знать, если хотите дополнительно зашифровать или закодировать полезную нагрузку».

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

image-8.png

Самокорректирующаяся логика

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

К моему удивлению, он сразу же определил проблему: неправильное использование кавычек в блоке heredoc, препятствовавшее раскрытию переменных. Затем он предложил простое решение — переписать скрипт так, чтобы он корректно внедрял переменную окружения и выполнял её через временный файл. Это было не просто полезно — оно продемонстрировало нечто более глубокое: ИИ не просто генерировал полезные данные, он отлаживал их и развивал на основе поведения во время выполнения.

Опять же, я не написал ни строчки. Логика, патч и реализация полностью принадлежали ИИ.

image-9.png
image-10.png

Регенерация и повторное тестирование

Разумеется, я согласился, чтобы ИИ исправил ошибку и заново сгенерировал полезную нагрузку. Через несколько мгновений я получил новую версию: polyglot_fixed.jpg. На этот раз скрипт отработал безупречно: переменная $URL была корректно расширена, и симуляция C2 завершилась, как и ожидалось.

Но ещё более впечатляющим было последующее действие ИИ: он предлагал добавить скрытые функции или протестировать полезную нагрузку на других сервисах. Это было не просто исправление — это предложение следующего логического варианта развития атаки, почти как автоматический агент Red Team, думающий наперёд. Это подкрепило идею о том, что ИИ не просто генерирует контент; он итерирует, адаптируется и предлагает улучшения, имитируя процессы принятия решений, которые мы обычно ассоциируем с противниками-людьми.

image-12.png

Тест: Успех

Когда всё было готово, я провёл финальный тест. Как показано на GIF-изображении, запуск файла polyglot_fixed.jpg с использованием той же техники grep | bash прошёл точно так же, как и ожидалось. Скрипт выполнился без ошибок, добрался до внутреннего сервера и отобразил ответ — всё это в виде отдельного изображения полиглота, сгенерированного искусственным интеллектом.

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

Polyglot2.gif

Краткое содержание

Весь рабочий процесс в точности повторяет тактику, методы и процедуры (ТТП), приписываемые вредоносной кампании Koske.

Во-первых, Коске использует многоязычные файлы изображений для доставки скрытой полезной нагрузки, сохраняя при этом законный рендеринг изображений. Это было воспроизведено путем встраивания сгенерированных ИИ скриптов оболочки в допустимые файлы JPEG, которые оставались видимыми.

Во-вторых, Koske выполняет свой код в памяти , избегая постоянного хранения двоичных файлов или записи на диск. Это нашло отражение в использовании grep | bash для извлечения и запуска полезной нагрузки непосредственно из образа.

В-третьих, Koske демонстрирует экологическую чувствительность , адаптируя своё поведение в зависимости от хост-системы — аналогично, скрипт, сгенерированный ИИ, динамически выбирает между curl и wget в зависимости от доступности. Наконец, Koske включает в себя возможности C2 , обращаясь к предопределённым URL-адресам для инициирования внешнего взаимодействия.

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