Tabla de Contenidos

Análisis del Malware Tema 1

Introducción

El malware se define como un software malicioso que realiza acciones mal intencionadas. Generalmente e busca analizar el malware para asesorar daños, identificar vulnerabilidades, capturar a los “chicos Malos” y responder respuestas.

¿Por que se crea malware?

El primer malware fue un gusano que trataba de medir el tamaño de internet en los 80. El gusano se comportaba como una forkbomb y se propagó de forma increíblemente rápida. En los 90 los virus se hicieron para ganar gloria personal, haciendo que el malware mostrara mensajes en pantalla. En la actualidad se crean para ganari dinero, robar contraseñas, información bancaria o secretos industriales. En el futuro se cree que se utilizarán para guerra cibernética con malware que utilizaría vilnerabilidades de tipo Zero Days con el objetivo de causar daño en instalaciones físicas.

Cuestiones prácticas

Cuestiones técnicas

Términos populares de análisis del malware

Webs interesantes

Ciberthreat live map

Metas y Tipos de Análisis del Malware

Objetivos del análisis del malware

Se busca obtener un entendimiento de como un malware específico funciona para construir defensas para proteger nuestros sistemas en el futuro.

Tipos de análisis del malware

Se deben realizar estos dos tipos de análisis para obtener un entendimiento completo de como funciona un malware. Aunque ambos tipos consiguen lo mismo, se necesitan diferentes habilidades para realizarlos.

Análisis estático de código

El análisis estático es más seguro ya que no se está ejecutando código malicioso, pero es muy lento y difícil ya que se necesitan muchas herramientas tanto gratuitas como de pago para proceder. cuando se hace ingeniería inversa se deben usar desensambladores, debuggers y compiladores (Cuidado con las leyes ya que en algunos países el uso de estas herramientas se puede considerar piratería)

Análisis dinámico del comportamiento

Es una manera rápida de analizar un malware. Es muy importante que el laboratorio de malware no esté conectado a una red externa. Este tipo de análisis observa como se comporta un malware y que cambios trata de realizar en el sistema. Cuando se haga este análisis se debe estar atento de que cambios han surgido en el sistema, así como si hay comportamiento poco usual por parte del equipo. Cambios que pueden ser indicativos de algo malo:

Además del comportamiento del sistema también se debe analizar el tráfico de red.

Malware Armado: características

La arquitectura x86

En un ordenadores existen diferentes capas de abstracción, estando en lo más bajo el hardware, seguido del lenguaje máquina (Binario u octal), el ensamblador (Instrucciones), el kernel del sistema operativo y arriba de todo los programas. Estas capas se podrían separar en 2 tipos: hardware y sofrware.

Ingeniería inversa

En algunos lenguajes existen decompiladores que permiten obtener una descripción de un código a alto nivel. Normalmente el código en ensamblador es la capa más alta de abstracción que puede ser recuperada de forma fiable y consistente. Entender ensamblador es muy importante para el análisis de malware. El lenguaje ensamblador depende de la familia de procesadores (X86, MIPS, DEC Alpha, ARM, PowerPC…)

La arquitectura x86

Es la arquitectura más atacada ya que es la más popular. La mayoría del mercado actual esta tomado por equipos basados en la arquitectura x86. Ejemplo de instrucción en ensamblador y en lenguaje máquina:

mov ecx, 0x42 -> B9 42 00 00 00

registros

Flags

El registro de flags tiene un tamaño de 32 bits, siendo cada bit un flag, de forma que si es 1, esta activado y si es 0 esta desactivado. Se usan para controlar operaciones del procesador o indicar resultados de operaciones. Tipos de flags:

Instrucciones de datos

Instrucciones aritméticas

Llamadas de función

Ejecutan subrutinas para ejecutar algo

El Stack

Instrucciones: push, pop, call, ret… Convenciones:

Teniendo una función dada del frame del stack:

Condicionales

branching

Repeating

La arquitectura de procesos de windows

Nivel Kernel

Windows API

Forma standar de interactuar con el sistema operativo Windows a través de DLLs (Dynamic Link Library). Las librerías principales son las siguientes:

Process

Es un contenedor que tiene su propio:

Apis como:

Thread

Son planificados y ejecutados por el sistema operativo

en API:

Thread Context mantiene el control del estado de cada hilo:

Nivel Usuario

Task Scheduler: Asigna tiempos de CPU en función de como esté el sistema en el momento.

DLL

Dynamin Link Library. Todos los rpocesos comparten las DLL cargadas, esto ahorra almacenamiento ya que solo se almacenan en memoria una sola vez. Los cambios solo afectan a cada espacio de dirección de proceso. El método DllMain es llamado automáticamente cuando se carga una DLL. en API:

Registro

Se usa para almacenar información de todo:

Se puede navegar por el registro con regedit.

En API:

Service

Similares a un proceso, pero son instalados en el disco o en el registro. El programador puede interactuar con los servicios mediante el service manager “services.exe” que permite arrancar, parar, suspender, programar o autoarrancar los servicios.

en API:

Handle

Es un puntero abastracto a algo:

COM

Component Object Model es un estándar de interfaz binaria creada por microsoft en 1993. Es una forma de lenguaje neutral de implementar objetos que pueden ser usados en entornos diferentes unos de los otros. Es usa para habilitar comunicación entre procesos y la creación de objetos en un rango enorme de lenguajes de programación y ha sido la base para muchas otras tecnologías y frameworks de microsoft.

Es un ejecutable de 8 bits de la época de CP-M y MS-DOS con un tamaño máximo de 64KB para almacenar código y datos. Algunos malware se aprovecha del desconocimiento de los archivos con extensiones .COM ya que la gente los confunde con enlaces .com.

Análisis de malware y herramientas

Creación de un sandbox

Normalmente se trata de evitar que un malware pueda tener contacto con una red real:

Laboratorio de virtualización

Construir un laboratorio para el análisis de malware requiere contemplar los pros y los contras de usar máquinas virtuales o hardware real. Las recomendaciones habituales suelen ser las de usar máquinas virtuales para reducir el coste de hardware que necesita una o dos máquinas físicas. Una de las mejores características de las máquinas virtuales es que se pueden crear snapsots

Los probllemas son que algunos malware pueden detectar si están en una máquina virtual, parando su ejecución. El software de virtualización tampoco es perfecto y puede dar problemas. Algunos Gusanos 0 day, si detectan que están en una máquina virtual pueden escapar y acceder al host, pudiendo llegar a escapar por la red.

Virtualuzando el laboratorio

Normalmente se consuderan dos jungadores

Se recomienda tomar snapsots cada cierto tiempo, además de hacerlo justo antes de comenzar el análisis de un malware. Lo normal es realizar primero el análisis estático ya que esto nos proporciona información que se puede utilizar durante el análisis dinámico.

Herramientas de anáisis dinámico