Исследователи ESET обнаружили первый известный случай использования вредоносного ПО для Android, злоупотребляющего генеративным ИИ для контекстно-зависимой манипуляции пользовательским интерфейсом. Хотя машинное обучение уже использовалось для аналогичных целей — совсем недавно исследователи Dr.WEB обнаружили Android.Phantom, который использует модели машинного обучения TensorFlow для анализа скриншотов рекламы и автоматического нажатия на обнаруженные элементы с целью крупномасштабного рекламного мошенничества — это первый случай, когда мы видим использование генеративного ИИ таким образом. Поскольку злоумышленники полагаются на подсказки модели ИИ (в данном случае — Gemini от Google) для управления вредоносным манипулированием пользовательским интерфейсом, мы назвали это семейство PromptSpy. Это второе обнаруженное нами вредоносное ПО на базе ИИ — после PromptLock в августе 2025 года, первого известного случая использования ИИ в программах-вымогателях.
Хотя генеративный ИИ используется лишь в относительно небольшой части кода PromptSpy — той, которая отвечает за обеспечение устойчивости — он все же оказывает значительное влияние на адаптивность вредоносного ПО. В частности, Gemini используется для анализа текущего экрана и предоставления PromptSpy пошаговых инструкций о том, как обеспечить, чтобы вредоносное приложение оставалось закрепленным в списке недавних приложений, тем самым предотвращая его легкое удаление свайпом или завершение системой. Модель ИИ и подсказка заранее определены в коде и не могут быть изменены. Поскольку вредоносное ПО для Android часто полагается на навигацию по пользовательскому интерфейсу, использование генеративного ИИ позволяет злоумышленникам адаптироваться практически к любому устройству, макету или версии ОС, что может значительно расширить круг потенциальных жертв.
Основная цель PromptSpy — развернуть встроенный модуль VNC, предоставляющий операторам удаленный доступ к устройству жертвы. Это вредоносное ПО для Android также злоупотребляет службой доступности, чтобы блокировать удаление с помощью невидимых наложений, перехватывает данные экрана блокировки и записывает видео. Оно связывается со своим C&C-сервером через протокол VNC, используя шифрование AES.
Судя по признакам языковой локализации и векторам распространения, наблюдавшимся в ходе анализа, эта кампания, по-видимому, имеет финансовую мотивацию и, как представляется, в первую очередь нацелена на пользователей в Аргентине. Интересно, что проанализированные образцы PromptSpy позволяют предположить, что оно было разработано в китайскоязычной среде.
PromptSpy распространяется через специальный веб-сайт и никогда не был доступен в Google Play. Тем не менее, как партнер App Defense Alliance, мы поделились нашими выводами с Google. Пользователи Android автоматически защищены от известных версий этого вредоносного ПО благодаря Google Play Protect, который включен по умолчанию на устройствах Android с Google Play Services.
Ключевые моменты этой статьи:
- PromptSpy — первое известное вредоносное ПО для Android, использующее генеративный ИИ в своем рабочем цикле, хотя и только для обеспечения устойчивости.
- Gemini от Google используется для интерпретации элементов на экране зараженного устройства и предоставления PromptSpy динамических инструкций о том, как выполнить определенный жест, чтобы остаться в списке недавно запущенных приложений.
- Основная цель PromptSpy (не связанная с использованием генеративного ИИ) — развернуть модуль VNC на устройстве жертвы, что позволяет злоумышленникам видеть экран и выполнять действия удаленно.
- PromptSpy пока не наблюдался в нашей телеметрии, что делает его возможным доказательством концепции; однако обнаружение вероятного домена распространения предполагает существование варианта, нацеленного на пользователей в Аргентине.
- PromptSpy может перехватывать данные с экрана блокировки, блокировать удаление, собирать информацию об устройстве, делать скриншоты, записывать активность экрана в виде видео и многое другое.
Функциональность PromptSpy на базе искусственного интеллекта
Несмотря на то, что PromptSpy использует Gemini лишь в одной из своих функций, это все же демонстрирует, как внедрение таких инструментов искусственного интеллекта может сделать вредоносное ПО более динамичным, предоставляя злоумышленникам способы автоматизировать действия, которые обычно были бы более сложными при использовании традиционных скриптов.
Как уже кратко упоминалось, вредоносное ПО для Android обычно зависит от жестко запрограммированных функций экрана, таких как нажатия, координаты или селекторы пользовательского интерфейса — методы, которые могут перестать работать при изменениях интерфейса на разных устройствах, в разных версиях ОС или в оболочках производителей. PromptSpy стремится обеспечить свою устойчивость, оставаясь в списке недавних приложений путем выполнения жеста «заблокировать приложение в списке недавних приложений» (полный процесс описан в разделе «Анализ»
), который варьируется в зависимости от устройств и производителей. Это затрудняет автоматизацию с помощью фиксированных скриптов, традиционно используемых вредоносным ПО для Android.
Поэтому PromptSpy использует совершенно иной подход: оно отправляет Gemini запрос на естественном языке вместе с XML-дампом текущего экрана, предоставляя ИИ подробную информацию о каждом элементе интерфейса: его тексте, типе и точном положении на дисплее.
Gemini обрабатывает эту информацию и отвечает инструкциями в формате JSON, которые указывают вредоносному ПО, какое действие выполнить (например, нажать) и где его выполнить. Вредоносное ПО сохраняет как свои предыдущие запросы, так и ответы Gemini, что позволяет Gemini понимать контекст и координировать многоэтапные взаимодействия.
На рисунке 1 показан фрагмент кода инициализации связи PromptSpy с Gemini, включая первый использованный запрос. Передавая принятие решений Gemini, вредоносное ПО может распознавать нужный элемент пользовательского интерфейса и выполнять соответствующий жест, что позволяет ему оставаться активным, даже если пользователь пытается его закрыть.

