В последние годы среди киберугроз все чаще встречается гибридный подход, объединяющий проверенные временем техники продвижения в инфраструктуре, современные методы обхода сетевых фильтров и автоматизацию на базе больших языковых моделей. Такой подход практикует и ранее не описанная группа Citrus Ransomware, чей набор инструментов включает VLESS‑туннели для маскировки трафика под обычный HTTPS, а также троянец-шифровальщик семейства Sn00py. Кроме того, злоумышленники интегрируют LLM (Large Language Models, большие языковые модели) в процесс компрометации инфраструктуры.
В этой статье мы рассмотрим тактики и техники, которые группа использовала в недавних инцидентах.
Initial Access: атаки через подрядчиков
Первоначальный доступ к инфраструктурам жертв злоумышленники получают через скомпрометированные подрядные организации. Они используют украденные данные сотрудников таких организаций для подключения к корпоративным сетям VPN или напрямую к доступным из внешней сети терминальным серверам (по протоколу RDP).
Execution: команды, LLM и Impacket
Атакующие выполняют команды в скомпрометированных системах с использованием стандартного командного интерпретатора Windows, а также PowerShell. В процессе развития атаки они создают и запускают PowerShell-сценарии, пакетные файлы и команды, сгенерированные с помощью LLM. Примером последних могут послужить команды для отключения учетной записи одного из администраторов, приведенные ниже.
Обе команды сопровождаются комментариями — злоумышленники так поступают очень редко, поэтому комментарии с высокой долей вероятности указывают на использование языковых моделей. При этом стоит отметить, что модели привлекались не только для формирования команд. Атакующие генерировали полноценные сценарии, которые также содержали комментарии, характерные для LLM.
Выше приведен фрагмент одного из сценариев, который группа Citrus применяла для перечисления активных пользовательских сессий в доменных системах.
Помимо LLM, атакующие используют классический инструмент atexec из состава Impacket, создавая с его помощью отложенные задачи выполнения команд на хостах:
| Имя задачи | Запускаемый исполняемый файл |
| sIErKswD | C:\Windows\System32\..\System32\cmd.exe |
| PpMBCCSR | C:\Windows\system32\cmd.exe |
| QwZtLmNp | C:\Windows\..\Windows\System32\cmd.exe |
Мы не видели конкретные команды, за которые отвечали эти задачи, однако после их выполнения обновлялись групповые политики, поэтому, с высокой долей вероятности, таким образом выполнялась команда gpupdate /force.
В случае компрометации серверов «1С:Предприятие» группа использует внешние обработки (1C-Shell) для выполнения команд.
Persistence: задачи планировщика
Citrus автоматизирует запуск вредоносных инструментов в системе с помощью запланированных задач. Злоумышленники создают их вручную через PowerShell:
В некоторых случаях они запускают свои инструменты без закрепления в тех системах, которые не предполагают регулярную перезагрузку (например, на терминальных серверах).
Privilege Escalation: уязвимости и недостатки конфигураций
Во всех известных нам случаях изначальные права доменной учетной записи подрядчика, которую атакующие использовали при первичном доступе к инфраструктуре, были сильно ограничены, поэтому они пытались повысить ее привилегии.
Для этого они предпринимали попытки эксплуатации уязвимости обхода аутентификации CVE-2026-54121 (Certighost), в результате чего в инфраструктуре Active Directory создавались машинные учетные записи с характерными именами, например:
- GHOSTAUFTAFGS
- GHOSTCZYQVAZS
- GHOSTIVPRLDZA
- GHOST{набор из 8 случайных букв}
Такие имена генерируются в сценариях с использованием эксплойта, опубликованного на GitHub.
Эксплойт работает следующим образом. К системе с ролью AD CS выполняется запрос сертификата на основе шаблона Machine от имени созданной учетной записи. В полях Attributes, Subject и SubjectAlternativeName указываются параметры вида:
|
1 2 3 4 |
<Data Name='Attributes'>CertificateTemplate:Machine\nSAN:dns=dc01.victim.domain\ncdc:91.210.109[.]118\nrmd:dc01.victim.domain </Data> <Data Name='Subject'>CN=GHOSTABUIEFAD.victim.domain</Data> <Data Name='SubjectAlternativeName'>DNS-имя=dc01.victim.domain\r\n</Data> |
Атрибут cdc отвечает за IP-адрес или имя системы, к которому центр сертификации должен обратиться для подтверждения данных. Злоумышленники указывают адрес контролируемой системы (в данном случае 91.210.109[.]118) и отправляют с нее поддельные данные. При успешной эксплуатации уязвимости центр сертификации выпускает сертификат с заданными параметрами по заданному шаблону.
Имя контроллера домена в поле SubjectAlternativeName при успешном выпуске сертификата позволяет использовать его для прохождения аутентификации от имени учетной записи контроллера домена.
В одном случае злоумышленники также загрузили для закрепления в системе исполняемый файл, от имени которого запускались PowerShell-сценарии с нестандартным значением поля HostName (Имя узла).
Несмотря на то что файл был позднее удален из системы, мы можем предположить его назначение по косвенным признакам. Так, значение MSFConsole может указывать на его принадлежность к компонентам фреймворка Metasploit. Среди PowerShell-сценариев, запущенных через этот файл, был эксплойт для уязвимости CVE-2020-1337, который также доступен в GitHub-репозитории Metasploit.
Помимо классических уязвимостей в решениях Microsoft, атакующих также интересовали серверы «1С:Предприятие» с небезопасной конфигурацией.
При этом помимо собственно недостатков конфигураций мы зачастую встречаем случаи, когда к серверам с серверным компонентом платформы «1С:Предприятие» подключаются сотрудники поддержки и администраторы, которые обладают повышенными привилегиями в инфраструктуре Active Directory. Все это позволяет злоумышленникам легко повысить свои привилегии и перейти к горизонтальному перемещению.
Stealth: удаление следов и маскировка
Для усложнения реагирования злоумышленники удаляют инструменты и файлы с результатами их работы, а также очищают историю выполненных команд.
При этом, пока инструменты используются в инфраструктуре жертвы, атакующие, как правило, маскируют их имена и имена вспомогательных объектов под легитимные.
- KasperskyGPO_Deploy_64.exe, KasperskyGPO_Deploy_64_FIXED.exe — самораспаковывающиеся архивы, содержат сценарий Deploy-KasperskyGPO.ps1, директорию с вредоносной групповой политикой и один из архивов — KasperskyAgent.exe или agent.exe.
- KasperskyAgentInstaller.exe, KasperskyAgent.exe, agent.exe – самораспаковывающиеся архивы, содержат исполняемый файл троянца-шифровальщика и вспомогательные файлы.
- Kaspersky GPO — имя групповой политики, распространяющей троянец-шифровальщик в инфраструктуре жертвы.
- KasperskyAgentInstallTask, Sysvc — имя задачи планировщика, осуществляющей запуск архивов с троянцем-шифровальщиком.
- Deploy-KasperskyGPO.ps1 — PowerShell-сценарий, предназначенный для создания вредоносной групповой политики Kaspersky GPO.
- Kaspersky_GPO_Deployment.log — лог работы сценария Deploy-KasperskyGPO.ps1.
Стоит отметить, что использование имени Kaspersky в названиях вредоносных файлов не помогает злоумышленникам избежать обнаружения. Решения «Лаборатории Касперского» успешно обнаруживают и блокируют вредоносные файлы.
Defense Impairment: слабые политики доступа к средствам защиты играют на руку злоумышленникам
Для того чтобы дольше сохранять свое присутствие в инфраструктуре незаметным, атакующие очищают журналы событий в некоторых системах с помощью стандартной утилиты wevtutil.
Помимо этого, получив достаточные привилегии, они отключают средства антивирусной защиты на хостах, что позволяет им запускать такие утилиты, как mimikatz.
Также злоумышленники стремятся получить доступ к оснасткам централизованного управления защитными решениями, которые в дальнейшем используются для массового отключения средств защиты.
Кроме того, в одном случае на стадии воздействия (Impact) атакующие применяли групповую политику, которая вносила изменения в настройки Windows Defender с целью его отключения путем модификации реестра. В результате этого антивирусная защита не реагировала на запуск шифровальщика.
Наконец, при наличии достаточных привилегий злоумышленники вручную добавляют вредоносные инструменты в список исключений средств антивирусной защиты.
Credential Access: поиск учетных данных в файлах, mimikatz и кейлоггер
Для перехвата данных, вводимых с клавиатуры скомпрометированной системы, злоумышленники используют модифицированный кейлоггер peeping-tom, исходный код которого доступен на GitHub. Исполняемый файл кейлоггера и журнал работы размещаются по следующим путям:
- C:\ProgramData\Oracle\Java\jhost.exe
- C:\Users\<User name>\AppData\Roaming\Microsoft\CLR\ErrorLog.txt
IP-адрес для отправки похищенных данных в обнаруженном нами образце был 91.210.109[.]118. Запуск кейлоггера закрепляется задачей планировщика, описанной выше в разделе Persistence.
Для получения учетных данных из оперативной памяти злоумышленники используют инструмент mimikatz. Файлы, связанные с утилитой mimikatz, размещаются по путям:
- C:\ProgramData\x64\mimidrv.sys
- C:\ProgramData\x64\mimikatz.exe
- C:\ProgramData\x64\mimilib.dll
- C:\ProgramData\x64\mimispool.dll
Для поиска учетных данных и различных секретов (ключей SSH, токенов доступа и др.) в файлах, расположенных в доступных сетевых каталогах, группа использует инструмент Snaffler. Чтобы упростить запуск утилиты, злоумышленники доставляют в систему конфигурационный файл:
Помимо данных из сетевых каталогов злоумышленников также интересовали данные, хранящиеся в менеджерах паролей на рабочих станциях администраторов (например, в KeePass).
Discovery: набор джентльмена
Локальная разведка
После получения контроля над скомпрометированной системой злоумышленники выполняли базовый набор команд для определения текущего пользователя, запущенных процессов, настроек сетевых интерфейсов, внешнего IP-адреса системы и т. д.:
|
1 2 3 4 5 |
whoami tasklist quser ipconfig curl 2ip[.]io |
Удаленная разведка
На начальном этапе атакующие использовали сканер fscan для сбора сведений о внутренней инфраструктуре. В частности, их интересовали следующие порты:
- 135 (RPC)
- 139 (NetBIOS-SSN)
- 1433 (Microsoft SQL)
- 8006 (Proxmox VE)
После получения необходимых доступов и горизонтального перемещения злоумышленники запускали утилиту ADRecon на контроллерах домена, а также SharpHound на одной из рабочих станций.
Помимо этих инструментов атакующие с помощью PowerShell выполняли запросы по протоколу LDAP к контроллерам смежных доменов и получали списки доменных систем, пользователей и групп.
В качестве альтернативы PowerShell для получения информации о доменных пользователях и привилегированных группах злоумышленники использовали утилиту net.exe:
|
1 2 3 |
net users /domain net group "Domain Admins" /domain net group "Администраторы домена" /domain |
Lateral Movement: SSH, RDP и WinRM
Для горизонтального перемещения группировка использует стандартные протоколы удаленного администрирования — SSH, WinRM и RDP. Подключения к системам осуществляются как при помощи ранее развернутых туннелей, так и путем прямого подключения со скомпрометированного хоста.
Command and Control: доставка инструментов в систему
Для доставки своего инструментария на атакуемые хосты группировка задействует штатные утилиты ОС. В частности, в инцидентах встречались следующие.
Создание туннелей с использованием Xray
Выше мы привели команды для вызова certutil и BITS, при помощи которых злоумышленники загружали в системы жертв утилиту Xray. В дальнейшем они использовали ее для создания обратных VLESS-туннелей к серверу управления. Конфигурационный файл, размещаемый рядом с исполняемым файлом утилиты, обычно имел имя config.json. В некоторых случаях атакующие удаляли его сразу после запуска туннеля, чтобы скрыть от защитников конфигурацию Xray.
Исходя из содержимого обнаруженных в ходе анализа конфигурационных файлов, для маскировки под легитимный HTTPS-трафик злоумышленники использовали порт 443 на сервере VLESS. Также конфигурационные файлы содержат блоки, отвечающие за настройку работы протокола REALITY, предназначенного для маскировки трафика злоумышленников под обращения к легитимному ресурсу mirror.yandex.ru:
Также трафик маскировали под обращения к легитимному ресурсу yastatic.net:
Установка AnyDesk
Приведенная выше команда вызова PowerShell утилиту AnyDesk, которую злоумышленники использовали для удаленного управления скомпрометированными хостами.
После загрузки злоумышленники устанавливали ПО с флагом --silent, чтобы не привлекать внимания пользователя, задавали пароль для подключения и через PowerShell находили ID зараженной машины (используется AnyDesk для удаленного подключения на стороне клиента) в конфигурационном файле:
Collection & Exfiltration: данные мессенджеров
Непосредственно перед шифрованием данных атакующие подключились к одному из контроллеров домена и запустили PowerShell-сценарий steal_tgs.ps1, в результате чего был создан каталог tdatas. Согласно данным журнала USN файловой системы NTFS, в процессе работы сценария в этом каталоге с помощью 7-Zip создавались архивы с характерными именами, намекающими на их содержимое.
|
1 |
<имя_системы>_<дата>_<имя_пользователя>_tdata.zip |
Имя каталога tdatas и подстрока tdata могут отсылать к каталогу C:\Users\<имя_пользователя>\AppData\Roaming\Telegram Desktop\tdata, используемому мессенджером Telegram для хранения ключей авторизации, данных о сессии, настройках приложения и другой сессионной информации.
Таким образом атакующие удаленно собирали данные мессенджера из доступных систем, архивировали их с помощью 7-Zip и выгружали на внешний веб-сервис через браузер Google Chrome.
Impact: троянец-шифровальщик Sn00py
Для шифрования данных группа Citrus использует программу-вымогатель семейства Sn00py. Она написана на языке Go, предназначена для шифрования пользовательских (но не системных) файлов с помощью алгоритмов RSA-2048 и ChaCha20 в операционных системах семейства Windows. Зашифрованным файлам присваивается расширение .citrus. Расшифровка на данный момент невозможна без приватного ключа злоумышленников.
При запуске шифровальщик открывает консоль на устройстве жертвы и выводит туда команды, которые выполняет. Причем шифровальщик предпринимает попытки изменения данных конфигурации загрузки системы (BCD) с использованием несуществующего исполняемого файла bcedit (вероятно, злоумышленники опечатались):
Вывод активности шифровальщика в консоль содержит строку:
|
1 |
We`re going to do something special today :). Made with RaaS platform Sn00py. |
Она, вероятно, свидетельствует о том, что программа-вымогатель распространяется по модели Ransomware-as-a-Service, при которой злоумышленники не разрабатывают вредоносное ПО самостоятельно, а пользуются уже готовым решением по подписке.
В конфигурации шифровальщика в параметре pubkey содержится публичный ключ группы Citrus:
|
1 2 3 4 5 6 7 8 9 |
-----BEGIN PUBLIC KEY----- A7+eV3M+EDIh5kId+vf46QkKpAOKxUxv97PDFj66ox+uE0GV9UQhrSmBAoGAcyNI +z7noIwrFYnHi6wtj8gLEOT0hE/cNDp0VLoUnAzi551kZA7J3Q575jwqrJcDrZSO JLkZX7pxLLSd9iQdxMxDrLYZGRtiht8ToD5OGZri36oPvnW56ijJZ/NMzlFtVr7V iSZJr5Qkz2cxShcSuhDLLXmzleclBd7HQtWTuZUCgYEAqN8WFAZxkV2e1p4v3U98 VOu4XxEfqAc2Gs2Ccs/kkWoX/1fxvuSRcF6/hMdfVwUP0z+/fnhbFMNfysBeWo1W ZfmpBF/HbnRSg2ZDLWIwXEXEsNNSRmlvwyHWSEZgyG1xjgjSZKWuxo92WVmPxb5i S6NLrZkHPHwqaBy8CnD6ft8= -----END PUBLIC KEY----- |
Также в параметре host_blacklist задан перечень имен систем, шифрование которых не производится.
|
1 2 3 4 5 6 |
[ "DC01", "DC02", "DC03", "DC04" ] |
В этот перечень входят контроллеры домена, используемые для распространения политики запуска шифровальщика. Таким образом злоумышленники обеспечивают ее бесперебойное распространение.
В процессе работы троянца создаются файлы CITRUS_README.txt, содержащие требование выкупа:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-[ All your data were encrypted ] | |-If you try to decrypt them yourself, you will lose your data. To decrypt all systems, you need to contact us for guidance and a data recovery tool in the future. If you ignore our offer and the conversation does not take place, we will take extreme measures against your company and your employees, as a result of which you will lose access to all resources of your network and lose your reputation. | |-To contact us - register your mail here: https://account.proton.me/mail/signup?plan=free and write to us by email: [REDACTED] |-Further negotiations regarding this situation will be conducted there. Also we have Telegram: [REDACTED] | |-Be sure to use a VPN, and do not attempt to write from other email addresses, as there is a high chance that the messages will not be delivered to either party. | |-You have 72 hours to contact us to establish negotiations and interaction, starting from the date of creation of this file. |-If you do not contact us within 3 days, we will consider this a refusal to cooperate. This will entail immediate measures, such as: Dumps of your services, personal data of employees, accounting, contracts and source code. | |-Warning: \\_ Do not delete, modify, or attempt to recover files by any means other than using our key and decryptor. This will damage your data, and we cannot guarantee its recovery. \\_ Do not try to make this public, as you will only harm yourself and your reputation. |
Как мы уже упоминали, для массового запуска шифровальщика в системах жертвы группа использует вредоносные объекты групповой политики. Они создаются с помощью самораспаковывающихся архивов, которые мы видели в двух версиях. Каждый архив содержит следующее.
- Самораспаковывающийся архив с троянцем-шифровальщиком и вспомогательными файлами.
- Каталог с объектом групповой политики. Политика размещает в целевой системе архив с троянцем-шифровальщиком, создает отложенную задачу, запускающую его с параметрами
/quiet /norestart, включает службу WinRM, отключает службу Volume Shadow Copy, а также антивирусную защиту Windows Defender. Также она устанавливает на рабочем столе обои с запиской о выкупе.

- PowerShell-сценарий, размещающий на контроллере домена в директории \\<имя_текущего_домена>\SYSVOL архив с троянцем-шифровальщиком и подключающий к домену вредоносную групповую политику с помощью командлетов
Import-GPOиNew-GPLinkM.
В одной из версий PowerShell-сценария мы обнаружили комментарии, свидетельствующие о том, что он, вероятно, редактировался с использованием LLM:
Связь с Toy Ghouls
В процессе анализа активности Citrus мы выявили ряд сходств с Toy Ghouls. Несмотря на отсутствие прямых пересечений в инфраструктуре, у группировок наблюдаются общие TTP — шифрование систем своих жертв, использование похожего набора инструментов (1C-Shell для удаленного выполнения команд на серверах «1С:Предприятие», mimikatz, PsExec, ADRecon) и одних и тех же каталогов для их хранения. При этом обе группировки — русскоязычные и атакуют исключительно российские компании. В ряде инцидентов мы наблюдали одновременную компрометацию инфраструктуры злоумышленниками из Toy Ghouls и Citrus.
Заключение
Группа Citrus любопытна тем, что использует нестандартный подход к созданию сетевых туннелей и генерирует вспомогательные инструменты с помощью ИИ. Однако, несмотря на это, злоумышленники во многом полагаются на известные инструменты и техники, что несколько упрощает процесс обнаружения на ранних этапах. Решения «Лаборатории Касперского» детектируют всю описанную в статье активность.
Тем не менее атаки Citrus в очередной раз подчеркивают необходимость тщательного контроля и разграничения доступа при подключении к инфраструктуре сотрудников подрядных организаций — ведь именно через них злоумышленники попадают в сети своих жертв. Мы продолжим следить за активностью группировки и сообщать о новых техниках при их выявлении.
Индикаторы компрометации
| Хэши файлов | |
| Утилита Xray | |
| d631627131b90d576d77f4bf530e1abe | mst.exe, sabycenter.exe, webex.exe, rpchost.exe |
| Meterpreter stager | |
| 7107fb029e7c63523e3aca5fc8e56b38 | 2341.exe |
| Кейлоггер | |
| e251df2d0b7c3682965efb4d2009a2f4 | jhost.exe |
| Шифровальщик Sn00py | |
| 17b29b6c9de80402a45e321bbe1168fa | build_64.exe |
| 9eee984b187423c46c10a63d080da15d | build_64.exe |
| Сканер fscan | |
| cf903e4a1629aa0582fd0363b5786676 | fscan.exe |
| Пути к файлам | |
| C:\ProgramData\ADRecon-Report-* | |
| C:\ProgramData\SharpHound.exe | |
| C:\ProgramData\Snaffler.exe | |
| C:\ProgramData\WebEx\config.json | |
| C:\ProgramData\WebEx\host_to_ip.ps1 | |
| C:\ProgramData\WebEx\ping_oldwin.bat | |
| C:\ProgramData\WebEx\web.txt | |
| C:\ProgramData\WebEx\webex.exe | |
| C:\ProgramData\ad_ru.ps1 | |
| C:\ProgramData\computers.txt | |
| C:\ProgramData\config.json | |
| C:\ProgramData\default.toml | |
| C:\ProgramData\fscan.exe | |
| C:\ProgramData\llc\*_BloodHound.zip | |
| C:\ProgramData\mst.exe | |
| C:\ProgramData\oracle\java\jhost.exe | |
| C:\ProgramData\pve.exe | |
| C:\ProgramData\rules | |
| C:\ProgramData\sabycenter.exe | |
| C:\ProgramData\steal_tgs.ps1 | |
| C:\ProgramData\tdatas | |
| C:\ProgramData\x64\mimikatz.exe | |
| C:\ProgramData\xray.exe | |
| C:\ProgramData\rpchost.exe | |
| C:\ProgramData\3777.exe | |
| C:\ProgramData\2341.exe | |
| C:\ProgramData\ChromeSetup.exe | |
| C:\ProgramData\Kaspersky\KasperskyAgent.exe | |
| C:\ProgramData\Kaspersky\KasperskyAgentInstaller.exe | |
| C:\ProgramData\1.txt | |
| C:\ProgramData\7z2603-x64.exe | |
| C:\ProgramData\Kaspersky\task.log | |
| C:\ProgramData\enum.ps1 | |
| C:\ProgramData\kp.ps1 | |
| C:\ProgramData\ping.ps1 | |
| C:\ProgramData\result.txt | |
| C:\ProgramData\user_activity_report.txt | |
| C:\Users\*\AppData\Local\Temp\7ZipSfx.000\Deploy-KasperskyGPO.ps1 | |
| C:\Users\*\AppData\Local\Temp\Kaspersky_GPO_Deployment.log | |
| C:\Users\*\AppData\Local\Temp\7ZipSfx.000\KasperskyAgent.exe | |
| C:\Users\*\Desktop\KasperskyGPO_Deploy_64.exe | |
| C:\Users\*\Desktop\KasperskyGPO_Deploy_64_FIXED.exe | |
| C:\Windows\SYSVOL\domain\KasperskyAgent.exe | |
| C:\Windows\SYSVOL\domain\build_64.exe | |
| C:\Windows\SYSVOL\domain\icon.ico | |
| C:\Windows\SYSVOL\domain\wallpaper.bmp | |
| C:\Windows\Temp\agent.exe | |
| C:\Windows\build_64.exe | |
| C:\Windows\icon.ico | |
| C:\Windows\wallpaper.bmp | |
| C:\Users\*\AppData\Roaming\Microsoft\CLR\ErrorLog.txt | |
| C:\Users\*\Desktop\webex.zip | |
| Имена отложенных задач | |
| Java rpchost agent | |
| KasperskyAgentInstallTask | |
| Sysvc | |
| IP-адреса | |
| 91.210.109[.]118 | |
| 91.210.108[.]180 | |

















Citrus Ransomware: VLESS для трафика, Sn00py для шифрования и LLM в помощь