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:
- upx –o nuevo nombre de archivo -d nombre de archivo empaquetado
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.
- .text: Contiene el código ejecutable.
- .rdata: esta sección contiene datos de solo lectura accesibles globalmente.
- .data: Almacena datos globales a los que se accede a través del programa.
- .rsrc: esta sección almacena los recursos que necesita el ejecutable.
- La mayoría de los creadores de malware utilizan enlaces dinámicos en su código. Por ejemplo, con el uso de la herramienta Dependency Walker, podemos ver en la siguiente captura de pantalla que en WININET.dll hay funciones como “InternetOpenUrlA”, que indica que este malware se conectará con algún servidor externo. Nota: Wininet.dll contiene funciones de red de nivel superior que implementan protocolos como FTP, HTTP y NTP.
- Debajo del encabezado, hay una subsección llamada “IMAGE_FILE_HEADER”, que contiene el campo de marca de tiempo. Esta marca de tiempo muestra el tiempo de compilación del ejecutable. Esta es información muy importante, ya que si el tiempo ya es antiguo, puede darse el caso de que las soluciones AV tengan una firma a su alrededor. Sin embargo, este campo no es confiable, ya que el autor del malware puede cambiar fácilmente la compilación.
- Supongamos que a partir del análisis estático, un analista predice que el ejecutable creará un proceso y luego supone que se encuentra el siguiente comando exec y sleep, pero no se encuentra información sobre la DLL respectiva, que tiene una función para conectarse con otro servidor. En ese caso, el recurso queda oculto con el ejecutable. Abra la sección .rsrc del archivo PE con una herramienta como Resource Hacker para obtener más información sobre el malware.
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.