PromptSpy продолжает отправлять запросы Gemini до тех пор, пока ИИ не подтвердит, что приложение успешно заблокировано, демонстрируя цикл обратной связи, в котором вредоносное ПО ожидает подтверждения, прежде чем продолжить.
Обзор PromptSpy
В феврале 2026 года мы обнаружили две версии ранее неизвестного семейства вредоносных программ для Android. Первая версия, которую мы назвали VNCSpy, появилась на VirusTotal13 января 2026 года и была представлена тремя образцами, загруженными из Гонконга.10 февраля 2026 года на VirusTotal из Аргентины были загружены четыре образца более продвинутого вредоносного ПО, основанного на VNCSpy.
Наш анализ образцов из Аргентины выявил многоступенчатое вредоносное ПО с вредоносной полезной нагрузкой, злоупотребляющей сервисом Google Gemini. На основании этих результатов мы назвали первую ступень этого вредоносного ПО дроппером PromptSpy, а его полезную нагрузку — PromptSpy.
Следует отметить, что мы пока не видели в нашей телеметрии никаких образцов дроппера PromptSpy или его полезной нагрузки, что может указывать на то, что оба они являются лишь доказательствами концепции. Однако, исходя из существования возможного домена распространения, описанного в следующих параграфах, мы не можем исключать вероятность того, что дроппер PromptSpy и PromptSpy существуют в дикой среде.
Согласно данным VirusTotal, все четыре образца дроппера PromptSpy распространялись через веб-сайт mgardownload[.]com; на момент нашего анализа он уже был недоступен.
После установки и запуска дроппера PromptSpy открывалась веб-страница, размещенная на m‑mgarg[.]com. Хотя этот домен также был недоступен, кэшированная версия Google показала, что он, вероятно, имитировал сайт Chase Bank (юридическое название — JPMorgan Chase Bank N.A.) (см. рис. 2).

Вредоносное ПО использует похожий брендинг: название приложения MorganArg и значок, вдохновленный банком Chase (см. рис. 3). MorganArg, вероятно, сокращение от «Morgan Argentina», также фигурирует в качестве названия кэшированного веб-сайта, что указывает на региональную направленность атаки.

Мы использовали домен m-mgarg[.]com для поиска в VirusTotal, что привело нас к еще одному образцу вредоносного ПО для Android (Android/Phishing.Agent.M). VirusTotal показал поддельный веб-сайт на испанском языке с кнопкой «Iniciar sesión» (Войти), что указывает на то, что страница, вероятно, была предназначена для имитации веб-сайта банка (см. рис. 4).

Этот троян, по-видимому, функционирует как сопутствующее приложение, разработанное тем же злоумышленником, стоящим за VNCSpy и PromptSpy. В фоновом режиме троян связывается со своим сервером, чтобы запросить файл конфигурации, который содержит ссылку для загрузки другого APK-файла, предлагаемого жертве на испанском языке в качестве обновления. Во время нашего исследования доступ к конфигурационному серверу был закрыт, поэтому точный URL-адрес загрузки остается неизвестным. Однако, учитывая, что он использует тот же уникальный сайт-подделку банка, то же название приложения, значок и, что наиболее важно, подписан тем же уникальным сертификатом разработчика, что и дроппер PromptSpy, — мы сильно подозреваем, что это приложение может служить начальным этапом, предназначенным для того, чтобы подтолкнуть жертв к установке PromptSpy.
И VNCSpy, и PromptSpy включают компонент VNC, предоставляющий их операторам полный удаленный доступ к скомпрометированным устройствам, как только жертвы включают службы доступности (см. рис. 5). Это позволяет операторам вредоносного ПО видеть все, что происходит на устройстве, и выполнять нажатия, свайпы, жесты и ввод текста, как если бы они физически держали телефон в руках.

