Desde enero de 2025, se observan campañas que afectan principalmente a organizaciones gubernamentales en Asia Central y que se apoyan en dos implantes: OctLurk y SilkLurk. En conjunto, las víctimas identificadas se ubican en países como Afganistán, Kirguistán, Tayikistán, Uzbekistán, Kazajistán y también en la República Árabe Siria. Los sectores alcanzan desde salud e investigación hasta oficinas públicas, ministerios, logística y organismos de aplicación de la ley.
Lo más relevante para equipos defensivos es que, aunque estos backdoors comparten conceptos técnicos, su despliegue y su manera de operar presentan diferencias. En este artículo repasamos cómo funcionan las puertas traseras OctLurk, qué hace SilkLurk y por qué el uso de un proxy adicional, LurkProxy, complica la atribución y el análisis.
Qué son OctLurk y SilkLurk
OctLurk y SilkLurk son puertas traseras con cargadores que se ajustan a cada víctima. El proceso incluye el uso de información del equipo comprometido para descifrar el contenido malicioso. Además, tanto el cargador como el backdoor están fuertemente ofuscados, lo que eleva la dificultad del análisis forense y del reverse engineering.
Una característica importante es su capacidad de ampliarse: ambos pueden descargar e inyectar módulos adicionales para ejecutar acciones maliciosas adicionales. Entre las funciones observadas están la ejecución de shells de comandos, actividades sobre el sistema de archivos, generación de eventos de teclado y ratón, escaneo de red y diversas técnicas para el acceso a información sensible.
Durante la intrusión también se emplean actividades como volcado de credenciales, keylogging, robo de contraseñasrecolección de correo y acceso remoto. Además, los atacantes desplegaron una utilidad que los investigadores llamaron LurkProxy; aunque comparte arquitectura con OctLurk, no se considera una puerta trasera en sí misma.
Vinculación del actor y contexto de la amenaza
Los analistas indican que el mismo actor puede estar detrás de ambos implantes: se observó que algunas víctimas infectadas con SilkLurk también contienen OctLurk. La confianza del vínculo se evalúa como media, y se estima que el actor probablemente se comunica en chino. Aun así, en el momento de la publicación no se pudo atribuir la actividad a un grupo conocido.
Para la defensa, esto tiene una implicación práctica: no conviene tratar cada incidente como aislado. Si un entorno muestra señales asociadas a uno de los implantes, hay que revisar indicadores relacionados con el otro y, en especial, con la infraestructura de red utilizada para el comando y control.
Cómo se despliegan las puertas traseras OctLurk
En el caso de OctLurk, el atacante crea una tarea programada en máquinas remotas con credenciales de administrador. La tarea recibe el nombre GoogleUpDate y se configura para ejecutarse una sola vez usando privilegios de cuenta System inmediatamente después de su creación.
Antes de ejecutar, el operador consulta el estado de la tarea. Luego, la tarea corre un script por lotes ubicado en una ruta del perfil del usuario (ejemplo: C:\Users\<username>\Videos\1.bat). Este enfoque reduce la necesidad de actividades persistentes continuas, pero incrementa la probabilidad de que el despliegue se realice de forma “limpia” y rápida.
Servicios y carga de DLL ofuscadas
El script 1.bat crea un servicio con un nombre determinado (por ejemplo, NgcCIntSvc) que carga una DLL con nombre oleasapi.dll. El parámetro ServiceMain se configura para invocar la función RegisterService de dicha DLL.
Los investigadores también describen una variante de despliegue en la que primero se valida la conectividad hacia un dominio asociado a la infraestructura de control (por ejemplo, dns[.]ssentialserv[.]xyz). En ese momento, el dominio apuntaba a una dirección usada como servidor de LurkProxy. Tras confirmar la accesibilidad, el atacante ejecuta otro script por lotes (por ejemplo, C:\Users\[username]\Desktop\auto.bat), que crea otro servicio (como Cusrxsrv) para cargar una DLL (por ejemplo, msbasesysdc.dll).
Además, se identificaron múltiples nombres de servicios utilizados como trampolines para cargar DLL maliciosas, entre ellos specitsrc, cmtastsvc, PNRPHostSvc, vmictimerosync y vmicagent.
Descifrado doble y descompresión
El cargador exporta dos métodos: Refresh y RegisterService. El flujo inicia con la llamada a RegisterService, que a su vez activa Refresh, donde reside la lógica maliciosa. Para localizar el payload, el cargador realiza un proceso de descifrado doble-XOR y luego una descompresión zlib sobre bytes incrustados.
El material descifrado conduce a una ruta del payload y, a su vez, los bytes del payload pasan por el mismo esquema (doble XOR y zlib) para obtener la DLL del backdoor. El descifrado usa dos claves: una clave multibyte incrustada en el cargador y otra derivada del número de serie del disco C:. Esta decisión hace que el payload sea más específico para cada equipo.
Finalmente, el backdoor se inyecta de forma reflectiva en memoria y se ejecuta su punto de entrada. A partir de ahí, el cargador puede llamar métodos exportados del backdoor por nombre u ordinal, ambos hardcodeados y protegidos con el mismo mecanismo de descifrado doble-XOR y descompresión zlib.
Qué hace el backdoor OctLurk en el equipo
OctLurk establece la comunicación con un servidor de control usando un socket basado en una dirección hardcodeada (por ejemplo, dns[.]multitoconference[.]com) en el puerto 443. Antes de enviar información, el malware recolecta datos del sistema, como versión del sistema operativo, nombre de equipo, usuario, nombre de host local, IP local (con traducción de hostname a IP) y la fecha y hora actuales en formato de estructura.
Para proteger la confidencialidad, el backdoor cifra los datos con un esquema que combina una clave XOR fija (observada con forma de cadena) y una secuencia adicional de 83 bytes generada al momento. Primero comprime la información con zlib; luego aplica XOR dos veces: una con la clave fija y otra con la secuencia aleatoria. La estructura resultante incluye la clave XOR aleatoria, el tamaño de los datos comprimidos y fragmentos finales aleatorios para completar el paquete.
El intercambio inicia con un encabezado de 16 bytes que determina el tamaño del siguiente paquete. El primer paquete recibido trae el tamaño del siguiente bloque, el cual se descifra mediante XOR doble (primero con una clave incluida en el paquete y luego con la clave fija), seguido de descompresión zlib. Los datos descifrados pueden contener comandos o código de plugins.
Plugins en memoria: desde comandos hasta keylogging
Una vez que el malware obtiene instrucciones, puede cargar plugins directamente en memoria. Estos módulos exportan dos métodos (ins_ctl_db y oct_lk_col), pero la lógica real se implementa en oct_lk_col.
Los investigadores reportan plugins típicos como:
- Command Shell: proporciona una shell de comandos.
- File Manager: realiza interacciones con el sistema de archivos.
- Interaction Manager: sintetiza eventos de teclado y ratón.
Esta modularidad permite adaptar el comportamiento al objetivo: una organización podría recibir comandos para recopilar información y desplegar herramientas adicionales, mientras otra podría centrarse en reconocimiento y acceso a credenciales.
Actividades posteriores a la intrusión
Para mantener el control y expandir el impacto, el operador ejecuta una serie de acciones que siguen el patrón de “informe → escalamiento → robo → acceso remoto”. En muchos casos se apoya en la misma táctica: crear tareas programadas con privilegios elevados y ejecutar scripts por lotes que automatizan la recolección y la instalación.
Huella del sistema con tareas remotas
Usando credenciales administrativas, el atacante crea de nuevo la tarea programada GoogleUpDate, pero esta vez ejecuta un script ubicado en C:\windows\temp\in.bat. El operador consulta el estado de la tarea y luego la dispara. El script ejecuta múltiples comandos para recopilar información sobre hardware, software y configuración de red, guardando los resultados en archivos dentro de %TEMP%.
Recolección de registros de inicio de sesión
También se ejecutan comandos para exportar eventos de inicios de sesión exitosos de logon interactivo remoto (como RDP) y realizar consultas filtradas por usuario. Este tipo de recolección suele servir para identificar cuentas con actividad real y seleccionar objetivos con mayor probabilidad de tener privilegios.
Robo de credenciales y credenciales de AD
Para el robo de credenciales, se observa el uso de una versión portable de Impacket secretsdump (un ejecutable malicioso identificado como Adobe.exe). Se extraen hashes desde controladores de dominio (servidores críticos en entornos con Active Directory). Tras recolectar hashes, el atacante lista miembros del grupo “Domain Controllers”, lo que sugiere una estrategia para ampliar el control hacia controladores adicionales.
Keylogger y exfiltración de portapapeles
En el componente de vigilancia, el atacante deja un keylogger en C:\Users\Public\Pictures\AnyDesk.exe y programa la tarea “AnyDesk” para ejecutarlo al iniciar sesión. El keylogger guarda teclas capturadas en un archivo (dev0) y datos del portapapeles en otro (dev1). Antes de escribirlos, codifica la información restando 2 a cada byte.
Robo de contraseñas desde navegadores
Para contraseñas de navegadores, se identifica una herramienta (por ejemplo, C:\users\<username>\libraries\64.exe) con dos opciones: una para Chrome (-help) y otra para Firefox (-exit). En Chrome, el malware apunta a bases como Login Data y Local State, donde Local State contiene una clave maestra relevante para descifrar credenciales. En Firefox, se dirige al archivo logins.json dentro del perfil.
Acceso remoto con agentes Pandora
También se instala un agente de control remoto (descrito como Pandora RC agent). Mediante credenciales de administrador, el atacante crea la tarea “GoogleUpDate” para ejecutar el script 1.bat, que descarga e instala el agente usando parámetros como EHUSER y la carpeta objetivo de instalación. Tras la instalación, el servicio se inicia para posibilitar monitorización y manipulación del sistema.
Escaneo interno y acceso a servicios
Para ampliar la superficie de ataque, se despliega una herramienta de escaneo tipo Fscan (ejecutable ubicado en %TEMP%\fc.exe) que puede descubrir hosts, evaluar vulnerabilidades, crear conexiones inversas y probar credenciales contra servicios comunes. Se analiza tanto red interna como pública para identificar servicios en puertos específicos como SSH (22) y MySQL (3306), y también se intentan accesos usando credenciales encontradas en un archivo asociado.
Recolección de correo
Por último, los atacantes usan el comando curl para conectarse a un servidor de correo, autenticarse con usuario y contraseña, seleccionar la carpeta Inbox y dejar el entorno listo para operaciones como listar, leer o manipular mensajes.
La pieza clave: LurkProxy como puente de comunicación
Además del backdoor en sí, se detecta LurkProxy, una utilidad que funciona como proxy de tráfico de red. Su cargador usa una versión ofuscada del cargador de OctLurk, con arquitectura muy similar. Sin embargo, su función principal es redirigir comunicaciones.
LurkProxy escucha en todas las interfaces en un puerto hardcodeado (por ejemplo, 64980) y establece una conexión TLS hacia el servidor de comando y control ubicado en una dirección (por ejemplo, 154.196.162.76). La comunicación usa un protocolo binario propio: cada paquete se comprime con zlib, se cifra con un esquema de doble XOR y sigue una estructura definida por los investigadores.
En el implante analizado se identifican dos modos. El primer modo es compatible con SOCKS5, donde el cliente inicia una conexión y la orden 0x1000010 comunica al C2 la dirección objetivo; el servidor del C2 abre la conexión para habilitar comunicación bidireccional. El segundo modo es un proxy transparente en el que el destino (dirección y puerto) está fijado y todos los clientes se enrutan hacia ese objetivo.
Este componente puede dificultar el análisis y el rastreo de rutas de red, porque el tráfico observado en el perímetro no refleja directamente el destino real sin entender la lógica del proxy.
Cómo se despliega SilkLurk
SilkLurk usa una táctica distinta para entrar: crea servicios que ejecutan binarios legítimos y realiza side-loading de DLL maliciosas. Los investigadores observan ejemplos de ejecutables “legítimos” (como NetSetSvc.exe, nvgwls.exe, RtkSmbus.exe y RtkNGUI64.exe) junto con DLLs cargadas de forma maliciosa (por ejemplo, nvml.dll, vulkan-1.dll y DLLs Local específicas).
Inyección en memoria y persistencia
El loader de SilkLurk verifica que se ejecuta dentro del ejecutable que lo carga. Después, mueve un archivo de payload (en el ejemplo analizado, OneDrive.dat) desde la ubicación del módulo a una ruta hardcodeada (por ejemplo, C:\ProgramData\Microsoft OneDrive\setup). La ruta puede variar entre muestras.
Para persistir, el malware crea un servicio (por ejemplo, RmSs) que arranca un ejecutable legítimo que a su vez carga el loader malicioso. Además, modifica la configuración para reiniciar el servicio si falla y, finalmente, inicia el servicio con parámetros que lo dejan como auto-start.
Criptografía dependiente de la víctima
En SilkLurk, el descifrado se apoya en un enfoque dependiente del host: calcula un hash de 32 bits del nombre del equipo y usa ese valor en algoritmos personalizados para descifrar rutas del payload y el propio payload. Al variar el nombre del equipo, el resultado también cambia, haciendo que el contenido descifrado sea específico para la víctima.
El proceso incluye pasos como modificar cabeceras (por ejemplo, en el DOS header), descifrar datos relevantes del formato PE, resolver imports con nombres de DLL y APIs protegidos con una clave de un solo byte y descifrar entradas de relocación. Tras preparar el blob descifrado, el malware inyecta la carga en memoria y transfiere la ejecución.
Configuración cifrada y comunicación del backdoor SilkLurk
El backdoor de SilkLurk contiene una configuración cifrada cuya longitud total se describe en el análisis (0x4AC bytes). Los primeros 16 bytes guardan una cadena de mutex y el resto almacena la configuración cifrada. La configuración se descifra con un algoritmo propio que difiere del utilizado para el blob del backdoor y el payload.
Una vez iniciado, el backdoor crea un socket TCP e intenta conectarse con el C2 definido en esa configuración. Si se incluyen datos de proxy, se conecta a través del proxy usando un formato de solicitud definido. Tras establecer comunicación, genera una clave de red aleatoria de 32 bytes (0x20), la intercala con un “magic dword” y cifra el bloque con otro algoritmo personalizado.
El backdoor envía la clave al C2 en un paquete con cabecera de 12 bytes y un bloque de 40 bytes. Después, recolecta información del sistema: nombre de host, dominio DNS local, nombre de logon, arquitectura, versión mayor del sistema y build, IP del host, PID actual, tick count y el nombre del módulo. Esta información se comprime y se cifra usando la clave de red, generando además un encabezado de 15 bytes cifrado con el mismo esquema.
Qué pueden hacer los equipos defensivos
Aunque el análisis técnico de cada familia es profundo, hay puntos prácticos para la defensa. La actividad descrita se apoya en persistencia con tareas programadas, en carga de DLL ofuscadas y en comunicación cifrada con protocolos que no siguen patrones simples.
Por ello, conviene reforzar la detección alrededor de: creación de tareas con ejecución bajo privilegios System, cargas de DLL inusuales o sospechosas, aparición de ejecutables y scripts desde rutas no esperadas, y comportamientos típicos de recopilación (eventos de logon, dump de credenciales, keylogging y acceso a bases de contraseñas de navegadores).
Además, si se observa actividad asociada a OctLurk, vale la pena revisar señales de SilkLurk y la infraestructura de proxy tipo LurkProxy, ya que el uso de un puente de red puede modificar la visibilidad del tráfico y alterar la interpretación de indicadores.
Conclusión
Las puertas traseras OctLurk y SilkLurk muestran una campaña con enfoque en organizaciones gubernamentales y servicios críticos en Asia Central, con capacidades que van desde reconocimiento y robo de credenciales hasta acceso remoto, vigilancia y movimiento dentro de redes. El uso de ofuscación intensa, descifrado dependiente del equipo y componentes de red como LurkProxy añade complejidad tanto para el atacante como para el analista.
Para quienes protegen redes y endpoints, la clave es unir señales: persistencia por tareas, carga de DLL y patrones de exfiltración. Con esa visión, se puede detectar antes la intrusión y reducir el impacto de este tipo de campañas.
Fuente: https://securelist.com/octlurk-silklurk-backdoors-central-asia/120840/
