Как GPT-3.5 помогает собирать рабочие вирусы тем, кто не умеет кодить.
Злоумышленники уже пробуют встраивать искусственный интеллект в вредоносное ПО, но пока получается очень неровно. Где-то нейросеть нужна скорее для вида и оставляет после себя только громкие логи без пользы. Где-то ей уже доверяют вполне конкретную задачу: решить, стоит ли запускать полезную нагрузку на этой машине или лучше не рисковать. Разбор Unit 42 хорошо показывает обе крайности сразу.
Исследователи искали в открытых источниках и собственной телеметрии следы того, что авторы вредоносных программ уже используют большие языковые модели. Их интересовали три сценария. Первый, когда искусственный интеллект помогает писать сам вредоносный код. Второй, когда модель участвует в удалённом управлении атакой и по сути подсказывает, что делать дальше. Третий, самый неприятный, когда вредонос начинает принимать решения прямо на заражённой системе, без внешнего оператора. По данным Unit 42, в реальных образцах уже встречались первые два варианта, а вот полноценной локальной агентной логики в дикой среде аналитики пока не видели.
Общий вывод у них при этом вполне прямой. Искусственный интеллект уже может помогать злоумышленникам писать рабочие образцы и в целом снижает порог входа для тех, кто раньше просто не дотягивал по навыкам. Но до по-настоящему автономной вредоносной программы пока далеко. Авторам всё ещё трудно встроить модель внутрь образца, развернуть её на целевой машине и сделать так, чтобы она реально управляла поведением программы, а не просто создавала ощущение чего-то умного.
Первый случай связан с .NET-инфостилером на C# под .NET Framework 4.0, который дополнительно упаковали ConfuserEx 2. Такая обфускация должна мешать анализу и детектированию, но главная деталь здесь другая: вредонос обращается к OpenAI GPT-3.5-Turbo через интерфейс прикладного программирования по HTTP. На бумаге идея выглядит почти как следующий этап развития вредоносного ПО. Кажется, будто заражённая программа сможет сама разбираться в среде, подбирать способы обхода защиты и осмысленнее общаться с сервером управления. На практике всё оказалось куда прозаичнее.
<!--'start_frame_cache_Zg1Ab0'--><div class="banner-detailed"><div class="banner-detailed__shell"><div class="banner-detailed__title">Интернет умер <span>Сохраните хоть канал.</span><div class="banner-detailed__arrow"><svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.5375 34.4392L22.465 31.7392C22.5739 31.5872 22.7145 31.4607 22.8772 31.3684C23.0399 31.2762 23.2207 31.2205 23.407 31.2052C23.5934 31.1898 23.7809 31.2152 23.9564 31.2796C24.132 31.344 24.2915 31.4458 24.4237 31.578L29.6025 36.758C30.0787 37.2333 30.724 37.5002 31.3969 37.5002C32.0697 37.5002 32.715 37.2333 33.1912 36.758L36.7575 33.1917C37.2328 32.7155 37.4998 32.0702 37.4998 31.3973C37.4998 30.7245 37.2328 30.0792 36.7575 29.603L31.5775 24.4242C31.4453 24.2919 31.3435 24.1325 31.2791 23.9569C31.2147 23.7814 31.1893 23.5939 31.2047 23.4075C31.22 23.2211 31.2757 23.0404 31.368 22.8777C31.4602 22.715 31.5867 22.5743 31.7387 22.4655L34.4387 20.538C34.6405 20.3939 34.7965 20.1947 34.8878 19.9641C34.9791 19.7336 35.0018 19.4816 34.9534 19.2385C34.9049 18.9953 34.7873 18.7713 34.6146 18.5934C34.442 18.4155 34.2216 18.2912 33.98 18.2355L13.5112 13.5117L18.235 33.9805C18.2907 34.2221 18.415 34.4425 18.5929 34.6151C18.7708 34.7878 18.9948 34.9054 19.238 34.9539C19.4812 35.0023 19.7331 34.9795 19.9637 34.8882C20.1942 34.7969 20.3934 34.641 20.5375 34.4392Z" fill="#FFD98C"></path><path d="M34.0751 37.6413C33.3582 38.3389 32.3973 38.7293 31.397 38.7293C30.3966 38.7293 29.4358 38.3389 28.7189 37.6413L23.4826 32.4663L21.5539 35.165C21.2699 35.5626 20.8773 35.8698 20.423 36.0497C19.9688 36.2295 19.4723 36.2744 18.9931 36.179C18.514 36.0836 18.0726 35.8518 17.7219 35.5117C17.3713 35.1715 17.1263 34.7373 17.0164 34.2613L12.2926 13.7925C12.2447 13.5858 12.2502 13.3702 12.3086 13.1662C12.367 12.9622 12.4764 12.7764 12.6264 12.6263C12.7765 12.4763 12.9623 12.3669 13.1663 12.3085C13.3703 12.2501 13.5859 12.2446 13.7926 12.2925L34.2614 17.0175C34.7374 17.1271 35.1717 17.3719 35.512 17.7225C35.8523 18.073 36.0841 18.5144 36.1795 18.9935C36.275 19.4726 36.23 19.9691 36.0501 20.4233C35.8701 20.8775 35.5628 21.27 35.1651 21.5538L32.4614 23.54L37.6414 28.7188C38.3498 29.43 38.7476 30.393 38.7476 31.3969C38.7476 32.4008 38.3498 33.3637 37.6414 34.075L34.0751 37.6413ZM35.8751 30.4863L30.6951 25.3075C30.4344 25.047 30.2336 24.7328 30.1068 24.3868C29.9799 24.0407 29.9299 23.6712 29.9604 23.3039C29.9908 22.9366 30.101 22.5804 30.2831 22.26C30.4653 21.9396 30.7151 21.6628 31.0151 21.4488L33.6989 19.4488L15.1851 15.1763L19.5001 33.7275L19.5139 33.7113L21.4414 31.0125C21.6555 30.7124 21.9325 30.4626 22.253 30.2805C22.5735 30.0983 22.9298 29.9882 23.2972 29.9577C23.6646 29.9272 24.0342 29.9772 24.3803 30.1041C24.7264 30.231 25.0407 30.4318 25.3014 30.6925L30.4864 35.875C30.728 36.1163 31.0555 36.2518 31.397 36.2518C31.7385 36.2518 32.066 36.1163 32.3076 35.875L35.8751 32.3075C36.1161 32.0657 36.2514 31.7383 36.2514 31.3969C36.2514 31.0555 36.1161 30.728 35.8751 30.4863ZM8.14636 9.385C7.98292 9.38706 7.82069 9.35675 7.66901 9.29583C7.51733 9.2349 7.37921 9.14455 7.26261 9.03L4.58011 6.3475C4.35242 6.11175 4.22643 5.796 4.22927 5.46825C4.23212 5.1405 4.36358 4.82699 4.59534 4.59523C4.8271 4.36347 5.14062 4.23201 5.46836 4.22916C5.79611 4.22631 6.11186 4.3523 6.34761 4.58L9.03012 7.2625C9.20107 7.43787 9.31674 7.65959 9.36277 7.90013C9.4088 8.14068 9.38315 8.38944 9.28901 8.61553C9.19487 8.84162 9.03639 9.03508 8.83325 9.17188C8.63011 9.30867 8.39126 9.38278 8.14636 9.385ZM17.9726 9.03C17.7362 9.26044 17.419 9.3894 17.0889 9.3894C16.7587 9.3894 16.4416 9.26044 16.2051 9.03C15.9708 8.79559 15.8391 8.47771 15.8391 8.14625C15.8391 7.8148 15.9708 7.49691 16.2051 7.2625L18.8876 4.58C19.0029 4.46061 19.1409 4.36538 19.2934 4.29987C19.4459 4.23436 19.6099 4.19988 19.7759 4.19844C19.9418 4.197 20.1064 4.22862 20.2601 4.29147C20.4137 4.35432 20.5532 4.44714 20.6706 4.56451C20.788 4.68187 20.8808 4.82144 20.9436 4.97506C21.0065 5.12868 21.0381 5.29328 21.0367 5.45925C21.0352 5.62523 21.0008 5.78925 20.9352 5.94176C20.8697 6.09426 20.7745 6.23219 20.6551 6.3475L17.9726 9.03ZM6.34761 20.655C6.11146 20.886 5.79423 21.0154 5.46386 21.0154C5.1335 21.0154 4.81627 20.886 4.58011 20.655C4.34578 20.4206 4.21413 20.1027 4.21413 19.7713C4.21413 19.4398 4.34578 19.1219 4.58011 18.8875L7.26261 16.205C7.37792 16.0856 7.51585 15.9904 7.66836 15.9249C7.82086 15.8594 7.98489 15.8249 8.15086 15.8234C8.31684 15.822 8.48144 15.8536 8.63506 15.9165C8.78868 15.9793 8.92824 16.0721 9.04561 16.1895C9.16297 16.3069 9.25579 16.4464 9.31864 16.6001C9.38149 16.7537 9.41312 16.9183 9.41168 17.0843C9.41024 17.2502 9.37575 17.4143 9.31024 17.5668C9.24473 17.7193 9.1495 17.8572 9.03012 17.9725L6.34761 20.655ZM12.6176 7.54375C12.2861 7.54375 11.9682 7.41205 11.7337 7.17763C11.4993 6.94321 11.3676 6.62527 11.3676 6.29375V2.5C11.3676 2.16848 11.4993 1.85054 11.7337 1.61612C11.9682 1.3817 12.2861 1.25 12.6176 1.25C12.9491 1.25 13.2671 1.3817 13.5015 1.61612C13.7359 1.85054 13.8676 2.16848 13.8676 2.5V6.29375C13.8676 6.62527 13.7359 6.94321 13.5015 7.17763C13.2671 7.41205 12.9491 7.54375 12.6176 7.54375ZM2.50011 11.3675H6.29387C6.62539 11.3675 6.94333 11.4992 7.17775 11.7336C7.41217 11.968 7.54387 12.286 7.54387 12.6175C7.54387 12.949 7.41217 13.267 7.17775 13.5014C6.94333 13.7358 6.62539 13.8675 6.29387 13.8675H2.50011C2.16859 13.8675 1.85065 13.7358 1.61623 13.5014C1.38181 13.267 1.25011 12.949 1.25011 12.6175C1.25011 12.286 1.38181 11.968 1.61623 11.7336C1.85065 11.4992 2.16859 11.3675 2.50011 11.3675Z" fill="#272727"></path></svg> <!--'end_frame_cache_Zg1Ab0'--> Сам инфостилер при этом вполне рабочий. Он собирает сведения о системе, вытаскивает файлы cookie из браузеров, строит списки файлов и готовит всё это к отправке на сервер управления. В коде рядом с этим есть набор функций, которые должны изображать логику на базе искусственного интеллекта : генерацию техник обхода защиты, анализ среды, маскировку обмена данными и подготовку правдоподобных сообщений для трафика командного сервера. Именно эти части исследователи и разобрали по шагам.
Всего таких функций четыре: GenerateEvasionTechnique(), AnalyzeTargetEnvironment(), GenerateObfuscatedCommunication() и SendToC2ServerWithLLM(). По оценке Unit 42, ни одна из них не делает образец заметно опаснее или хитрее. Наоборот, лишние обращения к модели только добавляют шум и могут привлечь внимание защитников. Вызовы есть, ответы приходят, но толку почти нет.
Первая функция, GenerateEvasionTechnique(), просит GPT-3.5 придумать простой метод уклонения для инструмента кражи данных и вернуть только короткое название, максимум из трёх слов. В примерах фигурируют Random Delay, Process Spoofing и Memory Obfuscation. Если интерфейс не отвечает, вредонос подставляет значение по умолчанию, Random Delay. Дальше начинается самое показательное: результат ни на что не влияет. Полученная строка просто записывается в victim_logs.txt на рабочем столе жертвы вместе с отметкой времени. Никакой реальной реализации за ней нет.
Именно здесь хорошо видно, насколько поверхностно сделана вся схема. Чтобы такой ответ действительно работал, автору пришлось бы заранее прописать обработчики под каждую возможную технику или получать от модели уже такие данные, которые можно превратить в исполняемую логику на лету. Теоретически оба пути возможны. В найденных образцах не сделано ни того, ни другого. Функция просто создаёт видимость того, что вредонос сам выбирает способ уйти от обнаружения.
Вторая функция, AnalyzeTargetEnvironment(), выглядит чуть практичнее, но и она мало что меняет. В запросе к модели передаются версия операционной системы, архитектура и имя пользователя, после чего GPT-3.5 должна вернуть число от 1000 до 5000, то есть задержку в миллисекундах. Этот ответ уже используется по-настоящему: программа действительно засыпает на одну-пять секунд. Если модель молчит, берётся стандартная пауза в две секунды. Формально это рабочее поведение, но его смысл очень сомнителен. Исследователи прямо пишут, что такая интеграция не даёт сколько-нибудь осмысленного эффекта и скорее показывает отсутствие у автора практического опыта в создании скрытных инструментов.
Третья функция, GenerateObfuscatedCommunication(), просит модель назвать простой способ маскировки передачи данных. В примерах перечислены Base64 Encode, XOR Cipher и JSON Minify. После ответа вредонос формирует несложную структуру с названием техники, обфусцированной временной меткой и флагом, что обмен якобы улучшен с помощью большой языковой модели. На первый взгляд может показаться, что предложенный способ действительно применяют к трафику. Но при разборе кода исследователи не нашли реализации, которая бы это подтверждала. Название техники просто уходит в консоль и JSON-журнал, а сама передача данных не получает обещанной маскировки.
Особенно показательно выглядят логи. В консоли появляются сообщения об успешном подключении к интерфейсу OpenAI, инициализации GPT-3.5-turbo, завершении генерации обхода, анализа среды, маскировки связи, социальной инженерии, динамической адаптации, интеллектуальной обфускации, машинного обучения и ещё целого набора якобы активных механизмов. Финальная строка сообщает, что интеграция большой языковой модели полностью работоспособна. При этом большая часть этих возможностей существует только в тексте самих логов. За ними не стоит полноценного кода.
Четвёртая функция, SendToC2ServerWithLLM(), уже связана с отправкой украденных данных на сервер управления. Здесь вредонос просит модель придумать короткое профессионально звучащее сообщение, чтобы сетевой обмен выглядел более легитимно. GPT-3.5 возвращает нейтральную служебную фразу, а программа добавляет её в HTTP-заголовок X-Message и отдельно помечает запрос строкой X-LLM-Enhanced: true. Сами данные уходят в формате JSON по адресу hxxp[:]//localhost:3002/crypto-data. Исследователи отмечают, что и этот адрес сервера управления задан как значение по умолчанию, что похоже либо на локальное тестирование, либо на незавершённую сборку, которую вообще не готовили для реальных операций.
Именно эта функция ближе всех к настоящему применению модели, потому что здесь всё же есть действие, а не только запись в журнал. Если подставить рабочий адрес сервера, образец сможет передать данные наружу. Но и в таком случае участие искусственного интеллекта почти ничего не улучшает. Дополнительные HTTP-заголовки не делают канал связи эффективнее и не дают ощутимого преимущества. Они лишь подчёркивают сам факт использования модели. Поэтому исследователи и называют такой подход скорее спектаклем вокруг искусственного интеллекта, чем полезной инженерной находкой.
В целом назначение этого .NET-инфостилера вполне обычное: вытащить чувствительные данные из браузеров и системы, а затем отправить их на сервер управления. Слой, связанный с большой языковой моделью, должен был бы отвечать за динамическую адаптацию, уклонение от обнаружения и более умную коммуникацию с сервером управления. Разбор показывает обратное: почти вся часть с искусственным интеллектом работает как декоративная надстройка, которая создаёт впечатление сложности, но не добавляет реальной функциональности. Unit 42 допускает, что такие образцы могли написать с помощью искусственного интеллекта или собрать люди без серьёзного опыта, которые решили добавить модный компонент в уже знакомую схему.
Второй образец намного интереснее, потому что здесь модель используют не ради красивых надписей, а для решения важного вопроса: запускать полезную нагрузку или нет. Речь идёт о загрузчике на Go, который выступает дроппером для Sliver, открытого фреймворка для эмуляции противника и операций красной команды. Перед тем как развернуть полезную нагрузку, программа собирает информацию о системе, включая имя собственного процесса и родительского процесса. После этого дроппер расшифровывает шелл-код Donut, но не спешит сразу исполнять его. Сначала он пытается понять, не слишком ли опасна текущая среда.
Для такой проверки вредонос формирует своего рода обзор системы. Он собирает имя хоста, список процессов, сетевую информацию, сведения о подключённых USB-накопителях и время непрерывной работы машины. Все эти данные вставляются в запрос и отправляются в GPT-4 через интерфейс прикладного программирования по HTTP. Модели фактически передают принятие решения: она должна оценить собранные признаки и ответить, безопасно ли сбрасывать и запускать Sliver на этом хосте.
Обычно подобные проверки внутри вредоносной программы делаются гораздо проще и жёстче. Автор заранее прописывает эвристики, собирает списки нежелательных и допустимых признаков, добавляет логику проверки песочниц, виртуальных машин, инструментов анализа и других маркеров подозрительной среды. Такой подход хорошо знаком по программам-вымогателям и многим другим семействам. В случае с этим дроппером логика вынесена наружу: вместо фиксированного набора правил вердикт отдаётся языковой модели . Для защитников это неприятный поворот, потому что становится сложнее понять, от чего именно прячется вредонос и какое сочетание процессов или настроек заставит его отказаться от запуска.
Именно этот пример исследователи считают по-настоящему любопытным. Модель размещена удалённо, а значит говорить о полной автономности пока рано. Но сама идея уже понятна: авторы вредоноса хотят не просто получать текст от большой языковой модели, а поручить ей анализ обстановки и допуск к выполнению следующего шага. В традиционной схеме ту же задачу решают жёстко прошитые списки разрешений и запретов. Использование модели потенциально позволяет увязать между собой больше признаков системы и вынести более точный вердикт по тому, насколько среда подходит для заражения. Следующим шагом здесь вполне может стать локальный запуск небольшой языковой модели или компактного классификатора машинного обучения, обученного определять безопасную или опасную среду по набору характеристик хоста.
На этом фоне весь нынешний ландшафт вредоносных программ с искусственным интеллектом выглядит как смесь экспериментов, недоделок и первых осмысленных попыток. .NET-инфостилер показывает очень поверхностное и в итоге бесполезное использование большой языковой модели. Дроппер со Sliver, наоборот, демонстрирует уже более содержательный сценарий, где модель участвует в решении, выполнять атаку или нет. Исследователи отдельно подчёркивают, что пока нельзя уверенно доказать, использовались ли генеративные модели при написании самих этих образцов. Но даже одна такая возможность уже тревожит, потому что искусственный интеллект может заметно снизить входной порог для менее квалифицированных злоумышленников.
Дальше картина, по оценке Unit 42, будет только усложняться. По мере того как локальное развёртывание небольших моделей становится проще, можно ожидать появления образцов со встроенными возможностями искусственного интеллекта. Особенно речь идёт о генерации кода и о более гибкой подстройке под конкретную среду. Такая вредоносная программа сможет оперативнее менять поведение, лучше уходить от обнаружения и в реальном времени подбирать более выгодный способ выполнения вредоносных действий.
Рост использования искусственного интеллекта в вредоносном ПО может проявиться не только в усложнении логики, но и в более частом появлении новых функций, а также в повышении надёжности самих образцов. Иными словами, проблема не сводится к одному громкому слову в описании атаки. Опасность в том, что инструменты злоумышленников могут начать обновляться быстрее, работать стабильнее и лучше подстраиваться под условия на стороне жертвы. Именно поэтому за такими экспериментами сейчас приходится следить особенно внимательно: даже неудачные пробы показывают, в какую сторону движется следующая волна угроз.
Злоумышленники уже пробуют встраивать искусственный интеллект в вредоносное ПО, но пока получается очень неровно. Где-то нейросеть нужна скорее для вида и оставляет после себя только громкие логи без пользы. Где-то ей уже доверяют вполне конкретную задачу: решить, стоит ли запускать полезную нагрузку на этой машине или лучше не рисковать. Разбор Unit 42 хорошо показывает обе крайности сразу.
Исследователи искали в открытых источниках и собственной телеметрии следы того, что авторы вредоносных программ уже используют большие языковые модели. Их интересовали три сценария. Первый, когда искусственный интеллект помогает писать сам вредоносный код. Второй, когда модель участвует в удалённом управлении атакой и по сути подсказывает, что делать дальше. Третий, самый неприятный, когда вредонос начинает принимать решения прямо на заражённой системе, без внешнего оператора. По данным Unit 42, в реальных образцах уже встречались первые два варианта, а вот полноценной локальной агентной логики в дикой среде аналитики пока не видели.
Общий вывод у них при этом вполне прямой. Искусственный интеллект уже может помогать злоумышленникам писать рабочие образцы и в целом снижает порог входа для тех, кто раньше просто не дотягивал по навыкам. Но до по-настоящему автономной вредоносной программы пока далеко. Авторам всё ещё трудно встроить модель внутрь образца, развернуть её на целевой машине и сделать так, чтобы она реально управляла поведением программы, а не просто создавала ощущение чего-то умного.
Первый случай связан с .NET-инфостилером на C# под .NET Framework 4.0, который дополнительно упаковали ConfuserEx 2. Такая обфускация должна мешать анализу и детектированию, но главная деталь здесь другая: вредонос обращается к OpenAI GPT-3.5-Turbo через интерфейс прикладного программирования по HTTP. На бумаге идея выглядит почти как следующий этап развития вредоносного ПО. Кажется, будто заражённая программа сможет сама разбираться в среде, подбирать способы обхода защиты и осмысленнее общаться с сервером управления. На практике всё оказалось куда прозаичнее.
<!--'start_frame_cache_Zg1Ab0'--><div class="banner-detailed"><div class="banner-detailed__shell"><div class="banner-detailed__title">Интернет умер <span>Сохраните хоть канал.</span><div class="banner-detailed__arrow"><svg viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M20.5375 34.4392L22.465 31.7392C22.5739 31.5872 22.7145 31.4607 22.8772 31.3684C23.0399 31.2762 23.2207 31.2205 23.407 31.2052C23.5934 31.1898 23.7809 31.2152 23.9564 31.2796C24.132 31.344 24.2915 31.4458 24.4237 31.578L29.6025 36.758C30.0787 37.2333 30.724 37.5002 31.3969 37.5002C32.0697 37.5002 32.715 37.2333 33.1912 36.758L36.7575 33.1917C37.2328 32.7155 37.4998 32.0702 37.4998 31.3973C37.4998 30.7245 37.2328 30.0792 36.7575 29.603L31.5775 24.4242C31.4453 24.2919 31.3435 24.1325 31.2791 23.9569C31.2147 23.7814 31.1893 23.5939 31.2047 23.4075C31.22 23.2211 31.2757 23.0404 31.368 22.8777C31.4602 22.715 31.5867 22.5743 31.7387 22.4655L34.4387 20.538C34.6405 20.3939 34.7965 20.1947 34.8878 19.9641C34.9791 19.7336 35.0018 19.4816 34.9534 19.2385C34.9049 18.9953 34.7873 18.7713 34.6146 18.5934C34.442 18.4155 34.2216 18.2912 33.98 18.2355L13.5112 13.5117L18.235 33.9805C18.2907 34.2221 18.415 34.4425 18.5929 34.6151C18.7708 34.7878 18.9948 34.9054 19.238 34.9539C19.4812 35.0023 19.7331 34.9795 19.9637 34.8882C20.1942 34.7969 20.3934 34.641 20.5375 34.4392Z" fill="#FFD98C"></path><path d="M34.0751 37.6413C33.3582 38.3389 32.3973 38.7293 31.397 38.7293C30.3966 38.7293 29.4358 38.3389 28.7189 37.6413L23.4826 32.4663L21.5539 35.165C21.2699 35.5626 20.8773 35.8698 20.423 36.0497C19.9688 36.2295 19.4723 36.2744 18.9931 36.179C18.514 36.0836 18.0726 35.8518 17.7219 35.5117C17.3713 35.1715 17.1263 34.7373 17.0164 34.2613L12.2926 13.7925C12.2447 13.5858 12.2502 13.3702 12.3086 13.1662C12.367 12.9622 12.4764 12.7764 12.6264 12.6263C12.7765 12.4763 12.9623 12.3669 13.1663 12.3085C13.3703 12.2501 13.5859 12.2446 13.7926 12.2925L34.2614 17.0175C34.7374 17.1271 35.1717 17.3719 35.512 17.7225C35.8523 18.073 36.0841 18.5144 36.1795 18.9935C36.275 19.4726 36.23 19.9691 36.0501 20.4233C35.8701 20.8775 35.5628 21.27 35.1651 21.5538L32.4614 23.54L37.6414 28.7188C38.3498 29.43 38.7476 30.393 38.7476 31.3969C38.7476 32.4008 38.3498 33.3637 37.6414 34.075L34.0751 37.6413ZM35.8751 30.4863L30.6951 25.3075C30.4344 25.047 30.2336 24.7328 30.1068 24.3868C29.9799 24.0407 29.9299 23.6712 29.9604 23.3039C29.9908 22.9366 30.101 22.5804 30.2831 22.26C30.4653 21.9396 30.7151 21.6628 31.0151 21.4488L33.6989 19.4488L15.1851 15.1763L19.5001 33.7275L19.5139 33.7113L21.4414 31.0125C21.6555 30.7124 21.9325 30.4626 22.253 30.2805C22.5735 30.0983 22.9298 29.9882 23.2972 29.9577C23.6646 29.9272 24.0342 29.9772 24.3803 30.1041C24.7264 30.231 25.0407 30.4318 25.3014 30.6925L30.4864 35.875C30.728 36.1163 31.0555 36.2518 31.397 36.2518C31.7385 36.2518 32.066 36.1163 32.3076 35.875L35.8751 32.3075C36.1161 32.0657 36.2514 31.7383 36.2514 31.3969C36.2514 31.0555 36.1161 30.728 35.8751 30.4863ZM8.14636 9.385C7.98292 9.38706 7.82069 9.35675 7.66901 9.29583C7.51733 9.2349 7.37921 9.14455 7.26261 9.03L4.58011 6.3475C4.35242 6.11175 4.22643 5.796 4.22927 5.46825C4.23212 5.1405 4.36358 4.82699 4.59534 4.59523C4.8271 4.36347 5.14062 4.23201 5.46836 4.22916C5.79611 4.22631 6.11186 4.3523 6.34761 4.58L9.03012 7.2625C9.20107 7.43787 9.31674 7.65959 9.36277 7.90013C9.4088 8.14068 9.38315 8.38944 9.28901 8.61553C9.19487 8.84162 9.03639 9.03508 8.83325 9.17188C8.63011 9.30867 8.39126 9.38278 8.14636 9.385ZM17.9726 9.03C17.7362 9.26044 17.419 9.3894 17.0889 9.3894C16.7587 9.3894 16.4416 9.26044 16.2051 9.03C15.9708 8.79559 15.8391 8.47771 15.8391 8.14625C15.8391 7.8148 15.9708 7.49691 16.2051 7.2625L18.8876 4.58C19.0029 4.46061 19.1409 4.36538 19.2934 4.29987C19.4459 4.23436 19.6099 4.19988 19.7759 4.19844C19.9418 4.197 20.1064 4.22862 20.2601 4.29147C20.4137 4.35432 20.5532 4.44714 20.6706 4.56451C20.788 4.68187 20.8808 4.82144 20.9436 4.97506C21.0065 5.12868 21.0381 5.29328 21.0367 5.45925C21.0352 5.62523 21.0008 5.78925 20.9352 5.94176C20.8697 6.09426 20.7745 6.23219 20.6551 6.3475L17.9726 9.03ZM6.34761 20.655C6.11146 20.886 5.79423 21.0154 5.46386 21.0154C5.1335 21.0154 4.81627 20.886 4.58011 20.655C4.34578 20.4206 4.21413 20.1027 4.21413 19.7713C4.21413 19.4398 4.34578 19.1219 4.58011 18.8875L7.26261 16.205C7.37792 16.0856 7.51585 15.9904 7.66836 15.9249C7.82086 15.8594 7.98489 15.8249 8.15086 15.8234C8.31684 15.822 8.48144 15.8536 8.63506 15.9165C8.78868 15.9793 8.92824 16.0721 9.04561 16.1895C9.16297 16.3069 9.25579 16.4464 9.31864 16.6001C9.38149 16.7537 9.41312 16.9183 9.41168 17.0843C9.41024 17.2502 9.37575 17.4143 9.31024 17.5668C9.24473 17.7193 9.1495 17.8572 9.03012 17.9725L6.34761 20.655ZM12.6176 7.54375C12.2861 7.54375 11.9682 7.41205 11.7337 7.17763C11.4993 6.94321 11.3676 6.62527 11.3676 6.29375V2.5C11.3676 2.16848 11.4993 1.85054 11.7337 1.61612C11.9682 1.3817 12.2861 1.25 12.6176 1.25C12.9491 1.25 13.2671 1.3817 13.5015 1.61612C13.7359 1.85054 13.8676 2.16848 13.8676 2.5V6.29375C13.8676 6.62527 13.7359 6.94321 13.5015 7.17763C13.2671 7.41205 12.9491 7.54375 12.6176 7.54375ZM2.50011 11.3675H6.29387C6.62539 11.3675 6.94333 11.4992 7.17775 11.7336C7.41217 11.968 7.54387 12.286 7.54387 12.6175C7.54387 12.949 7.41217 13.267 7.17775 13.5014C6.94333 13.7358 6.62539 13.8675 6.29387 13.8675H2.50011C2.16859 13.8675 1.85065 13.7358 1.61623 13.5014C1.38181 13.267 1.25011 12.949 1.25011 12.6175C1.25011 12.286 1.38181 11.968 1.61623 11.7336C1.85065 11.4992 2.16859 11.3675 2.50011 11.3675Z" fill="#272727"></path></svg> <!--'end_frame_cache_Zg1Ab0'--> Сам инфостилер при этом вполне рабочий. Он собирает сведения о системе, вытаскивает файлы cookie из браузеров, строит списки файлов и готовит всё это к отправке на сервер управления. В коде рядом с этим есть набор функций, которые должны изображать логику на базе искусственного интеллекта : генерацию техник обхода защиты, анализ среды, маскировку обмена данными и подготовку правдоподобных сообщений для трафика командного сервера. Именно эти части исследователи и разобрали по шагам.
Всего таких функций четыре: GenerateEvasionTechnique(), AnalyzeTargetEnvironment(), GenerateObfuscatedCommunication() и SendToC2ServerWithLLM(). По оценке Unit 42, ни одна из них не делает образец заметно опаснее или хитрее. Наоборот, лишние обращения к модели только добавляют шум и могут привлечь внимание защитников. Вызовы есть, ответы приходят, но толку почти нет.
Первая функция, GenerateEvasionTechnique(), просит GPT-3.5 придумать простой метод уклонения для инструмента кражи данных и вернуть только короткое название, максимум из трёх слов. В примерах фигурируют Random Delay, Process Spoofing и Memory Obfuscation. Если интерфейс не отвечает, вредонос подставляет значение по умолчанию, Random Delay. Дальше начинается самое показательное: результат ни на что не влияет. Полученная строка просто записывается в victim_logs.txt на рабочем столе жертвы вместе с отметкой времени. Никакой реальной реализации за ней нет.
Именно здесь хорошо видно, насколько поверхностно сделана вся схема. Чтобы такой ответ действительно работал, автору пришлось бы заранее прописать обработчики под каждую возможную технику или получать от модели уже такие данные, которые можно превратить в исполняемую логику на лету. Теоретически оба пути возможны. В найденных образцах не сделано ни того, ни другого. Функция просто создаёт видимость того, что вредонос сам выбирает способ уйти от обнаружения.
Вторая функция, AnalyzeTargetEnvironment(), выглядит чуть практичнее, но и она мало что меняет. В запросе к модели передаются версия операционной системы, архитектура и имя пользователя, после чего GPT-3.5 должна вернуть число от 1000 до 5000, то есть задержку в миллисекундах. Этот ответ уже используется по-настоящему: программа действительно засыпает на одну-пять секунд. Если модель молчит, берётся стандартная пауза в две секунды. Формально это рабочее поведение, но его смысл очень сомнителен. Исследователи прямо пишут, что такая интеграция не даёт сколько-нибудь осмысленного эффекта и скорее показывает отсутствие у автора практического опыта в создании скрытных инструментов.
Третья функция, GenerateObfuscatedCommunication(), просит модель назвать простой способ маскировки передачи данных. В примерах перечислены Base64 Encode, XOR Cipher и JSON Minify. После ответа вредонос формирует несложную структуру с названием техники, обфусцированной временной меткой и флагом, что обмен якобы улучшен с помощью большой языковой модели. На первый взгляд может показаться, что предложенный способ действительно применяют к трафику. Но при разборе кода исследователи не нашли реализации, которая бы это подтверждала. Название техники просто уходит в консоль и JSON-журнал, а сама передача данных не получает обещанной маскировки.
Особенно показательно выглядят логи. В консоли появляются сообщения об успешном подключении к интерфейсу OpenAI, инициализации GPT-3.5-turbo, завершении генерации обхода, анализа среды, маскировки связи, социальной инженерии, динамической адаптации, интеллектуальной обфускации, машинного обучения и ещё целого набора якобы активных механизмов. Финальная строка сообщает, что интеграция большой языковой модели полностью работоспособна. При этом большая часть этих возможностей существует только в тексте самих логов. За ними не стоит полноценного кода.
Четвёртая функция, SendToC2ServerWithLLM(), уже связана с отправкой украденных данных на сервер управления. Здесь вредонос просит модель придумать короткое профессионально звучащее сообщение, чтобы сетевой обмен выглядел более легитимно. GPT-3.5 возвращает нейтральную служебную фразу, а программа добавляет её в HTTP-заголовок X-Message и отдельно помечает запрос строкой X-LLM-Enhanced: true. Сами данные уходят в формате JSON по адресу hxxp[:]//localhost:3002/crypto-data. Исследователи отмечают, что и этот адрес сервера управления задан как значение по умолчанию, что похоже либо на локальное тестирование, либо на незавершённую сборку, которую вообще не готовили для реальных операций.
Именно эта функция ближе всех к настоящему применению модели, потому что здесь всё же есть действие, а не только запись в журнал. Если подставить рабочий адрес сервера, образец сможет передать данные наружу. Но и в таком случае участие искусственного интеллекта почти ничего не улучшает. Дополнительные HTTP-заголовки не делают канал связи эффективнее и не дают ощутимого преимущества. Они лишь подчёркивают сам факт использования модели. Поэтому исследователи и называют такой подход скорее спектаклем вокруг искусственного интеллекта, чем полезной инженерной находкой.
В целом назначение этого .NET-инфостилера вполне обычное: вытащить чувствительные данные из браузеров и системы, а затем отправить их на сервер управления. Слой, связанный с большой языковой моделью, должен был бы отвечать за динамическую адаптацию, уклонение от обнаружения и более умную коммуникацию с сервером управления. Разбор показывает обратное: почти вся часть с искусственным интеллектом работает как декоративная надстройка, которая создаёт впечатление сложности, но не добавляет реальной функциональности. Unit 42 допускает, что такие образцы могли написать с помощью искусственного интеллекта или собрать люди без серьёзного опыта, которые решили добавить модный компонент в уже знакомую схему.
Второй образец намного интереснее, потому что здесь модель используют не ради красивых надписей, а для решения важного вопроса: запускать полезную нагрузку или нет. Речь идёт о загрузчике на Go, который выступает дроппером для Sliver, открытого фреймворка для эмуляции противника и операций красной команды. Перед тем как развернуть полезную нагрузку, программа собирает информацию о системе, включая имя собственного процесса и родительского процесса. После этого дроппер расшифровывает шелл-код Donut, но не спешит сразу исполнять его. Сначала он пытается понять, не слишком ли опасна текущая среда.
Для такой проверки вредонос формирует своего рода обзор системы. Он собирает имя хоста, список процессов, сетевую информацию, сведения о подключённых USB-накопителях и время непрерывной работы машины. Все эти данные вставляются в запрос и отправляются в GPT-4 через интерфейс прикладного программирования по HTTP. Модели фактически передают принятие решения: она должна оценить собранные признаки и ответить, безопасно ли сбрасывать и запускать Sliver на этом хосте.
Обычно подобные проверки внутри вредоносной программы делаются гораздо проще и жёстче. Автор заранее прописывает эвристики, собирает списки нежелательных и допустимых признаков, добавляет логику проверки песочниц, виртуальных машин, инструментов анализа и других маркеров подозрительной среды. Такой подход хорошо знаком по программам-вымогателям и многим другим семействам. В случае с этим дроппером логика вынесена наружу: вместо фиксированного набора правил вердикт отдаётся языковой модели . Для защитников это неприятный поворот, потому что становится сложнее понять, от чего именно прячется вредонос и какое сочетание процессов или настроек заставит его отказаться от запуска.
Именно этот пример исследователи считают по-настоящему любопытным. Модель размещена удалённо, а значит говорить о полной автономности пока рано. Но сама идея уже понятна: авторы вредоноса хотят не просто получать текст от большой языковой модели, а поручить ей анализ обстановки и допуск к выполнению следующего шага. В традиционной схеме ту же задачу решают жёстко прошитые списки разрешений и запретов. Использование модели потенциально позволяет увязать между собой больше признаков системы и вынести более точный вердикт по тому, насколько среда подходит для заражения. Следующим шагом здесь вполне может стать локальный запуск небольшой языковой модели или компактного классификатора машинного обучения, обученного определять безопасную или опасную среду по набору характеристик хоста.
На этом фоне весь нынешний ландшафт вредоносных программ с искусственным интеллектом выглядит как смесь экспериментов, недоделок и первых осмысленных попыток. .NET-инфостилер показывает очень поверхностное и в итоге бесполезное использование большой языковой модели. Дроппер со Sliver, наоборот, демонстрирует уже более содержательный сценарий, где модель участвует в решении, выполнять атаку или нет. Исследователи отдельно подчёркивают, что пока нельзя уверенно доказать, использовались ли генеративные модели при написании самих этих образцов. Но даже одна такая возможность уже тревожит, потому что искусственный интеллект может заметно снизить входной порог для менее квалифицированных злоумышленников.
Дальше картина, по оценке Unit 42, будет только усложняться. По мере того как локальное развёртывание небольших моделей становится проще, можно ожидать появления образцов со встроенными возможностями искусственного интеллекта. Особенно речь идёт о генерации кода и о более гибкой подстройке под конкретную среду. Такая вредоносная программа сможет оперативнее менять поведение, лучше уходить от обнаружения и в реальном времени подбирать более выгодный способ выполнения вредоносных действий.
Рост использования искусственного интеллекта в вредоносном ПО может проявиться не только в усложнении логики, но и в более частом появлении новых функций, а также в повышении надёжности самих образцов. Иными словами, проблема не сводится к одному громкому слову в описании атаки. Опасность в том, что инструменты злоумышленников могут начать обновляться быстрее, работать стабильнее и лучше подстраиваться под условия на стороне жертвы. Именно поэтому за такими экспериментами сейчас приходится следить особенно внимательно: даже неудачные пробы показывают, в какую сторону движется следующая волна угроз.
- Источник новости
- www.securitylab.ru