В дополнение к вредоносным возможностям, уже содержащимся в VNCSpy, PromptSpy добавляет манипуляции с пользовательским интерфейсом с помощью ИИ, что помогает ему сохранять устойчивость, удерживая вредоносное приложение закрепленным в списке недавних приложений (пример того, как отображается закрепление в списке, можно увидеть на рис. 6).

Мы полагаем, что эта функциональность используется до установления сеанса VNC, чтобы пользователь или система не закрыли процесс PromptSpy из списка недавних приложений. На рисунке 7 показано сетевое взаимодействие PromptSpy с Gemini AI.

Происхождение
При анализе PromptSpy мы заметили, что он содержит отладочные строки, написанные на упрощенном китайском языке. Он даже включает обработку различных типов событий китайской системы доступности (см. рис. 8) — отладочный метод, который был отключен в коде, но не удален. Основная цель этого метода — предоставить локализованное (на китайском языке) объяснение различных событий доступности, которые происходят на устройстве Android. Это делает журналы событий более понятными для китайскоязычных пользователей или разработчиков, а не просто отображает необработанные целочисленные коды.

С умеренной степенью уверенности эти детали позволяют предположить, что PromptSpy был разработан в китайскоязычной среде.
Анализ
Наш технический анализ сосредоточен на дроппере PromptSpy и его полезной нагрузке — PromptSpy. PromptSpy встроен (app-release.apk) в каталог ресурсов дроппера. Этот APK содержит основную вредоносную функциональность. При запуске дроппера отображается сообщение, призывающее пользователя установить то, что выглядит как обновленная версия приложения. Это «обновление» на самом деле является полезной нагрузкой PromptSpy, которую пользователь должен установить вручную (см. рис. 9).

После установки и запуска PromptSpy запрашивает доступ к службе , что дает вредоносному ПО возможность считывать содержимое экрана и выполнять автоматические клики.
Затем PromptSpy отображает на переднем плане простой экран-приманку в стиле загрузки (см. рис. 10). Тем временем в фоновом режиме он начинает обмениваться данными с Gemini AI, чтобы получить инструкции, необходимые для фиксации своего процесса в списке «Недавние приложения» — это простая техника обеспечения постоянства, позволяющая PromptSpy оставаться активным и зафиксированным на месте даже после перезагрузки устройства.

