Tomando SHELLTER: un marco de evasión comercial abusado en la naturaleza 

Elastic Security Labs detectó la reciente aparición de ladrones de información que emplean una versión adquirida ilícitamente del marco de evasión comercial SHELLTER para implementar cargas útiles posteriores a la explotación.

Tomando SHELLTER: un marco de evasión comercial abusado en la práctica

Introducción

Elastic Security Labs está observando múltiples campañas que parecen estar aprovechando el marco de evasión AV/EDR comercial, SHELLTER, para cargar malware. SHELLTER se comercializa en la industria de seguridad ofensiva para evaluaciones de seguridad autorizadas, lo que permite a los operadores del equipo rojo implementar de manera más efectiva sus marcos C2 contra las soluciones antimalware contemporáneas.

Conclusiones clave

  • El marco de evasión comercial SHELLTER fue adquirido por grupos de amenazas
  • SHELLTER se empleó en múltiples campañas de robo de información desde abril de 2025, como se registra en los metadatos de la licencia.
  • SHELLTER emplea capacidades únicas para evadir el análisis y la detección
  • Elastic Security Labs lanza un descompresor dinámico para binarios protegidos con SHELLTER
Throughout this document we will refer to different terms with “shellter” in them. We will try to 
maintain the following style to aid readability:
  *  “Shellter Project” - the organization that develops and sells the Shellter evasion framework
  *  “Shellter Pro Plus/Elite” - the commercial names for the tools sold by the Shellter Project
  *  “SHELLTER” - the loader we have observed in malicious usage and are detailing in this report
  *  “SHELLTER-protected” - a descriptor of final payloads that the SHELLTER loader delivers

Descripción general de SHELLTER

SHELLTER es un marco de evasión comercial que estuvo ayudando a los equipos rojos durante más de una década. Ayuda a los proveedores de servicios de seguridad ofensivos a eludir los antivirus y, más recientemente, las herramientas EDR. Esto permite que los equipos rojos empleen sus marcos C2 sin el desarrollo constante que normalmente se necesita cuando los proveedores de seguridad escriben firmas de detección para ellos.

While the Shellter Project does offer a free version of the software, it has a limited feature-set, 
only 32-bit .exe support, and is generally better understood and detected by anti-malware 
products. The free version is not described in this article.

SHELLTER, como muchas otras herramientas de seguridad ofensivas (OST), es un producto de doble uso. Los actores maliciosos, una vez que obtienen acceso a él, pueden usar SHELLTER para extender la vida útil de sus herramientas. Los proveedores de seguridad ofensiva con buena reputación, como Shellter Project, implementan medidas de seguridad para mitigar el riesgo de que sus productos se empleen con fines maliciosos. Estas medidas incluyen límites de ventas geográficos, diligencia debida organizacional y acuerdos de licencia de usuario final (EULA). A pesar de estos esfuerzos, los actores maliciosos altamente motivados siguen siendo un desafío.

A mediados de junio, nuestra investigación identificó múltiples campañas de robo de información con motivaciones financieras que estuvieron empleando SHELLTER para empaquetar cargas útiles desde fines de abril de 2025. La evidencia sugiere que esta es la versión 11.0 de Shellter Elite, que fue lanzada el 16 de abril 2025.

SHELLTER es un proyecto complejo que ofrece una amplia gama de configuraciones adaptadas a entornos operativos específicos, mecanismos de entrega de carga útil y paradigmas de cifrado. Este reporte se centra exclusivamente en las características observadas en las campañas maliciosas identificadas. Si bien algunas características parecen ser comunes, una revisión exhaustiva de todas las características disponibles está más allá del alcance de este documento.

Cargadora SHELLTER - Detalles técnicos

Las siguientes secciones describen capacidades que se asemejan a algunas de las características exclusivas Elite publicadas del Proyecto Shellter. Nuestra evaluación indica que estamos observando a Shellter Elite. Esta conclusión se basa en una revisión de la documentación pública del desarrollador, la observación de varias muestras de diferentes compilaciones con un alto grado de similitud de código y la prevalencia de características de evasión apenas observadas.

