vxunderground comunidad de analisis de malware

IOC es un indicador de compromiso Los antivirus se basan en la comparación de estas firmas para detectar v+malware Los antivirus más modernos son los que se basan en el comportamiento en vez de en firmas, pero es mucho más complicado.

El concepto de C&C (Command and Control) o C2 se refiere a los sistemas o canales utilizados por un atacante para comunicarse y controlar dispositivos infectados en una botnet (red de dispositivos comprometidos). Estas comunicaciones permiten enviar instrucciones a los bots y recibir datos robados o información sobre el estado de los dispositivos.

Los covert channels son métodos avanzados que ocultan las comunicaciones del C&C dentro de canales aparentemente legítimos o no diseñados específicamente para este propósito. Son especialmente difíciles de detectar y filtrar.

any run es un sandbox online que usaremos

emotet - malware

Guía sencilla de ARM vs. RISC-V vs. x86

Relacionado: VirusTotal. shellcode. ONOS. carpetas. Forense de memoria de sistema completo.

https://picockpit.com/raspberry-pi/es/arm-vs-risc-v-vs-x86/

RISC-V Assembly Programming

https://riscv-programming.org/book/riscv-book.html

FlareVM - Configuración Carpeta Compartida

La red interna se llama malware

La carpeta compartida de w10 es y esta en C:\Shared

He configurado que la carpeta compartida no requiera contraseña para acceder desde remnux y se accede con cd /mnt/shared

Esto en realidad yo lo he hecho con clientsmb porque no me funcionaba

Remnux - Configuración Red

FlareVM - Configuración Red

FlareVM - Desactivar Seguridad

Histórico de remnux

Control Routing

Este paso es el único que creo que no he hecho, pero no lo recuerdo bien

Remnux - Configuración GitHub

En este punto tenemos que clonar un repo de github al que previamente tenemos que ser colaboradores y generar nuestra clave ssh

Despues de generar la clave la copiamos y se la enviamos a junquera para que nos de acceso de lectura y escrituro del nuevo repo

Una vez nos ha dado acceso y lo hemos clonado me meto en la carpeta

creo una rama de git con mi nombre de usuario de github y me cambio a ella dentro de la carpeta de malware creo un nuevo uuid con el comando uuidgen

borro esto ultimo parap oder hacerlo automatico con los scripts

Scripts Automáticos

cambio un par de lineas del primer ejecutable para que funcione bien

aqui ejecuto el primer sh pasandole el nombre de la familia de mi malware y me genera un uuid por lo que los de antes ya no me sirven

aqui ejecuto el segundo script pasandole la ruta del virus y el uuid que ha generado el anterior script

Ahora ya estan todos los archivos creados

Por ultimo añadimos los archivos nos logeamos en git y lo pusheamos

Ahora ya tengo mi rama con mis archivos

En realidad hice mal porque subi el zip entero con muchos ejecutables, pero lo he revertido en la rama y mi nueva familia es la de ec…

despues hay que copiar la muestra a la carpeta malware

Inventariar muestra manual

despues hay que usar los siguientes comandos:

Taxonomía correcta

du ssdeep *

clamscan …

sudo freshclam si da error el anterior para actualizar la bbdd ms

Tareas casa: tengo que subir cada uno de los ejecutables dw mi virus y analizarlos todos con el clam hasta qeu de virus. despues tengo de cambiar el nombre de la familia y asociarlo a una taxonomia que hay en el ppt, tipo … despues hay que ejecutar el virus en un sandbox, como puede ser joesandbox

en este punto he buscado un archivo que el clamscan si que de que sea malware

y saco el hash para poder buscarlo en virustotal

con esta info ya puedo darle el nombre con la taxonomia adecuada:

Trojan:Win32/MustangPanda.A

Ahora tengo que volver a añadir esta muestra a git en la carpeta de samples de thejungle en mi rama

dentro de samples creo la carpeta con el nombre Trojan.Win32 y dentro la carpeta MustangPanda.A donde debo colocar los siguientes archivos

aqui hago los hashes

y aqui creo los archivos y añado el zip solo del archivo troyano que es el 3c… desde el file explorer

ahora subo todo lo nuevo a git con git add “archivomodificado o ruta de carpeta para que los suba todos”

Lo primero que hacemos cuando tenemos un bicho es inventariarlo:

Probamos con file… Sacamos los hashes

Despues binwalk… nos da la estructura del fichero, nos dice que en una posicion concreta hay un gzip compressed data

dd if=main.cvd bs=1 skip=512 count=100 | gunzip para descomprimir lo que hay dentro. if es input file no es una condicion

es importante que aparezca el tamaño de la muestra: du -sh*

Con el comando strings podemos sacar strings de un archivo pero es mejor usar rabin2: rabin2 -zz para que lo analice como un binario y -zzz para forzar

aqui se puede ver la respuesta del comando de abajo

uso de head y file para ver de que van los archivos

con este comando para dll:

playgame es muy caracteristico de la nueva muestra de junquera

Para buscar algo en concreto usamos grep con expresion regular

para buscar ips

Entropía:

con este comando podemos ver la entropia de una fichero con la hherramienta de github de junquera

otro ejemplo:

Nomalmente cuando se dispara la entropia es cuando hay algo dentro porque esta cifrado.

Esteganogrfia: tratar de proteger la existencia del mensaje, es decir, el canal.

con file vemos si son PE o sin es otra cosa que no parezca

floss … solo sirve para PE´s

con grep podemos buscar tambien

aqui ya vemos que este dll tiene una muestra de wannacry, que es un ransom. contiene una lista de extensiones que puede cifrar.

la muestra de 03… es un poliglota. son archivos que se pueden ejecutar de diferentes formas, si lo abres como imagen sale una imagen , si lo descomprimes, se hace, si lo abres con un navegador se ve una web…

todo esto debemos documentarlo en el readme.md de nuestra rama de jungle

ahora tenemos que hacer como actividad de clase esto con los 4 archivos de samples menos el 03… que lo he borrado

faltaria alguna cosa mas de esta lista. después habría que subir todos los archivos correspondientes a github con la taxonomía adecuada

Reglas YARA

Sistema para que codifiquemos los patrones que buscabaos con exp reg, para que busque solo de x tamaño…

crear archivo rule.yar con las reglas que queramos y despues usar el comando yara rule.yar para que nos devuelva los strings o las condiciones que sigan esos patrones

BORRAR ESTO poner una foto de la regla y de la ejecución

xxd para el numero magico

cuando ponemos uint16(0) es para que el priemr byte sea…

el entry_point en un PE es exactamente el main osea la mitad del archivo y es donde se empieza a ejecutar el codigo?

lo que tengo que hacer para el lunes que viene: en /info/rules tengo que crear una regla de yara para mi muestra de mustangpanda. en el readme tengo que ir analizandolo y en names.txt actualizar los nombres de la muestra

este es el readme en el que ay estoy añadiendo las cosas de mi muestra Ya esta actualizado en git

S7

Lo primero que he hecho ha sido hacer un pull de master y mergearlo con mi rama pero como me ha salido mal he tenido que borrar la carptea y volver a hacer un git clone

Para otra ve solo tengo que ir a la rama master bajar los cambios con un pull origin master, cambiar a mi rama, bajar lo que haya en mi rama, y hacer merge master desde mi rama.

Formato PE

DOS HEADER estan ya obsoletas

NT HEADERS son las que realmente vamos a suar cuando ejecutemos un pe

rsrc en windows guarda el icono del ejecutable

Cabeceras relevantes

adressofentrypint y imagebase son cabeceras importantes e magic es el numero magico

Los archivos PE están divididos en secciones, que contienen código, datos, recursos, etc. Algunas de las más importantes:

  • .text → Contiene el código ejecutable del programa.
  • .data → Contiene variables globales y datos inicializados.
  • .rdata → Contiene datos de solo lectura, como strings y Import Address Table (IAT).
  • .rsrcAlmacena los recursos del PE (íconos, imágenes, cadenas de texto, menús, etc.).
  • .reloc → Información para reubicar el PE en memoria.

El e_magic puede revelar PE corruptos o camuflados.

Las NT_HEADERS contienen la dirección de entrada (Entry Point), lo cual es clave para analizar si un malware se ejecuta desde un sitio sospechoso.

La sección .rsrc a veces contiene shellcode o payloads ofuscados, en lugar de solo íconos.

La tabla de importaciones en rdata puede revelar funciones sospechosas (VirtualAlloc, CreateRemoteThread, etc.).

CFF explorer

herramienta de remnux para analizar PEs

En este punto he copiado las carpetas de malware a la carpeta compartida shared para poder analizar el flarevm

primero vamos a trabajar con el a60a10…

tengo que ir cambiando los nombres de los ficheros con los nombres del names.txt y despues cuando los tenga meterlos en una carpeta del flare que llame 20250224 y hacer una instantanea.

para esto tengo que descomprimir los zip y cambiar el archivo .malware por el nombre que haya en names.txt

vamos a comparar los sectionheaders de upx.dll con el fichero mylib.dll

en cff que es una herraminta de flarevm hay un apartado abajo a la izda que pone upx utility que sirve para desempaquetar

export directory de mylib.dll podemos ver una funcion que se exporta llamada playgame

en import directory estan los imports en el caso de mylib hay 2 librerias y por cada una de ellas nos pone las que importa cada una

en cff en import directory podemos ver:

un handle es un identificador de un proceso/fichero createfile nos devuelve un handle, no crea el archivo lockresource?

en resource directory estan los recursos o archvios que no son codigo.

con estos datos podemos ver que el malware va a buscar cosas dentro de si mismo, y las va a ejecutar.

en resource editor podemos ver tambien el codigo magico y ver de que se trata

cuando hemos extraido el recurso que hay dentro del mylib lo que hacemos es exportarlo y guardarlo en re,mnux en la carpeta de la familia. volvemos a hacer todos los comandos de inventariado: abrir mylib abrir los recursos el 101 se abre se da a guardar fuera replce resource? o otra opcion y guardar como mylib2.dll. lo abrimos otra vez con cff y ya si que es un ejecutable (antes realmente no lo era) que podemos ver correctamente.

AHORA sin nos vamos al import vemos que importa cosas diferentes crea servicios y los arranca tambien carga recursos. y si nos vamos otra vez a resources vemos que hay otro ejecutable. es lo que se llama matrioska

implash -

todos los upx son muy parecidos, no todos son malware, pero si que se utilizan mayoritariamente para eso.

como sabemos si es un packer o no: podemos ver la entropia con PeID wn la parte de abajo donde las dos flechitas se pueden ir ejecutando cosas que nos dan otras metricas.

otra herramienta es pestudio

dll to exe es otra herramienta

upx.exe es otra herramienta

para la proxima clase: de donde salen los pe, como se han heredado dsde ntdll hasta .net?