Como ya hemos mencionado en la anterior entrada de este blog sobre Flame, el volumen de su código y su funcionalidad es tan grande que llevaría meses analizarlo por completo. Pretendemos publicar de forma continua los detalles más importantes y más interesantes de su funcionalidad a medida que los vayamos descubriendo.
Ahora estamos recibiendo muchas consultas sobre cómo verificar que los sistemas estén libres de la infección Flame. Por supuesto que para nosotros la respuesta más sencilla es aconsejar el uso de Kaspersky Antivirus o Kaspersky Internet Security. Hemos logrado detectar y eliminar todas las posibles modificaciones del módulo principal y de los componentes adicionales de Flame.
Sin embargo, para quienes quieran realizar una verificación detallada de forma personal, al final de este artículo les daremos las recomendaciones necesarias.
MSSECMGR.OCX
El principal módulo de Flame es un archivo DLL llamado mssecmgr.ocx. Hemos descubierto dos modificaciones en este módulo. La mayoría de los ordenadores infectados contienen su versión “grande”, de 6 Mb, e incluye e instala módulos adicionales. La versión más pequeña tiene un tamaño de apenas 900 Kb y no contiene módulos adicionales. Después de la instalación, el módulo pequeño se conecta con uno de los servidores de comando y control y procede a descargar e instalar desde ahí los demás componentes.
Mssecmgr puede aparecer con distintos nombres en los equipos infectados, según el método de infección y el estado interno vigente del programa malicioso (instalación, replicación, actualización), por ejemplo: wavsup3.drv, ~zff042.ocx, msdclr64.ocx, etc.
En próximas entradas de este blog publicaremos un análisis completo del módulo mssecmgr.
La primera activación de este archivo se inicia con una de las características externas, ya sea mediante las herramientas Windows WMI con un archivo MOF si es que se está usando el exploit MS10-061, o un archivo BAT:
s1 = new ActiveXObject(“Wscript.Shell”);
s1.Run(“%SYSTEMROOT%system32rundll32.exe msdclr64.ocx,DDEnumCallback”);
(codigo fuente del archivo MOF, svchostevt.mof)
Cuando se activa, mssecmgr se registra como un paquete de autenticacion en el registro de Windows:
HKLM_SYSTEMCurrentControlSetControlLsa
Authentication Packages = mssecmgr.ocx [anadido a las entradas existentes]
A continuacion tenemos un breve resumen de las unidades existentes. Los nombres se extrajeron desde el binario y desde el recurso 146.
Beetlejuice | Bluetooth: enumera los dispositivos que hay cerca del ordenador infectado. Puede convertirse en una baliza. Muestra el ordenador como un dispositivo detectable y codifica el estado del programa malicioso en la informacion del dispositivo mediante base64. |
Microbe | Graba audio desde recursos existentes de hardware. Enumera todos los dispositivos multimedia, guarda la configuracion completa de los dispositivos, intenta seleccionar el dispositivo de grabacion mas apropiado. |
Infectmedia | Selecciona uno de los metodos para infectar los dispositivos, como los discos USB. Metodos disponibles: Autorun_infector, Euphoria. |
Autorun_infector | Crea “autorun.inf” que contiene el programa malicioso y comienza con un comando especial “open”. Stuxnet usaba el mismo metodo antes del exploit LNK. |
Euphoria | Crea un directorio “punto de empalme” con “desktop.ini” y “target.lnk” desde las entradas LINK 1 y LINK 2 del recurso 146 (no se encontraban en el archivo recurso). El directorio actua como un atajo para ejecutar Flame. |
Limbo | Crea cuentas puerta trasera cuyo login es “HelpAssistant” en los ordenadores en la red del dominio si se cuenta con las autorizaciones apropiada. |
Frog | Infecta ordenadores mediante cuentas predeterminadas de usuario. La unica cuenta de usuario especificada en el recurso de configuracion es “HelpAssistant” que se crea mediante el ataque “Limbo”. |
Munch | Servidor HTTP que responde a peticiones “/view.php” y “/wpad.dat”. |
Snack | Escucha las interfaces de la red, recibe y guarda paquetes NBNS en un archivo de registro. Cuenta con una opcion para comenzar solo cuando comienza “Munch”. Entonces, los datos recopilados se usan para replicaciones en la red. |
Boot_dll_loader | Seccion de la configuracion que contiene la lista de todos los modulos adicionales que deben cargarse y ejecutarse. |
Weasel | Crea un listado de directorio del ordenador infectado. |
Boost | Crea una lista de archivos “interesantes” usando varias mascaras para los nombres de archivo. |
Telemetry | Facilitador de registros log |
Gator | Cuando una conexion a Internet esta disponible, se conecta con los servidores de comando y control, descarga nuevos modulos, y carga los datos recogidos (data./td>). |
Security | Identifica los programas que pueden ser peligrosos para Flame, como las soluciones antivirus y los cortafuegos. |
Bunny Dbquery Driller Headache Gadget |
Por el momento se desconoce el proposito de estos modulos.. |
Los modulos adicionales se instalan en el directorio %windir%system32:
mssecmgr.ocx
advnetcfg.ocx
msglu32.ocx
nteps32.ocx
soapr32.ocx
ccalc32.sys
boot32drv.sys
Modulos adicionales que se descargan desde los servidores de comando y control se instalan en el mismo directorio.
Los modulos de Flame producen varios archivos de datos que contienen extensos registros de ejecucion, ademas de la informacion recolectada: capturas de pantalla, listas de procesos, listas de hardware, etc.
Los archivos se guardan en el directorio %windir%temp bajo estos nombres:
~DEB93D.tmp
~8C5FF6C.tmp
~DF05AC8.tmp
~DFD85D3.tmp
~DFL*.tmp
~dra*.tmp
~fghz.tmp
~HLV*.tmp
~KWI988.tmp
~KWI989.tmp
~rei524.tmp
~rei525.tmp
~rf288.tmp
~rft374.tmp
~TFL848.tmp
~TFL849.tmp
~mso2a0.tmp
~mso2a1.tmp
~mso2a2.tmp
sstab*.dat
Tambien existen archivos opcionales en el directorio %windir%system32:
Advpck.dat
ntaps.dat
Rpcnc.dat
Tambien en %windir%:
Ef_trace.log
Flame guarda sus objetos persistentes en archivos con diferentes formatos. Todos los objetos estan codificados con diferentes algoritmos y llaves. Algunos archivos son bases de datos que se crearon mediante una biblioteca SQLite3 incorporada. Los contenidos de estas bases de datos provienen de informacion robada y de rutinas de replicacion. En posteriores publicaciones en este post ofreceremos mas informacion sobre estos archivos.
Los nombres de directorio que usan los componentes adicionales de Flame pueden variar ligeramente segun el tipo de instalacion y las opciones de configuracion desde el recurso 146:
C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgr
C:Program FilesCommon FilesMicrosoft SharedMSAudio
C:Program FilesCommon FilesMicrosoft SharedMSAuthCtrl
C:Program FilesCommon FilesMicrosoft SharedMSAPackages
C:Program FilesCommon FilesMicrosoft SharedMSSndMix
Estos directorios pueden contener los siguientes archivos:
dstrlog.dat
lmcache.dat
mscrypt.dat (or wpgfilter.dat)
ntcache.dat
rccache.dat (or audfilter.dat)
ssitable (or audache)
secindex.dat
wavesup3.drv (una copia del modulo principal,mssecmgr.ocx, en el directorio MSAudio)
Flame tambien puede producir o descargar archivos con los siguientes nombres:
svchost1ex.mof
Svchostevt.mof
frog.bat
netcfgi.ocx
authpack.ocx
~a29.tmp
rdcvlt32.exe
to961.tmp
authcfg.dat
Wpab32.bat
ctrllist.dat
winrt32.ocx
winrt32.dll
scsec32.exe
grb9m2.bat
winconf32.ocx
watchxb.sys
sdclt32.exe
scaud32.exe
pcldrvx.ocx
mssvc32.ocx
mssui.drv
modevga.com
indsvc32.ocx
comspol32.ocx
comspol32.dll
browse32.ocx
En consecuencia, podemos ofrecer un metodo para una rapida verificacion “manual” de vuestros sistemas en busca de una infeccion Flame:
1. Buscad el archivo ~DEB93D.tmp. Su presencia en el sistema significa que ha sido o esta infectado con Flame.
2. Revisad los paquetes de autentificacion de Registry Key HKLM_SYSTEMCurrentControlSetControlLsa.
Si encontrais mssecmgr.ocx o authpack.ocx, significa que el sistema esta infectado con Flame.
3. Verificad la presencia de los siguientes catalogos. Si estan presentes, el sistema esta infectado:
C:Program FilesCommon FilesMicrosoft SharedMSSecurityMgr
C:Program FilesCommon FilesMicrosoft SharedMSAudio
C:Program FilesCommon FilesMicrosoft SharedMSAuthCtrl
C:Program FilesCommon FilesMicrosoft SharedMSSndMix
4. Buscad el resto de los nombres de archivos mencionados arriba. Todos ellos son bastante unicos y descubrirlos significaria que es muy posible que el sistema este infectado con Flame.
P.D. Hemos revisado la informacion sugerida por los comentarios en nuestro blog respecto a una posible relacion con el software FLAME de Brasil (Flexible Lightweight Active Measurement Environment).
Curiosamente, el nombre que hemos elegido coincide plenamente con este software, que tambien usa LUA para implementar su logica de negocios. El software FLAME se usa para medir las caracteristicas de redes implementando agentes de medicion y recopilando datos en una base de datos central. A pesar de algunas similitudes, pensamos que este software no tiene nada que ver ya que persigue distintos objetivos. Ademas del motor LUA, el nucleo de la comunicacion en FLAME es el protocolo XMPP, que no usa el programa malicioso Flame.
Los autores pueden haberse inspirado en el proyecto FLAME y reimplementado una arquitectura similar, sólo para un objetivo distinto, o todo esto no es más que una coincidencia. No tenemos razón alguna para pensar que esto tenga que ver con el programa malicioso Flame.
Flame: Bunny, Frog, Munch y BeetleJuice…