Исследователи Telekom Security выявили целевую фишинговую кампанию против организаций в нескольких европейских странах, преимущественно в Австрии. Как минимум в одном случае цепочка привела к развёртыванию шифровальщика Qilin, однако шифрование затронуло не все организации, попавшие под эту активность.
Telekom Security с умеренной уверенностью связывает кампанию с кластером ZipLine, о котором Check Point Research сообщала в августе 2025 года. В новой операции есть отличающиеся детали, но её приёмы схожи с ранее описанной активностью. По данным сторонней телеметрии, кампания, вероятно, началась в середине марта 2026 года.
Сведений о целях в России или СНГ в исследовании нет. Тем не менее цепочка с персонализированной перепиской от имени рекрутеров, LNK-файлом с PowerShell, C2 на Heroku и Cloudflare Tunnel не привязана к конкретному региону. Эти признаки можно учитывать при проверке корпоративной почты и рабочих станций.
Фишинг от имени кадровых агентств
Для первоначального доступа операторы направляют тщательно подготовленные письма небольшому числу адресатов. Первое сообщение написано на немецком языке и не содержит ни вложений, ни ссылок: отправитель представляется сотрудником кадрового агентства и предлагает сообщить больше деталей о потенциально интересной вакансии.
На этом этапе злоумышленники используют домены, оформленные под рекрутинговые агентства. В одном случае применялся alpentalent[.]at: при переходе на него открывался полнофункциональный сайт, имитирующий легитимное кадровое агентство. По той же схеме работал второй наблюдавшийся домен — steinersearch[.]at.
По оценке Telekom Security, для этих сайтов использовался единый HTML-шаблон с небольшими изменениями. Структура страниц и большая часть текста совпадают, а визуальное оформление немного различается. Помимо доменов из предыдущей активности, исследователи нашли как минимум ещё один домен, связанный с кампанией. CERT[.]at также сообщал о нескольких дополнительных доменах; по мнению исследователей, это указывает на продолжение операции. Среди известных фишинговых доменов указан headmatch[.]at.
Вредоносная ссылка появляется только после ответа адресата, если тот выражает интерес к вакансии. Следующее письмо убеждает жертву скачать ZIP-архив с поддомена herokuapp[.]com. Наблюдавшийся шаблон имени файла:
Dienstangebot___<фамилия><первая буква имени><дата>.zip
Один из доменов для загрузки архива — vertrag-hm-ref3154-7e89a2ad95ad[.]herokuapp[.]com.
Внутри архива находятся два документа Microsoft Word, служащие приманкой, и вредоносный ярлык с двойным расширением .docx.lnk. В изученном случае документы сообщали о якобы открытых вакансиях в немецкой компании Rossmann. В самих Word-файлах вредоносного содержимого нет: их задача — отвлечь пользователя от запуска ярлыка.
Что выполняет LNK-файл
Ярлык запускает короткий обфусцированный скрипт PowerShell. После расшифровки тот выполняет несколько последовательных действий.
Сначала скрипт ищет исходный ZIP-архив в каталогах «Загрузки», «Документы» и «Рабочий стол». Если архива там нет — например, пользователь сохранил файл в другой каталог, — цепочка прекращает выполнение.
Далее загрузчик обходит AMSI: указатель метода AmsiUtils.ScanContent заменяется указателем на безобидный метод PowerShell, созданный специально для этой цели. Затем он считывает исходный ZIP-архив как необработанный файл, не разбирая его как ZIP-контейнер. Загрузчик ищет маркерную строку SwbWu и извлекает PowerShell-код, скрытый после этого маркера. Исследователи отмечают, что этот фрагмент можно увидеть и извлечь шестнадцатеричным редактором.
Извлечённый код — собственно PowerShell-бэкдор. Его функциональность ограничена, но позволяет исполнять произвольные команды, выгружать данные, доставлять дополнительные полезные нагрузки и запускать последующее вредоносное ПО, включая шифровальщик.
После запуска бэкдор:
- распаковывает исходный архив в
%LOCALAPPDATA%\<имя архива>; - открывает документ-приманку
ROSSMANN_Kandidatenbrochure.docx, чтобы не вызывать подозрений у пользователя; - создаёт задание планировщика, запускаемое ежедневно в 11:00, которое открывает LNK-файл и обеспечивает закрепление;
- присваивает этому заданию имя вида
<victim-id>c582; - формирует идентификатор жертвы как CRC32 от значения
HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProductId; - формирует идентификатор кампании как CRC32 исходного ZIP-архива;
- создаёт мьютекс
Global\<victim-id>; - создаёт доменное имя для последующего использования в качестве C2 бэкдора — также на поддомене herokuapp[.]com.
Для связи с C2 бэкдор использует URL вида:
https://*[.]herokuapp[.]<victim-id>com/c582<xor_hex(victim-id, "[]0")><unix_timestamp_hex><random_hex>
Это декодированное логическое описание из исследования, а не готовый шаблон валидного URL для сетевого правила: оно объединяет маскирование, wildcard и переменный идентификатор жертвы. Для блокировки и ретроспективного поиска следует использовать перечисленные ниже конкретные C2-домены либо проверенный разбор алгоритма генерации домена.
Запросы отправляются с интервалом от четырёх до шести минут. HTTP-ответ расшифровывается операцией XOR, ключом выступает идентификатор жертвы, после чего бэкдор разбирает полученные данные.
В C2-обмене используется User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
Это корректная строка User-Agent для Google Chrome в Windows 10. Chrome версии 140 вышел в сентябре 2025 года.
Бэкдор обрабатывает три типа ответов C2. Команда #KILL удаляет запланированное задание и каталог с вредоносным ПО. Команда #HOST#<new_host> задаёт новый сервер управления. Любой другой ответ интерпретируется и исполняется как PowerShell-код.
Среди известных C2-доменов исследователи перечислили:
- sched-729-fdfd12d20ba1[.]herokuapp[.]com;
- assetscrm-04-6532d8371b2a[.]herokuapp[.]com;
- erpapp-091-e00eb01e7fba[.]herokuapp[.]com;
- clientportal-43-98f1d0f4b8d9[.]herokuapp[.]com;
- erpapp-071-00266c67b940[.]herokuapp[.]com.
Туннель через Cloudflare
При выборе SIEM-платформы для централизованной корреляции журналов можно отдельно изучить Security Capsule SIEM и сопоставить её с требованиями своей инфраструктуры.
Получив бэкдор, операторы могут запускать на заражённой системе произвольный PowerShell-код. Это создаёт возможности для кражи данных, доставки дополнительных нагрузок, латерального перемещения и подготовки к развёртыванию шифровальщика. В наблюдавшейся кампании злоумышленники также устанавливали Cloudflare Tunnel, чтобы обеспечить удалённый доступ и замаскировать потенциально подозрительный сетевой трафик.
Cloudflare Tunnel — легитимная технология для публикации локальных сервисов, включая HTTP, SSH и удалённый рабочий стол, через сеть Cloudflare. Она также может предоставлять доступ к частным сетям через туннельное соединение, например при маршрутизации WARP. При компрометации инфраструктуры такой туннель даёт оператору несколько способов взаимодействовать с заражёнными системами, а внешний трафик может выглядеть как обращение к легитимному облачному провайдеру.
Для настройки туннеля достаточно cloudflared — серверного демона, который соединяет локальный сервис с сетью Cloudflare. В данном случае исследователи обнаружили на диске каталог:
\Users\<username>\AppData\Local\Temp\cf
В нём находились:
cloudflared.exe;cert.pem, используемый для аутентификации;config.yamlс конфигурацией туннеля;- один или несколько файлов учётных данных туннеля
<tunnel-id>.json; - журнал ошибок, если ошибки возникали.
Эти артефакты важны для криминалистического анализа: они могут помочь установить параметры туннеля и вероятный способ его использования операторами.
IOC и связанные признаки
К известным фишинговым доменам относятся:
- alpentalent[.]at;
- steinersearch[.]at;
- headmatch[.]at.
Домен загрузки ZIP-архива: vertrag-hm-ref3154-7e89a2ad95ad[.]herokuapp[.]com.
Исследователи также перечислили адреса отправителей:
- elisabeth[.]muehlbacher[at]steinersearch[.]at;
- marlies[.]hoermann[at]steinersearch[.]at;
- caroline[.]hoeller[at]steinersearch[.]at;
- maria[.]schroeder[at]alpentalent[.]at;
- daniela[.]weiss[at]alpentalent[.]at;
- michaela[.]jaeger[at]alpentalent[.]at;
- petra[.]schoepf[at]alpentalent[.]at;
- anna[.]gruber[at]headmatch[.]at.
Связанные файлы и SHA-256:
4578bc4b0b5eab3ac6e38d71bc1a086593b118c8bb221161d3fd27c5f5d00ea6— поддельный документ2026_NDA_Datenschutzrichtlinie.docx;ee6c8422e4e723fe408ef6bbacfa852ae372e99ddf79e2fe38920017ec5e7674— документ-приманкаROSSMANN_Kandidatenbrochure.docx;1067ffcb2b3f50d3769d05389e5d384abccc274c5433ee0fb27f6616dbf7d2c6— скрипт запуска Cloudflare Tunnelcloudflared-start.ps1;e00a9e9fed12f8a8f5703539c4662750dd5472d35c16dcbbdc5869f3fe5e238b—cloudflared.exe.
Дополнительные признаки: ZIP-архивы с шаблоном Dienstangebot___<фамилия><первая буква имени><дата>.zip, задание планировщика <victim-id>c582, мьютекс Global\<victim-id>, каталог \Users\<username>\AppData\Local\Temp\cf и C2-обмен с указанной строкой User-Agent.
Ретроспективный поиск в Microsoft Defender
Для проверки почты Telekom Security предложила искать сообщения, в которых домен отправителя или получателя совпадает с steinersearch.at, alpentalent.at либо headmatch.at, либо тема содержит строку «- Предложение о работе:». Запрос использует or, поэтому каждое из этих условий само по себе вернёт результат:
``kusto let phishing_domains = dynamic(["steinersearch.at", "alpentalent.at", "headmatch.at"]); EmailEvents | where (SenderFromDomain in (phishing_domains) or RecipientDomain in (phishing_domains)) or Subject contains "- Предложение о работе:" ``
Связанные архивы следует искать по файловым событиям. Условие endswith "-26.zip" применимо как ретроспективный индикатор известного формата 2026 года, но не покрывает варианты с другой датой или изменённым именованием:
``kusto DeviceFileEvents | where FileName startswith "Dienstangebot_" and FileName endswith "-26.zip" ``
Для поиска вредоносных URL в почте предлагается отбирать адреса, одновременно содержащие herokuapp.com и vertrag:
``kusto EmailUrlInfo | where Url contains "herokuapp.com" and Url contains "vertrag" ``
Соединения, инициированные Cloudflare Tunnel, можно отбирать по имени процесса, но сам по себе cloudflared не является признаком компрометации. В этом случае уместно сопоставлять запуск с неожиданным путём из %LOCALAPPDATA%\Temp\cf, известным хэшем, файлами cert.pem, config.yaml и учётными данными туннеля, а также с необычной родительской цепочкой PowerShell/LNK. Например, для первичного отбора можно использовать:
``kusto DeviceNetworkEvents | where InitiatingProcessFileName =~ "cloudflared.exe" | where InitiatingProcessFolderPath contains @"\AppData\Local\Temp\cf" or InitiatingProcessSHA256 == "e00a9e9fed12f8a8f5703539c4662750dd5472d35c16dcbbdc5869f3fe5e238b" ``
Выводы и ATT&CK
В исследовании активность сопоставлена с техниками MITRE ATT&CK: T1573 «Зашифрованный канал», T1071.001 «Веб-протоколы», T1059.001 «PowerShell», T1204.002 «Вредоносный файл», T1053.005 «Запланированная задача», T1027 «Зашифрованные файлы или информация», T1090.002 «Внешний прокси-сервер», T1105 «Передача инструментов проникновения», T1566.002 «Ссылка для целевого фишинга», T1082 «Сбор информации о системе» и T1041 «Экфильтрация данных через канал C2».
Цепочка не опирается на сложный загрузчик, но сочетает убедительную персонализированную переписку, поддельные сайты рекрутинговых агентств, документы-приманки и бэкдор с выполнением произвольного PowerShell-кода. Как минимум в одном наблюдавшемся случае эта активность завершилась развёртыванием Qilin.
Для обнаружения исследователи рекомендуют отслеживать запуск PowerShell из ярлыков, необычные задания планировщика, неожиданные запуски cloudflared и сетевые подключения к известной облачной инфраструктуре, контролируемой злоумышленниками. При расследовании заражённого хоста стоит отдельно проверить и сохранить содержимое %LOCALAPPDATA%\Temp\cf: конфигурация и учётные данные Cloudflare Tunnel могут показать, какой удалённый доступ был настроен в скомпрометированной среде.
