Bueno en esta ocasión he decido tocar este importante tema, el cual trata sobre el análisis de códigos maliciosos o malwares (comunmente llamados). Este estudio se puede ejecutar en dos entornos distintos, estático y dinámico. En este post vamos a tratar el análisis de malware en un entorno estático. Pues comencemos.
Cuando hablamos sobre el análisis estático de códigos maliciosos hacemos referencia el estudio de una amenaza sin tener que ejecutarla. El análisis estático puede confirmar si un archivo es malicioso, proporciona información sobre su funcionamiento. Dicho análisis es sencillo y puede ser rápido, pero es en gran medida ineficaz contra el malware sofisticado, y se pueden pasar por alto funciones importantes.
Esto implica que en el análisis estático se utilizará algunas aplicaciones que permitan analizar el código del programa con el fin de obtener(el tipo de archivo, en que lenguaje y cuando se ha programado, librería que usa, etc.).
Nota : El análisis estático es en medida ineficaz contra el malware sofisticado, y se pueden pasar por alto funciones importantes.
Antes de ver el modelo de análisis estático de un malware, es necesario conocer los distintos tipos que existen, ya que de esa forma podremos clasificarlos en su respectivo rublo.
Troyano
Un troyano es un software malicioso que simula ser inofensivo, útil o benigno para el usuario. Al igual que los gusanos, no infecta archivos, aunque a diferencia de éstos, el troyano necesita del factor humano para su propagación.
Existe una gran variedad de troyanos que trabajan a la par con otros tipos de malwares, dependiendo sus acciones y utilidades.
Gusano
Un gusano informático es un software malicioso cuyas principales características son que no infecta archivos (principal diferencia con los virus) y que se propaga por sí mismo a través de distintos medios de comunicación.
Virus
Los virus informáticos son programas que modifican otros programas para incluir una copia ejecutable y posiblemente alterada de ellos mismos. Estos programas malignos son fáciles de crear y en muchos casos difíciles de detectar. Su función principal es de actuar de forma transparente al usuario y de reproducirse a sí mismo.
Backdoor
Los Backdoors son una puerta de entrada trasera a una computadora, programa o sistema en general, este permite a los atacantes tomar el control de seguridad ganado acceso al sistema. Esta clase de malware permite controlar remotamente la computadora utilizando puertos de comunicación abiertos u complementos de otra tipo de infección por softwares pirateados (ransomware).
Keyloggers
Son programas espías, que toman el control de los equipos, para espiar y robar información, monitorea el sistema, registrando las pulsaciones del teclado, para robar las claves, tanto de páginas financieras y correos electrónicos o cualquier información introducida por medio del teclado.
Adware
Adware (acrónimo de advertisement y software) es un software malicioso, que se instala en el sistema (frecuentemente sin que el usuario lo note), cuya función es descargar y/o mostrar anuncios publicitarios no solicitados en la pantalla de la víctima.
Spyware
Son programas espías que recopilan información sobre una persona u organización sin su conocimiento. La función más común que tienen estos programas es la de recopilar información sobre el usuario y distribuirlo a empresas publicitarias u otras organizaciones interesadas.
Rootkit
Un rootkit es un programa que permite un acceso de privilegio continuo a una computadora pero que mantiene su presencia activamente oculta al control de los administradores al corromper el funcionamiento normal del sistema operativo o de otras aplicaciones. Actualmente es un conjunto de herramientas utilizadas en cualquier sistema para conseguir acceder ilícitamente al mismo.
Malware : http://oc.gtisc.gatech.edu:8080/
Nota : Desactivar el Antivirus para que el ejecutable no sea eliminado. También cabe resaltar que sería conveniente trabajar en un entorno seguro ya que sería beneficioso para buenas prácticas.
Una vez terminado la descarga y tras haber extraído el ejecutable, es momento de comenzar con nuestro análisis.
Nuestro malware elegido para las pruebas es : Generic.Malware.dld!!g.4AA057D7
Del cual ya podemos obtener información como el MD5, SHA1 y SHA256.
A continuación vamos a utilizar una herramienta para poder comprobar por buenas prácticas el MD5. La herramienta a utilizar puede ser el md5sums, winmd5 u otra variedad.
Con el procedimiento anterior podemos corroborar la concordancia de la suma del hash con la información previamente obtenida del sitio web.
A continuación vamos a subir nuestro ejecutable al Virus Total para su respectivo análisis y conocer porque distribuciones de antivirus es detectado.
El primer dato que podemos obtener el hashSHA256, el cual coincide con el hash brindado por el sitio web Open Malware.
Posteriormente podemos ver la cantidad de antivirus que detectan como malware a nuestra muestra de código malicioso que hemos descargado.
Detecciones : 42/49
Podemos resaltar la detección de los antivirus Avast , Bitdefender, Eset y F-Secure.
En esta sección podemos destacar la detección por parte de Kasperky, McAfee, Panda, Sophos, Symante y Microsoft.
Ya por terminar, en esta última sección podemos observar que aun es indectetable para ciertos antivirus del cual podemos destacar a Malwarebytes, ClamAV y SuperAntiSpyware.
Continuando con nuestro análisis, vamos a utilizar una herramienta muy útil la cual nos brindara mucha información sobre el funcionamiento del malware. La herramienta lleva el nombre de Anubis.
Anubis es un servicio on-line de análisis de Malware o “archivos sospechosos”. Para poder hace uso de esta herramienta solo tienes que envíar tu ejecutable de Windows o Android APK y posteriormente recibirás un informe de análisis detallado según lo que hace el malware.
Entre las tareas que desarrolla Anubis se encuentran las siguientes:
- Claves de registro que lee
- Claves de registro que modifica
- Análisis de la red
- Firmado MD5 & SHA1 de los ficheros
- Ficheros modificados
- Actividad de disco
- TXT
- HTML
- XML
Procedemos con enviar nuestro malware a Anubis.
Procedemos con cargar y enviar nuestro ejecutable para que sea analizado por Anubis. Este procedimiento durara unos cuantos segundos.
Una vez finalizo el análisis, vamos a poder descargar el reporte que se encuentra debidamente detallado sobre todas las tareas ejecutadas por nuestro malware.
Informe de Anubis.
Aquí podemos observar un esquema básico de la estructura del malware.
1.- Información general.
2.- Información de Dlls.
2.1 .- Dlls cargados por el malware.
2.2.- Dlls que ejecuta el malware.
3.- Archivos leídos
4.- Archivos de comunicación del sistema de control.
5.- Procesos Creados.
En esta sección podemos observar los procesos que nuestra malware de prueba creara en el sistema que va a infectar.
Bueno hasta el momento hemos observado información que nos ha ofrecido Anubis. A continuación vamos a utilizar la herramienta RDP Packer detector el cual nos va a brindar mas información acerca de la programación del malware.
A continuación procedemos a abrir nuestro espécimen en dicha herramienta.
Con la información obtenida con esta herramienta podemos saber que dicho espécimen esta hecho en Visual Basic C++ 6.0,por otro lado podemos observar que el ejecutable se encuentra comprimido por UPX V.080 - V.125 con múltiples protecciones.
A continuación para conocer la estructura interna de nuestro ejecutable, respecto a la estructura y contenido de nuestro malware. Para esto vamos hacer uso de PEview.
PEview proporciona una forma rápida y fácil de ver la estructura y el contenido de 32-bit ejecutable portable (PE) y el Componente de objetos Formato de archivos (COFF) archivos. Este PE / COFF visor de archivos muestra la cabecera de la sección, directorio, tabla de importación, tabla de exportación, y los recursos de información dentro de EXE, DLL, OBJ, LIB, DBG, y otros tipos de archivos.
Con ayuda de PEview podemos decir lo siguiente :
- Nuestro espécimen fue compilado el 22 de Julio del 2007. Esta fecha quedaría es suspenso ya que no podemos afirmar una fecha especifica. Pero según la información que disponemos, es muy posible, ya que el malware fue reportado el 22 de Mayo del 2008, así que existe la podría ser verdad la información extraída.
- Podemos observar la descripción de la máquina la cual es una i386.
- Se detecta la presencia de UPX ("Ultimate Packer para ejecutables"), dicha información se obtendrá cuando descomprimamos el ejecutable.
A continuación vamos a proceder a observar la información obtenida por SECTION UPX2.
En la SECTION.UPX2 - IMPORT Directory Tables, la cual es es una sección dentro del archivo PE que contiene todos los recursos para el módulo/ejecutable para funcionar. En este caso se está diciendo que KERNEL32.DLL, ADVAPI32.dll, MFC42.DLL, MSVCRT.dll y SHELL32.dll son requeridos por el archivo malware.exe que he descargado previamente.
Un archivo DLL es una biblioteca que contiene el código y los datos que se pueden utilizar por más de un programa al mismo tiempo.Por ejemplo, en sistemas operativos Windows, el archivo Comdlg32 DLL realiza común funciones relacionadas con el cuadro de diálogo. Por lo tanto, cada programa puede usar la funcionalidad contenida en este archivo DLL para implementar un cuadro de diálogo.Esto ayuda a promover la reutilización de código y el uso eficaz de la memoria.
Mediante el uso de un archivo DLL, un programa puede ser modular en componentes separados. Por ejemplo, un programa de contabilidad puede venderse por módulo.
Cuando un programa o un archivo DLL utiliza una función DLL en otro archivo DLL, se crea una dependencia.
- Una DLL dependiente se actualiza a una nueva versión.
- Se fija una DLL dependiente.
- Una DLL dependiente se sobrescribe con una versión anterior.
- Una DLL dependiente se quita del equipo.
Retornando a nuestro análisis, como hemos podido observar nuestro espécimen requiere de dos tipos de dll, los cuales vamos a definir a continuación, con el fin de poder entender mejor el alcanza de nuestro malware.
Kernel32.dll : Es la biblioteca de enlace dinámico (dynamic link library) presente en todas las versiones de 32 bits y 64 bits de Microsoft Windows. Expone a las aplicaciones de la mayoría de las Win32 base APIs, como la administración de memoria, operaciones de Entrada/salida, la creación (proceso y subproceso) y funciones de sincronización.
Advapi32.dll : Es una parte de una biblioteca avanzada de los servicios del API que utiliza APIs numerosos incluyendo muchos las llamadas de la seguridad y del registro.
Mfc42.dll : Es el módulo que contiene las funciones de las clases de la fundación de Microsoft (MFC) usadas por las aplicaciones creadas en Microsoft Visual Studio.
Msvcrt.dll : Es un módulo que contiene funciones de biblioteca estándar de C tales como printf, memcpy, y el cos. es una parte de la biblioteca Runtime de Microsoft C.
Shell32.dll : Es una biblioteca que contiene las funciones del API del shell de Windows, se utilizan que al abrir Web pages y ficheros.
Kernel32.dll : Es la biblioteca de enlace dinámico (dynamic link library) presente en todas las versiones de 32 bits y 64 bits de Microsoft Windows. Expone a las aplicaciones de la mayoría de las Win32 base APIs, como la administración de memoria, operaciones de Entrada/salida, la creación (proceso y subproceso) y funciones de sincronización.
Advapi32.dll : Es una parte de una biblioteca avanzada de los servicios del API que utiliza APIs numerosos incluyendo muchos las llamadas de la seguridad y del registro.
Mfc42.dll : Es el módulo que contiene las funciones de las clases de la fundación de Microsoft (MFC) usadas por las aplicaciones creadas en Microsoft Visual Studio.
Msvcrt.dll : Es un módulo que contiene funciones de biblioteca estándar de C tales como printf, memcpy, y el cos. es una parte de la biblioteca Runtime de Microsoft C.
Shell32.dll : Es una biblioteca que contiene las funciones del API del shell de Windows, se utilizan que al abrir Web pages y ficheros.
Para poder tener conocimiento acerca de cuáles son las funciones que están siendo llamadas vamos a utilizar la herramienta Dependency Walker.
Esta utilidad analiza cualquier módulo de 32 o 64 bits (EXE, DLL, OCX, SYS, etc.) y genera un listado de todos los módulos dependientes del mismo, siguiendo una estructura organizada en forma de árbol. Resulta de gran utilidad para detectar y diagnosticar errores relacionados con la carga y ejecución de módulos en el sistema.
El programa llega a detallar las funciones exportadas por cada módulo de la lista, y cuáles de ellas son llamadas por otros módulos. Muestra también los ficheros mínimos requeridos, junto con información extendida sobra cada uno de ellos.
En la imagen podemos observar las funciones importados por Kernel32.dll. Pero como el ejecutable se encuentra comprimido, algunas funciones no estan siendo expuestas. Para esto vamos a desempaquetar nuestro ejecutable con la herramienta UPX.
UPX es un compresor de ejecutables gratuito, portable y de alto rendimiento. UPX soporta diferentes formatos de ejecutables, incluyendo programas de Windows 95/98/ME/NT/2000/XP/VISTA y DLLs, programas de DOS, Linux, etc.
Como se puede ver realmente las llamadas ascienden a 23 funciones enumeradas, en total 20 funciones de diferencia por parte del original, el cual tiene solo tiene 3. Mientras tanto, por parte de ADVAPI32.DLL también hubo un cambio en el número de funciones.
Por último MSVCRT.DLL también presentó cambios en las funciones de llamada, ya que en el ejecutable original solo disponía de 1 mientras que en el ejecutable descomprimido dispone de 14. Cabe mencionar que los demás DLL permanecieron constante en el número de funciones llamadas.
UPX es un compresor de ejecutables gratuito, portable y de alto rendimiento. UPX soporta diferentes formatos de ejecutables, incluyendo programas de Windows 95/98/ME/NT/2000/XP/VISTA y DLLs, programas de DOS, Linux, etc.
Disminuir el tamaño de un archivo .exe en realidad puede acelerar el tiempo de carga debido a que el tiempo de recuperación de los medios de almacenamiento o de red es a menudo mayor que el tiempo de descompresión muy rápida.
A continuación procederemos con descomprimir nuestro espécimen. Para esto trasladamos nuestro espécimen a la carpeta de upx391w.
A continuación procederemos con descomprimir nuestro espécimen. Para esto trasladamos nuestro espécimen a la carpeta de upx391w.
Podemos observar que en el proceso se ha creado un nuevo ejecutable, cuyo nombre es malware2.exe el cual vamos a proceder a abrirlo con Dependency Walker.
De las funciones podemos destacar :
OpenProcess : Abre un objeto de proceso local persistente.
CreateProcess : Crea un nuevo proceso y su subproceso principal. El nuevo proceso se ejecuta en el contexto de seguridad del proceso de llamada.
Setpriorityclass : Establece la clase de prioridad para el proceso especificado. Este valor junto con el valor de prioridad de cada proceso del subproceso determina el nivel de prioridad base de cada subproceso.
De las funciones podemos destacar :
OpenProcess : Abre un objeto de proceso local persistente.
CreateProcess : Crea un nuevo proceso y su subproceso principal. El nuevo proceso se ejecuta en el contexto de seguridad del proceso de llamada.
Setpriorityclass : Establece la clase de prioridad para el proceso especificado. Este valor junto con el valor de prioridad de cada proceso del subproceso determina el nivel de prioridad base de cada subproceso.
Por último MSVCRT.DLL también presentó cambios en las funciones de llamada, ya que en el ejecutable original solo disponía de 1 mientras que en el ejecutable descomprimido dispone de 14. Cabe mencionar que los demás DLL permanecieron constante en el número de funciones llamadas.
Bueno creo que hemos llegado al final de este post, espero que esta poca información básica les sea de utilidad al momento de querer analizar un código malicioso. Cabe resaltar que un análisis estático como el que acabamos de realizar no es suficiente para poder entender el comportamiento del malware, para poder tener una perspectiva mas amplia es necesario realizar un análisis dinámico. En un post posterior también demostrare como se realiza un adecuado análisis dinámico, para el cual tendré que "infectarme" con el malware que analizaré. Bueno sin mas que decir me despido y será hasta la próxima. Nos vemos.
No hay comentarios.:
Publicar un comentario