Detección de descargadores de scripts maliciosos con Remcos: lanzamiento de Threat Research, diciembre de 2021

Actualmente, el malware ha pasado por varias etapas antes de comprometer por completo el host o la máquina de destino. Un paso inicial muy conocido es un "correo electrónico de phishing" que contiene una macro maliciosa o un enlace URL malicioso que cargará el descargador real o el siguiente paso para descargar la carga útil real.

Este patrón particular dificulta la detección y el análisis del comportamiento del enemigo. Los cargadores de arranque más comunes que se encuentran en la naturaleza son los lenguajes de secuencias de comandos de ventana, JScript (.js) y VBScript (.vbs). Estos scripts son fáciles de ofuscar y cifrar para eludir la detección y el control preventivo, por lo que muchos opositores utilizan esta metodología. En este blog, Splunk Threat Research (STRT) analizará el gestor de arranque Remcos que utiliza DynamicWrapperX (dynwrapx.dll) para ejecutar el código de shell e introducir Remcos RAT en el proceso de destino. En última instancia, STRT cubre lo que Splunk de seguridad de contenido Comportamiento de búsqueda de detección y TTP aplicados al cargador de arranque DynamicWrapperX.

Índice

    cargador de arranque

    Este descargador de ejemplo de Remcos comienza con un VBScript simple que intenta cargar un segundo VBScript desde pegar.ee. El guión está incluido. pegar.ee es un importante cargador de Remcos. A continuación se muestra una captura de pantalla del script del gestor de arranque original. STRT ha sido testigo de que el escenario permaneció en línea durante varias semanas entre cambios importantes de la empresa. Paste.ee ofrece varias opciones para la eliminación automática de códigos de horas a años. Puede encontrar el descargador completo de VBScript aquí.

    El gestor de arranque principal es Remcos VBScript

    Detección de evasión

    STRT encontró el cargador de secuencias de comandos interesante porque intenta evitar las comprobaciones de validación mediante la incorporación de una gran cantidad de código de secuencias de comandos regulares y comentarios al principio y al final del cargador. Por ejemplo, la captura de pantalla a continuación muestra su código en las líneas 120-150 se refiere a Microsoft ".pubprn.vbs", un script diseñado para publicar impresoras en los servicios de dominio del directorio activo. Una revisión del código revela rápidamente que el shellcode está integrado en el interior.

    Entrenamiento de carga útil

    Ahora que el cargador de arranque ha descargado el siguiente paso de paste.ee, este VBScript preparará varias cargas útiles y finalmente descargará el malware Remcos real. Primero decodifica el Remcos RAT real, luego extrae dynwrapx.dll (usado para cargar el shellcode) y finalmente el shellcode. También inicializa la ruta al archivo (c: windows winhlp32.exe), que es el proceso de destino para introducir Remcos RAT.

    La siguiente es una captura de pantalla de cada carga útil decodificada:

    Ejecución de VBScript en x64 bits

    Este script también tiene una función para verificar qué tipo de arquitectura de sistema operativo tiene el host infectado usando WMI (Instrumentación de administración de Windows - T1047) si es un host x64, ejecutará VBScript usando el siguiente formato de comando «wscript / b / e: vbscript ”Como se muestra en la captura de pantalla a continuación. También puede encontrar datos de ataque sin procesar sysmon.log para esta técnica.

    Shellcode - Proceso de introducción

    El código de shell descifrado utiliza hashes de API precalculados para la resolución dinámica de importación de API para introducir el malware Remcos en el proceso de destino en el host. La siguiente captura de pantalla muestra las últimas llamadas a la API WriteProcessMemory API y ResumeThread, que se acostumbran a escribir y luego ejecutar Remcos RAT en el proceso de destino donde ingresa su código.

    DynamicWrapperX - Ejecución de ShellCode

    Para ejecutar el código de shell para Remcos a través del proceso de inyección, primero decodifica y elimina "dynwrapx.dll" en la carpeta %temp% y lo carga/instala usando la opción de configuración silenciosa Regsvr32 ("regsvr32/I/S"). Esta DLL dará acceso a VBScript al objeto "DynamicWrapperX", para cargar 2 DLL de Windows más llamadas user32.dll y kernel32.dll para asignar memoria y ejecutar el código de shell.

    Mediante la llamada a la API de VirtualAlloc, asigna un área de memoria para el malware Remcos y Shellcode. Esta dirección de memoria se pasará como un argumento a la API CallWindowProcW para cargar el código de shell para introducir Remcos RAT en el proceso de destino, que es WinHlp32.exe. La siguiente captura de pantalla muestra el código de esta técnica.

    ¿Hacia dónde va Remcos?

    Usando el comportamiento de VirusTotal para analizar más a fondo esta muestra, STRT buscó un patrón de comportamiento que generó winhlp32.exe y usó regsvr32.exe para cargar dynwrax.dll. STRT ha desarrollado esta consulta de comportamiento de VirusTotal:

    behavior:""%windir%\System32\regsvr32.exe" /I /S "%TEMP%\dynwrapx.dll"" behavior:""%windir%\winhlp32.exe""
    

    Esto reveló un modelo interesante que comenzó el 12/09/2021 desde Argentina, que correspondía al mismo comportamiento que nuestra muestra inicial. Cada descarga contenía diferentes secciones de la muestra final (discutida anteriormente). STRT sugiere que el enemigo probó su código contra motores antivirus. Después de las primeras descargas de "prueba", siguieron campañas activas reales con cargadores de arranque Remcos completos.

    El patrón de comportamiento que solicitamos en VTI se ve así:

    Después de usar winhlp32.exe, STRT notó que cambió a usar installutil.exe. Con installutil.exe la plantilla es muy similar. La mayor diferencia que notó STRT fue que mientras ejecutaba VBScript, a diferencia de winhlp32.exe, installutil.exe no cargaba dynwrapx.dll.

    Solicitud de comportamiento de VirusTotal:

    behavior:""%windir%\System32\regsvr32.exe" /I /S "%TEMP%\dynwrapx.dll"" behavior:"\installutil.exe""
    

    STRT creó algunas consultas adicionales que nos ayudaron a buscar de manera integral otras muestras. Dieron una idea del comportamiento posterior, así como de la medida en que se están dando interacciones y cambios en cada empresa.

    behaviour_processes:""%windir%\SYSWOW64\WSCRIPT.EXE" //b //e:vbscript "%SAMPLEPATH%""
    
    content:{5365742044796e577261704f626a203d204372656174654f626a656374282244796e616d696357726170706572582229}
    

    Gráfico de correlación de VT Remcos:

    La siguiente Gráfico de correlación de TV nos muestra los países afectados por esta empresa Remcos, el número de conexiones a servidores C2 que ha realizado para descargar otro malware o sus componentes. Incluso algunos vectores interesantes de la cadena de infección, como eliminar el archivo .lnk y cargar componentes desde él C2.

    Historia analítica de Remcos

    Actualizar en historia analitica introdujo 21 descubrimientos nuevos y 5 modificados. En esta sección, describimos algunos de estos datos analíticos.

    Proceso de consulta de DNS sospechoso Abusos conocidos de servicios web

    Detecta un proceso sospechoso que realiza una consulta DNS a través de conocidos servicios web insertando texto de abuso o VoIP, mensajería instantánea y plataforma de distribución digital para descargar archivos externos. Los opositores, las entidades maliciosas y los comandos rojos abusan de esta técnica para cargar archivos maliciosos en el host de destino. Este es un buen indicador TTP para posibles métodos de acceso inicial. El usuario experimentará falsos positivos si la próxima mensajería instantánea está habilitada o aplicaciones regulares como Telegram, Discord están habilitadas en la red corporativa.

    `sysmon` EventCode=22 QueryName IN ("*pastebin*", "*discord*", "*telegram*", "*t.me*") process_name IN ("cmd.exe", "*powershell*", "pwsh.exe", "wscript.exe", "cscript.exe")
    
    | stats count min(_time) as firstTime max(_time) as lastTime by Image QueryName QueryStatus process_name QueryResults Computer
    
    | `security_content_ctime(firstTime)` 
    
    | `security_content_ctime(lastTime)`
    

    Descarga el módulo Dynwrapx

    DynamicWrapperX es un componente ActiveX que se puede usar en VBScript para llamar a las funciones de la API de Windows, pero requiere que dynwrapx.dll esté instalado y registrado. Al mismo tiempo, registrar o descargar dynwrapx.dll en el host es muy sospechoso. En la mayoría de los casos, si se usa malintencionadamente, la mejor manera de ordenar es ver procesos paralelos y rotar a process_guid. Verifique el registro en busca de cambios sospechosos destinados a descargar dynwrapx.dll. Identifique cualquier módulo de carga sospechoso dynwrapx.dll. Esta detección devuelve e identifica los procesos que causan vbs/wscript/cscript.

    `sysmon` EventCode=7 (ImageLoaded = "*\dynwrapx.dll" OR OriginalFileName = "dynwrapx.dll" OR  Product = "DynamicWrapperX")  
    
    | stats count min(_time) as firstTime max(_time) as lastTime 
    
    by Image ImageLoaded OriginalFileName Product process_name Computer EventCode Signed ProcessId 
    
    | `security_content_ctime(firstTime)`
    
    | `security_content_ctime(lastTime)`
    

    Recopile información del sistema utilizando la aplicación Dxdiag

    Detecta la ejecución sospechosa del proceso dxdiag.exe desde la línea de comandos. Dxdiag se utiliza para recopilar información del sistema sobre los hosts de destino. Se ha observado que esta técnica es utilizada por Remcos RATS, varias entidades y otro malware para recopilar información como parte de la fase de inteligencia o recopilación de ataques. Tal comportamiento es raro en una red empresarial, pero un administrador de red puede usar esta línea de comando para auditar las especificaciones de la máquina host. Por lo tanto, en algunos casos raros, esta detección contendrá falsos positivos en sus resultados. Para una mayor clasificación, analice qué comandos se transfirieron después de que el resultado se transfirió a un archivo para su posterior procesamiento. Ejemplos cualquier carrera Análisis remcos mostrando su comportamiento antes y después de realizar esta técnica.

    | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
    
      as lastTime from datamodel=Endpoint.Processes where `process_dxdiag` AND Processes.process
    
      = "* /t *" by Processes.dest Processes.user Processes.parent_process_name Processes.parent_process
    
      Processes.process_name Processes.process Processes.process_id Processes.parent_process_id
    
      | `drop_dm_object_name(Processes)` | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`
    

    Posible opción de pase de navegador

    Detecta un proceso sospechoso que contiene parámetros de línea de comandos asociados con un volcado de credenciales del navegador web. Este método es utilizado por el malware Remcos RAT, donde utiliza la aplicación Nirsoft webbrowserpassview.exe para restablecer las credenciales del navegador web. Remcos usa la línea de comando "/ stext" para generar credenciales en formato de texto. Esta solicitud de búsqueda es una buena indicación de que los hosts sufren una posible infección RAT de Remcos. Debido a que la consulta de búsqueda se basa en un parámetro de comando y una posible ruta donde almacenará información textual sobre las credenciales, puede detectar herramientas comunes que usan el mismo comando y el mismo comportamiento.

    | tstats `security_content_summariesonly` count min(_time) as firstTime max(_time)
    
      as lastTime from datamodel=Endpoint.Processes where Processes.process  IN ("*/stext*", "*/shtml *", "*/LoadPasswordsIE*", "*/LoadPasswordsFirefox*", "*/LoadPasswordsChrome*","*/LoadPasswordsOpera*", "*/LoadPasswordsSafari*" , "*/UseOperaPasswordFile*", "*/OperaPasswordFile*","*/stab*", "*/scomma*", "*/stabular*", "*/shtml*", "*/sverhtml*", "*/sxml*", "*/skeepass*") AND Processes.process IN ("*\temp\*", "*\users\public\*", "*\programdata\*")
    
    by Processes.dest Processes.user Processes.parent_process_name Processes.parent_process Processes.process_name Processes.process Processes.process_id Processes.parent_process_id Processes.original_file_name
    
    | `drop_dm_object_name(Processes)`
    
    | `security_content_ctime(firstTime)`
    
    | `security_content_ctime(lastTime)`
    

    Picadillo

    Nombre del archivo

    El hash es sha256

    factura.vbs

    cb77b93150cb0f7fe65ce8a7e2a5781e727419451355a7736db84109fa215a89

    remcos.dll

    ff169ae934b92a2dfe78f4793c60256d4f36992a0e1218ed6b6d59b3809ed210

    dynwrapx.dll

    4ef3a6703abc6b2b8e2cac3031c1e5b86fe8b377fde92737349ee52bd2604379

    código de concha

    c344723295279aaaf2a4220a77d74db903985264cf3adfba5015f9f31f0dddec

    Stage1.vbs (descargar stage2 en pastebin)

    cb77b93150cb0f7fe65ce8a7e2a5781e727419451355a7736db84109fa215a89

    Automatice con SOAR Playbooks

    Los siguientes libros de texto comunitarios de Splunk SOAR, que se mencionan a continuación, se pueden usar junto con algunos de los datos analíticos descritos anteriormente:

    Nombre

    Descripción

    Contenido de caza y malware

    Este tutorial busca malware en los puntos finales administrados, deshabilita a los usuarios afectados, apaga sus dispositivos y bloquea los archivos que usan su hash para que no se ejecuten más a través del carbono.

    Notificación por correo electrónico de malware

    Este tutorial intenta determinar si un archivo es malware y si hay un archivo en alguna máquina administrada. La "reputación del archivo" de VirusTotal y el "detonar archivo" de PANW WildFire se utilizan para determinar si un archivo es malicioso, y la respuesta de "búsqueda de archivos" CarbonBlack se utiliza para buscar un archivo en las máquinas administradas. Los resultados de estas investigaciones se resumen en un correo electrónico al equipo de respuesta a incidentes.

    Indicadores de bloque

    Este tutorial recupera direcciones IP, dominios y hashes de archivos, los bloquea en varios servicios y los agrega a ciertas listas de bloqueo como listas personalizadas.

    ¿Por qué debería importarte?

    Este blog muestra cómo varios actores ofensivos utilizan vbscript y jscript, incluidos pruebas de penetración consultores, ciberdelincuencia actores, y cibernético espionaje actores en el proceso de inyección y ejecución del shellcode. A diferencia de los descargadores de malware binario, los scripts de descarga de malware son muy flexibles en términos de actualizaciones, cifrado y ofuscación del código para eludir la detección. Según Unit42 para 2020, El malware basado en scripts es una de las nuevas tendencias en atacantes y continúa evolucionando y mejorando como parte del ecosistema de herramientas de malware. Los ciberdefensores necesitan desarrollar e implementar capacidades de monitoreo efectivas que les permitan detectar y responder a: ejecución de scripts sospechosos, introducción de procesos y uso sospechoso de un servicio web integrado en la web en sus redes corporativas o de servidores.

    Aprende más

    Puede encontrar el contenido más reciente sobre historias de seguridad analítica Investigación.. Para obtener una lista completa del contenido de seguridad, consulte notas para publicar sobre Documentos Splunk.

    Reacción

    ¿Algún comentario o consulta? Siéntase libre de poner un problema en Github y lo seguiremos. Además, únete a nosotros en Lento canal #seguridad-investigación. Seguir estas instrucciones Si necesita una invitación a nuestro grupo de usuarios de Splunk en Slack.


    Colaboradores

    Nos gustaría agradecer a los siguientes por sus contribuciones a esta publicación.

    • Teodorico Contreras
    • Michael Haag
    • José Hernández
    • lou stella

    Artículos de interés

    Subir