Когда пользователь видит сообщение «Загрузка, пожалуйста, подождите », PromptSpy использует службы доступности, чтобы открыть экран «Недавние приложения» и собрать подробную информацию о пользовательском интерфейсе: видимый текст, описания содержимого, имена классов, имена пакетов и границы экрана. Он сериализует этот динамический снимок пользовательского интерфейса в формате XML и включает его в свой запрос к Gemini. Затем Gemini возвращает пошаговые инструкции по нажатиям, как выполнить жест «блокировки приложения».
Этот процесс образует непрерывный цикл:
- PromptSpy отправляет обновленный контекст пользовательского интерфейса в Gemini
- Gemini отвечает новыми действиями
- PromptSpy выполняет их и возвращает состояние экрана
Цикл продолжается до тех пор, пока Gemini не подтвердит, что приложение успешно заблокировано в списке недавних приложений. Вот пример структуры:
- Подсказка: Вы являетесь помощником по автоматизации Android. Пользователь предоставит вам данные XML интерфейса текущего экрана. Вам необходимо проанализировать XML и вывести инструкции по операциям в формате JSON для достижения цели пользователя.nУзлы в XML содержат атрибуты «bounds» в формате «[left,top][right,bottom]». Вам необходимо вычислить координаты центра для генерации инструкций по кликам.nn*** Основные правила принятия решений ***n1. **НЕ предполагайте, что задача выполнена**. Возвращайте ‘COMPLETED’ только тогда, когда вы ясно видите визуальные доказательства успеха в текущем XML интерфейса (например, появляется текст типа ‘Saved’, ‘Success’, статус переключателя становится checked=»true», или экран перешел в целевое состояние).n2. Если вы выполнили последний шаг, но текущий XML еще не отражает результат, верните ‘IN_PROGRESS’ с действием ‘NONE’ (или подождите), чтобы проверить новое состояние пользовательского интерфейса в следующем цикле.n3. Если не уверены, оставайтесь в состоянии ‘IN_PROGRESS’ и попытайтесь проверить.n4. Если текущий XML интерфейса пуст, используйте «RECENTS» для доступа к списку недавних приложений.nnВы можете использовать SWIPE для прокрутки/сдвига, чтобы найти цели:nКогда action_type = «SWIPE», вы должны указать x1,y1,x2,y2,duration_ms.нНапример, прокрутка вверх: сдвиг снизу вверх (y2 < y1).nnПожалуйста, строго придерживайтесь этого формата вывода JSON, не выводите никаких тегов Markdown или лишнего текста:n{n «status»: «IN_PROGRESS» | «COMPLETED» | «IMPOSSIBLE»,n «reasoning»: «Подробное объяснение: какой конкретный текст или состояние я увидел на экране, чтобы судить, что задача выполнена или требует следующего <УДАЛЕНО>Цель пользователя: зафиксировать текущее приложение MorganArgs в списке недавних приложений. Информация об устройстве: <МОДЕЛЬ УСТРОЙСТВА> nnТекущий XML интерфейса: <UI>
- Ответ Gemini (инструкции по действию): status»: «IN_PROGRESS»,n «reasoning»: «Я открыл список недавних приложений. Я вижу приложение «MorganArgs» в списке недавних приложений. Следующий шаг — нажать и удерживать карточку приложения «MorganArgs», чтобы открыть меню опций, в котором должна быть опция его блокировки.»,n «action_type»: «LONG_CLICK»,n «x»: 586,n «y»: 1126,n «x1»: -1,n «y1»: -1,n «x2»: -1,n «y2»: -1,n «duration_ms»: -1n)
- Дальнейшие действия вредоносного ПО с обновленными результатами экрана: предыдущее действие выполнено. Это новый XML интерфейса пользователя, пожалуйста, определите, завершена ли задача, или предоставьте следующую инструкцию: <CURRENTLY VISIBLE ACTIVITY>
Все действия, предлагаемые Gemini — нажатия, свайпы, навигация — выполняются через службы доступности, что позволяет вредоносному ПО взаимодействовать с устройством без участия пользователя.
Основная вредоносная функция PromptSpy заключается в его встроенном сервисе VNC. Это позволяет злоумышленникам удаленно просматривать экран жертвы в режиме реального времени и полностью контролировать устройство.
Вредоносная программа связывается со своим жестко запрограммированным командно-контрольным (C&C) сервером по адресу 54.67.2[.]84, используя протокол VNC; сообщения шифруются с помощью AES с использованием жестко запрограммированного ключа. Через этот канал связи вредоносная программа может:
- получить ключ API Gemini,
- загрузите список установленных приложений,
- перехватить PIN-код или пароль экрана блокировки,
- записать экран разблокировки по шаблону в виде видео,
- сообщить, включен ли экран или выключен,
- сообщать о текущем приложении, работающем в фоновом режиме,
- записывать экран и жесты пользователя для приложений, указанных сервером, и
- делать снимки экрана по запросу.
PromptSpy также злоупотребляет службами доступности в качестве механизма защиты от удаления. Когда пользователь пытается удалить полезную нагрузку или отключить службы доступности, вредоносное ПО накладывает прозрачные прямоугольники на определенные области экрана — в частности, на кнопки, содержащие подстроки типа «stop», «end», «clear» и «Uninstall». Эти наложения невидимы для пользователя, но перехватывают взаимодействия, затрудняя удаление. На рисунке 11 мы запустили PromptSpy с включенным флагом отладки (оставленным разработчиками), который задает цвет прозрачного прямоугольника, чтобы визуализировать, где именно они отображаются. Однако на реальном устройстве они полностью невидимы.