Código basura polimórfico

Las muestras protegidas por SHELLTER comúnmente emplean código shell automodificable con ofuscación polimórfica para incrustar dentro de programas legítimos. Esta combinación de instrucciones legítimas y código polimórfico ayuda a estos archivos a evadir la detección estática y las firmas, lo que les permite permanecer sin ser detectados.

Al establecer un punto de interrupción VirtualAlloc en en una muestra de RHADAMANTHYS protegida por SHELLTER, podemos ver la pila de llamadas de esta muestra de malware.

Este tipo de código polimórfico confunde a los desensambladores estáticos y perjudica los esfuerzos de emulación. Estas instrucciones aparecen durante la etapa de desempaquetado, llamando a uno de estos pares de funciones de API de Windows para asignar memoria para un nuevo trozo de shellcode:

  • GetModuleHandleA / GetProcAddress
  • CreateFileMappingW / MapViewOfFile

La funcionalidad de SHELLTER está contenida dentro de una nueva función sustancial. Se alcanza luego de desempaquetar adicionalmente e instrucciones basura en el trozo de shellcode. IDA Pro o Binary Ninja pueden descompilar el código con éxito en esta etapa.

Desconexión de módulos del sistema mediante asignaciones de archivos

Para evitar las técnicas de enganche de API de los proveedores de AV/EDR, SHELLTER asigna una copia nueva de ntdll.dll a través de NtCreateSection y NtMapViewOfSection.

También hay una segunda opción para desenganchar, cargando un ntll.dll limpio desde el directorio KnownDLLs a través de NtOpenSection y NtMapViewOfSection.

Cifrado y compresión de carga útil

SHELLTER cifra sus cargas útiles finales definidas por el usuario empleando el modo AES-128 CBC. Este cifrado puede ocurrir de dos maneras:

  • Clave/IV incorporada: un par de clave/IV generado aleatoriamente se incorpora directamente dentro de la carga útil de SHELLTER.
  • Clave/IV obtenida del servidor: el par clave/IV se obtiene de un servidor controlado por el adversario.

Para las muestras que emplearon la opción incorporada, recuperamos con éxito la carga útil subyacente.

Los blobs cifrados se encuentran al final de cada carga útil de SHELLTER.

La clave AES y el IV se pueden encontrar como constantes que se cargan en las variables de la pila en etapas muy tempranas de la carga útil como parte de su rutina de inicialización.

En Shellter Elite v11.0, de forma predeterminada, las cargas útiles se comprimen empleando el algoritmo LZNT1 antes de ser cifradas.

Precarga de DLL y evasión de la pila de llamadas

La función “Forzar precarga de módulos del sistema” permite la precarga de DLL esenciales del subsistema de Windows, como advapi32.dll, wininet.dll y crypt32.dll, para soportar las operaciones de la carga subyacente. Las tres opciones configurables incluyen:

  • --Force-PreloadModules-Basic (16 módulos de uso general)
  • --Force-PreloadModules-Networking (5 módulos específicos de la red)
  • --Force-PreloadModules-Custom (hasta 16 módulos definidos por el usuario)

Estos módulos se cargan a través de LoadLibraryExW o LdrLoadDll. En una sección posterior se analizarán detalles sobre la proxy API a través de controladores de excepciones vectoriales (VEH) personalizados.

A continuación se muestra un ejemplo de una lista de módulos precargados en una carga útil protegida por SHELLTER que coincide con la opción --Force-PreloadModules-Basic , que se encuentra en una muestra que implementa un cliente de cargador C++ simple que abusa de BITS (Servicio de transferencia inteligente en segundo plano) para C2, un enfoque poco común favorecido por algunas amenazas.

El siguiente ejemplo es una lista que coincide con la opción --Force-PreloadModules-Networking que se encuentra en una muestra de carga de LUMMA.

