Больше 5 000 сэмплов на VirusTotal, свыше 100 активных фейковых доменов и три семейства малвари на выходе. Check Point Research задокументировали кампанию, в которой атакующие клонировали сайты Ghidra, dnSpy и ILSpy - инструменты, которые реверс-инженеры и аналитики малвари гуглят и скачивают каждую неделю. Кнопка "Download" на ghidralite.com при наведении показывала настоящую ссылку на GitHub, но первый клик уходил не туда - CloudFront-скрипт перехватывал событие
mousedown и запускал цепочку TDS-редиректов с гео-фильтрацией, проверкой ASN и частотным кэппингом. TDS малварь распространение через фейковые сайты open-source проектов - вектор не новый, но техническая реализация этой кампании задаёт планку для тех, кто разбирает цепочки заражения руками.Я разбирал подобные цепочки раньше, но здесь впервые увидел настолько чистую эксплуатацию доверия к open-source инфраструктуре. Атакуют не бухгалтеров - атакуют нас.
Drive-by download атаки через вредоносные клоны сайтов: бизнес-логика
Зачем кому-то клонировать сайт Ghidra? Деньги! По данным Check Point, основная цель операторов фейковых сайтов - захват и монетизация поискового трафика. Встраивая TDS-слой в цепочку загрузки, операторы превращаются в звено инфраструктуры распространения, чьими клиентами "ниже по потоку" становятся дистрибьюторы вредоносного ПО.
Финансовый импакт для жертв - многоуровневый. Remus Stealer - один из пейлоадов этой кампании - извлекает данные из 20+ браузеров, сотен расширений, криптокошельков, 2FA-инструментов и менеджеров паролей. Украденные учётные данные продаются на даркнет-маркетах, а полученный доступ к корпоративным аккаунтам перепродаётся группировкам, включая ransomware-операторов.
ФБР в публичных предупреждениях (PSA) прямо указывало на связку TDS и ransomware: "Доступ к учётным записям жертв, полученный через сетевой доступ, может продаваться за плату другим злоумышленникам, включая группировки-вымогатели". Для пентестера эта кампания опасна вдвойне - атакуют не абстрактных пользователей, а рабочие станции security-специалистов: ghidralite.com, dnspy.org, ilspy.org, grpcurl.com, mqttexplorer.com, mfcmapi.com. Компрометация через drive-by download атаки на такой машине - это каскадная утечка VPN-конфигов, SSH-ключей и токенов доступа к клиентским инфраструктурам. Представьте: один скачанный "Ghidra" - и через час кто-то гуляет по сети вашего заказчика с вашими ключами.
SEO poisoning малварь: отравление поисковой выдачи для фейковых порталов
Отравление поисковой выдачи - главный вектор доставки трафика на вредоносные клоны. По наблюдениям Check Point и Fullstory, ряд фейковых доменов ранжировался в Google выше реальных сайтов проектов.Механика: каждый домен эксплуатирует узнаваемость и поисковую популярность оригинального проекта. Фейковый сайт содержит контент, оптимизированный под название инструмента, описание функций и ключевые слова из официальной документации. Сайты выглядят профессионально и ссылаются на реальные GitHub-репозитории - визуальная проверка проходит без подозрений. По оценке исследователей, "многие сайты находятся в топе выдачи Google по релевантным запросам, зачастую обгоняя реальный сайт проекта. Это превращает их видимость в актив".
С точки зрения MITRE ATT&CK SEO poisoning малварь маппится на технику T1608.006 (SEO Poisoning), а регистрация доменов - на T1583.001 (Domains). Атакующие инвестируют в подготовку инфраструктуры задолго до раздачи пейлоадов: по данным исследователей, кампания была активна несколько месяцев до начала раздачи малвари. Сначала регистрировались домены и набирался поисковый авторитет, затем встраивались TDS-скрипты, и лишь потом начиналось распространение пейлоадов. Этот лаг в несколько месяцев между регистрацией домена и переходом к active exploitation - и есть окно для проактивной детекции. Если вы его проспите - будете разбирать инцидент, а не предотвращать.
Помимо SEO poisoning, атакующие могут использовать смежные техники: malvertising (вредоносная реклама в поисковой выдаче) и typosquatting (регистрация доменов с опечатками). В этой кампании речь именно об impersonation - полноценном клонировании сайта проекта с профессиональным дизайном, а не о банальной опечатке в URL.
Как TDS редиректы доставляют малварь: анатомия цепочки
Traffic distribution system в контексте кибербезопасности - сеть редиректов с тремя типами узлов: точки входа (entry), промежуточные ноды (intermediate) и посадочные страницы (landing). По данным Unit 42 (Palo Alto Networks), вредоносные TDS-цепочки отличаются от легитимных по трём топологическим признакам:
- Примерно 25% вредоносных TDS имеют цепочки длиннее 4 хопов (против 10% у легитимных)
- Медианное число URL в вредоносной TDS - 126, в легитимной - 80
- 40% вредоносных TDS представляют собой единый связный подграф (все URL взаимосвязаны), против 20% у легитимных
JavaScript-ловушка на фейковом сайте open-source
Ключевой трюк кампании - перехват клика на уровне браузера. Фейковый сайт загружает JavaScript с CloudFront CDN по URL видаhttps://d33f51dyacx7bd.cloudfront.net/?aydfd=1237183.Скрипт подменяет обработчик кликов: по реконструкции исследователей, в Chrome перехватывается
mousedown, в Firefox - click. При первом взаимодействии с кнопкой "Download" скрипт сохраняет оригинальный URL назначения, генерирует runtime-URL для TDS и открывает TDS-URL через cached window.open, опережая штатную навигацию. preventDefault() на mousedown сам по себе не блокирует переход по href - скрипт использует дополнительную логику (перехват на capture-фазе click или динамическую подмену href) для предотвращения навигации на оригинальный URL. Упрощённый псевдокод для иллюстрации концепции (реконструкция; реальный скрипт содержит дополнительную логику для блокировки навигации по href):
JavaScript:
const cachedOpen = window.open;
document.addEventListener(isChromeDesktop() ? "mousedown" : "click", (event) => {
if (!isEligibleClick(event.target)) return;
const url = generateRuntimeURL({ referrer: location.href,
userDestination: extractClickedLink(event.target) });
cachedOpen(url, "_blank");
event.stopImmediatePropagation();
event.preventDefault();
}, true);
href на кнопке остаётся легитимным - status bar браузера показывает GitHub-ссылку. Но первый клик перехватывается. Повторный клик, обновление страницы или возврат на сайт с того же IP могут вернуть нормальное поведение - скрипт использует localStorage для частотного кэппинга. Тут-то и начинается головная боль для аналитика: пытаешься повторить вредоносный редирект - получаешь чистый установщик. Классическая "ловушка воспроизводимости". Скрипт также передаёт URL, на который пользователь пытался перейти, вниз по цепочке - TDS знает, что жертва хотела скачать.Фильтрация жертв: traffic distribution system в кибербезопасности
После перехвата клика жертва попадает в TDS-цепочку, которая принимает решение о маршрутизации:- IP и ASN: VPN-провайдеры, датацентры и сети security-компаний фильтруются - им выдаётся легитимное ПО (браузер Opera или безобидное расширение)
- Геолокация: трафик из нецелевых регионов перенаправляется на чистые ресурсы
- User-Agent и fingerprint: тип устройства, версия браузера, признаки автоматизации
- Состояние визита: первый визит vs повторный (cookies + localStorage)
- Anti-bot логика: проверка на headless-браузер, подозрительные паттерны скролла
Stealer через фейковый сайт: Remus Stealer и другие пейлоады
Кампания раздаёт три семейства малвари:Remus Stealer - инфостилер, распространяемый по модели malware-as-a-service (MaaS). По данным Check Point, имеет пересечения по функциям с Lumma Stealer и вытаскивает данные из 20+ браузеров, включая сотни расширений, криптокошельки, 2FA-инструменты и менеджеры паролей.
SessionGate - многоступенчатый обфусцированный лоадер, ранее не описанный в публичных исследованиях. Доставляет потенциально нежелательные приложения (PUA), но содержит развитую anti-analysis логику: при обнаружении sandbox-окружения переключается на установку легитимного ПО. Пейлоад уникален для каждого клиента и доставляется только после полного прохождения TDS-цепочки. По данным VirusTotal, зафиксировано от 2 000 до 3 500 сэмплов SessionGate - основные загрузки из Турции, Польши, Бразилии, Германии, Франции, России и Великобритании. Финальный DLL-пейлоад связывается с внешним сервером, получает зашифрованную конфигурацию, извлекает URL загрузки и запускает следующую стадию через
cmd.exe.AnimateClipper - криптоклиппер, подменяющий адреса кошельков в буфере обмена, с поддержкой более 20 блокчейн-экосистем. По некоторым данным, может доставляться через ClickFix-приманку (фейковые CAPTCHA/ошибки браузера), но в контексте этой TDS-кампании вектор доставки через ClickFix не подтверждён исследователями Check Point.
Модульная архитектура делает каждый этап заменяемым: оператор TDS может переключить downstream-пейлоад без изменения entry-инфраструктуры. Тот же трафиковый конвейер, который обеспечивает «серую» монетизацию, селективно маршрутизирует реальных пользователей к вредоносным нагрузкам. По сути - конвейер с горячей заменой боеголовки.
Практический перехват TDS-цепочки через mitmproxy
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
На что смотреть в перехваченном трафике:
- CloudFront в первом хопе - легитимный CDN, но query-параметры с идентификаторами кампании (
?wbbcd=,?aydfd=) нетипичны для стандартного использования - Set-Cookie с трекинговым session ID - передаётся между хопами для связывания сессии
- X-Forwarded-For в запросе - TDS-бэкенд использует реальный IP клиента для маршрутизации; подмена этого заголовка через прокси - один из способов обойти гео-фильтр
- Передача referrer и User-Agent через query-параметры - TDS-нода собирает fingerprint для фильтрации
- Имя файла в финальном URL -
setup_ghidra_v11.exeвместоghidra_11.2_PUBLIC.zipс официального сайта; несовпадение с каноничным именем релиза - надёжный индикатор подмены
Место в kill chain: MITRE ATT&CK маппинг
Полная цепочка от регистрации домена до доставки пейлоада покрывает несколько тактик:| Этап | Техника ATT&CK | Описание в контексте кампании |
|---|---|---|
| Подготовка инфраструктуры | Domains (T1583.001) | Регистрация ghidralite.com, dnspy.org и 100+ доменов |
| SEO-продвижение | SEO Poisoning (T1608.006) | Вывод фейковых сайтов в топ Google по запросам open-source инструментов |
| Подготовка площадки | Drive-by Target (T1608.004, Resource Development) | Встраивание CloudFront TDS-скриптов в страницы загрузки |
| Первичный доступ | Drive-by Compromise (T1189, Initial Access) | Жертва заходит на фейковый сайт из поисковой выдачи |
| Выполнение | Malicious Link (T1204.001, Execution) | Клик по "Download" запускает TDS-цепочку |
| Маскировка | Match Legitimate Resource Name or Location (T1036.005, Defense Evasion) | Имя файла имитирует легитимный установщик проекта |
| Маршрутизация | Multi-hop Proxy (T1090.003, C2) | TDS-цепочка из 4+ промежуточных нод для обфускации |
| Доставка | Ingress Tool Transfer (T1105, C2) | Скачивание Remus Stealer / SessionGate на машину жертвы |
Для red team эта цепочка демонстрирует зрелый подход к resource development: разделение фаз (SEO, TDS, payload) позволяет каждый элемент заменять независимо. При блокировке одного landing-домена TDS перенаправляет трафик на альтернативный, а entry-инфраструктура остаётся нетронутой. Тот же принцип применим к управлению C2: TDS-подобная маршрутизация с промежуточными нодами повышает устойчивость к takedown.
Ограничения и детекция TDS-кампаний
Что работает
| Метод | Что покрывает | Чего не видит | Когда применять |
|---|---|---|---|
| Passive DNS (DomainTools, PassiveTotal) | Кластеры доменов, WHOIS-связи | Клиентский JS, runtime-URL | Проактивный threat hunting |
| Active crawling (urlscan.io) | HTTP-редиректы, скриншоты | TDS фильтрует краулеры по UA/ASN | Первичная разведка домена |
| mitmproxy + реальный браузер | Полная TDS-цепочка с JS-перехватом | Требует ручной работы, не масштабируется | IR, анализ конкретной кампании |
| Endpoint monitoring (Sysmon) | Запуск wscript/cscript/PowerShell | Не видит pre-delivery этап | SOC, post-execution detection |
Контроль расширений файлов: FBI рекомендует изменить дефолтные ассоциации для
.js-файлов, чтобы предотвратить случайный запуск JavaScript-пейлоадов, доставленных через TDS.Мониторинг endpoint'ов: отслеживание подозрительного запуска
wscript.exe, cscript.exe и PowerShell-скриптов, инициирующих веб-запросы на скачивание .js, .ps1 или .svg файлов - прямая рекомендация FBI PSA.Верификация загрузок: сверка SHA-256 хеша скачанного файла с официальным репозиторием (GitHub Release checksums). Простейший контроль, но работает. Сколько из вас реально проверяют хеш после скачивания? Вот то-то.
Где детекция буксует
TDS-операторы целенаправленно обходят автоматизированные сканеры. SessionGate детектирует sandbox-окружение и переключается на установку легитимного ПО. Частотный кэппинг и проверкаlocalStorage делают повторный анализ с того же профиля бесполезным.Для исследователей это означает необходимость "чистого" окружения при каждой попытке: новый browser profile, новый IP (резидентный, не датацентровый), полная очистка cookies и storage. Автоматизированный обход гео-фильтров TDS через Python-скрипты с ротацией резидентных прокси - стандартный подход, но формула на бумаге понятна, а на практике TDS-операторы регулярно меняют правила фильтрации. Если хочется отработать анализ подобных цепочек в контролируемой среде, готовый стенд есть на HackerLab.pro (https://hackerlab.pro) - на платформе представлены категории web и forensics, где встречаются задачи с redirect-цепочками и анализом вредоносного трафика (нужна регистрация).
Кампания с фейковыми open-source сайтами наглядно показывает сдвиг, который я наблюдаю последние полтора года при разборе цепочек заражения: TDS малварь распространение всё реже строится на одной уязвимости или одном фишинговом письме и всё чаще - на инфраструктурных конвейерах, где каждое звено заменяемо. TDS в этой схеме - не новая технология, а грамотно переосмысленный инструмент из легитимного маркетинга. CloudFront как CDN, законные URL в status bar, гео-таргетинг - ничего из этого не вызывает срабатываний у стандартных средств защиты.
Главное - не в конкретных IoC, которые устареют через неделю, а в методологии. Атакующие вкладываются в SEO-продвижение фейковых сайтов месяцами до начала раздачи малвари. Окно для проактивной детекции - не когда пейлоад уже летит, а когда домен-двойник только набирает поисковый авторитет. Команды threat intelligence, которые мониторят регистрации доменов, совпадающих с названиями популярных open-source проектов, получают фору в несколько месяцев. Те, кто ждёт срабатывания IDS на известный IoC, рискуют получить Remus Stealer на рабочей станции аналитика.
Следующий логичный шаг для TDS-операторов - расширение на разработческий стек: VS Code extensions, npm-пакеты, Docker images. Модель "проверяй хеш перед установкой" на этот объём не масштабируется. Нужны ML-модели поверх DNS-телеметрии, аналогичные тем, что уже строит Unit 42 на основе топологического анализа TDS-графов. А пока - хотя бы перестаньте качать инструменты из первой ссылки в Google.
Последнее редактирование модератором: