¿Quién está nadando en aguas de Corea del Sur? Conoce al delfín de ScarCruft

Nodo de origen: 1764571

Investigadores de ESET descubren Dolphin, un backdoor sofisticado que amplía el arsenal del grupo ScarCruft APT

Los investigadores de ESET analizaron una puerta trasera no reportada anteriormente utilizada por el grupo ScarCruft APT. La puerta trasera, a la que llamamos Dolphin, tiene una amplia gama de capacidades de espionaje, que incluyen el monitoreo de unidades y dispositivos portátiles y la filtración de archivos de interés, el registro de teclas y la captura de pantallas, y el robo de credenciales de los navegadores. Su funcionalidad está reservada para objetivos seleccionados, a los que se implementa la puerta trasera después del compromiso inicial utilizando malware menos avanzado. En línea con otras herramientas de ScarCruft, Dolphin abusa de los servicios de almacenamiento en la nube, específicamente Google Drive, para la comunicación de C&C.

Durante nuestra investigación, vimos un desarrollo continuo de la puerta trasera y los intentos de los autores de malware de evadir la detección. Una característica notable de las versiones anteriores de Dolphin que analizamos es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad, muy probablemente para mantener el acceso a las bandejas de entrada de correo electrónico de las víctimas.

En esta publicación de blog, proporcionamos un análisis técnico de la puerta trasera de Dolphin y explicamos su conexión con la actividad de ScarCruft documentada previamente. Presentaremos nuestros hallazgos sobre esta nueva incorporación al conjunto de herramientas de ScarCruft en la AVAR 2022 conferencia.

Puntos clave en esta entrada de blog:

  • Los investigadores de ESET analizaron Dolphin, una puerta trasera no reportada anteriormente utilizada por el grupo ScarCruft APT.
  • Dolphin se implementa solo en objetivos seleccionados; busca en las unidades de los sistemas comprometidos archivos interesantes y los extrae a Google Drive.
  • La puerta trasera se usó como la carga útil final de un ataque de varias etapas a principios de 2021, que involucró un ataque de abrevadero en un periódico en línea de Corea del Sur, un exploit de Internet Explorer y otra puerta trasera de ScarCruft, llamada BLUELIGHT.
  • Desde el descubrimiento inicial de Dolphin en abril de 2021, los investigadores de ESET han observado múltiples versiones de la puerta trasera, en las que los actores de amenazas mejoraron las capacidades de la puerta trasera e intentaron evadir la detección.
  • Una característica notable de las versiones anteriores de Dolphin que analizamos es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad.

Perfil de ScarCruft

ScarCruft, también conocido como APT37 o Reaper, es un grupo de espionaje que ha estado operando desde al menos 2012. Se enfoca principalmente en Corea del Sur, pero otros países asiáticos también han sido atacados. ScarCruft parece estar interesado principalmente en organizaciones gubernamentales y militares, y empresas de diversas industrias vinculadas a los intereses de Corea del Norte.

Resumen de delfines

En 2021, ScarCruft realizó un ataque de abrevadero en un periódico en línea de Corea del Sur centrado en Corea del Norte. El ataque constaba de múltiples componentes, incluido un exploit de Internet Explorer y un código de shell que conducía a una puerta trasera llamada BLUELIGHT, según lo informado por Volexidad y Kaspersky.

En esos informes, la puerta trasera BLUELIGHT se describió como la carga útil final del ataque. Sin embargo, al analizar el ataque, descubrimos a través de la telemetría de ESET una segunda puerta trasera más sofisticada, implementada en víctimas seleccionadas a través de BLUELIGHT. Llamamos a esta puerta trasera Dolphin en función de una ruta PDB que se encuentra en el ejecutable.

Mientras que la puerta trasera BLUELIGHT realiza un reconocimiento básico y una evaluación de la máquina comprometida después de la explotación, Dolphin es más sofisticado y se implementa manualmente solo contra víctimas seleccionadas. Ambas puertas traseras son capaces de extraer archivos de una ruta especificada en un comando, pero Dolphin también busca activamente en las unidades y extrae automáticamente los archivos con extensiones de interés para ScarCruft.