Esta característica (lanzada en Shellter Pro Plus v10.x) aprovecha la capacidad de evasión de la pila de llamadas para ocultar la fuente de la llamada LoadLibraryExW mientras se cargan bibliotecas relacionadas con redes y criptografía.

A continuación se muestra un ejemplo de un seguimiento de procmon al cargar wininet.dll, que muestra una pila de llamadas truncada:

En la misma muestra que tiene habilitada la bandera --Force-PreloadModules-Basic , observamos que las dependencias de los módulos precargados también estaban sujetas a corrupción en la pila de llamadas. Por ejemplo, urlmon.dll también oculta la fuente de la llamada LoadLibraryExW para sus dependencias iertutil.dll, srvcli.dll y netutils.dll.

Desvinculación de módulos AV/EDR

SHELLTER incluye funcionalidad para desvincular módulos DLL señuelo que se colocan dentro del Bloque de entorno de proceso (PEB). Algunos proveedores de seguridad emplean estos módulos señuelo como canarios para monitorear cuándo el shellcode intenta enumerar la lista LDR de PEB manualmente. PEB LDR es una estructura en Windows que contiene información sobre los módulos cargados de un proceso.

Solo observamos un nombre de módulo único basado en su hash (distinto por muestra), que termina resolver como kern3l32.dll [sic].

Ofuscación de hash de API

Las muestras observadas emplean una siembra basada en el tiempo para ofuscar las direcciones API. El malware primero lee el valor SystemTime de la estructura KUSER_SHARED_DATA en la dirección 0x7FFE0014 para derivar una clave XOR dinámica.

Luego emplea un algoritmo hash ROR13 sembrado en nombres de API para resolver las direcciones de función en tiempo de ejecución.

Una vez resueltos, opcionalmente, estos punteros se ofuscan al aplicarles una operación XOR con la clave basada en el tiempo y al aplicarles una rotación bit a bit antes de almacenarlos en una tabla de búsqueda. Esta táctica se aplica en todo el binario para ocultar una variedad de datos, como otros punteros de función, stubs de llamadas al sistema y controladores de módulos cargados.

Comprobación de licencia y autodesactivación

Para cada carga útil de SHELLTER, hay tres estructuras FILETIME integradas. En un ejemplo de muestra, se encontró que eran:

  • Fecha y hora de vencimiento de la licencia (2026-04-17 19:17:24.055000)
  • Fecha y hora de autodesactivación (2026-05-21 19:44:43.724952)
  • Fecha y hora de inicio de la infección (2025-05-21 19:44:43.724952)

La verificación de vencimiento de la licencia compara la hora actual con la fecha y hora de vencimiento de la licencia y establece el indicador license_valid en la estructura de contexto. Hay 28 sitios de llamada únicos (probablemente 28 funciones con licencia) para la verificación de validez de la licencia, donde el indicador license_valid determina si se omite la lógica del código principal, lo que confirma que la fecha y hora de vencimiento de la licencia actúa como un interruptor de seguridad.

De forma predeterminada, la fecha de autodesarme se establece exactamente un año luego de la fecha de inicio de la infección inicial. Cuando se activa la bandera de autodesarme, se ejecutan varias rutinas de limpieza. Una de estas rutinas implica desasignar el módulo ntdll cargado manualmente (si está presente) y borrar la tabla de búsqueda NTAPI, que hace referencia al módulo ntdll asignado manualmente o al cargado durante la inicialización del proceso.

Si bien las fechas y horas de inicio del autodesarme y la infección varían de una muestra a otra, observamos que la fecha y hora de vencimiento de la licencia (2026-04-17 19:17:24.055000) permanece constante.

Es posible que este tiempo se genere de forma única para cada licencia emitida por The Shellter Project. De ser así, respaldaría la hipótesis de que solo se adquirió una única copia de Shellter Elite para uso malicioso. Este valor no aparece en el análisis estático, pero aparece en la primera etapa descomprimida.

