Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Seguridad informática y Malwares
  3. Análisis de malware e inteligencia sobre amenazas
Extrait - Seguridad informática y Malwares Análisis de amenazas e implementación de contramedidas (3ª edición)
Extractos del libro
Seguridad informática y Malwares Análisis de amenazas e implementación de contramedidas (3ª edición) Volver a la página de compra del libro

Análisis de malware e inteligencia sobre amenazas

Introducción

A medida que se analizan los programas maliciosos y los incidentes de ciberseguridad, ha ido surgiendo una nueva disciplina: la inteligencia sobre amenazas (Threat Intelligence). Esta disciplina se basa en capitalizar conocimientos tales como los nombres y las distintas versiones de los programas maliciosos o malwares, las técnicas que utilizan, los grupos de atacantes que los emplean y a los que se atribuyen. El primer informe en el que se detallaba el malware a través del prisma de un grupo de atacantes vinculado a un país fue el «APT1 Exposing One of China’s Cyber Espionage Units» (APT1 Exponiendo Una de las Unidades de Ciber Espionaje China), de Mandiant, en 2013.

Este informe detalla el modus operandi del grupo APT1 (unidad militar china conocida como la APT1), así como un conjunto de trazas dejadas por este grupo durante sus intrusiones. Estas trazas se denominan «indicadores de infección». Esto sienta las bases de la inteligencia sobre amenazas.

En los últimos diez años, esta disciplina ha experimentado una gran expansión. Este capítulo evocará la tecnología punta en este tema.

El objetivo de la inteligencia sobre amenazas es registrar, documentar y difundir toda la información sobre el modus operandi de los grupos de atacantes (ciberdelincuentes o actores vinculados a estados que los apoyan). El objetivo es compartir estos conocimientos...

Indicadores de infección (IOC)

Existen dos tipos de indicadores de infección:

  • Indicadores de tipo sistema, que son dejados por el sistema cuando se ejecuta el malware.

  • Indicadores de red, que son dejados por el malware cuando se conecta a sus servidores de control o cuando se pasean (pivotean) por la red interna de sus víctimas.

1. Huellas digitales y firmas de los archivos

Los primeros indicadores del sistema son las huellas digitales de los propios archivos. Existen varios tipos de huellas:

  • Huellas criptográficas, que identifican de forma única un archivo.

  • Huellas que permiten agrupar (clasificar en clusters) el malware.

  • Huellas vinculadas a objetos o trazas que el malware deja en el sistema.

a. Huellas criptográficas

Las huellas criptográficas son cálculos condensados que identifican de forma única un archivo, sea cual sea su naturaleza. El nombre de un archivo puede modificarse, pero siempre seguirá siendo el mismo archivo si su contenido no ha cambiado.

Los tres algoritmos de cálculo de compendios más comunes hoy en día son md5, sha1 y sha256. Se recomienda utilizar el sha256.

Ejemplo de cálculo de la huella criptográfica sha256 del archivo military.exe (familia de ransomware):

Images/07EP01N4.png

De la imagen anterior, vemos que su sha256 es: 1deb1efad2c469198aabbb618285e2229052273cf654ee5925c2540ded224402.

Para calcular los compendios sha1 y md5, los comandos de Linux son sha1sum y md5sum. Si cambiamos el nombre del archivo, las huellas seguirán siendo las mismas:

Images/07EP02N4.png

Las huellas digitales son obviamente muy inestables. Si se cambia un byte, la huella también cambia.

Como ejemplo, vamos a cambiar un byte en la cabecera DOS del archivo military2.exe. Esta es la cabecera original:

Images/07EP03N4.png

Sustituimos la h minúscula de la palabra «This» por una H mayúscula utilizando el siguiente script de Python:

content = open('military2.exe','rb').read()  
fw = open('military2.exe','wb')  
fw.write(content)  
fw.seek(0x4f) // 0x4f es el desplazamiento de h en This.  
fw.write(b'H')  
fw.close() 

He aquí la cabecera modificada:

Images/07EP04N4.png

El nuevo cálculo del compendio sha256 es: 03b20024594e4e283d1e66df9cb0d1b81ec06c6e111014a379a8d33b321ca06d.

Es distinto al anterior.

Images/07EP05N4.png

Es interesante observar que, si el malware se recompila, su compendio cambiará. Esto se debe a que la fecha de compilación se almacena en la cabecera del archivo. Sin embargo, el atacante puede modificar este campo.

b. Huellas digitales por similitud: ssdeep y TLSH

Podemos ver claramente las limitaciones de la detección criptográfica, ya que basta con cambiar un byte para que la huella digital se modifique por completo. El programa ssdeep supera en cierta medida estas limitaciones. Este programa procede del mundo forense. Su objetivo principal era encontrar archivos en soportes alterados utilizando una base de datos de huellas dactilares conocidas. Fue presentado en el DRFWS (Digital Forensics Research) en 2006: https://dfrws.org/presentation/identifying-almost-identical-files-using-context-triggered-piecewise-hashing/. La herramienta ssdeep implementa un algoritmo que se describió ese mismo año en esta revista científica: https://www.sciencedirect.com/science/article/pii/S1742287606000764?via%3Dihub. Está disponible para Linux, Windows y macOS en: https://ssdeep-project.github.io/ssdeep/index.html

sebdraven@lab:~$ ssdeep -h  
ssdeep version 2.14.1 by Jesse Kornblum and the ssdeep Project  
For copyright information, see man page or README.TXT.  
  
Usage: ssdeep [-m file] [-k file] [-dpgvrsblcxa] [-t val] [-h|-V] [FILES] 
-m - Match FILES against known hashes in file  
-k - Match signatures in FILES against signatures in file  
-d - Directory mode, compare all files in a directory  
-p - Pretty matching mode. Similar to -d but includes all matches  
-g - Cluster matches together  
-v - Verbose mode. Displays filename as its being processed  
-r - Recursive mode  
-s - Silent mode; all errors are suppressed  
-b - Uses only the bare name of files; all path information omitted  
-l - Uses relative paths for filenames  
-c - Prints output...

Matriz MITRE, TTPs y Threat Actors

1. Matriz MITRE

a. Presentación

El MITRE es una organización estadounidense sin ánimo de lucro que proporciona documentación sobre las técnicas utilizadas por el malware, las herramientas y los grupos de atacantes, en varias matrices.

Cualquiera que desee contribuir puede actualizar esta documentación. Está disponible en línea en: https://attack.mitre.org

Hay tres matrices disponibles, que representan diferentes entornos en los que se producirán los ataques informáticos:

  • Empresa para entornos de oficina corporativa/SI (Sistemas de información)

  • Móviles para smartphones

  • ICS (Industrial Control Systems; Sistemas de Control Industrial) para sistemas industriales

Presentaremos la matriz ATT&CK Enterprise, ya que es la más utilizada y también está integrada en herramientas como MISP (véase la sección MISP).

La matriz describe un ataque desde varios puntos de vista llamados tácticas:

  • Reconocimiento

  • Desarrollo de recursos

  • Acceso inicial

  • Ejecución

  • Persistencia

  • Escalada de privilegios

  • Defensa Evasión

  • Acceso a credenciales

  • Descubrimiento

  • Movimiento lateral

  • Colección

  • Mando y control

  • Exfiltración

  • Impacto

Para cada táctica se describen técnicas y subtécnicas. Cada técnica tiene un ID, y cada subtécnica un subID. He aquí un ejemplo de la técnica pass-the-hash (pasar el resumen criptográfico):

Images/07EP11N4.png

La identificación es T1550.002. Corresponde a la subtécnica 002 de la ID T1550. La matriz muestra a qué corresponde la T1550 (Use Alternate Authentication Material; Utilizar material de autenticación alternativo):

Images/07EP12N4.png

El sitio permite ver los vínculos entre las técnicas (o subtécnicas) y las herramientas (que pueden ser o no programas maliciosos). También muestra los vínculos entre los Intrusion Sets (conjuntos de intrusión) y los Threat Actors (actores de amenazas) (ver la sección Actores de amenazas y conjuntos de intrusión). 

Aquí tiene una captura de pantalla del conjunto de técnicas y subtécnicas en las que se utiliza la herramienta mimikatz:

Images/07EP13N4.png

El MITRE proporciona una herramienta llamada navigator para marcar las técnicas utilizadas por una herramienta o un grupo de atacantes. He aquí un ejemplo en el que se utiliza la herramienta mimikatz:

Images/07EP14N4.png

b. Ejemplos de uso de la matriz ATT&CK

La herramienta capa, presentada en el capítulo Malwares contra sistemas Microsoft Windows en la sección...

Reglas y detecciones

1. Introducción

Los TTP sirven para caracterizar a los grupos de atacantes. Así, es útil poder detectarlos, ya que al atacante le resultará difícil empezar de cero.

Por lo tanto, la detección se hace en estos TTP. Examinaremos la detección en red utilizando la sonda de código abierto Suricata y explicaremos cómo crear reglas de detección. Del mismo modo, sobre los archivos, la herramienta YARA puede utilizarse tanto para la detección como para la identificación y el seguimiento de los actores.

2. Suricata

a. Introducción

Suricata es una sonda de detección de intrusos de código abierto desarrollada por la OSIF (el organismo de supervisión de las instituciones financieras). Su motor de detección está basado en reglas. Puede descargarse en: https://suricata.io/

He aquí un ejemplo de regla que detecta el tráfico DNS que resuelve el dominio olinaodi.com:

alert dns $HOME_NET any -> any any (msg:"ET MALWARE SunOrcal Reaver 
Domain Observed (olinaodi .com) in DNS Lookup";   
dns.query;   
content:"olinaodi.com";   
fast_pattern;   
nocase; endswith;   
classtype:trojan-activity;  
sid:2024989; rev:4;   
metadata:affected_product Windows_XP_Vista_7_8_10_Server_32_64_Bit, 
attack_target Client_Endpoint, created_at 2017_11_14, deployment  
Perimeter, former_category MALWARE, malware_family SunOrcal,  
malware_family Reaver, performance_impact Low, signature_severity  
Major, updated_at 2022_07_22;) 

El formato de una regla es el siguiente:

acción protocolo ip_fuente puerto_fuente ip_destino  
puerto_destino *( palabra_clave: valor; *) 

En el marco de nuestro ejemplo, la acción consiste en generar una alerta que se escribirá en el archivo /var/log/suricata/eve.json. La vigilancia se realiza sobre el protocolo DNS desde la red interna hacia la externa, independientemente del puerto de destino o de la dirección IP.

El mensaje de alerta es: «ET MALWARE SunOrcal Reaver Domain Observed (olinaodi .com) in DNS Lookup». La supervisión se realiza en las consultas DNS utilizando la palabra clave dns.query y buscamos la cadena de caracteres olinaodi.com. La palabra clave nocase se utiliza para no tener en cuenta las mayúsculas ni minúsculas. La palabra clave classtype se utiliza para definir el tipo de alerta. La palabra clave sid es el ID de la firma. El campo metadatos del archivo de reglas se utiliza para dar contexto a la alerta, además del mensaje.

Se puede instalar localmente un servidor de sintaxis con una extensión VSCode. Dicho servidor se puede encontrar en: https://github.com/StamusNetworks/suricata-language-server. La extensión VSCode puede encontrarse en: https://github.com/StamusNetworks/suricata-language-server

b. Ejemplo de detección

Vamos a simular la conexión con el C&C utilizando la herramienta dig.

Images/07EP19N4.png

Obtenemos una alerta en el archivo eve.json.

Images/07EP20N4.png
{  
        "timestamp": "2022-07-26T11:45:18.132448+0200",  
        "flow_id": 51431020037472,  
        "in_iface": "eth0",  
        "event_type": "alert",  
        "src_ip": "172.29.39.245",  
        "src_port": 47847,  
        "dest_ip": "172.29.32.1",  
        "dest_port": 53,  
        "proto": "UDP",  
        "tx_id": 0,  
        "alert": {  
            "action": "allowed",  
            "gid": 1,  ...

Fuentes de los datos

1. Presentación

Existen varias fuentes de datos disponibles en Internet que almacenan indicadores de infección. Estas plataformas pueden utilizarse para enlazar y rastrear los TTP de grupos de atacantes.

Existen varios tipos de fuentes:

  • escáneres (scanner) y crawlers (rastreadores),

  • DNS pasivos,

  • repositorios de malware,

  • fuentes que reagrupan todas estas funciones.

Para todas las fuentes que vamos a presentar, se puede crear una cuenta con el fin de realizar investigaciones. Todas las fuentes de datos disponen de sus propias API web con cuotas de consulta o de resultados. Estas plataformas también proporcionan librerías Python o un cliente de línea de comandos. Las investigaciones se llevan a cabo utilizando fuentes de código abierto (OSINT - Open Source Intelligence; Inteligencia de fuentes abiertas).

2. Escáneres

a. Definición

Estas plataformas exploran todas las direcciones IPv4 en diferentes puertos y recolectan varios tipos de datos.

  • direcciones IP,

  • datos de geolocalización,

  • servicios y aplicaciones accesibles junto con sus distintas versiones,

  • certificados SSL,

  • diferentes tipos de hashes (mumurhash3/sha1/md5) para las respuestas a peticiones HTTP,

  • nombres de dominio,

  • los AS (Autonomous System) a los que pertenecen las direcciones IP.

Cada escáner dispone de su propio sistema de consultas. Estos datos nos permitirán rastrear infraestructuras específicas y, al mismo tiempo, grupos de atacantes. Si un atacante utiliza una determinada configuración de servidor web y ha sido explorado por estos servicios, será posible encontrar otras máquinas con la misma configuración.

Presentaremos tres servicios:

  • Shodan.io

  • Onyphe.io

  • Censys.io

b. Shodan.io

Se puede acceder al portal Shodan a través de la URL: https://www.shodan.io/

Images/07EP32N4.png

Las consultas se realizan en el campo de búsqueda. Para buscar una dirección IP, basta con introducirla en el campo de búsqueda y obtendrá el resultado.

Tomemos el ejemplo de la dirección IP 203.124.43.229, que ha sido descrito como perteneciente a un C&C de Dropper Elephant en este artículo: https://unit42.paloaltonetworks.com/multiple-artradownloader-variants-used-by-bitter-to-target-pakistan/

Images/07EP33N4.png

Hay una serie de datos interesantes:

  • los puertos y servicios accesibles,

  • el histórico de los puertos abiertos.

Images/07EP34N4.png

Es interesante ver los cambios de configuración, las claves SSH que cambian en el lado del servidor o los certificados. A menudo, estos cambios se deben a un nuevo propietario del servidor.

Los puntos de pivotaje interesantes (elementos técnicos que nos permitirán crear vínculos con otros elementos técnicos) son los hashes proporcionados por Shodan:

Images/07EP35N4.png

Si hacemos clic en el pivote, obtendremos solo 49 resultados:

Images/07EP36N4.png

La captura de pantalla muestra la misma configuración FTP con diferentes certificados en 49 máquinas alojadas en diferentes proveedores. Así, podemos agrupar estos servidores gracias a sus configuraciones.

La API está disponible en: https://developer.shodan.io/api y los clientes en diferentes idiomas en: https://developer.shodan.io/api/clients

c. Onyphe.io

Puede acceder al servicio oniphe.io en la siguiente URL: https://onyphe.io

Images/07EP37N4.png

Al igual que con el servicio anterior, podemos realizar una búsqueda directamente de una dirección IP.

Images/07EP38N4.png

Los resultados se clasifican según las categorías.

Una categoría especialmente interesante es threatlist. Una dirección IP aparece aquí si ha sido clasificada por un servicio de terceros al que Onyphe hace referencia.

He aquí el resultado con nuestra dirección IP de ejemplo:

Images/07EP39N4.png

Hay tres pivotes posibles:

  • MD5 body HTTP: es el MD5 de la respuesta HTTP. Este pivote es útil para comprobar si varios servidores devuelven la misma página web. Esto indica que se trata de la misma aplicación y/o del mismo propietario.

  • HTTP headers MD5: se utiliza para encontrar servidores que devuelvan las mismas cabeceras (headers) HTTP y la misma configuración de servidor.

  • Data MD5: el MD5 de toda la respuesta HTTP (body+header; cuerpo+cabecera). 

Haciendo clic en el pivote HTTP header md5, obtenemos cinco servidores que se configurarían de la misma manera:

Images/07EP40N4.png

Este pivote es útil cuando buscamos C&C similares. El conjunto...

Plataformas de inteligencia sobre amenazas

1. Introducción

Se han desarrollado varias aplicaciones de software de código abierto con el objetivo de almacenar, manipular y enriquecer los datos que hemos presentado. Vamos a presentar dos de las más utilizadas:

  • MISP

  • Yeti

Echemos un vistazo a las diferentes funcionalidades de las plataformas y, sobre todo, a las características especiales de cada una. Todas ellas son aplicaciones web que pueden instalarse en un servidor o utilizarse en un contenedor Docker.

2. MISP

a. Presentación

MISP es una plataforma web multiusuario desarrollada en PHP, basada en MariaDB con numerosos módulos desarrollados en Python. Su mantenimiento corre a cargo de CIRCL (Computer Incident Response Center Luxembourg, en este caso CERT Luxemburgo) disponible en: https://github.com/MISP/MISP. Las instrucciones de instalación están disponi bles en GitHub: https://github.com/MISP/MISP/tree/2.4/INSTALL. Los módulos Python también están disponibles en el GitHub del proyecto: https://github.com/MISP/misp-modules. Hay máquinas virtuales disponibles para entrenarse o hacer pruebas en: https://vm.misp-project.org

Las instancias del MISP pueden vincularse entre sí para intercambiar información.

b. Características

Los indicadores se agrupan por eventos. Un analista creará un evento y le asociará indicadores. Los eventos que tiene derecho a ver el usuario se encuentran en la página de inicio:

Images/07EP70N4.png

Haga clic sobre la ID de un acontecimiento para acceder a su información.

Images/07EP71N4.png

Los indicadores están en el evento.

Images/07EP72N4.png

Si un indicador se encuentra en varios eventos, puede ver una lista de los eventos a los que pertenece.

Images/07EP73N4.png

Esto le permite dibujar un gráfico de correlación:

Images/07EP74N4.png

Para crear un evento...

Resumen

La inteligencia sobre amenazas es un área de especialización por derecho propio, y merecería un libro entero. A lo largo de los años, y como consecuencia de los incidentes de seguridad, se han producido avances en este campo, y hoy en día disponemos de numerosas herramientas y documentación para estructurar los datos adquiridos durante estas investigaciones. Los atacantes también han progresado, haciendo de la inteligencia sobre amenazas, o Threat Intelligence, una parte necesaria del arsenal de los defensores.

El intercambio de información, como los indicadores de infección, es esencial. La historia ha demostrado que los atacantes suelen utilizar la misma infraestructura (mismas direcciones IP o nombres de dominio) para infectar diferentes objetivos. Si estos objetivos son capaces de intercambiar estos indicadores y actúan activamente para bloquear la infraestructura del atacante antes de que pueda ser utilizada, esto impondrá un coste (financiero) adicional a los atacantes.