Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
Proyecto Integral de Ingeniería del Software | |
---|---|
Metodologías Ágiles |
Trabajo Fin De Grado | |
---|---|
Guía Memoria TFG |
Servidores | |
---|---|
Minercraft | |
Knoppia | |
Omegacraft |
Base de datos de juegos | |
---|---|
GameBoy Advance (GBA) |
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.
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.
Se busca obtener un entendimiento de como un malware específico funciona para construir defensas para proteger nuestros sistemas en el futuro.
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.
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)
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.
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.
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…)
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
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:
Ejecutan subrutinas para ejecutar algo
Instrucciones: push, pop, call, ret… Convenciones:
Teniendo una función dada del frame del stack:
Forma standar de interactuar con el sistema operativo Windows a través de DLLs (Dynamic Link Library). Las librerías principales son las siguientes:
Es un contenedor que tiene su propio:
Apis como:
Son planificados y ejecutados por el sistema operativo
en API:
Thread Context mantiene el control del estado de cada hilo:
Task Scheduler: Asigna tiempos de CPU en función de como esté el sistema en el momento.
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:
Se usa para almacenar información de todo:
Se puede navegar por el registro con regedit.
En API:
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:
Es un puntero abastracto a algo:
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.
Normalmente se trata de evitar que un malware pueda tener contacto con una red real:
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.
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.