SHA256Vencimiento de la licenciaAutodesarmarseInicio de la infecciónFamilia
c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d3017/04/2026 19:17:24.0550002026-05-27 19:57:42.9716942025-05-27 19:57:42.971694RHADAMANTHYS
7d0c9855167e7c19a67f800892e974c4387e1004b40efb25a2a1d25a99b03a1017/04/2026 19:17:24.05500021/05/2026 19:44:43.72495321/05/2025 19:44:43.724953DESCONOCIDO
b3e93bfef12678294d9944e61d90ca4aa03b7e3dae5e909c3b2166f122a14papá17/04/2026 19:17:24.0550002026-05-24 11:42:52.9057262025-05-24 11:42:52.905726UN CLIENTE EQUIPO2
da59d67ced88beae618b9d6c805f40385d0301d412b787e9f9c9559d00d2c88017/04/2026 19:17:24.0550002026-04-27 22:40:00.9540602025-04-27 22:40:00.954060LUMMA
70ec2e65f77a940fd0b2b5c0a78a83646dec17583611741521e0992c1bf974f117/04/2026 19:17:24.05500016/05/2026 16:12:09.71105716/05/2025 16:12:09.711057DESCONOCIDO

A continuación se muestra una regla YARA que se puede emplear para identificar este valor de vencimiento de licencia codificado en las muestras ilícitas de SHELLTER que examinamos:

rule SHELLTER_ILLICIT_LICENSE {  
    meta:  
        author = "Elastic Security"  
        last_modified = "2025-07-01"  
        os = "Windows"  
        family = "SHELLTER"  
        threat_name = "SHELLTER_ILLICIT_LICENSE"

    strings:

        // 2026-04-17 19:17:24.055000  
        $license_server = { c7 84 24 70 07 00 00 70 5e 2c d2 c7 84 24 74 07 00 00 9e ce dc 01}

    condition:  
        any of them  
}

Evasión del escaneo de memoria

Las muestras protegidas por SHELLTER implementaron varias técnicas, incluidas evasiones en tiempo de ejecución, para evitar la detección. Estos tipos de técnicas incluyen:

  • Decodificación y recodificación de instrucciones en tiempo de ejecución
  • Eliminación de licencias de ejecución en páginas de memoria inactivas
  • Reducción del espacio ocupado, lo que impacta en las firmas en memoria mediante YARA
  • Emplear estructuras internas de Windows, como PEB, como lugares de almacenamiento de datos temporales

SHELLTER genera un stub de estilo trampolín basado en la versión del sistema operativo. Hay una página de 4 KB que contiene este trozo, donde las licencias de memoria fluctúan usando NtQueryVirtualMemory y NtProtectVirtualMemory.

Una vez que la página está activa, los bytes codificados se pueden observar en esta dirección, 0x7FF5FFCE0000.

SHELLTER decodifica esta página cuando está activo a través de un bucle XOR empleando la clave SystemTime derivada de la estructura KUSER_SHARED_DATA .

A continuación se muestra esta misma página de memoria (0x7FF5FFCE0000), que muestra el trozo de trampolín decodificado para la llamada al sistema (ntdll_NtOpenFile).

Cuando se necesita la funcionalidad, las licencias de la página de memoria se configuran con licencias de lectura/ejecución (RX). Luego de la ejecución, las páginas se establecen como inactivas.

La protección continua de la funcionalidad clave durante el tiempo de ejecución complica tanto los esfuerzos de análisis como los de detección. Este nivel de protección es poco común en muestras de malware general.

Llamadas al sistema indirectas / Corrupción de la pila de llamadas

Como se muestra en la sección anterior, SHELLTER evita los ganchos del modo usuario mediante llamadas al sistema indirectas basadas en trampolines. En lugar de invocar syscall directamente, prepara la pila con la dirección de una instrucción syscall limpia de ntdll.dll. Luego, una instrucción ret introduce esta dirección en el registro RIP , desviando sigilosamente la ejecución a la instrucción syscall .

