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) |
¡Esta es una revisión vieja del documento!
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: