jueves, marzo 16, 2023

Level_Up!: Web3 Security WarGames para los amantes del Challenge Based Learning

Recientemente se ha celebrado la RootedCON, uno de los eventos nacionales que más profesionales del sector reúne. Este año, desde IdeasLocas, hemos tenido una amplia participación. Teníamos muchas ganas de que llegara el evento y poder mostrar uno de los proyectos que más mimo hemos dado en los últimos tiempos y es que para nosotros Level_Up! es uno de los nuestros y es una plataforma que permite aprender y formarse en la seguridad de Web3 a través de diversos retos. En un artículo previo de este blog hemos mencionado ya algo sobre "Level_UP!: Una plataforma para aprender a hacer pentesting en Web3 (SmartContracts & BlockChain ) a través de retos hacking".

Figura 1: Level_Up!: Web3 Security WarGames
para los amantes del Challenge Based Learning
Imagen Dall-e "painting of a hacker happy in picasso style"

Pero, ¿de qué iba la charla? La charla tenía dos bloques diferenciados. En primer lugar, quería hablar sobre lo que los años de experiencia me han enseñado y es que las personas necesitan de pasión para tener motivación y la motivación hay que cultivarla a través de retos. En otras palabras, la charla sobre level_up! comenzaba hablando sobre la importancia del aprendizaje basado en retos o Challenge-Based Learning. En realidad, no es nada nuevo, en Ciberseguridad es una forma de aprendizaje que se lleva haciendo mucho y que cada vez aporta mayor adicción a estos temas a los alumnos. Digamos, una adicción sana :D


Antes de nada, quise realizar una breve descripción de los elementos de la Web3: Blockchain, Wallet, SmartContract, DApps, transacción… Elementos básicos que se tocan en un proyecto Web3. Además, expuse un ejemplo básico de DApp que interactuaba con un SmartContract y con la Blockchain de forma que fuera más sencillo para el asistente entender la interacción dentro de la Web3.

Figura 3: Ejemplo de componentes Web3

Una vez hablado de los diferentes elementos que existen en la Web3 y que pueden interactuar, comenté qué es la Web2.5 y cómo los elementos Web2 y Web3 pueden coexistir en un proyecto. Es más, Level_Up! es una plataforma 2.5, ya que hace uso de elementos de ambos mundos. En mi opinión, la Web2.5 tendrá un largo recorrido en los próximos años, ya que muchas de las operaciones off-chain se podrán llevar a cabo con estos elementos. La plataforma tiene los siguientes elementos que pueden verse en la imagen:

Figura 4: Elementos de Level_Up!

La arquitectura de Level_Up! funciona de la siguiente forma:
  • Tenemos una DApp que muestra el sitio web y que permite interactuar con el Wallet (recomendado usar Metamask con la plataforma).
  • La DApp permite:
    • Registrar usuarios.
    • Desplegar retos.
    • Validar las flag obtenidas y conseguir los puntos asociados al reto.
    • Visualizar qué retos ha conseguido un usuario.
    • Visualizar las puntuaciones globales de todos los usuarios que están dados de alta en la plataforma.
  • La DApp puede interactuar directamente con los SmartContracts de los retos desplegados a través de un objeto ‘contract’ que puede ser utilizado desde las DevTools del navegador.
  • La DApp puede interactuar directamente con el contrato Base. Este contrato es el que gestiona el alta y baja de jugadores en la plataforma, el que registra qué retos tiene desplegados un usuario y qué flags ha logrado un usuario. En otras palabras, habrá que validar las flags obtenidas contra este reto.
  • Los cambios persistentes quedarán en la blockchain, pero habrá otra información que se almacena en un backend (off-chain) que almacena la dirección de los contratos desplegados, así como los usuarios que están jugando esos niveles. De esta forma se consigue que al levantar la plataforma todo sea más rápido y se evita hacer más transacciones contra la Blockchain.
Como se comentó en la charla, nosotros recomendamos hacer uso de Level_Up! en un entorno de pruebas, ya que la plataforma no está preparada para estar en producción debido a que el ‘backend’ es el que paga cada despliegue sin obtener nada a cambio. No nos hacemos responsables de un mal uso de la plataforma o de utilizar fuera de un entorno de pruebas :D

Figura 5: Arquitectura híbrida de Level_Up!

Después de la arquitectura se mostraron algunos flujos de interacción para que los asistentes entendieran qué pasos había que dar y en qué orden. En este esquema se pueden ver los elementos que aparecen en caso del registro de un usuario. Se puede ver la importancia que tiene el contrato base (el cual puede ser leído en la carpeta Contracts del proyecto y está disponible para que aprendáis más sobre este tema).

Figura 6: Flujo de interacción

En el siguiente esquema se puede ver cómo funciona un despliegue de reto en la plataforma. Desde la DApp el usuario solicita un despliegue de reto al backend y éste ‘paga la fiesta’ haciendo y costeando el despliegue del reto para ese usuario. Para ello debe hacer una gestión con el contrato Base que es el que gestiona toda esta parte. El despliegue del contrato queda reflejado en la Blockchain y a partir de ahí el usuario debe resolver el reto propuesto en ese nivel.

Figura 7: Flujo de despliegue del SmartContract

El último flujo que vamos a ver es el de validar una flag. Cuando se consigue una flag se debe validar contra el contrato Base para conseguir los puntos asociados.

Figura 8: Flujo de validación de flag conseguida contra el contrato Base

Vista la arquitectura y los flujos de interacción. se mostraron temáticas de algunos retos. Actualmente Level_Up! tiene 10 retos de diferente dificultad. Nos hemos marcado como objetivo publicar 1 o 2 retos nuevos cada mes, así cómo hacer un Write-up de un reto al mes, el cual se irá publicando en El lado del mal.

Figura 9: Retos para Level_Up! que se irán publicando

Iremos añadiendo retos y temáticas orientadas a que se conozca más las vulnerabilidades que pueden afectar a un SmartContract, aunque también podemos evolucionar a crear fallos en la propia DApp. Iremos contando el ‘roadmap’ de este proyecto en el que hemos depositado muchas ilusiones.

Figura 10: Libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación"
de Yaiza Rubio y Félix Brezo

Por supuesto, tenéis disponible Level_Up! en su repositorio de GitHub. Os animamos a descargarlo y probarlo. Si alguien quiere añadir algún reto puede decírnoslo y estudiaremos su reto para añadirlo a la plataforma. Las ideas que tenemos con la plataforma son muchas, por lo que necesitaremos tiempo y paciencia para ir incorporando lo que creamos que es mejor para Level_Up!

Más artículos de Web3, Blockchain & SmartContracts
Saludos,

Autor: Pablo González Pérez (@pablogonzalezpe), escritor de los libros "Metasploit para Pentesters", "Hacking con Metasploit: Advanced Pentesting" "Hacking Windows", "Ethical Hacking", "Got Root",  “Pentesting con Powershell” y de "Empire: Hacking Avanzado en el Red Team", Microsoft MVP en Seguridad y Security Researcher en el equipo de "Ideas Locas" de la unidad CDCO de Telefónica.  Para consultas puedes usar el Buzón Público para contactar con Pablo González

No hay comentarios:

Publicar un comentario