La Figura 1 proporciona una descripción general de los componentes del ataque que conducen a la ejecución de la puerta trasera de Dolphin.

Figura 1. Descripción general de los componentes del ataque que conducen a la ejecución de la puerta trasera de Dolphin

Análisis de delfines

El análisis de los componentes de Dolphin y sus capacidades se proporciona en la siguiente sección.

El análisis se basa en la primera versión de la puerta trasera que encontramos, 1.9 (basada en una cadena que se encuentra en el código) con información adicional sobre los cambios en las versiones más recientes. Puede encontrar una descripción resumida de los cambios de versión en el Evolución de los delfines .

Instalador de delfines

Las siguientes secciones describen los componentes del instalador y del cargador responsables de la ejecución de la puerta trasera de Dolphin en el escenario de ataque analizado.

Vale la pena señalar que este instalador y el cargador implementado no son exclusivos de Dolphin, y anteriormente se usaron con otro malware ScarCruft.

El shellcode del instalador sigue estos objetivos principales:

  • Descargar e implementar un intérprete de Python
  • Generar y desplegar una cadena de carga con su carga útil
  • Asegurar la persistencia de la cadena de carga

El instalador descarga un archivo CAB de OneDrive, que contiene un intérprete legítimo de Python 2.7. El CAB se desempaqueta para % APPDATA%, y dependiendo de la arquitectura, el intérprete termina en uno de los siguientes directorios:

  • %datos de aplicación%Python27(32)
  • %datos de aplicación%Python27(64)

El instalador genera dos rutas de archivos para los componentes de la cadena de carga, y , con el formato .

se selecciona aleatoriamente de

  • % PROGRAMDATA%
  • %PÚBLICO%
  • %APPDATA%Microsoft
  • %APPDATA%MicrosoftWindows
  • % LOCALAPPDATA%
  • %LOCALAPPDATA%Microsoft
  • %LOCALAPPDATA%MicrosoftWindows

y se seleccionan aleatoriamente de los nombres de archivo existentes (sin extensión) en %windir%inf*.inf y %windir%system32*.dll.

Para generar el Paso 1 de Loader, utiliza una plantilla de secuencia de comandos que se llena con nombres generados aleatoriamente (variables, función). La plantilla con el ejemplo generado se muestra en la Figura 2.

Figura 2. Plantilla del paso 1 y ejemplo generado

A continuación, el script se escribe en .

El paso 2 (integrado en el instalador) que contiene el resto de la cadena de carga, incluida la carga útil, se cifra con una clave XOR de un byte derivada de la hora actual y se escribe en .

Para persistir el inicio de la cadena de carga, el instalador establece un valor de registro Ejecutar:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

El se selecciona aleatoriamente de los nombres de archivo existentes que coinciden %WINDIR%inf*.inf, descartando el inf extensión.

Para iniciar la cadena de carga después de la instalación, crea una tarea programada única.

cargador de delfines

El cargador de Dolphin consta de un script de Python y un código de shell.

El paso 1, el script de Python, lee un archivo específico, XOR descifra su contenido y ejecuta el shellcode resultante.

Paso 2, shellcode, crea un proceso de host (ejecutable CLI aleatorio de %WINDIR%System32*.exe), XOR descifra más shellcode que lleva dentro y lo inyecta en el proceso creado.

Paso 3, otro shellcode, XOR descifra un archivo PE incrustado, la puerta trasera de Dolphin, y lo carga y ejecuta usando un cargador PE personalizado.

puerta trasera delfín

Dolphin es una puerta trasera que recopila información y ejecuta comandos emitidos por sus operadores. La puerta trasera es un ejecutable normal de Windows, escrito en C++. Se comunica con el almacenamiento en la nube de Google Drive, que se utiliza como su servidor C&C.

Nombramos a la puerta trasera Dolphin en función de una ruta PDB que se encuentra en el ejecutable:

D:DesarrolloBACKDOORDolphinx64ReleaseDolphin.pdb

Persistencia

La puerta trasera verifica periódicamente y crea su propia persistencia asegurándose de que el Paso 1 del cargador se ejecute cada vez que se inicia el sistema, a través de un valor Ejecutar del registro, de la misma manera que en el instalador:

HKCUSoftwareMicrosoftWindowsCurrentVersionRun”%appdata%Python27({32|64})pythonw.exe” “” “”

Capacidades

Se recopila la siguiente información básica sobre la computadora y el backdoor:

  • Configuración de puerta trasera actual
  • Usuario
  • nombre del equipo
  • Dirección IP local y externa
  • Lista de productos de seguridad instalados
  • Tamaño y uso de RAM
  • Resultado de la verificación del depurador y otras herramientas de inspección (como Wireshark)
  • versión del sistema operativo
  • Tiempo actual
  • Versión de malware

Dolphin descarga comandos, emitidos por sus operadores, desde el almacenamiento de Google Drive y los ejecuta. Después de la ejecución, se carga la salida de los comandos. La mayoría de las capacidades de Dolphin se controlan a través de comandos.

Las capacidades más relevantes se describen a continuación.

Exfiltración de archivos

De forma predeterminada, Dolphin busca en todas las unidades no fijas (USB), crea listas de directorios y extrae archivos por extensión. Esta búsqueda se puede extender a unidades fijas (HDD), a través de comandos dedicados.

Las siguientes extensiones de archivo de interés, específicas para medios, documentos, correos electrónicos y certificados, se especifican en la configuración predeterminada:

jpg, doc, xls, ppt, hwp, url, csv, pdf, show, celular, eml, odt, rtf, nxl, amr, 3gp, m4a, txt, msg, key, der, cer, docx, xlsx, pptx, pfx, mp3

Además de esta búsqueda automática, se pueden filtrar archivos específicos.

En las versiones más nuevas, la búsqueda predeterminada se amplió a unidades fijas. Se mejoró el comando para obtener archivos específicos, almacenándolo en caché/almacenándolo en la configuración hasta que se complete.

Dispositivos portables

Entre las unidades regulares, Dolphin también busca dispositivos portátiles como teléfonos inteligentes, utilizando la API de dispositivos portátiles de Windows (WPD). Crea listas de directorios y extrae archivos. Esta funcionalidad parecía estar en desarrollo en la primera versión que encontramos, por varias razones:

  • Confiar en una ruta codificada con un nombre de usuario que probablemente no exista en la computadora de la víctima
  • Inicialización de variable faltante: se supone que algunas variables se inicializaron en cero o se desreferenciaron como punteros sin inicialización
  • Filtrado de extensiones faltantes

El código se basa en gran medida en la API COM de dispositivos portátiles de Microsoft. muestra de código.

Además de la búsqueda automática, los operadores pueden especificar archivos individuales para extraerlos de dispositivos portátiles.

En las versiones más recientes, esta capacidad se completó y mejoró al agregar el filtrado de extensiones. Por razones desconocidas, se eliminó el comando para recuperar archivos específicos de dispositivos portátiles.

Registro de teclas y capturas de pantalla

Dolphin registra las pulsaciones de teclas para ventanas con títulos que contienen subcadenas especificadas en su configuración. Los valores predeterminados son cromo y explorar internet (sic). Esto se hace a través de la GetAsyncKeyState API, con las pulsaciones de teclas registradas junto con el nombre de la ventana y la hora actual. Las capturas de pantalla también se toman en un intervalo configurable; el valor predeterminado es una vez cada 30 segundos.

Las capturas de pantalla y el registro de teclas están habilitados de forma predeterminada y se pueden alternar mediante un comando.

código shell

Dolphin puede recibir shellcode para su ejecución. El shellcode se almacena en el registro, bajo una de las siguientes claves:

  • HKCUSoftwareMicrosoftWindowsVersión actualTemasClásico
  • HKCUSoftwareMicrosoftOneDriveActualización
  • HKCUSoftwareMicrosoftWindowsVersión actualConfiguración de InternetHttpsSoftwareMicrosoftInternet ExplorerZone (dos subclaves como una, probablemente un error de codificación)

Se puede ejecutar localmente o en un proceso separado específico que se crea e inyecta.

En las versiones más nuevas, el shellcode se almacena en archivos en lugar del registro, y el shellcode almacenado se carga y ejecuta en el inicio de Dolphin, lo que no era el caso en la versión 1.9 (la versión original que analizamos).

Comandos de shell

Dolphin puede ejecutar comandos de shell; esto se hace a través de la papa API y se recupera su salida.

Robo de credenciales

Dolphin puede recuperar las credenciales de los navegadores en forma de contraseñas y cookies guardadas. Los siguientes navegadores son compatibles:

  • Chrome
  • Southern Implants
  • Internet Explorer

En la versión 2.2, esta capacidad se eliminó, presumiblemente para evitar la detección. Posteriormente se restauró en la versión 3.0, pero en una forma diferente. Ahora se recibe dinámicamente desde C&C en forma de shellcode.

cuenta de google

Otro de los comandos de Dolphin modifica la configuración de la cuenta de Google actualmente conectada, lo que reduce su seguridad en relación con la configuración predeterminada. Roba la cookie existente de la cuenta iniciada del navegador y crea solicitudes que modifican la configuración.

En primer lugar, permite el acceso a Gmail a través del protocolo IMAP mediante el envío de una solicitud HTTP POST a:

  • https://mail.google.com/mail/u/0/?ik=&at=&view=up&act=prefs

Luego, habilita el "acceso a aplicaciones menos seguro" al enviar una solicitud RPC no documentada a través de HTTP POST a:

  • https://myaccount.google.com/_/AccountSettingsUi/data/batchexecute

Estas modificaciones se denominan "acceso de trueno" en la puerta trasera, y probablemente se trate de una referencia al cliente de correo electrónico Thunderbird. Acceder a las bandejas de entrada de sus víctimas con un cliente de terceros a través de IMAP probablemente ayude a los operadores de ScarCruft a mantener el acceso a los correos electrónicos de las víctimas después de robar las credenciales, lo que puede no ser suficiente por sí solos, debido a la detección de intentos de inicio de sesión sospechosos por parte de Google.

Esta característica se encontró en las versiones 1.9 y 2.0 del backdoor; no está presente en las versiones 2.2 o 3.0.

Puesta en escena de datos

Dolphin extrae datos al almacenamiento de Google Drive, almacenando los datos en archivos ZIP cifrados antes de cargarlos. La puerta trasera también mantiene una lista de archivos en forma de hash MD5, para evitar cargar el mismo archivo varias veces. Esta lista se puede restablecer a través de un comando dedicado.

Configuración

La puerta trasera contiene una configuración predeterminada inicial que persiste en la primera ejecución y se carga en las ejecuciones posteriores. Se almacena en el archivo %ProgramData%.inf, Donde se selecciona aleatoriamente de los nombres de archivo existentes que coinciden %windir%inf*.inf. El contenido se cifra mediante AES CBC con claves aleatorias de 16 bytes y IV, que se almacenan al principio del archivo. La configuración utiliza el formato JSON, con claves tipo hash. En la Figura 3 se muestra un ejemplo de una configuración descifrada.

Figura 3. Configuración de puerta trasera de Dolphin

La configuración se puede modificar mediante comandos. Contiene, entre otros, lo siguiente:

  • Claves de cifrado
  • Credenciales para el acceso a la API de Google Drive
  • Títulos de ventana para registro de teclas
  • Lista de extensiones de archivo para exfiltrar

Evolución de los delfines

Desde el descubrimiento inicial de Dolphin en abril de 2021, hemos observado múltiples versiones de la puerta trasera, en las que los actores de amenazas mejoraron las capacidades de la puerta trasera e intentaron evadir la detección. La Figura 4 resume las versiones vistas; A continuación se proporciona una descripción más detallada de los cambios de versión.

Figura 4. Cronología de la evolución de los delfines

Noviembre 2021 – versión 2.0

La versión 2.0 introdujo los siguientes cambios a la versión encontrada en abril de 2021:

  • Resolución dinámica de API sospechosas en lugar de importaciones estáticas (por ejemplo GetAsyncKeyState) adicional
  • Capacidad de Shellcode terminada y mejorada
    • Shellcode persistente almacenado en archivos en lugar de registro
    • Shellcode persistente cargado y ejecutado en el inicio de Dolphin (anteriormente faltaba)
  • Capacidad de exfiltración de archivos de dispositivos portátiles terminada y mejorada
    • Exfiltración por extensiones añadidas
    • Reconocimiento de memoria interna y tarjetas SD (desde ID de dispositivo) añadido
    • Comando para obtener archivos de dispositivos portátiles efectivamente un NOP
  • Detección de dispositivos/unidades y exfiltración de archivos mejorada
    • Dolphin ahora crea incondicionalmente listas de directorios y extrae archivos por extensión cada 30 minutos para todas las unidades y dispositivos (unidades fijas, unidades extraíbles, dispositivos portátiles). Anteriormente, era solo para unidades extraíbles; las unidades fijas estaban deshabilitadas de forma predeterminada y el código utilizado para acceder a los dispositivos portátiles tenía errores y estaba roto.

Diciembre 2021 – versión 2.2

Los cambios introducidos en la versión 2.2 se centraron principalmente en la evasión de detección. Se eliminaron la capacidad de robo de credenciales y los comandos relacionados con ella (los comandos de robo de credenciales y cuenta de Google). La mayoría de las cadenas en esta versión están codificadas en base64.

Enero 2022 – versión 3.0

En la versión 3.0, el código se reorganizó y las clases se renombraron, y las capacidades permanecieron sin cambios. Las cadenas codificadas en base64 eran de nuevo texto sin formato en esta versión. Observamos los siguientes cambios adicionales:

  • Comando para robar credenciales restauradas en una forma diferente; ahora ejecuta shellcode desde el C&C
  • Comando para eliminar por completo los archivos de los dispositivos portátiles
  • El comando para obtener archivos de las unidades ahora se almacena en caché/almacenado en la configuración hasta que finalice. Si se interrumpe (por ejemplo, por el apagado de la computadora), se realiza en la siguiente ejecución. Esto también es útil en el caso de unidades extraíbles que pueden no estar conectadas cuando se emite el comando.
  • Comprobación de conexión a Internet añadida (https://www.microsoft.com); no se ejecuta ningún código malicioso si está fuera de línea

Las diferencias entre las versiones 2.2 y 3.0, especialmente la discrepancia en la codificación de cadenas, sugieren la posibilidad de que diferentes personas desarrollaran las versiones en paralelo.

Conclusión

Dolphin es otra adición al extenso arsenal de puertas traseras de ScarCruft que abusan de los servicios de almacenamiento en la nube. Después de implementarse en objetivos seleccionados, busca archivos interesantes en las unidades de los sistemas comprometidos y los extrae a Google Drive. Una capacidad inusual que se encuentra en versiones anteriores de la puerta trasera es la capacidad de modificar la configuración de las cuentas de Google y Gmail de las víctimas para reducir su seguridad, presumiblemente para mantener el acceso a la cuenta para los atacantes. Durante nuestro análisis de múltiples versiones de la puerta trasera Dolphin, vimos un desarrollo continuo e intentos de evadir la detección.

Para cualquier consulta sobre nuestra investigación publicada en WeLiveSecurity, contáctenos en amenazaintel@eset.com.

ESET Research también ofrece fuentes de datos e informes de inteligencia APT privados. Para cualquier consulta sobre este servicio, visite el Inteligencia de amenazas de ESET .

IoC

SHA-1 Nombre del archivo Nombre de detección de ESET Descripción
F9F6C0184CEE9C1E4E15C2A73E56D7B927EA685B N/A Win64/Agente.MS Puerta trasera Dolphin versión 1.9 (x64)
5B70453AB58824A65ED0B6175C903AA022A87D6A N/A Win32/Spy.Agente.QET Puerta trasera Dolphin versión 2.0 (x86)
21CA0287EC5EAEE8FB2F5D0542E378267D6CA0A6 N/A Win64/Agente.MS Puerta trasera Dolphin versión 2.0 (x64)
D9A369E328EA4F1B8304B6E11B50275F798E9D6B N/A Win32/Agente.UYO Puerta trasera Dolphin versión 3.0 (x86)
2C6CC71B7E7E4B28C2C176B504BC5BDB687C4D41 N/A Win64/Agente.MS Puerta trasera Dolphin versión 3.0 (x64)

Técnicas MITRE ATT & CK

Esta tabla fue construida usando Versión 12 del marco MITRE ATT & CK.

Táctica ID Nombre Descripción
Acceso inicial T1189 Compromiso de conducción ScarCruft usa ataques de abrevadero para comprometer a las víctimas.
Ejecución T1059.006 Intérprete de comandos y secuencias de comandos: Python El cargador Dolphin usa un script de Python.
T1059.007 Intérprete de comandos y secuencias de comandos: JavaScript ScarCruft usó JavaScript malicioso para un ataque de abrevadero.
T1203 Explotación para la ejecución del cliente ScarCruft explota CVE-2020-1380 para comprometer a las víctimas.
T1106 API nativa Dolphin utiliza las funciones de la API de Windows para ejecutar archivos e inyectar procesos.
Persistencia T1053.005 Tarea/Trabajo programado: Tarea programada Dolphin usa una tarea programada temporal para comenzar después de la instalación.
T1547.001 Ejecución de inicio automático de inicio o inicio de sesión: claves de ejecución del registro/carpeta de inicio Dolphin usa teclas Run para la persistencia de su cargador.
Evasión de defensa T1055.002 Inyección de proceso: Inyección ejecutable portátil Dolphin puede inyectar en otros procesos.
T1027 Archivos o información ofuscados Dolphin tiene componentes encriptados.
Acceso a credenciales T1555.003 Credenciales de almacenes de contraseñas: Credenciales de navegadores web Dolphin puede obtener contraseñas guardadas de los navegadores.
T1539 Robar cookie de sesión web Dolphin puede obtener cookies de los navegadores.
Descubrimiento de moléculas T1010 Descubrimiento de la ventana de la aplicación Dolphin captura el título de la ventana activa.
T1083 Descubrimiento de archivos y directorios Dolphin puede obtener listados de archivos y directorios.
T1518.001 Descubrimiento de software: Descubrimiento de software de seguridad Dolphin obtiene una lista del software de seguridad instalado.
T1082 Descubrimiento de información del sistema Dolphin obtiene diversa información del sistema, incluida la versión del sistema operativo, el nombre de la computadora y el tamaño de la memoria RAM.
T1016 Descubrimiento de la configuración de la red del sistema Dolphin obtiene la dirección IP local y externa del dispositivo.
T1016.001 Descubrimiento de la configuración de la red del sistema: Descubrimiento de la conexión a Internet Dolphin comprueba la conectividad a Internet.
T1033 Descubrimiento de propietario/usuario del sistema Dolphin obtiene el nombre de usuario de la víctima.
T1124 Descubrimiento de la hora del sistema Dolphin obtiene la hora actual de la víctima.
Colecciones T1056.001 Captura de entrada: registro de teclas Dolphin puede registrar las pulsaciones de teclas.
T1560.002 Archivar datos recopilados: Archivar a través de la biblioteca Utilizando la biblioteca de Zipper, Dolphin comprime y cifra los datos recopilados antes de la exfiltración.
T1119 Colección automatizada Dolphin recopila periódicamente archivos con determinadas extensiones de las unidades.
T1005 Datos del sistema local Dolphin puede recopilar archivos de unidades locales.
T1025 Datos de medios extraíbles Dolphin puede recopilar archivos de unidades extraíbles.
T1074.001 Datos escalonados: estadificación de datos locales Las etapas de delfines recolectaron datos en un directorio antes de la exfiltración.
T1113 Captura de pantalla Dolphin puede capturar capturas de pantalla.
Comando y control T1071.001 Protocolo de capa de aplicación: protocolos web Dolphin usa HTTPS para comunicarse con Google Drive.
T1102.002 Servicio Web: Comunicación Bidireccional Dolphin se comunica con Google Drive para descargar comandos y filtrar datos.
exfiltración T1020 Exfiltración automatizada Dolphin extrae periódicamente los datos recopilados.
T1567.002 Exfiltración a través del servicio web: Exfiltración al almacenamiento en la nube Dolphin extrae datos a Google Drive.

Sello de tiempo:

Mas de Vivimos la seguridad