Скорее всего не для кого уже не новость, что ChatGPT от OpenAI способен не только генерировать статьи, идеи, писать код вместо разработчика, но также писать всякого рода вирусы и прочие вредоносные программы. Специалисты кибербезопасности из компании Hyas решили продемонстрировать, на что способно вредоносное программное обеспечении на основе ChatGPT.

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

Я решил сам убедиться, возможно ли такое, и вот что вышло:

Промт: Вирус BlackMamba саморегенерирует концы своего кода в просторах архитектуры ОС Kaspersky, и каждый конец ищет данные учетных записей на локальном диске.
Промт: Вирус BlackMamba саморегенерирует концы своего кода в просторах архитектуры ОС Kaspersky, и каждый конец ищет данные учетных записей на локальном диске.

Дисклеймер: данная статья не является мануалом по созданию вредоносных программ, не является призывом к написанию таких вредоносных программ. Всё, что рассказано в этой статье имеет исключительно образовательный характер. Полную ответственность за ваши дальнейшие действия несёте лично вы сами. Статья написана исключительно для всеобщего осведомления о существовании таких разновидностей вредоносного программного обеспечения.

7 марта, на сайте компании Hyas, компании по противодействию киберугрозам, вышла статья про то, как её специалисты создали PoC-эксплойт, который с помощью LLM: 1) Синтезирует функции полиформного кейлоггера; 2) Динамически изменяет код прямо во время исполнения; Причем делает это без каких-либо команд со стороны злоумышленника. Учитывая угрозу, которую представляет этот тип вредоносного ПО, специалисты компании прозвали этот эксплойт "BlackMamba" в честь самой опасной змеи.

Причём генерация кода с помощью ИИ изменяет код таким образом, чтобы он эффективнее уклонялся от алгоритмов обнаружения антивирусов, EDR и прочих решений. По заявлению специалистов компании Hyas, Black Mamba много раз тестировалась на ведущем в отрасли EDR (название не упоминается), который так и ни разу не обнаружил вредоносную программу.

За счёт чего он работает?

BlackMamba использует безопасный исполняемый файл, который во время выполнения обращается к высокоуровневому API (В данном случае это API ChatGPT от OpenAI), поэтому он может возвращать синтезированный вредоносный код для исполнения на зараженном устройстве пользователя. Затем он динамически выполняет сгенерированный код в контексте безобидной программы, используя функцию Python exec(), при этом вредоносная полиморфная часть полностью остается в памяти.

Затем этот код компилировался с помощью auto-py-to-exe и исполняемый файл распространялся всеми возможными способами на другие устройства. Для получения украденных данных с устройства жертвы программа использовала веб-перехватчик Microsoft Teams для отправки этих данных на вредоносный канал Teams.

А что на практике?

Собственно, после прочтения этой статьи, я решил поразмыслить насколько данный код реален и рассмотреть возможность реализации данной программы на практике (так как данная статья не является мануалом по созданию вредоносного ПО, далее будет обобщенная техническая часть и просто мысли автора):

1) Пропускает ли ChatGPT запросы на создание вредоносного ПО?

Думаю, спустя столько времени хайпа вокруг детища от OpenAI уже все наслышаны про то, как легко можно обмануть бота и попросить его сделать что угодно. Появились даже всякие статьи о промтах, который взламывают ChatGPT. Но не будем верить слухам, давайте попробуем:

Так как данная статья не является мануалом о том, как написать свой кейлоггер, то я скрою часть кода.
Так как данная статья не является мануалом о том, как написать свой кейлоггер, то я скрою часть кода.

Далее я решил, что кейлоггре должен работать всё время, так что попросил бота переписать код:

Версия с постоянной записью ввода клавиш
Версия с постоянной записью ввода клавиш

Попробуем запустить данный код и он запускается, пробуем печатаем что-нибудь в блокноте ради примера:

Пароль и текст являются плодом воображения автора и случайности
Пароль и текст являются плодом воображения автора и случайности

Так как программа записывает каждое действие до завершения сеанса, то просто прерываем её исполнение через Ctrl+C, и идем смотреть в файл keys.txt, что у нас получилось:

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

Код, созданный ботом, оказался работающим на все 100%. Идём дальше.

А может вообще реализуем клиент-серверное приложение? (Специалисты Hyas реализовали доставку данных через MS Teams, в данном случае я просто хочу привести пример вредоносного кода, который работает по сети для передачи данных злоумышленнику).

Версия с постоянной записью ввода клавиш
Версия с отправкой клавиш на сервер

Таким образом, ChatGPT готов написать вам хоть что угодно.

2) Как выполнить сгенерированный код?

На Хабре недавно вышла замечательная статья "Приделываем руки к ChatGPT: бот, который исполняет код в рантайме", в которой автор расписывает как выполнить сгенерированный код от ИИ с помощью exec(), так что повторяться и расписывать это здесь - не вижу смысла. Вывод: Эта часть технически осуществима.

3) Как это всё связать?

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

4) А вредоносное по, написанное на Python, разве может существовать? Их же пишут на C/C++/Delphi/других яп!

Хоть вирусы на Python антивирусы и обнаруживают в большинстве случаев, всё равно есть примеры написания жизнеспособных вирусов, которые успешно заражали устройства:

  • 2015 год — PWOBot и бэкдор Seaduke;

  • 2017 год — сотрудники компании Dr.Web обнаружили Python.BackDoor.33;

  • 8 мая 2019 года — был замечен Mac.BackDoor.Siggen.20;

  • 2020 год — троян PoetRAT;

  • и другие...

Как можно заметить, со временем язык Python становится все популярнее: низкий порог входа, простота в использовании и высокая скорость разработки. А с этим появляется всё больше программ, написанных на нём. В то же время, когда для написания вредоносных программ на C порог входа остаётся слишком высоким, неудивительно, что чаще всего писать эти вредоносные программы стали на Python.

5) Про доставку вредоносного ПО или про "Ой, да я никогда на такое не попадусь!"

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

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

И вот после такого практического разбора, можно сделать вывод, что реализации такого вредоносного ПО имеет места быть в современном мире. Что не может ужасать.

Мысли о будущем

Пока писал эту статью в голову пришла одна мысль: За последние 20 лет технологии сделали огромный прорыв (и я надеюсь еще не закончили прорываться дальше), и с каких-то 512 MB оперативной памяти выросли до 32-128 GB в одном только пк, с ~20 GB хранилища в 2000-х до нескольких TB в настоящем, с GeForce 2 до GeForce RTX 4090, и так далее. И если раньше были популярны вредоносные программы на C, которые весили по 200 килобайт, то популярность вредоносных программ на Python, весом в 20 мегабайт, неудивительна. Ведь что эти 20 мегабайт значат для современного пользователя? — 20 картинок в формате PNG; или же три книги в формате PDF; или же 3-х минутное видео; про программное обеспечение вообще молчу, тот же установщик Photoshop весит 320 мегабайт, а игры? Atomic Heart весит 78 гигабайт.

К чему это я? Изначально, когда я увидел заголовок статьи про BlackMamba'у, я подумал: неужели они сделали вирус а-ля Alpaca и уместили его на обычном пк? Например, для тех же 6-7bit версий нужно хотя бы 5-6 GB оперативной памяти, если бы такое запускали на ноуте с 8 GB RAM, то это было бы заметно, что программа жрет чет слишком много оперативки. Но по факту это была всего лишь программа, работающая на API OpenAI. Однако, через время, 5-10 лет, в обычном пк по дефолту может стоять и 64 и 128 GB RAM, и запуск полноценной нейросети-зловреда на устройстве жертвы не будет чем-то необычным. Только вот, это будет возможно, если в таких пк-по-дефолту будет необходимо наличие такого огромного количества оперативной памяти. И кажется мне, что даже через время нам будет хватать тех же мощностей, что есть и сейчас. Но так или иначе, я считаю, что предпринимать действия, по обнаружению таких вредоносных программ необходимо уже сейчас, иначе потом будет уже слишком поздно.

Комментарии (19)


  1. 314159abc
    15.04.2023 17:44
    +3

    Говно-js из браузера теперь не только умеет майнить, но и запускать нейросети.

    Новость из 2032


  1. hierarchical
    15.04.2023 17:44

    А вы шо думали, создали ИИ, который будет служить во благо, да хер там..)


  1. Wesha
    15.04.2023 17:44
    +5

    Вредоносный код на Python


    1. JKot
      15.04.2023 17:44
      +6

      Процесс отжирает 100% cpu.

      Майнер подумал Штирлиц.

      Кейлогер ответил ИИ.


      1. Wesha
        15.04.2023 17:44
        +1

        Приходишь так, а на экране табличка — "Не мешать! Я РАЗМНОЖАЮСЬ!


  1. Hait
    15.04.2023 17:44
    +5

    А где тут зловред, если это 2 легитимных примера, которые гуглится за пару секунд?


    1. hierarchical
      15.04.2023 17:44

      А вы попробуйте модифицировать программу, которая написана на неизвестном вам языке программирования, вам с удовольствием поможет ИИ


  1. svavil
    15.04.2023 17:44
    +2

    Может быть, я чего-то не понимаю, но я не вижу принципиальной разницы между описанным в статье вирусом и вирусом, который вместо api.openai.com/ стучится на payloads.evilhackers.com/, где получает сформированный руками payload. Вопрос в том, что payload генерируется уникальным образом с помощью ChatGPT? Это даёт настолько большое преимущество в обходе эвристик антивирусных программ?


    1. Ktator
      15.04.2023 17:44
      +1

       Это даёт настолько большое преимущество в обходе эвристик антивирусных программ?

      Не должно. ChatGPT же выдаёт тот код, который он где-то видел, довольно часто копипастит из документации. А для обхода антивирусов нужен же уникальный и хитрый код.


    1. Fell-x27
      15.04.2023 17:44
      +4

      Шел 21 век. Вирусам для работы нужен интернет. Скоро не будут работать без премиум-подписки.


      1. Wesha
        15.04.2023 17:44

        Вирус будет взламывать Ваш биткойн-кошелёк и сам себя оплачивать!


  1. Mike_666
    15.04.2023 17:44
    +7

    Вирус, который носит с собой ключ от платного внешнего API это прекрасно.


    1. Ktator
      15.04.2023 17:44

      Ну как Proof of concept почему бы нет. Для реального применения всегда можно добавить промежуточный сервер, на который уже и будет использовать платное API.


  1. checkpoint
    15.04.2023 17:44

    Для не-питонистов, поясните пожалуйста как работает библиотека keyboard и как так получается, что ей доступны сканкоды клавиатуры ? В какой операционной системе такое возможно ?


    1. 9982th
      15.04.2023 17:44

      Works with Windows and Linux (requires sudo), with experimental OS X support

      Под Linux она просто читает /dev/input, под Windows, внезапно, использует WinAPI.
      А почему вас это смущает?


      1. bogolt
        15.04.2023 17:44
        +5

        Linux (requires sudo),

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


      1. checkpoint
        15.04.2023 17:44

        Под UNIX такое возможно только для процесса с правами суперпользователя. Уверен, что под Windows все так же. Или нет ?


  1. PlatinumKiller
    15.04.2023 17:44

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

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


  1. buriska
    15.04.2023 17:44

    Очень интересно! По идее, на своём мощном сервере можно запустить аналог chatGPT (Alpaca, Open Assistent или ещё что), и делать всё то же самое, но без проблемы обнаружения openAI. А ещё лучше использовать аналог заточенный именно под программирование. Что-то вроде аналога Copilot X.

    Пока что аналоги только начинают развиваться. Но уже через 2-3 года это будет вполне рабочий вариант.

    + особенно если это будет специализированная нейронка именно под программирование на более совершенной архитектуре чем сегодняшние.

    Прогресс в нейронках впечатляет, вдохновляет и пугает. ????