
Visión general
Remcos es un troyano de acceso remoto (RAT) que fue presentado por primera vez en julio de 2016 por la empresa alemana Breaking Security. Aunque inicialmente se comercializó como una herramienta legítima para la administración remota de sistemas Windows, desde entonces ha sido ampliamente adoptada por los ciberdelincuentes con fines maliciosos. El malware se distribuye normalmente a través de correos electrónicos de phishing que contienen archivos adjuntos maliciosos, como documentos de Microsoft Office con macros incrustadas o archivos ZIP que se hacen pasar por contenido legítimo. Una vez ejecutados, estos archivos adjuntos despliegan Remcos en el sistema de la víctima. En algunos casos, los atacantes aprovechan vulnerabilidades conocidas para facilitar el proceso de infección.
Remcos proporciona a los atacantes amplias capacidades, como el registro de teclas, la captura de pantallas, la grabación de audio y vídeo y la ejecución remota de comandos. También puede recopilar información del sistema, robar credenciales y descargar cargas útiles maliciosas adicionales. La arquitectura modular del malware permite añadir nuevas funcionalidades, lo que lo hace adaptable a diversas campañas maliciosas.
Se han observado muestras recientes de Remcos ( versión 6.1.1 pro) propagándose a través de correos electrónicos de spam que llevan como adjunto un archivo 7Z malicioso. Este archivo contiene un archivo por lotes fuertemente ofuscado diseñado para evadir la detección. Dentro del archivo por lotes hay dos flujos de datos cifrados y comprimidos -específicamente, cifrados con AES y comprimidos con GZIP- que se descifran y descomprimen durante la ejecución. Este proceso tiene como resultado final el despliegue de la carga útil Remcos en la máquina de la víctima.
Detalles técnicos
El archivo por lotes malicioso está muy ofuscado y contiene código PowerShell incrustado codificado en Base64. Para evadir la detección, los atacantes han insertado código basura en todo el script. Por ejemplo, en la primera línea, la sustitución de la cadena “ywg” revela un comando echo, lo que indica la presencia de funcionalidad oculta.

Figura 1 – Archivo por lotes ofuscado
Tras su ejecución, el archivo por lotes ejecuta un script PowerShell incrustado que comprueba la presencia del archivo “dwm.bat” en el directorio del perfil del usuario. Si el archivo existe, lee su contenido línea por línea, busca una línea que contenga el marcador ::: y extrae el contenido que le sigue. Este contenido es código PowerShell codificado en Base64, que luego se descodifica y ejecuta. Si el archivo “dwn.bat” no está presente, el script simplemente termina.

Figura 2 – Script PowerShell incrustado
Eludir el AMSI y el ETW
El script PowerShell descodificado define una función llamada Invoke-SysRoutine, que implementa una técnica para eludir tanto la Interfaz de exploración antimalware (AMSI) como el Rastreo de eventos para Windows (ETW). Lo consigue resolviendo dinámicamente las direcciones API del sistema en tiempo de ejecución y modificando la memoria de las funciones de destino utilizando la interoperabilidad .NET y las llamadas a la API nativa de Windows, desactivando así la telemetría de seguridad y eludiendo la detección.
Resuelve dinámicamente funciones críticas del sistema como GetProcAddress y GetModuleHandle decodificando sus nombres en tiempo de ejecución, lo que dificulta el análisis estático. El script crea delegados personalizados para llamar a código no gestionado y modifica la protección de memoria mediante VirtualProtect para parchear la función AmsiInitialize de AMSI.

Figura 3 – Bypass AMSI
Además, escanea y parchea varios proveedores AMSI en memoria para garantizar una desactivación completa. Si se utiliza la bandera -DisableSvc, también se dirige a la función EtwEventWrite en ntdll.dll, suprimiendo eficazmente el registro de eventos de seguridad. Las protecciones de memoria se restauran tras la aplicación de parches para mantener la estabilidad del sistema.

Figura 4 Parcheado ETW
Descifrado y descompresión
Tras sortear con éxito AMSI y ETW, el script PowerShell incrustado dentro del archivo por lotes localiza el marcador ::, extrae el contenido que le sigue y, a continuación, divide estos datos utilizando la barra invertida (\) como delimitador. Los valores codificados en base64 resultantes se almacenan en una matriz para su posterior procesamiento.