Поскольку PromptSpy блокирует удаление, накладывая на экран невидимые элементы, единственный способ для жертвы удалить его — перезагрузить устройство в безопасном режиме, где сторонние приложения отключены и их можно удалить обычным способом.
Чтобы войти в безопасный режим, пользователи обычно должны нажать и удерживать кнопку питания, долго нажать «Выключить» и подтвердить запрос «Перезагрузить в безопасном режиме» (хотя точный метод может отличаться в зависимости от устройства и производителя). Как только телефон перезагрузится в безопасном режиме, пользователь может перейти в «Настройки» → «Приложения» → «MorganArg» и удалить его без помех.
Заключение
PromptSpy показывает, что вредоносное ПО для Android начинает развиваться в зловещем направлении. Опираясь на генеративный ИИ для интерпретации элементов на экране и принятия решений о взаимодействии с ними, вредоносное ПО может адаптироваться практически к любому устройству, размеру экрана или макету пользовательского интерфейса, с которым оно сталкивается. Вместо жестко запрограммированных нажатий оно просто передает ИИ снимок экрана и получает в ответ точные пошаговые инструкции по взаимодействию, что помогает ему реализовать технику персистентности, устойчивую к изменениям пользовательского интерфейса.
В более широком смысле эта кампания показывает, как генеративный ИИ может сделать вредоносное ПО гораздо более динамичным и способным принимать решения в режиме реального времени. PromptSpy — один из первых примеров вредоносного ПО для Android на базе генеративного ИИ, который иллюстрирует, как быстро злоумышленники начинают злоупотреблять инструментами ИИ для усиления воздействия.
По любым вопросам, касающимся наших исследований, опубликованных на WeLiveSecurity, обращайтесь к нам по адресу threatintel@eset.com.ESET Research предлагает частные отчеты по APT-угрозам и информационные ленты. По любым вопросам об этой услуге посетите страницу ESET Threat Intelligence.
IoC
Полный список индикаторов компрометации (IoC) и образцов можно найти в нашем репозитории GitHub.
Файлы
| SHA-1 | Имя файла | Обнаружение | Описание |
| 6BBC9AB132BA066F6367 |
net.ustexas. |
Android/Spy.VNCSpy.A | Вредоносное ПО Android VNCSpy. |
| 375D7423E63C8F5F2CC8 |
nlll4.un7o6. |
Android/Spy.VNCSpy.A | Вредоносное ПО Android VNCSpy. |
| 3978AC5CD14E357320E1 |
ppyzz.dpk0p. |
Android/Spy.VNCSpy.A | Вредоносное ПО Android VNCSpy. |
| E60D12017D2DA579DF87 |
mgappc-1.apk | Android/Spy.PromptSpy.A | Дроппер PromptSpy для Android. |
| 9B1723284E3117949879 |
mgappm-1.apk | Android/Spy.PromptSpy.A | Дроппер PromptSpy для Android. |
| 076801BD9C6EB78FC033 |
mgappn-0.apk | Android/Spy.PromptSpy.A | Дроппер PromptSpy для Android. |
| 8364730E9BB2CF3A4B01 |
mgappn-1.apk | Android/Spy.PromptSpy.A | Дроппер PromptSpy для Android. |
| F8F4C5BC498BCCE907DC |
app-release. |
Android/Spy.PromptSpy.A | Android PromptSpy. |
| C14E9B062ED28115EDE0 |
mgapp.apk | Android/Phishing.Agent.M | Android-фишинговое вредоносное ПО. |
Сеть
| IP | Домен | Хостинг-провайдер | Впервые обнаружено | Подробности |
| 52.222.205[.]45 | m-mgarg[.]com | Amazon.com, Inc. | 12.01.2026 | Фишинговый сайт. |
| 54.67.2[.]84 | N/A | Amazon.com, Inc. | Н/Д | C&C-сервер. |
| 104.21.91[.]170 | mgardownload |
Cloudflare, Inc. | 13.01.2026 | Веб-сайт распространения. |
Техники MITRE ATT&CK
Эта таблица была составлена с использованием версии 18 фреймворка MITRE ATT&CK.
| Тактика | ID | Название | Описание |
| Устойчивость | T1398 | Скрипты инициализации при загрузке или входе в систему | PromptSpy получает широковещательный запрос BOOT_COMPLETED для активации при запуске устройства. |
| T1541 | Сохранение в фоновом режиме | PromptSpy использует сохранение в фоновом режиме для поддержания работы службы. | |
| Обход средств защиты | T1516 | Внедрение ввода | PromptSpy злоупотребляет службой доступности, чтобы предотвратить свое удаление. |
| Доступ к учетным данным | T1417.002 | Вредоносное стороннее приложение клавиатуры: перехват ввода из графического интерфейса | PromptSpy может перехватить PIN-код и пароль экрана блокировки Android. |
| Обнаружение | T1426 | Обнаружение системной информации | PromptSpy получает название устройства, модель и версию ОС. |
| Сбор | T1418 | Обнаружение программного обеспечения | PromptSpy может получить список установленных приложений. |
| T1513 | Снимок экрана | PromptSpy может записывать экран. | |
| Управление | T1663 | Программное обеспечение для удаленного доступа | PromptSpy может использовать VNC для удаленного управления зараженным устройством. |
| T1521.001 | Стандартный криптографический протокол: симметричная криптография | PromptSpy шифрует связь с командным центром с помощью AES. | |
| Экфильтрация | T1646 | Передача данных через канал C2 | PromptSpy может передавать собранные данные на C&C-сервер. |