A continuación se muestra un ejemplo de eventos Elastic Defend VirtualProtect , que muestra la combinación de las dos evasiones (llamada al sistema indirecta y truncamiento de la pila de llamadas). Esta técnica puede eludir o interrumpir varios mecanismos de detección de seguridad.

Detección avanzada de máquinas virtuales y entornos sandbox

La documentación de SHELLTER hace referencia a una función de detección de hipervisor. Se observa una capacidad similar en nuestras muestras maliciosas luego de una llamada a ZwQuerySystemInformationEx empleando las instrucciones CPUID y _bittest . Esta funcionalidad devuelve diversa información de la CPU junto con el indicador de tecnología Hyper-Threading (HTT).

Detección del depurador (UM/KM)

SHELLTER emplea detección de depuración en modo usuario y modo kernel empleando indicadores de montón de proceso y verificando el indicador KdDebuggerEnabled a través de la estructura _KUSER_SHARED_DATA .

Derivación de AMSI

Hay dos métodos para omitir AMSI. El primer método implica aplicar parches en memoria a las funciones AMSI. Esta técnica busca patrones de bytes específicos en las funciones y los modifica para alterar la lógica de la función. Por ejemplo, sobreescribir una cadena de 4 bytes "AMSI" con bytes nulos y parchea los saltos condicionales a su opuesto.

El segundo método es un poco más sofisticado. En primer lugar, intenta opcionalmente sabotear la búsqueda de la interfaz del Modelo de objetos componentes (COM) encontrando la constante GUID CLSID_Antimalware {fdb00e52-a214-4aa1-8fba-4357bb0072ec} dentro de amsi.dll, ubicando un puntero a ella en una sección de datos escribibles y corrompiendo ese puntero para que apunte 8 bytes antes del GUID real.

El puntero de destino es el avanzado CLSID en la entrada del mapa de objetos de la Biblioteca de plantillas activas (ATL) del módulo AMSI, una estructura empleada por la función DllGetClassObject para encontrar y crear clases COM registradas. Al corromper el puntero en este mapa, la búsqueda del proveedor antimalware fallará, lo que impedirá su creación y provocará que AmsiInitialize falle con una excepción CLASS_E_CLASSNOTAVAILABLE .

Luego llama a AmsiInitialize : si el parche anterior no se realizó y la llamada a la API es exitosa, realiza un parche vtable como mecanismo de respaldo. El HAMSICONTEXT obtenido de AmsiInitialize contiene un puntero a un objeto COM IAntimalware , que a su vez contiene un puntero a su tabla de funciones virtuales. El bypass apunta a la función IAntimalware::Scan en esta tabla. Para neutralizarlo, el código busca en la página de memoria que contiene la función IAntimalware::Scan una instrucción ret .

Luego de encontrar un gadget adecuado, sobreescribir el puntero de función Scan con la dirección del gadget ret . El resultado es que cualquier llamada posterior a AmsiScanBuffer o AmsiScanString invocará la vtable parcheada, saltará directamente a una instrucción ret y regresará inmediatamente.

Proxy de API de controlador de excepciones vectorizado

Hay un mecanismo de proxy de API sofisticado que se logra redirigiendo las llamadas a API resueltas y stubs de llamadas al sistema creados a través de un controlador de excepciones personalizado, que actúa como un proxy de flujo de control. Se puede dividir en dos fases: configuración y ejecución.

La fase 1 implica la asignación de dos páginas de memoria especiales que servirán como “desencadenantes” para el controlador de excepciones. La protección para estas páginas está establecida en PAGE_READONLY y al intentar ejecutar código allí se generará una excepción STATUS_ACCESS_VIOLATION , lo cual es lo previsto. Las direcciones de estas páginas de activación se almacenan en la estructura de contexto:

  • api_call_trigger_page - La página que se llamará para iniciar el proxy.
  • api_return_trigger_page - La página a la que regresará la API real.

