Es extraño que un grupo de APT pase desapercibido durante nueve años, pero así pasó con XDSpy; un grupo de espionaje previamente indocumentado que ha estado activo desde 2011. Este grupo atrajo muy poca atención pública, con la excepción de un aviso del CERT bielorruso de febrero de 2020. Mientras tanto, el grupo ha comprometido a muchas agencias gubernamentales y empresas privadas en países de Europa del Este y los Balcanes.

Esta publicación es un resumen de la investigación que presentamos en la conferencia Virus Bulletin 2020 (consulte el paper completo y la presentación), con información actualizada acerca de los vectores de compromiso y los indicadores de compromiso utilizados.

Blancos de ataque

Los blancos de ataque del grupo XDSpy se encuentran en Europa del Este y los Balcanes y son principalmente entidades gubernamentales, incluidos militares, Ministerios de Relaciones Exteriores, y empresas privadas. La Figura 1 muestra la ubicación de las víctimas conocidas según la telemetría de ESET.

Figura 1. Mapa de víctimas de XDSpy según la telemetría de ESET (Bielorrusia, Moldavia, Rusia, Serbia y Ucrania).

Atribución

Después de una cuidadosa investigación, no pudimos vincular a XDSpy con ningún grupo de APT conocido públicamente:

  • No encontramos a nivel de código ninguna similitud con otras familias de malware.
  • No observamos ninguna superposición en la infraestructura de red.
  • No tenemos conocimiento de otro grupo de APT dirigido a estos países específicos.

Además, el grupo ha estado activo durante más de nueve años. Entonces, si hubiera existido tal superposición consideramos que se habría notado y el grupo habría sido descubierto hace mucho tiempo.

Creemos que los desarrolladores podrían estar trabajando en la zona horaria UTC+2 o UTC+3, que también es la zona horaria de la mayoría de sus blancos de ataque. También notamos que solo trabajaban de lunes a viernes, lo que sugiere una actividad profesional.

Vectores de compromiso

Los operadores de XDSpy parecen utilizar principalmente correos de spearphishing para comprometer a sus objetivos. De hecho, este es el único vector de compromiso que hemos observado. Sin embargo, los correos electrónicos tienden a variar un poco: algunos contienen un archivo adjunto mientras que otros contienen un enlace hacia un archivo malicioso. La primera capa del archivo o adjunto malicioso es generalmente un archivo ZIP o RAR.

La Figura 2 es un ejemplo de un correo de spearphishing de XDSpy enviado en febrero de 2020.

Figura 2. Correo de spearphishing enviado por los operadores de XDSpy en febrero de 2020.

A grandes rasgos, la traducción del cuerpo del correo dice:

¡Buenas tardes!
Le envío una copia de la carta y los materiales fotográficos basados ​​en los resultados del trabajo. Haga clic en el enlace para descargar: material fotográfico_11.02.2020.zip
Quedamos a la espera de una respuesta hasta el final de la jornada laboral.

El enlace apunta a un archivo ZIP que contiene un archivo LNK, sin ningún documento señuelo. Cuando la víctima hace doble clic en él, el LNK descarga un script adicional que instala XDDown, el componente principal del malware.

Después de que nuestro paper fuera enviado a Virus Bulletin, continuamos monitoreando la actividad del grupo y corroboramos que tras una pausa entre los meses de marzo y junio de 2020, el grupo regresó a la actividad. A finales de junio de 2020, los operadores comenzaron a aprovecharse de la vulnerabilidad CVE-2020-0968 en Internet Explorer, que había sido parcheada en abril de 2020. De esta manera, en lugar de entregar un archivo que contiene un archivo LNK, el servidor de C&C estaba entregando un archivo RTF que, una vez abierto, descargaba un archivo HTML utilizado para explotar la vulnerabilidad antes mencionada.

La CVE-2020-0968 forma parte de un conjunto de vulnerabilidades similares en el motor de JavaScript heredado de Internet Explorer que fueron reveladas en los últimos dos años. Al momento de ser explotada por XDSpy, no había ninguna prueba de concepto y había muy poca información disponible sobre esta vulnerabilidad en Internet. Creemos que XDSpy compró este exploit a un intermediaro o que ellos mismos desarrollaron un exploit de “one-day” o “1-day” por sí mismos utilizando como referencia exploits anteriores.

Es interesante notar que este exploit tiene similitudes con exploits previamente utilizados en campañas de DarkHotel, como se muestra en la Figura 3. También es casi idéntico al exploit utilizado en Operation Domino en septiembre de 2020, el cual fue cargado en VirusTotal desde Bielorrusia.

Dado que no creemos que XDSpy esté vinculado a DarkHotel y que Operation Domino es bastante diferente de XDSpy, es probable que los tres grupos compartan el mismo intermediario para obtener los exploits.

