Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hacking Ético
Ideas clave 4
8.1. Introducción y objetivos 4
8.2. Tipos de malware 5
8.3. Conocimientos de base 7
© Universidad Internacional de La Rioja (UNIR)
A fondo 24
Test 25
© Universidad Internacional de La Rioja (UNIR)
Tema 8. Esquema
Esquema
Hacking Ético
3
Ideas clave
análisis de malware.
Introducir al alumno en las técnicas de análisis estático de código de un malware,
en base a la aplicación de técnicas de ingeniería inversa (reversing).
Conocer el funcionamiento y capacidades de las principales herramientas de
ingeniería inversa.
Hacking Ético
4
Tema 8. Ideas clave
8.2. Tipos de malware
Para su estudio, uno de los principales elementos que debemos conocer es cuál es
su intención. En función de ello, sabemos que tendrá que hacer uso de determinadas
características del sistema y tendremos un punto de partida para su caracterización.
Existen diversas taxonomías que analizan el malware desde esta perspectiva, las
siguientes son las categorías con mayor consenso (Microsoft, 2022; Misp, s. f.):
Joker. Malware que genera mensajes de alerta, pero no es dañino para los activos
de información.
Ransomware. Cifra los archivos del equipo y pide un rescate al usuario víctima
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
5
Tema 8. Ideas clave
Spyware. Exfiltra información de la máquina víctima. Dentro de esta categoría
existen herramientas concretas, como los keyloggers, bankers, etc.
Troyano / RAT. Programa con capacidad para tomar el control de un equipo y ser
manejado de forma remota. Suele ocultar sus funcionalidades en software
legítimo (de ahí el sobrenombre de troyano).
Virus. Modifica la estructura de los ejecutables del sistema para que incluyan su
funcionalidad maliciosa, de forma que sea más compleja su eliminación total.
Hacking Ético
6
Tema 8. Ideas clave
Killware. Término acuñado recientemente, asociado a los programas maliciosos
que pueden tener consecuencia sobre la vida humana, como el código dirigido a
sistemas críticos o contra sistemas sanitarios. Por su alcance, también se relaciona
con las APT.
Ficheros ejecutables
© Universidad Internacional de La Rioja (UNIR)
Los archivos ejecutables en Windows, es decir, de forma nativa, como los .exe y .dll,
se conocen como ficheros PE, por cumplir con el formato portable executable. Al
ejecutarse, interactuarán tanto con los métodos que expondrán otros PE, como con
los métodos del sistema operativo.
Hacking Ético
7
Tema 8. Ideas clave
Cuando un archivo PE expone métodos, registra en una tabla interna el nombre de
dichos métodos y la dirección del archivo en la que se encuentran sus instrucciones.
Cuando necesita utilizar métodos de otros PE, utilizará dos estrategias diferentes:
Enlazado dinámico: en una tabla similar a la de los métodos exportados indica qué
métodos necesita utilizar y en qué ficheros se encuentran estos métodos.
Hacking Ético
8
Tema 8. Ideas clave
Registro. Windows cuenta con una estructura de datos de tipo clave-valor
conocida como registro. En este registro se encuentran variables relacionadas con
los procesos en ejecución, propiedades de la sesión del usuario o programas al
inicio. Es importante conocerlo, porque el malware puede utilizarlo para ganar
persistencia, interferir en procesos, etc.
Servicios. Procesos cuyo ciclo de vida es similar al del sistema: se inician al inicio,
y se apagan al final de la sesión. Suelen tener un contexto de ejecución y seguridad
propio.
Los ficheros PE tienen una estructura definida (la especificación desarrollada por
Microsoft) y servirá tanto para archivos .exe, como para .dll y otros. Estos ficheros
tienen la siguiente estructura:
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
9
Tema 8. Ideas clave
Número mágico y cabeceras de formato MS-DOS.
Número mágico de PE.
Cabeceras COFF (descriptor de objeto que indica para qué arquitectura ha sido
diseñado y otros metadatos).
Secciones de programa.
Los programas informáticos, una vez programados (escritos como simple texto en un
entorno de programación), son tratados de diferentes formas en función de cómo
deben ejecutarse después:
Hacking Ético
10
Tema 8. Ideas clave
Desensamblado
Decompilado
El código ensamblador guarda relación con el código a alto nivel. Por ejemplo, un
programa en código ensamblador, en el que se producen saltos hasta que se cumple
una condición, es idéntico a un bucle while o un bucle for, si la condición depende de
algún tipo de contador.
Esquema CPU
• ECX.
• EDX.
Hacking Ético
11
Tema 8. Ideas clave
En las arquitecturas de 64 bits, los registros son idénticos, pero en lugar de
comenzar por E, comienzan por R (EAX es RAX, EBX es RBX, etc.). Cuando no se
quiere utilizar el registro entero, se puede dividir en función de los bits necesitados
para representar la información, como muestra la Tabla 1.
Tabla 1. Esquema de registros en función del número de bits. Fuente: elaboración propia.
Cuando hay que almacenar datos o se necesita operar con elementos de mayor
tamaño que los registros, se utiliza la memoria. A la hora de trabajar con la memoria,
debemos tener en cuenta que habrá principalmente tres secciones:
Hacking Ético
12
Tema 8. Ideas clave
Tabla 2. Estructura de la memoria de un programa. Fuente: elaboración propia,
Lenguaje ensamblador
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
13
Tema 8. Ideas clave
Estas operaciones funcionan, grosso modo, como:
Las instrucciones aritméticas más básicas permiten la operación entre registros. Así,
por ejemplo, si quisiésemos sumarle 3 al valor contenido en el registro RAX, y restarle
el resultado al registro RBX, escribiríamos:
ADD rax, 3
SUB rbx, rax
Hacking Ético
14
Tema 8. Ideas clave
A medida que ejecutamos el programa, entrará en juego un nuevo elemento de la
CPU: los flags. Llamamos flags a una estructura de datos que almacena estados
especiales de la ejecución en una secuencia de bits. Cada posición de esta secuencia
tiene un significado propio que, en ocasiones, alterará el flujo de ejecución. Así,
trabajaremos principalmente con:
Carry flag. Indica que una operación ha sufrido desbordamiento, por ejemplo, el
resultado de la suma de dos números supera los 32 bits.
Cmp <OP1>, <OP2> Equivalente a la operación de resta entre dos operandos, pero
sin guardar el resultado en ninguno de ellos. Exclusivamente modifica las flags
como si la operación se hubiese realizado
Test <OP1>, <OP2> Equivalente a la operación binaria AND entre dos operandos,
pero sin guardar el resultado en ninguno de ellos. Exclusivamente modifica las
flags como si la operación se hubiese realizado.
Hacking Ético
15
Tema 8. Ideas clave
Tabla 3. Instrucciones de salto. Fuente: elaboración propia.
Por último, a diferencia de los saltos, que deberían utilizarse solo para establecer
condiciones de flujo, la llamada entre funciones (bloques definidos de instrucciones)
se produce utilizando la sentencia call. Cuando se ejecuta esta sentencia, además,
el programa se encarga de crear un marco de ejecución nuevo que existirá hasta que
la función termine, es decir, hasta que llegue a una orden tipo ret, que restaurará el
marco anterior.
Hacking Ético
16
Tema 8. Ideas clave
8.5. Introducción a la herramienta IDA
Para comenzar, bastará con que desde el menú principal (Figura 1) carguemos el
binario e IDA tratará de obtener el mejor perfil para analizarlo, recordemos que no
todos los binarios ejecutables funcionan en todas las arquitecturas.
Una vez cargado, IDA comenzará a trabajar con una base de datos en la que almacena
qué partes del programa se corresponden con funciones, con bucles, con definición
de variables, etc.
© Universidad Internacional de La Rioja (UNIR)
Completado el análisis del binario, mostrará una lista de las secciones del programa
que ha interpretado como funciones (de bloques que son llamados desde otros
puntos del programa), que podemos ver en la columna izquierda de la Figura 2.
Hacking Ético
17
Tema 8. Ideas clave
También debemos tener en cuenta que esto no siempre es correcto o, al menos, no
siempre tiene una correspondencia real con el código fuente. Lo que ha hecho IDA
en este punto es hacer inferencias: a partir de aquí debemos interpretar
correctamente estos resultados y, en última instancia, corregirlos (IDA permite
redefinir funciones).
Sobre las secciones del binario, IDA analiza cada una de las secciones. En la ventana
principal, interpreta principalmente el contenido de la sección .text (la sección de
código del programa).
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
18
Tema 8. Ideas clave
Figura 3. Representación de flujo. Fuente: elaboración propia.
Hacking Ético
19
Tema 8. Ideas clave
En ambas vistas se puede interpretar el control de flujo de la aplicación. Mientras
que en la primera es trivial (la representación del control de flujo es la base de la
visualización), en la segunda debemos fijarnos en el lateral izquierdo de las
instrucciones, donde aparecerán dibujadas flechas que representarán los saltos
condicionales e incondicionales (cuando la línea es continua o discontinua,
respectivamente) del programa.
También podemos ver el análisis realizado por IDA sobre otras secciones del
ejecutable, como las relacionadas con strings, funciones importadas (Figura 5) y
funciones exportadas.
Hacking Ético
20
Tema 8. Ideas clave
Figura 6. Referencias cruzadas. Fuente: elaboración propia.
Repitiendo el proceso varias veces iremos descubriendo super bloques lógicos, pero
para poder darles sentido debemos identificar cada funcionalidad que
comprendamos. Una forma de hacerlo es renombrar las funciones detectadas por
IDA.
Cuando IDA realiza su primer análisis, cada vez que detecta un bloque de
instrucciones que puede formar una función, le asigna un nombre similar al mostrado
en la Figura 7. Cuando consigamos comprender la funcionalidad de un bloque de
instrucciones, podemos sustituir este nombre e ir reconstruyendo la funcionalidad
del programa.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
21
Tema 8. Ideas clave
Para renombrar una función, simplemente la activaremos clicando sobre ella con el
cursor del ratón y pulsando N en el teclado. Tras elegir el nuevo nombre (trataremos
de hacerlo como si estuviésemos programándolo), se actualizará la referencia en
todos los menús de IDA (Figura 8).
En este vídeo, titulado Uso básico de IDA, se realizará una introducción a las
principales características de análisis de la herramienta de ingeniería inversa IDA
PRO.
© Universidad Internacional de La Rioja (UNIR)
Hacking Ético
22
Tema 8. Ideas clave
8.7. Referencias bibliográficas
Hacking Ético
23
Tema 8. Ideas clave
A fondo
Introduction to reverse engineering
Taller: begin.re
Hacking Ético
24
Tema 8. A fondo
Test
1. Entre las capacidades de un ransomware, no se encuentra:
A. Cifrar los archivos.
B. Atacar terceras máquinas.
C. Pedir compensación económica.
D. Publicar datos de la organización.
Hacking Ético
25
Tema 8. Test
5. Cuando interpretamos el código máquina mediante mnemónicos (opcodes),
utilizamos:
A. Un decompilador.
B. Un desensamblador.
C. Un reversador.
D. Un debugger.
Hacking Ético
26
Tema 8. Test
9. El puntero con el que el procesador referencia la instrucción que se está
ejecutando se llama:
A. ESP.
B. EBP.
C. EIP.
D. EAX.
Hacking Ético
27
Tema 8. Test