В феврале 2026 года исследователь Brennan Kenneth Brown обнаружил вредоносный форк macOS-приложения Triton на GitHub. Атакующий подменил ссылки для скачивания в README и раздавал Windows-малварь вместо легитимного софта. Ниже - полный технический разбор: вектор заражения, цепочка выполнения, C2-инфраструктура и MITRE ATT&CK-маппинг.
Содержание
- Вектор атаки
- Технический анализ малвари
- Уклонение от обнаружения
- Сетевая активность и C2
- MITRE ATT&CK
- Манипуляции с репозиторием
- Почему атака провалилась
- Защита и выводы
Вектор атаки
Triton - это легитимное macOS-приложение для сервиса omg.lol, написанное разработчиком Otavio C. Атакующий под учётной записью JaoAureliano форкнул репозиторий и заменил все ссылки для скачивания в README на свой payload:
https://raw.githubusercontent.com/JaoAureliano/Triton/main/OMG/Assets/Assets.xcassets/AccentColor.colorset/Software_3.1.zip
Ссылка ведёт на ZIP-архив размером 1.33 МБ, замаскированный под ассет приложения. Путь выбран не случайно - директория Assets.xcassets/AccentColor.colorset выглядит как штатная часть Xcode-проекта, что снижает подозрения при беглом просмотре.
Ссылка была размазана по всему README: в секциях “Getting Started”, “Download Triton”, “Contributing Guidelines”. Куда ни ткни - один и тот же ZIP.
Хэш образца: 39b29c38c03868854fb972e7b18f22c2c76520cfb6edf46ba5a5618f74943eac
Детекты на VirusTotal: 12/66 вендоров
Технический анализ: многоступенчатое выполнение
Малварь работает в три этапа - типичная схема для обхода статического анализа.
Stage 1: Распаковка архива
После скачивания и запуска первый этап использует 7za.exe для распаковки защищённого паролем архива:
| |
Пароль infected зашит прямо в команду. Стандартный трюк: запароленный архив не сканируется большинством антивирусов на этапе загрузки, потому что содержимое зашифровано. Распаковка в директорию %TEMP% с рандомизированным именем (tibe4tu5.xl4) - попытка затруднить ручной анализ.
Stage 2: Batch-скрипт
Второй этап - запуск Launcher.cmd через cmd.exe. Batch-скрипт проверяет окружение, настраивает переменные и запускает основной payload.
Stage 3: LuaJIT
Ключевой этап - LuaJIT как скриптовый движок. Выбор неслучайный:
Уклонение от сигнатур. LuaJIT-скрипты практически не встречаются в типичной малвари, и антивирусные движки хуже их детектируют по сравнению с PowerShell или VBScript.
Обфускация. Lua-байткод можно скомпилировать и обфусцировать, затрудняя статический анализ.
Портативность. Весь рантайм вместе со скриптами упаковывается в один архив.
Техники уклонения от обнаружения
В малвари зашито несколько классических anti-analysis приёмов:
Обнаружение отладчика. Проверка наличия отладочного окружения перед выполнением основного payload. Если отладчик обнаружен - выполнение прекращается или идёт по ложному пути.
Sleep-based evasion. Длительные задержки через sleep() перед вредоносными действиями. Большинство песочниц анализирует образец ограниченное время (обычно 2-5 минут), и если малварь “спит” дольше - sandbox не успевает зафиксировать вредоносное поведение.
Обнаружение виртуализации. Проверка признаков запуска в VM или sandbox: специфические процессы, MAC-адреса, registry-ключи, имена пользователей.
Профилирование системы через реестр. Запросы к Windows Registry для сбора информации о системе: версия ОС, установленное ПО, конфигурация сети.
Сетевая активность и C2
DNS-запросы образца:
| Домен | Назначение |
|---|---|
nexusrules.officeapps.live.com | Маскировка под легитимный трафик Microsoft |
svc.ha-teams.office.com | Маскировка под Microsoft Teams |
ip-api.com | Определение IP и геолокации жертвы |
polygon-rpc.com | Blockchain RPC endpoint |
Здесь есть пара интересных моментов.
Обращения к officeapps.live.com и svc.ha-teams.office.com - это domain fronting через легитимную инфраструктуру Microsoft. Трафик к этим доменам не вызывает срабатываний корпоративных прокси и файрволов, потому что Microsoft Office - доверенный сервис в любой корпоративной сети.
Запросы к ip-api.com для геолокации жертвы - стандартная разведка. Некоторые операторы малвари фильтруют жертв по регионам или не активируют payload для IP-адресов из определённых стран (типичный killswitch для стран СНГ, например).
POST-запросы к C2 с закодированными payload и обращения к blockchain RPC указывают на использование блокчейна как канала управления (dead drop resolver). Адрес C2-сервера хранится в блокчейне, что делает инфраструктуру устойчивой к takedown.
MITRE ATT&CK Mapping
| Тактика | Техника | ID |
|---|---|---|
| Execution | Command and Scripting Interpreter | T1059 |
| Defense Evasion | Deobfuscate/Decode Files or Information | T1140 |
| Defense Evasion | Virtualization/Sandbox Evasion | T1497 |
| Discovery | System Information Discovery | T1082 |
| Discovery | Process Discovery | T1057 |
| Command and Control | Application Layer Protocol | T1071 |
| Command and Control | Encrypted Channel | T1573 |
Набор техник типичен для commodity-малвари, ничего экзотического.
Манипуляции с репозиторием
Интересно, как атакующий прятал следы в самом репозитории. Чтобы скрыть момент внедрения малвари, он использовал backdated commits - фиктивные коммиты с подделанными датами.
В Git дату коммита можно выставить произвольно через переменные окружения GIT_AUTHOR_DATE и GIT_COMMITTER_DATE:
| |
Создаётся иллюзия, что репозиторий существует давно и активно поддерживается. При беглом взгляде на GitHub contribution graph всё выглядит легитимно - зелёные квадратики размазаны по месяцам. Но если покопаться в истории коммитов, видно, что все “исторические” коммиты содержат бессмысленные изменения (dummy commits), а реальные вредоносные правки замешаны среди них.
Почему атака провалилась
При всём техническом арсенале малвари, кампания имела критические ошибки на уровне операционной безопасности (OpSec):
Несоответствие платформ. Форкнутое приложение Triton - macOS-эксклюзив для сервиса omg.lol. Payload - Windows-малварь. Целевая аудитория - пользователи macOS, которые физически не смогут запустить .exe.
Микроскопическая аудитория. Triton - нишевое приложение с минимальной базой пользователей. Даже при 100% конверсии количество жертв было бы ничтожным.
Плохая маскировка. README пестрил одинаковыми подозрительными ссылками на raw.githubusercontent.com. Любой внимательный пользователь заметил бы подмену.
Слабая OPSEC репозитория. Репозиторий был затегирован ключевыми словами вроде “malware”, что делало его обнаружение тривиальным.
Скорее всего, это часть автоматизированной массовой кампании. Качество отдельного вектора атакующего не волнует - ставка на объём. Часть форков может попасть в поисковую выдачу GitHub, и кто-то скачает payload не глядя. Дальнейшее расследование это подтвердило - похожие вредоносные форки нашлись в сотнях других репозиториев.
Защита: как не попасться
Скачивайте только из оригинала. Ссылки в README форка могут вести куда угодно. Используйте только раздел Releases оригинального репозитория или официальный сайт проекта. Проверяйте автора, количество звёзд, историю коммитов.
Анализируйте историю коммитов. Если репозиторий заявляет многолетнюю историю, но все коммиты содержат бессмысленные изменения - это красный флаг.
Хэш-верификация. Всегда сверяйте хэш скачанного файла с официальным, если он опубликован.
Мониторинг форков. Мейнтейнерам стоит периодически проверять форки своих проектов на предмет подмены ссылок и payload injection.
Более широкий контекст
Эта атака - часть растущего тренда supply chain атак через платформы для разработчиков. GitHub, после поглощения Microsoft и интеграции в подразделение CoreAI (август 2025), столкнулся с серьёзными проблемами:
- Zig Software Foundation публично ушёл с платформы на Codeberg, назвав Microsoft “помешанным на AI” и жалуясь на деградацию инфраструктуры.
- Многочисленные сбои: в определённый 90-дневный период 2025 года зафиксировано более 75 инцидентов.
- Утечка данных через Microsoft Copilot: более 20 000 приватных репозиториев организаций (IBM, Google, Microsoft) оказались доступны через кэш Bing.
Реакция GitHub на обнаруженный вредоносный форк тоже показательна: спустя часы после репорта аккаунт JaoAureliano оставался активным. Поддержка ответила шаблоном о “высокой нагрузке”.
Масштаб проблемы шире одного форка: координированная кампания с сотнями вредоносных репозиториев работает минимум год без реакции со стороны GitHub. Множество обсуждений на Reddit документируют аналогичные случаи.
Заключение
Сам бинарник сделан толково: многоступенчатая цепочка выполнения, LuaJIT для уклонения от сигнатур, anti-sandbox и anti-debug техники, blockchain-based C2. А вот стратегия кампании провалена - от выбора цели (Windows-малварь для macOS-аудитории) до OPSEC репозитория (теги “malware”).
Для нас как исследователей это полезный кейс: даже commodity-малварь использует продвинутые техники уклонения, и supply chain вектор через GitHub-форки - рабочий канал доставки, который будет только расширяться.
Проверяйте откуда скачиваете код. Каждый форк - потенциальный вектор атаки.
Данная статья является переводом и адаптацией оригинальной публикации “The Curious Case of the Triton Malware Fork” автора Brennan Kenneth Brown (15 февраля 2026). Перевод и технический анализ адаптированы с фокусом на malware analysis и offensive security.