Figura 5: Script PowerShell leyendo elementos encriptados
A continuación, los elementos de la matriz extraídos se pasan a una función de descifrado que utiliza AES en modo CBC (encadenamiento de bloques cifrados). Esta función descifra el contenido utilizando una clave codificada y un vector de inicialización (IV), como se demuestra en el siguiente fragmento de código. La salida descifrada se pasa posteriormente a otra función que se encarga de la descompresión GZIP.

Figura 6 – Descifrado AES
Una vez descomprimidos ambos elementos del array, el script extrae dos archivos ejecutables. El primer ejecutable contiene una función main() vacía, sin ningún propósito activo, mientras que el segundo es responsable de cargar la carga útil de Remcos.

Figura 7 – Descifrado AES y descompresión GZIP utilizando CyberChef
A continuación, el script pasa los ejecutables extraídos a una función que utiliza la carga por reflexión para ejecutar el binario malicioso directamente desde la memoria dentro del proceso PowerShell sin almacenar los binarios en el disco. Esta técnica permite la ejecución en memoria de la carga útil, lo que dificulta su detección y análisis.

Figura 8 – Carga de reflexión
El ejecutable extraído del primer elemento del array contiene una función principal vacía, lo que indica que el atacante puede estar utilizándolo como señuelo o táctica de evasión para evitar ser detectado.
Cargador Remcos
El ejecutable extraído del segundo elemento del array actúa como un cargador que carga la carga útil de Remcos en la máquina víctima. Al ejecutarse, el cargador carga “ntdll.dll” , recupera la dirección de la función “EtwEventWrite” y cambia la protección de memoria de esta función a PAGE_EXECUTE_READWRITE.
En sistemas de 32 bits, añade instrucciones (0xC2 0x14) que hacen que la función retorne inmediatamente, desactivando de hecho el registro ETW. En sistemas de 64 bits, el script sustituye el inicio de la función EtwEventWrite por la instrucción 0xC3, que hace que la función retorne inmediatamente sin hacer nada. Este cambio desactiva el registro de eventos. Una vez modificado, el script restaura la protección de memoria original para evitar más cambios, convirtiendo de forma efectiva EtwEventWrite en un no-op y ayudando al malware a evadir la detección por parte de las herramientas de seguridad.

Figura 9 – Parcheado ETWEventWrite
En la etapa final, el cargador busca en los recursos incrustados del ensamblaje una entrada específica llamada “xxxxxxxxxxxxxxxxxxxxxxxx.exe”. Si el recurso está presente, extrae su contenido utilizando GetManifestResourceStream().
Los datos extraídos se comprimen con GZIP y se cifran con AES. Se desencripta utilizando una clave predefinida y un vector de inicialización. Una vez descifrada, la carga útil -identificada como Remcos- se ejecuta, permitiendo al atacante controlar remotamente el sistema comprometido.
Detalles de la red y de la conexión al C&C
Tras ejecutarse con éxito, Remcos RAT envía una solicitud GET a geoplugin.net/json.gp para recuperar la geolocalización de la víctima basándose en su dirección IP pública. Esta respuesta de la API incluye detalles como país, ciudad, región, latitud, longitud, zona horaria, etc. Los datos recopilados ayudan a los atacantes a perfilar a las víctimas y adaptar sus operaciones en función de la ubicación geográfica.

Figura 10 – Recopilación de datos de geolocalización
Antes de hacerse con el control total de la máquina de la víctima, la RAT Remcos recopila primero información del sistema y la envía al servidor de Mando y Control (C&C) para registrar el dispositivo infectado. Inicia una conexión segura con el servidor C&C utilizando TLS para facilitar la comunicación cifrada. Cada paquete contiene una secuencia de bytes identificadora única, seguida del tamaño de los datos que se transfieren y un ID de comando que especifica la operación prevista, como se muestra a continuación.

Figura 11- Paquete inicial para registrar el dispositivo de las víctimas
Remcos utiliza el identificador de comando 0x4B para exfiltrar información detallada del sistema y del usuario desde la máquina de la víctima al servidor de Mando y Control (C2) del atacante. Estos datos se utilizan para registrar el dispositivo comprometido y establecer el control sobre el host infectado. Durante este proceso se suele recopilar la siguiente información:
- Nombre del dispositivo y nombre de usuario
- Localización del dispositivo de la víctima
- Información del sistema operativo
- Estado de la memoria
- Versión Remcos
- Ruta del archivo local de Remcos Keylogger
- Ruta completa de Remcos
- Título del programa activo
- Nivel de privilegios del usuario
- Tiempo de funcionamiento del sistema
- Tiempo de inactividad
- Nombre asignado a Remcos
- IP del servidor C&C
- Tipo de archivo Remcos
- Información del procesador
Tras el registro inicial, el servidor de Mando y Control (C2) envía un comando con ID 0x01 al cliente Remcos. Este comando funciona como un latido o baliza de información, incitando a la máquina infectada a enviar actualizaciones periódicas de estado al atacante.
![]()
Figura 12 – Paquete de balizas
En respuesta, el Remcos envía información que incluye telemetría del sistema en tiempo de ejecución como, el título de la ventana activa, y el tiempo de actividad del sistema, etc., junto con el comando 0x4C. Esto permite al atacante monitorizar la actividad de la máquina infectada en tiempo real y mantener un control persistente sobre el dispositivo.
![]()
Figura 13 – Respuesta a la solicitud de baliza
Después de esto, el servidor de C&C emite una solicitud a la máquina infectada utilizando el comando ID 0x11 para recuperar la información de geolocalización que se recopiló durante la etapa inicial de la infección. En respuesta, Remcos envía de vuelta los detalles de geolocalización utilizando el mismo comando ID 0x11, como se muestra a continuación.

Figura 14 – Detalles de geolocalización de la filtración
También se observó que el ID de comando 0x44 se utiliza siempre que se descarga un archivo del servidor C&C. Concretamente, cuando se recupera un archivo con una cabecera MZ, la comunicación incluye el comando 0x44 seguido del contenido del archivo, como se muestra a continuación.

Figura 15 – Descarga de carga útil adicional (Fuente : malware-traffic-analysis.net))
¿Cómo ayuda SASE Unificado como Servicio a mitigar las infecciones Remcos?
Un marco SASE unificado integra la seguridad de la red y los controles de acceso de confianza cero para defenderse de amenazas como Remcos RAT, que utiliza canales de mando y control (C2) para la exfiltración de datos y las operaciones remotas. SASE proporciona visibilidad centralizada del tráfico de red y aplica políticas de seguridad coherentes en todas las ubicaciones. Nuestras funciones de seguridad integradas -como IDPS avanzado, SWG e inteligencia sobre amenazas en tiempo real- pueden detectar indicadores de actividad de Remcos, incluidos ID de comandos específicos y patrones HTTP sospechosos. Al inspeccionar las comunicaciones HTTP salientes, SASE puede identificar intentos de exfiltrar datos de geolocalización o entregar comandos remotos, bloqueando automáticamente las transmisiones no autorizadas y minimizando el riesgo de compromiso.
Mapeo ATT&CK de MITRE: TTPs
- T1566.001 – Phishing: Adjunto de Spearphishing
- T1059.001 – Intérprete de comandos y scripts: PowerShell
- T1204.002 – Ejecución de usuario: Archivo malicioso
- T1027 – Archivos o información ofuscados
- T1055.002 – Inyección de procesos: Inyección de ejecutables portátiles
- T1562.001 – Deteriorar las defensas: Desactivar o modificar herramientas
- T1003 – Volcado de credenciales del SO
- T1082 – Descubrimiento de la información del sistema
- T1016 – Descubrimiento de la configuración de red del sistema
- T1071.001 – Protocolo de la capa de aplicación: Protocolos web
- T1056.001 – Captura de entrada: Registro de teclas
- T1113 – Captura de pantalla
- T1123 – Captura de audio
- T1125 – Captura de vídeo
- T1041 – Exfiltración por el canal C2
- T1020 – Exfiltración automatizada
Referencia
https://www.fortinet.com/blog/threat-research/new-campaign-uses-remcos-rat-to-exploit-victims