Se copia una plantilla de controlador de excepciones del binario en una región asignada y se registra como el controlador principal para el proceso empleando RtlAddVectoredExceptionHandler. Luego, un valor de marcador de posición mágico codificado (0xe1e2e3e4e5e6e7e8) en el controlador se sobreescribir con un puntero a la estructura de contexto misma.

Si observamos un ejemplo de sitio de llamada, si se va a emplear el proxy VEH, la dirección de GetCurrentDirectoryA se almacenará en ctx_struct->target_API_function y el puntero de función API se sobreescribir con la dirección de la página de activación de la llamada. Luego se llama a esta página de activación, lo que activa una excepción STATUS_ACCESS_VIOLATION .

El flujo de control se redirige al controlador de excepciones. Se verifica la dirección de falla del contexto de excepción y, si coincide con la página de activación de la llamada, sabe que es una llamada de proxy de API entrante y realiza lo siguiente:

  • Almacene la dirección de devolución original
  • Sobreescribir la dirección de retorno en la pila con la dirección de la página de activación de retorno
  • Establece el registro RIP en la dirección API real almacenada previamente en ctx_struct->target_API_function.

Luego se ejecuta la llamada GetCurrentDirectoryA . Cuando finaliza, salta a la página de activación de retorno, lo que genera una segunda excepción STATUS_ACCESS_VIOLATION y redirige el flujo de control nuevamente al controlador de excepciones. Se verifica la dirección que falla para ver si coincide con la página de activación de retorno; si es así, RIP se establece en la dirección de retorno original y el flujo de control regresa al sitio de llamada original.

Campañas

En junio, Elastic Security Labs identificó múltiples campañas que implementaban diversos ladrones de información protegidos por Shellter Elite, según lo registrado por la información de licencia presente en cada binario. Al aprovechar las herramientas mencionadas anteriormente, observamos que los actores de amenazas en diferentes campañas integran rápidamente este cargador altamente evasivo en sus propios flujos de trabajo.

LUMMA

El ladrón de información LUMMA se comenzó a distribuir con SHELLTER a partir de fines de abril, como lo evidencian los metadatos dentro de los binarios. Si bien el vector de infección inicial no está claro, pudimos verificar (empleando ANY.RUN) que los archivos relacionados estaban alojados en la plataforma de alojamiento de archivos MediaFire .

Quiero vender

El 16 de mayo, el usuario de Twitter/X @darkwebinformer publicó una captura de pantalla con el título:

🚨Shellter Elite v11.0 a la venta en un foro popular

“Exploit Garant” en este caso se refiere a un tercero similar a un depósito en garantía que media en la transacción.

UN CLIENTE EQUIPO2

A partir de mayo, observamos campañas dirigidas a creadores de contenido con señuelos centrados en oportunidades de patrocinio. Estos parecen ser emails de phishing enviados a personas con un canal de YouTube que se hacen pasar por marcas como Udemy, Skillshare, Pinnacle Studio y Duolingo. Los emails incluyen enlaces de descarga a archivos comprimidos (.rar), que contienen contenido promocional legítimo empaquetado con un ejecutable protegido por SHELLTER.

Este ejecutable subyacente comparte rasgos y comportamientos con nuestro análisis SHELLTER anterior. Al momento de escribir este artículo, todavía podemos ver muestras con tasas de detección muy bajas en VirusTotal. Esto se debe a múltiples factores asociados con las funciones creadas a medida para evitar el análisis estático, incluidos el código polimórfico, la introducción de código de puerta trasera en aplicaciones legítimas y la aplicación de certificados de firma de código.

La carga útil incorporada observada en este archivo implementa el ladrón de información ARECHCLIENT2, también conocido como SECTOP RAT. El C2 de este ladrón apunta a 185.156.72[.]80:15847, , que fue identificado previamente por nuestro equipo el 17 de junio cuando analizamos esta amenaza en asociación con el cargador GHOSTPULSE.

RHADAMANTHYS

Estas infecciones comienzan con videos de YouTube que abordan temas como piratería de juegos y modificaciones de juegos, con comentarios de videos que enlazan a archivos maliciosos alojados en MediaFire.

Uno de los archivos que se distribuyó anteriormente mediante este método fue enviado 126 veces únicas a partir de esta publicación por diferentes personas.

Este archivo comparte las mismas características de comportamiento que el mismo código subyacente de las secciones de análisis SHELLTER anteriores. La carga útil incorporada con esta muestra implementa el infostealer RHADAMANTHYS.

Desempaquetador SHELLTER

Elastic Security Labs está lanzando un descompresor dinámico para binarios protegidos por SHELLTER. Esta herramienta aprovecha una combinación de técnicas de análisis dinámico y estático para extraer automáticamente múltiples etapas de carga útil de un binario protegido por SHELLTER.

Si bien SHELLTER ofrece una amplia gama de funciones opcionales, este desempaquetador no es totalmente exhaustivo, aunque procesa con éxito una gran mayoría de muestras analizadas. Incluso con binarios no compatibles, normalmente es posible extraer al menos una etapa de carga útil.

Por razones de seguridad, esta herramienta solo debe ejecutar dentro de una máquina virtual aislada. Durante el proceso de descompresión, se asigna a la memoria un código ejecutable potencialmente malicioso. Aunque se implementaron algunas medidas de seguridad básicas, no son infalibles.

Conclusión

A pesar de los mejores esfuerzos de la comunidad OST comercial por conservar sus herramientas para fines legítimos, los métodos de mitigación son imperfectos. Ellos, como muchos de nuestros clientes, se enfrentan a atacantes persistentes y motivados. Aunque el Proyecto Shellter es víctima en este caso por la pérdida de propiedad intelectual y el tiempo de desarrollo futuro, otros participantes en el espacio de seguridad ahora deben enfrentar a amenazas reales empleando herramientas más capaces.

Esperamos:

  • Esta versión ilícita de SHELLTER seguirá circulando a través de la comunidad criminal y potencialmente pasará a manos de actores alineados con los Estados-nación.
  • El Proyecto Shellter actualizará y lanzará una versión que mitigue las oportunidades de detección identificadas en este análisis.
    • Cualquier herramienta nueva seguirá siendo un objetivo para actores maliciosos.
  • Las amenazas más avanzadas analizarán estas muestras e incorporarán funciones en sus conjuntos de herramientas.

Nuestro objetivo es que este análisis ayude a los defensores a detectar de forma temprana estas campañas de robo de información identificadas y los prepare para una posible expansión de estas técnicas a otras áreas del panorama ofensivo.

Malware y MITRE ATT&CK

Elastic usa el marco MITRE ATT&CK para documentar tácticas, técnicas y procedimientos comunes que las amenazas emplean contra las redes empresariales.

Táctica

La táctica representa el porqué de una técnica o subtécnica. Es el objetivo táctico del adversario: la razón para realizar una acción.

Técnicas

Las técnicas representan cómo un adversario logra un objetivo táctico mediante la realización de una acción.

Mitigación de SHELLTER

Prevención

YARA

Elastic Security creó reglas YARA para identificar esta actividad.