Figura 3. Partes del código del exploit (incluido el principio) son similares al que fuera utilizado en una campaña de DarkHotel descrita por JPCERT.

Finalmente, el grupo se subió al tren del COVID-19 al menos dos veces en 2020. Primero aprovechó este tema en una campaña de spearphishing contra instituciones bielorrusas en febrero de 2020. Luego, en septiembre de 2020, volvieron a utilizar este tema contra blancos de habla rusa. El archivo contenía un archivo WSF (Windows Script File) malicioso que descarga XDDown, tal como se muestra en la Figura 4, y usaron el sitio web oficial rospotrebnadzor.ru como señuelo, como se puede apreciar en la Figura 5.

Figura 4. Parte del script que descarga XDDown.

Figura 5. Parte del script que abre la URL utilizada como señuelo.

Componentes del malware

La Figura 4 muestra la arquitectura del malware en un escenario donde el compromiso ocurre a través de un archivo LNK, como fue el caso en febrero de 2020.

Figura 6. Arquitectura del malware de XDSpy. XDLoc y XDPass son droppeados sin ningún orden en particular.

XDDown es el componente principal del malware y es estrictamente un downloader. Persiste en el sistema usando la tradicional clave Run. Descarga plugins adicionales desde el servidor C&C hardcodeado utilizando el protocolo HTTP. Las respuestas HTTP contienen binarios PE cifrados con una clave XOR de dos bytes hardcodeada.

Durante nuestra investigación, descubrimos los siguientes plugins:

  • XDRecon: recopila información básica sobre la máquina víctima (el nombre de la computadora, el nombre de usuario actual y el número de serie del volumen de la unidad principal).
  • XDList: rastrea la unidad C: en busca de archivos interesantes (.accdb, .doc, .docm, .docx, .mdb, .xls, .xlm, .xlsx, .xlsm, .odt, .ost, .ppt, .pptm, .ppsm, .pptx, .sldm, .pst, .msg, .pdf, .eml, .wab) y exfiltra las rutas de estos archivos. También puede realizar capturas de pantalla.
  • XDMonitor: similar a XDList. También monitorea las unidades extraíbles para exfiltrar los archivos que coinciden con una extensión interesante.
  • XDUpload: Exfiltra una lista hardcodeada de archivos del sistema de archivos al servidor C&C, como se muestra en la Figura 5. Las rutas fueron enviadas a los servidores C&C por XDList y XDMonitor.

Figura 7. Bucle cargando una lista hardcodeada de archivos en el servidor C&C (parcialmente redactada).

  • XDLoc: recopila SSIDs cercanos (como puntos de acceso Wi-Fi), probablemente para geolocalizar las máquinas víctimas.
  • XDPass: toma las contraseñas almacenadas de varias aplicaciones, como navegadores web y programas de correo electrónico.

Se pueden encontrar más detalles sobre los diversos componentes de malware en el white paper.

Conclusión

XDSpy es un grupo de ciberespionaje que ha permanecido sin ser detectado durante más de nueve años y ha estado muy ocupado durante los últimos meses. Está principalmente interesado en robar documentos de entidades gubernamentales en Europa del Este y los Balcanes. El foco de sus blancos de ataque es bastante inusual y lo convierte en un grupo interesante a seguir.

Los aspectos técnicos del grupo tienden a variar un poco. Ha utilizado la misma arquitectura básica de malware durante nueve años, pero también ha aprovechado recientemente una vulnerabilidad parcheada por el proveedor pero para la que no existe una prueba de concepto pública.

Para cualquier consulta, o para enviar muestras relacionadas con el tema, contáctenos a través de threatintel@eset.com.

Un agradecimiento especial a Francis Labelle por su trabajo en esta investigación.

Indicadores de Compromiso

Una lista de los Indicadores de Compromiso (IoCs) y muestras puede encontrarse en nuestro repositorio de GitHub.

Componentes del malware

