Оновлено 06.05.2026
Famous Chollima знову активізувалася — цього разу з Python-версією свого інструмента GolangGhost RAT, спрямованого проти спеціалістів крипто-та блокчейн-сфери. Атаки маскуються під фейкові вакансії: кандидатів просять виконати «тестове завдання» та вставити команду в термінал, після чого на пристрій непомітно завантажується шпигунське ПЗ. У цьому матеріалі розбирається механіка кампанії: як працює оновлений RAT, які модулі відповідають за крадіжку криптогаманців і браузерних даних, як зловмисники організовують C2-зв’язок і чому Python-версія стала логічним етапом еволюції інструмента. Також показано, як виглядає ланцюг атаки, які ознаки видають підміну під «роботодавців» та що потрібно зробити, щоб не стати жертвою.
З середини 2024 року група зловмисників Famous Chollima (також відома як Wagemole), пов’язана з Північною Кореєю, веде дуже активну діяльність, проводячи кілька добре задокументованих кампаній. Ці кампанії включають використання варіантів Contagious Interview (також відомого як DeceptiveDevelopment) та створення фальшивих оголошень про роботу й сторінок для перевірки навичок. В останніх випадках користувачам доручають скопіювати та вставити (ClickFix) шкідливий командний рядок, щоб встановити драйвери, необхідні для проведення останнього етапу перевірки навичок.
Ближче до кінця року дослідники задокументували троян віддаленого доступу (RAT) Famous Chollima під назвою «GolangGhost» у форматі його вихідного коду, який часто використовувався як остаточне корисне навантаження в кампаніях ClickFix зловмисника.
У травні 2025 року зловмисники почали розгортати функціонально аналогічну Python-версію трояна GolangGhost, яку позначають як «PylangGhost».
Відомі Чолліми прагнуть отримати фінансову вигоду, використовуючи двосторонній підхід: по-перше, створюючи фальшивих роботодавців з метою розкриття особистої інформації шукачами роботи, а по-друге, використовуючи фальшивих працівників як працівників у цільових компаніях-жертвах. Цей блог зосереджений на першому методі, коли справжні інженери-програмісти, маркетологи, дизайнери та інші працівники стають мішенню для фальшивих рекрутерів та отримують вказівки відвідувати сторінки для перевірки навичок, щоб продовжити роботу зі своєю заявкою.
Виходячи з оголошених вакансій, очевидно, що Famous Chollima широко орієнтується на людей з попереднім досвідом роботи в криптовалюті та блокчейн-технологіях. Сайти з тестування навичок намагаються видавати себе за реальні компанії, такі як Coinbase, Archblock, Robinhood, Parallel Studios, Uniswap та інші, що допомагає з орієнтацією.

Кожній цільовій групі надсилається код запрошення для відвідування тестового веб-сайту, де, залежно від посади, їм доручають ввести свої дані та відповісти на кілька запитань, щоб перевірити свій досвід і навички. Сайти створені за допомогою фреймворку React і мають дуже схожий візуальний дизайн, незалежно від типу посади.

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

Коли користувач надає доступ до камери, сайт показує інструкцію скопіювати, вставити та виконати команду нібито для встановлення потрібних відеодрайверів (якщо ОС підтримується). На тестових Windows і macOS ці інструкції відображалися у відповідному вигляді, а на Linux з’являлося повідомлення про помилку — інструкцій для завантаження й встановлення не було.


Інструкції щодо завантаження ймовірного виправлення відрізняються залежно від відбитка браузера, а також надаються відповідною мовою оболонки для ОС: PowerShell або Command Shell для Windows та Bash для MacOS.

Оскільки варіант RAT на Golang вже добре задокументований, цей блог зосереджується на версії на Python та подібності між ними. Початковий етап складається з командного рядка, який фальшива веб-сторінка пропонує нічого не підозрюючому користувачеві скопіювати, вставити та виконати.
Командний рядок використовує PowerShell Invoke-Webrequest або curl для завантаження ZIP-файлу, що містить модулі PylangGhost, а також файл скрипта Visual Basic. Цей скрипт відповідає за розпакування бібліотеки Python, що зберігається у файлі «lib.zip», та запуск трояна шляхом запуску перейменованого інтерпретатора Python з використанням файлу «nvidia.py» як програми Python для запуску.

PylangGhost складається з шести чітко організованих Python-модулів. Наразі невідомо, чому оператори реалізували дві версії на різних мовах і яка з них з’явилася першою. Судячи з коментарів у коді, навряд чи для переписування застосовували модель великої мови (LLM). У конфігураційному файлі Python-варіанта вказано версію 1.0, тоді як у Golang-версії — 2.0, проте поки що немає підстав стверджувати, що ці номера версій можна прямо порівнювати.
Виконання починається з файлу «nvidia.py», який виконує кілька завдань: створює параметр реєстру для запуску RAT щоразу, коли користувач входить до системи, генерує GUID для системи, який буде використовуватися для зв’язку з сервером командного управління (C2), підключається до сервера C2 та входить у цикл команд для зв’язку з сервером.