rule Windows_Trojan_Shellter {  
    meta:  
        author = "Elastic Security"  
        creation_date = "2025-06-30"  
        last_modified = "2025-06-30"  
        os = "Windows"  
        arch = "x86"  
        category_type = "Trojan"  
        family = "Shellter"  
        threat_name = "Windows.Trojan.Shellter"  
        reference_sample = "c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d30"

    strings:  
        $seq_api_hashing = { 48 8B 44 24 ?? 0F BE 00 85 C0 74 ?? 48 8B 44 24 ?? 0F BE 00 89 44 24 ?? 48 8B 44 24 ?? 48 FF C0 48 89 44 24 ?? 8B 04 24 C1 E8 ?? 8B 0C 24 C1 E1 ?? 0B C1 }  
        $seq_debug = { 48 8B 49 30 8B 49 70 8B 40 74 0B C1 25 70 00 00 40 85 C0 75 22 B8 D4 02 00 00 48 05 00 00 FE 7F }  
        $seq_mem_marker = { 44 89 44 24 ?? 89 54 24 ?? 48 89 4C 24 ?? 33 C0 83 F8 ?? 74 ?? 48 8B 44 24 ?? 8B 4C 24 ?? 39 08 75 ?? EB ?? 48 63 44 24 ?? 48 8B 4C 24 }  
        $seq_check_jmp_rcx = { 48 89 4C 24 ?? B8 01 00 00 00 48 6B C0 00 48 8B 4C 24 ?? 0F B6 04 01 3D FF 00 00 00 75 ?? B8 01 00 00 00 48 6B C0 01 48 8B 4C 24 ?? 0F B6 04 01 3D E1 00 00 00 75 ?? B8 01 00 00 00 }  
        $seq_syscall_stub = { C6 84 24 98 00 00 00 4C C6 84 24 99 00 00 00 8B C6 84 24 9A 00 00 00 D1 C6 84 24 9B 00 00 00 B8 C6 84 24 9C 00 00 00 00 C6 84 24 9D 00 00 00 00 C6 84 24 9E 00 00 00 00 }  
        $seq_mem_xor = { 48 8B 4C 24 ?? 0F B6 04 01 0F B6 4C 24 ?? 3B C1 74 ?? 8B 44 24 ?? 0F B6 4C 24 ?? 48 8B 54 24 ?? 0F B6 04 02 33 C1 8B 4C 24 ?? 48 8B 54 24 ?? 88 04 0A }  
        $seq_excep_handler = { 48 89 4C 24 08 48 83 EC 18 48 B8 E8 E7 E6 E5 E4 E3 E2 E1 48 89 04 24 48 8B 44 24 20 48 8B 00 81 38 05 00 00 C0 }  
    condition:  
        3 of them  
}

Observaciones

Todos los observables también están disponibles para su descarga tanto en formato ECS como en STIX.

En esta investigación se discutieron los siguientes observables.

ObservableTipoNombreReferencia
c865f24e4b9b0855b8b559fc3769239b0aa6e8d680406616a13d9a36fbbc2d30SHA-256Endorphin.exeRHADAMANTHYS PROTEGIDO POR SHELLTER
7d0c9855167e7c19a67f800892e974c4387e1004b40efb25a2a1d25a99b03a10SHA-256SUPERAntiSpyware.exeFAMILIA DESCONOCIDA PROTEGIDA POR SHELLTER
b3e93bfef12678294d9944e61d90ca4aa03b7e3dae5e909c3b2166f122a14papáSHA-256Aac3572DramHal_x64.exeCLIENTE PROTEGIDO POR SHELLTER2
da59d67ced88beae618b9d6c805f40385d0301d412b787e9f9c9559d00d2c880SHA-256Branster.exeLUMMA PROTEGIDA POR SHELLTER
70ec2e65f77a940fd0b2b5c0a78a83646dec17583611741521e0992c1bf974f1SHA-256IMCCPHR.exeFAMILIA DESCONOCIDA PROTEGIDA POR SHELLTER
263ab8c9ec821ae573979ef2d5ad98cda5009a39e17398cd31b0fad98d862892SHA-256Materiales publicitarios de Pinnacle Studio.rarARCHIVO DE SEÑUELOS
águilakl[.]digitaldominioServidor C&C LUMMA
185.156.72[.]80IPv4-ADDRServidor C&C ARECHCLIENT2
94.141.12[.]182IPv4-ADDRservidor de la tienda plotoraus[.]Servidor C&C de RHADAMANTHYS

Referencias

A lo largo de la investigación anterior se hizo referencia a lo siguiente: