Análisis de malware

Análisis de malware estático

abril 29, por Ninja de seguridad

A partir de aquí, me gustaría compartir los resultados de mi reciente investigación sobre análisis de malware . Comenzaremos con algunos conceptos básicos y procederemos a niveles avanzados. En esta primera entrega, discutiremos las técnicas involucradas en el análisis estático de malware. También incluiré algunos archivos con fines ilustrativos en este documento.

Antes de pasar directamente a la parte del análisis, establezcamos el contexto con algunas definiciones.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

¿Qué es el malware?

El malware es cualquier software que hace algo que perjudica al usuario, la computadora o la red, como virus, troyanos, gusanos, rootkits, scareware y spyware.

Análisis estático de malware

El análisis estático básico consiste en examinar el archivo ejecutable sin ver las instrucciones reales. El análisis estático básico puede confirmar si un archivo es malicioso, proporcionar información sobre su funcionalidad y, en ocasiones, proporcionar información que le permitirá generar firmas de red simples. El análisis estático básico es sencillo y puede ser rápido, pero es en gran medida ineficaz contra malware sofisticado y puede pasar por alto comportamientos importantes.

Basta de definiciones: vayamos a las técnicas de análisis estático de malware.

Técnicas de análisis estático de malware.

Subiendo los resultados a VirusTotal

La primera técnica en el análisis estático es cargar el ejecutable sospechoso en VirusTotal, que lo ejecuta contra varias soluciones antivirus y proporciona el resultado. Por ejemplo, el siguiente archivo indica que la tasa de detección es 17 de 57.

Encontrar cuerdas

Buscar entre las cadenas puede ser una forma sencilla de obtener pistas sobre la funcionalidad de un programa. Por ejemplo, si el programa accede a una URL, verá la URL accedida almacenada como una cadena en el programa.

Microsoft tiene una utilidad llamada “Strings”. Cuando Strings busca cadenas ASCII y Unicode en un ejecutable, ignora el contexto y el formato, de modo que puede analizar cualquier tipo de archivo y detectar cadenas en todo el archivo (aunque esto también significa que puede identificar bytes de caracteres como cadenas cuando no lo son). ). Cadenas busca una secuencia de tres letras o más de caracteres ASCII y Unicode, seguida de un carácter de terminación de cadena.

A continuación se muestran algunos ejemplos de cadenas a partir de las cuales se puede revelar información importante. Usando la utilidad Strings, los archivos se pueden buscar con el siguiente comando en el cmd: Strings nombre de archivo

Ejemplo 1: a continuación se muestra una extracción de cadenas de palabras clave de un ejecutable malicioso. Como podemos ver, nos brinda buena información que funciona como “FindNextFileA” y “FindFirstFileA”, que muestra que este ejecutable buscará un archivo, y luego combinarlo con “CopyFileA” significa que encontrará un archivo y lo reemplazará. con otro archivo. Otro punto importante a tener en cuenta es sobre “Kerne132.dll”. Este es un texto engañoso y no debe confundirse con “Kernel32.dll”.

Ejemplo 2: a continuación se muestra otra extracción de una utilidad de cadena. Nos muestra que el uso de “CreateProcessA” creará un proceso. Comandos como “Exec” y “sleep” se utilizan para controlar un archivo remoto. También puede ser un bot y luego un campo de IP, que puede ser la IP de un servidor de control.

Ejemplo 3: A continuación se muestra otro ejemplo de extracción utilizando cadenas. Los campos interesantes son “InternetOpenURLA”, que indica que se conectará con algún servidor externo para descargar algo, y luego también tenemos un archivo http://, que incluso aclara la dirección del servidor desde el que se conectará y descargará.

¿Cómo comprobar si un código de malware está ofuscado o no?

A menudo, los creadores de malware confunden sus códigos para que los archivos sean difíciles de leer. Cuando se ejecuta un programa empaquetado, también se ejecuta un programa contenedor para descomprimirlo. Con el análisis estático, es realmente difícil predecir qué archivos están empaquetados a menos que sea claramente evidente que lo están. Por ejemplo, herramientas como PEid a veces pueden indicar que los archivos están empaquetados. En la siguiente figura, es claramente evidente que los archivos están empaquetados con UPX.

Los archivos empaquetados en UPX se pueden descomprimir con el siguiente comando:

Secciones de archivos PE

Recopilación de información a partir de formato de archivo ejecutable portátil (PE)

El formato de archivo PE es utilizado por ejecutables de Windows, DDL, etc. Contiene la información necesaria para que el cargador del sistema operativo Windows ejecute el código. Mientras examinamos los archivos PE, podemos analizar qué funciones se han importado, exportado y qué tipo de enlace existe, es decir, en tiempo de ejecución, estático o dinámico.

Secciones de archivos PE

Un archivo PE contiene un encabezado y algunas secciones más importantes. En estas secciones hay información útil. Entendamos también estas secciones.

A continuación se muestra el análisis del recurso anterior utilizando PEview.

¡Conviértete en un ingeniero inverso certificado!

Obtenga capacitación práctica en vivo sobre análisis de malware desde cualquier lugar y conviértase en un analista certificado de ingeniería inversa. Comienza a aprender

Como hemos aprendido con el análisis estático, se puede recopilar muy poca información, pero también es muy útil. En un próximo artículo, abordaré el análisis dinámico, aunque básico para el rescate.