Файл конфігурації «config.py» визначає команди, які можна отримувати від сервера, і які ідентичні командам, раніше задокументованим у версії RAT для Golang. Ці команди дозволяють дистанційно керувати зараженою системою та красти файли cookie й облікові дані з понад 80 розширень браузера, включаючи менеджери паролів та криптовалютні гаманці, зокрема Metamask, 1Password, NordPass, Phantom, Bitski, Initia, TronLink та MultiverseX.
Модуль обробки команд, «command.py», визначає обробники функцій та обробляє команди, отримані від сервера C2.
qwer — COMMAND_INFORMATION — збирає інформацію про інфіковану систему: ім’я користувача, версія ОС тощо.
asdf — COMMAND_FILE_UPLOAD — завантаження файлу на інфіковану систему (upload).
zxcv — COMMAND_FILE_DOWNLOAD — завантаження файлу з інфікованої системи (download).
vbcx — COMMAND_OS_SHELL — запуск оболонки ОС для віддаленого доступу та керування інфікованою машиною.
ghdj — COMMAND_WAIT — очікування/паузa на кількість секунд, задану сервером C2.
r4ys — COMMAND_AUTO — команда для автоматичного збору інформації з браузера (збирання браузерних даних).
89io — AUTO_CHROME_GATHER_COMMAND — підкоманда збору інформації з Chrome (збір профілів/доступів).
gi%# — AUTO_CHROME_COOKIE_COMMAND — підкоманда для крадіжки cookie-файлів браузера.
dghh — COMMAND_EXIT — завершення роботи/вихід.
Таблиця 1. Команди та функціональність.
Модуль «auto.py» містить функціональність для крадіжки збережених облікових даних браузера та файлів cookie сесії, а також збору даних з різних розширень браузера.
«Api.py» відповідає за реалізацію протоколу зв’язку із сервером C2, використовуючи шифрування RC4 для шифрування пакетів через нешифрований HTTP, що використовується під час зв’язку із сервером C2. Дані в HTTP-пакеті шифруються за допомогою алгоритму RC4, але ключ шифрування також надсилається всередині структури пакета. Пакет починається з 16 байтів контрольної суми MD5 для решти пакета для перевірки цілісності даних, далі йдуть 128 байтів, що містять ключ шифрування RC4, а потім зашифрований блоб даних.
Нарешті, «util.py» обробляє стиснення та розпакування файлів.
Щоб оцінити схожість між двома версіями, порівнюємо назви модулів, написаних різними мовами, а також їх функціональність. Структура, правила іменування та назви функцій дуже схожі, що вказує на те, що розробники різних версій або тісно співпрацювали, або це одна й та сама особа.
Main function module — nvidia.py — cloudfixer.go — Модуль основної функції (точка входу програми).
Configuration module — config.py — config/constans.go — Модуль конфігурації (зберігає константи та параметри).
Main command loop — nvidia.py — core/loop.go — Головний цикл обробки команд (основний цикл роботи агента).
Command handlers — command.py — core/loop.go — Обробники команд (логіка виконання отриманих команд).
Browser Stealer functionality — auto.py — auto/ modules* — Функціонал крадіжки даних браузера (модулі для збору сесій, розширень, гаманців тощо).
File compression — util.py — util/compress.go — Модуль стиснення/розпакування файлів.
Base64 message encoding — command.py — command/stackcmd.go — Кодування повідомлень у Base64 (серіалізація/декодування повідомлень).
Duplicate process check — nvidia.py — instance/check.go — Перевірка дублювання процесів (щоб уникнути запуску більше ніж одного екземпляра).
Communications protocol — api.py — transport/htxp.go — Протокол комунікації з C2 (формат пакетів та обмін повідомленнями).
Таблиця 2. Порівняння назв модулів RAT Python та Golang.
PylangGhost показує, що Famous Chollima продовжує еволюціонувати: замість одного інструмента з’явилася функціонально еквівалентна Python-реалізація, яка дозволяє ширше цілитися в користувачів Windows і macOS і ефективно красти дані браузерів та криптогаманців через фейкові вакансії і «скопіюй-встав» команди. Технічно зв’язок із C2 виглядає більше як обфускація (RC4 з ключем у пакеті), а модульна схожість між версіями свідчить про спільну розробку або повторне використання дизайну, отже кампанії можуть швидко масштабуватися і мутувати.