SHA-1 ESET detection name Description
C125A05CC87EA45BB5D5D07D62946DAEE1160F73 JS/TrojanDropper.Agent.OAZ Spearphishing email (2015)
99729AC323FC8A812FA2C8BE9AE82DF0F9B502CA LNK/TrojanDownloader.Agent.YJ Malicious LNK downloader
63B988D0869C6A099C7A57AAFEA612A90E30C10F Win64/Agent.VB XDDown
BB7A10F816D6FFFECB297D0BAE3BC2C0F2F2FFC6 Win32/Agent.ABQB XDDown (oldest known sample)
844A3854F67F4F524992BCD90F8752404DF1DA11 Win64/Spy.Agent.CC XDRecon
B333043B47ABE49156195CC66C97B9F488E83442 Win64/Spy.Agent.CC XDUpload
83EF84052AD9E7954ECE216A1479ABA9D403C36D Win64/Spy.Agent.CC XDUpload
88410D6EB663FBA2FD2826083A3999C3D3BD07C9 Win32/Agent.ABYL XDLoc
CFD43C7A993EC2F203B17A9E6B8B392E9A296243 Win32/PSW.Agent.OJS XDPass
3B8445AA70D01DEA553A7B198A767798F52BB68A DOC/Abnormal.V Malicious RTF file that downloads the CVE-2020-0968 exploit
AE34BEDBD39DA813E094E974A9E181A686D66069 Win64/Agent.ACG XDDown
5FE5EE492DE157AA745F3DE7AE8AA095E0AFB994 VBS/TrojanDropper.Agent.OLJ Malicious script (Sep 2020)
B807756E9CD7D131BD42C2F681878C7855063FE2 Win64/Agent.AEJ XDDown (most recent as of writing)

Nombres de archivo / Rutas

%APPDATA%\Temp.NET\archset.dat
%APPDATA%\Temp.NET\hdir.dat
%APPDATA%\Temp.NET\list.dat
%TEMP%\tmp%YEAR%%MONTH%%DAY%_%TICK_COUNT%.s
%TEMP%\fl637136486220077590.data
wgl.dat
Windows Broker Manager.dat
%TEMP%\Usermode COM Manager.dat
%TEMP%\Usermode COM Manager.exe
%APPDATA%\WINinit\WINlogon.exe
%APPDATA%\msprotectexp\mswinexp.exe
%APPDATA%\msvdemo\msbrowsmc.exe
%APPDATA%\Explorer\msdmcm6.exe
%APPDATA%\Explorer\browsms.exe

Red

Used in 2019-2020

downloadsprimary[.]com
filedownload[.]email
file-download[.]org
minisnowhair[.]com
download-365[.]com
365downloading.com
officeupdtcentr[.]com
dropsklad[.]com
getthatupdate[.]com
boborux[.]com
easytosay[.]org
daftsync[.]com
documentsklad[.]com
wildboarcontest[.]com
nomatterwhat[.]info
maiwegwurst[.]com
migration-info[.]com
jerseygameengine[.]com
seatwowave[.]com
cracratutu[.]com
chtcc[.]net
ferrariframework[.]com

Antigua infraestructura de red

62.213.213[.]170
93.63.198[.]40
95.215.60[.]53
forgeron[.]tk
jahre999[.]tk
omgtech.000space[.]com
podzim[.]tk
porfavor876[.]tk
replacerc.000space[.]com
settimana987[.]tk

Técnicas de MITRE ATT&CK

Nota: Esta tabla fue creada utilizando la versión 7 del framework de MITRE ATT&CK .

Tactic ID Name Description
Initial Access T1566.001 Phishing: Spearphishing Attachment XDSpy has sent spearphishing emails with a malicious attachment.
T1566.002 Phishing: Spearphishing Link XDSpy has sent spearphishing emails with a link to a malicious archive.
Execution T1203 Exploitation for Client Execution XDSpy has exploited a vulnerability (CVE-2020-0968) in Internet Explorer (triggered by a malicious RTF file).
T1204.001 User Execution: Malicious Link XDSpy has lured targets to download malicious archives containing malicious files such as LNK.
T1204.002 User Execution: Malicious File XDSpy has lured targets to execute malicious files such as LNK or RTF.
Persistence T1547.001 Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder XDDownload persists using the Run key.
Discovery T1033 System Owner/User Discovery XDRecon sends the username to the C&C server.
T1082 System Information Discovery XDRecon sends the computer name and the main drive Volume Serial Number to the C&C server.
T1083 File and Directory Discovery XDList and XDMonitor monitor the local system and the removable drive. A list of interesting paths, that matches a list of hardcoded extension, is sent to the C&C server.
Collection T1005 Data from Local System XDUpload exfiltrates files from the local drive. The paths of the files to be uploaded are hardcoded in the malware samples.
T1025 Data from Removable Media XDMonitor exfiltrates files from removable drives.
T1113 Screen Capture XDList, XDMonitor and XDUpload take screenshots and send them to the C&C server.
T1119 Automated Collection XDMonitor exfiltrates files from removable drives that match specific extensions.
XDUpload exfiltrates local files that are located at one the paths hardcoded in the malware samples.
Command and Control T1071.001 Application Layer Protocol: Web Protocols XDSpy uses HTTP for command and control.
T1573.001 Encrypted Channel: Symmetric Cryptography XDDownload downloads additional components encrypted with a 2-byte static XOR key.
Exfiltration T1020 Automated Exfiltration XDMonitor and XDUpload automatically exfiltrate collected files.
T1041 Exfiltration Over C2 Channel XDSpy exfiltrate stolen data using the C&C channel.