Mundos virtuales en 3D


Les presento un proyecto llamado FMXIsland realizado por Grégory Bersegeay (MVP Embarcadero Delphi Francia) que recrea un mundo virtual en 3D realizado con Firemonkey.

Grégory es todo un especialista en el desarrollo de videojuegos y tiene una gran cantidad de ejemplos y demos en su github

Incorpora un mapa que indica el punto en el que te encuentras, lo que es muy útil para orientarte dentro del mundo 3D. Me ha llamado la atención la simulación del movimiento de las olas del mar, que lo hace marcando la propiedad "ActiveWave" del componente tGBEPlaneExtended, también la gestión de colisiones con los objetos del mapa que está correctamente implementada.

Grégory ha realizado una suite de componentes llamada GBE3D, que deriva de los componentes originales de FMX que incorpora Delphi y que permite hacer una abstracción de la complejidad que siempre conlleva realizar el diseño de los paisajes y de los objetos que lo componen.

La suite de componentes GBE3D es necesario instalarla previamente para que se pueda compilar el programa, para ello la descargamos de github, Abrimos Delphi y desde el menú File - Open abrimos el archivo GBE3D.dproj y pulsamos con el botón derecho del ratón sobre GBE3D.bpl y activamos secuencialmente el menú "Compile", después "Build" y por último "Install"


Si la instalación ha sido exitosa en la paleta de componentes vermos unos cuantos nuevos:
TGBEHeightmap, TGBEGrass, TGBECubemap, TGBEViewport, TGBEClouds, etc...
 
Luego hay que añadir la ruta donde esté la librería GBE3D al entorno Delphi.
 
Desde el menú TOOLS - OPTIONS - Delphi - Library y según el entorno donde queramos ejecutar el programa (Win32, Win64, Android, IOS) le decimos que añada una nueva ruta:


Este proyecto se puede compilar con la edición gratuita de Delphi.

En las pruebas que he realizado el movimiento de la imagen es fluido y responde perfectamente a las pulsaciones del teclado.

- Flecha arriba: aumenta la velocidad

- Flecha abajo: disminuye la velocidad

- Escape: detiene el movimiento

- Flecha derecha: rota la imagen hacia la derecha

- Flecha izquierda: rota la imagen hacia la izquierda

 El proyecto muestra:

- cómo usar un mapa de alturas;
- ciclo día / noche;
- el usuario puede moverse y orientarse libremente;
- simulación de nubes;
- tomar captura de pantalla de TViewport3D;
- usar un mapa;
- ciudades iluminadas por la noche;
- detección de colisiones con obstáculos;
- sigue las asperezas del suelo;
- utilizar animaciones de Firemonkey;
- olas en el mar.

El juego no usa ningún módulo de Unity, está hecho desde cero íntegramente con Delphi. 

Estas son algunas de las pantallas del mundo en 3D


Página de github de FMXIsland

Para descargarlo pulsar el botón CODE y en el menú emergente seleccionar "Download.zip"

 

Página personal de Grégory Bersegeay

 


 


 


Analizar malware con reglas Yara utilizando Delphi



A continuación les presento un programa que he realizado para identificar y clasificar muestras de malware utilizando reglas Yara, ya que los antivirus tradicionales no suelen comprobar ciertos aspectos importantes que puede contener un fichero, dado que para conseguir una velocidad de análisis óptima utilizan hashes que cruzan contra una base de datos de hashes de archivos maliciosos.

Yara en este aspecto nos facilita mucho el trabajo, ya que principalmente analiza los strings de los ficheros, con lo que podemos detectar webshells, archivos utilizados en las APT, cryptomineros, macros de office maliciosas, exploits, troyanos, incluso el ransomware más actual como CobalStrike, Ryuk, etc.

En su forma mas básica, la estructura de una regla Yara es la siguiente:

rule Nombre_de_la_regla

{

              strings:

              $test_string1= ”Testing”

              $test_string2= {E1 D2 C3 B4}

              Conditions:

              $test_string1 or $test_string2

}

La regla se activará si las condiciones anteriores se cumplen.

Con Yara también podemos parsear archivos PE (Portable Executable), de la siguiente forma:

Import “PE”

Rule PE_Parse_Check

{

Strings:

$ string_pe=”abc” nocase

Condition:

pe.imports (“Kernel32.dll”,”CreateProcess”) and

pe.imports (“wininet.dll”,”httpsendrequest”) and

$ string_pe

}

 Esta regla buscará el string "abc" y se activará si existe una creación de un proceso y un "http send request"

En general las reglas son independientes de la extensión de los archivos a analizar, es decir si tenemos un documento HTML con una webshell al que se le ha cambiado la extensión por PDF para ocultarlo o dificultar su análisis, al ser examinado por Yara se descubrirá la webshell maliciosa. 

REQUISITOS PREVIOS

Descargar el archivo Yara64.exe desde aquí.

Tienen que guardar las reglas yara, que no son más que archivos de texto con la extensión ".yar" en la carpeta "reglasyar".

Existen en la red multitud de sitios desde donde descargarlas, sólo tienen que buscar en Google por "Yara rules download", para mí uno de los mejores es Yara Rules Project · GitHub

Los archivos que van a ser analizados hay que guardarlos en la carpeta "malware", aunque desde la red también se pueden descargar algunos archivos maliciosos de prueba desde aquí.

Al iniciar el programa se hace lo siguiente:

- Se comprueba que existen las carpetas "reglasyara" y "malware".

- Se leen las reglas y se muestran en pantalla.

Recomiendo ejecutar el programa como Administrador, para evitar problemas con los permisos en ficheros o carpetas. 

Después hay que pulsar el botón "Iniciar comprobación" y en caso de match con una regla se mostrará en la caja "Resultados", tal como muestro en la imagen:


En este caso ha detectado que varios emails tienen imágenes y un archivo adjunto y una webshell en el archivo JFolder.jsp

MEJORAS

Dentro del código fuente, en la línea:

 linea := 'yara64.exe -wf -p 20 ' + '.\reglasyar\' + regla + ' ' + DirSeleccionado;

se pueden añadir modificadores, p.ej.

-r  (buscar recursivamente en todas las carpetas y subcarpetas)

-S (muestra estadísticas)

-m (muestra metadatos)

-w (ignora los warnings)

 

SOURCES

- Programa.rar


ESTRUCTURA DEL PROGRAMA

- Project1.exe

- Yara64.exe 

- [CARPETA] reglasyar (carpeta donde se almacenan los ficheros *.yar)

- [CARPETA] malware  (esta es la carpeta donde se guardan los fichero que serán analizados)

 

La carpeta "reglasyara" almacenará todas las reglas que hayamos descargado de la red.


 





 

El análisis de ficheros con Yara debe ser un complemento al análisis con los antivirus tradicionales, sumando ambas técnicas se los pondremos más difícil a los actores maliciosos que andan por la red, al final esto de la ciberseguridad es como el juego del gato y el ratón, seguro que los creadores de malware ya estarán probando su software para evitar ser detectado por estas reglas, aunque si las estudian en profundidad y ven la potencia que tienen, la verdad es que lo tienen complicado.


 







Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...