Rápido análisis de FinFisher luego de la última filtración de WikiLeaks

Hace algunas semanas, WikiLeaks publicó muestras de malware alemán de espionaje utilizado por distintos gobiernos, mejor conocido como FinFisher y FinSpy. Según WikiLeaks, la compañía alemana FinFisher fue parte de Gamma Group International, basada en Reino Unido, hasta 2013.

Esta no es la primera vez que oímos sobre policeware alemán, ya que hemos compartido algunas opiniones sobre esto antes. Adicionalmente, otros reportes de CitizenLab fueron publicados desde el primer lanzamiento de SpyFiles en 2011 por parte de WikiLeaks.

Esta vez, tenemos las siguientes muestras:

Nombre del archivoDetección de ESET
ffrelay-debian-4.30.ggi.zipLinux/Belesak.A
finspy_proxy.zipLinux/Belesak.A
finspy_master.zipLinux/Belesak.A-K
finfisher.1.zipWin32/Belesak.A Trojan
finfisher.2.zipWin32/Belesak.A Trojan

En este caso, los primeros Relay, Proxy y Master son componentes estilo servidor de FinFisher, que colectan datos de víctimas. Luego hay otros dos archivos, finfisher.1 y finfisher.2, los cuales una vez ejecutados en la computadora de la víctima, permiten grabar audio y video de Skype, buscar y eliminar archivos, ejecutar comandos y muchas otras opciones que veremos más adelante en este post.

¿Cómo funciona?

Analicemos esta muestra para entender los puntos clave de su comportamiento. Arriba mostramos los droppers de primer nivel, los cuales descargan los de segundo nivel, los cuales finalmente inyectan el proceso explorer.exe e Internet Explorer:

finfisher_exe

Primero que nada, el código no está ofuscado y ni siquiera en un packer -sólo hay que hacer unos trucos básicos de anti-debug. Este malware tiene bastantes componentes, algunos en forma de plugins adicionales. Sin embargo, estas muestras de WikiLeaks no tienen complementos. En líneas generales, la estructura está dividida en dos etapas de droppers.

En primer lugar, los archivos tienen el comportamiento estándar de aplicaciones de Windows, pero cuando comienzan a funcionar, arrastran dos funciones user32.dll para copiarse en una ruta temporal y ejecutarla.

Cuando este nuevo archivo es ejecutado, hace un intento de borrar el original y descifra algunas imágenes de señuelo. Además, cambia su extensión a JPEG entre otras: RAR, DOC, XLSX, PDF, MP3, EXE y SCR, y deja al nuevo ejecutable también en la ruta temporal. Luego de eso, empieza a correr el nuevo ejecutable y abre el documento señuelo, que en este caso, es una imagen:

imagen_documento

En segundo lugar, el archivo indentifica en qué plataforma es ejecutado. Si se trata de x64 sólo ejecuta la inyección en Explorer.exe. De lo contrario, si corre en 32 bits, la inyección depende de varios factores: la versión de Windows, el nivel de integridad, la presencia de software de seguridad (Comodo, Kaspersky), entre otros.

Finalmente, el DLL principal es responsable de cargar los plugins individuales de un contenedor cifrado y de conectar con el Centro de Comando y Control (C&C). Toda la comunicación saliente en Internet tiene lugar a través de una región de memoria compartida, llamada “WininetProxyMemory”, creada por el payload inyectado en Internet Explorer -para quedar bajo el radar.

Una vez ejecutado, verifica si la computadora de la víctima está infectada de antemano y procede a operar registrando servicios con drivers que permiten acceso a dispositivos físicos. Luego, verifica la posibilidad de infectar Master Boot Record (sólo funciona en plataformas de 32 bits), borrar registros de eventos y limpiar la carpeta Installer.

¿Cómo busca evadir la detección?

La filosofía parece ser considerar que en ocasiones, los operadores de botnets (refiriéndonos a los compradores del software) tienen acceso físico a las computadoras de las víctimas. Es importante recordar que los clientes esperados son instituciones de vigilancia, por lo que pueden deshabilitar software de seguridad, por ejemplo añadiendo el malware a la lista de exclusión accediendo al equipo víctima.

Sin embargo, estas muestras tienen archivos señuelo, lo que significa que también podrían estar destinadas a infectar silenciosamente la PC. Como hemos visto, en algunos casos cambia el comportamiento cuando detecta actividad de software de seguridad, para detener la ejecución.

 ¿Qué operaciones podría ejecutar este malware?

Naturalmente, la funcionalidad del malware depende de los plugins que se utilicen. Los archivos de WikiLeaks no contenían ninguno, pero igualmente podemos confirmar sus capacidades observando el componente FinSpy Master:

  • Borrar archivos (FinTlvTypeDeleteFileRequest)
  • Buscar archivos (FinTlvTypeSearchFileRequest)
  • Ejecutar línea de comandos (FinTlvTypeStartCmdLineSessionRequest)
  • Grabar audio del micrófono (FinTlvTypeStartMicrophoneRequest)
  • Grabar video del escritorio del usuario (FinTlvTypeStartScreenRequest, FinTlvTypeStopScreenRequest)
  • Grabar video de la cámara web (FinTlvTypeStartWebCamRequest, FinTlvTypeStopWebCamRequest)
  • Registrar ingresos del teclado (FinTlvTypeStartKeyLoggingRequest, FinTlvTypeStopKeyLoggingRequest)
  • Registrar mensajes, sonido y archivos transferidos de Skype (FinTlvTypeSkypeAudioRecording, FinTlvTypeSkypeTextRecording, FinTlvTypeSkypeFileRecording)
  • Robar documentos que el usuario manda a la impresora (FinTlvTypeSetPrintConfigRequest)
  • Robar documentos que el usuario editó o borró (FinTlvTypeSetChangedConfigRequest, FinTlvTypeSetDeletedConfigRequest)
  • Programar comandos (FinTlvTypeSetSchedulerConfigRequest, FinTlvTypeSchedulerTaskRecordScreenWhenAppRuns, FinTlvTypeSchedulerTaskRecordMicWhenAppUsesIt, FinTlvTypeSchedulerTaskRecordWebCamWhenAppUsesIt, etc.)
  • Removerse a sí mismo mediante el envío de un comando o cuando pasa un determinado tiempo desde la instalación (calendarizado) (FinTlvTypeConfigAutoRemovalDateTime, FinTlvTypeInternalAutoRemovalElapsedTime, FinTlvTypeRemoveItselfMaxInfectionReached, FinTlvTypeRemoveItselfAtMasterRequest)

Además, recolecta la siguiente información: dirección IP, nombre de la computadora, nombre de usuario, versión de Windows, zona horaria, fecha y hora. En resumen: es un bot standard -otorga el control total y recolecta todo.

¿Cuáles son las diferencias entre el malware “patrocinado” por el estado y el criminal?

En verdad, las funcionalidades son bastante similares a las del malware “comercial” moderno, como podemos ver en la lista de arriba. La principal diferencia es la unicidad de su código, que al mismo tiempo permite y obliga a mantenerlo sin cifrado/desempaquetado.

Con el malware “regular”, no es común ni posible dejar el código así porque es frecuentemente reutilizado, y como los antivirus tienen niveles de detección confiable, los atacantes necesitan ofuscarlo para evitar la detección.

Queremos destacar que esta publicación vino alrededor de un mes después de la filtración con datos de clientes de FinFisher y algunas muestras para móviles y para Linux de FinSpy fueran detectadas. Interesantemente, a pesar de los esfuerzos de arrojar luz sobre estas operaciones maliciosas, las cifras de detección de algunos componentes siguen siendo sorprendentemente bajas en algunos casos.

Básicamente puede ejecutar operaciones en la computadora infectada varias operaciones sin que la víctima lo note, como por ejemplo grabar audio, tomar capturas de pantalla, registrar las teclas pulsadas, interceptar archivos de Skype, como mencionábamos anteriormente.Finalmente, como afirmamos en nuestra carta abierta, la misión de ESET es permitir a todos disfrutar de un mundo digital más seguro. En muchos casos el análisis no muestra claramente las razones de la creación de un malware o quién está detrás, lo que significa que no siempre sabremos si estamos ante un malware patrocinado por el Estado o no. Sin embargo, como hace daño, nos seguiremos esforzando para detectar todos los códigos maliciosos que podamos y así mantener a los usuarios protegidos. Para más información, pueden visitar nuestro post sobre Ética de detección.

Gracias a nuestros colegas en el Área de Investigación que ayudaron con el análisis de esta y otras muestras de esta policeware.

Autor , ESET

Síguenos