jueves, junio 29, 2023

Level_Up! Consigue tus NFTs mientras cuando supera retos Web3

En nuestra plataforma de CTFs de Web3 seguimos añadiendo funcionalidades que nos enseñen a nosotros a la hora de llevarlas a cabo y que ayuden a aprender al resto de la comunidad. En esta ocasión, hemos incorporado NFTs a la plataforma de level_up!. La idea es que el jugador que va realizando retos y va consiguiendo puntos pueda reclamar sus NFT por el nivel que va adquiriendo.

Figura 1: Level_Up! Consigue tus NFTs mientras cuando supera retos Web3

La idea surgió hace meses. No es la primera vez que trabajamos con NFT, ya que en el taller de Navaja Negra del año 2022 ya hicimos algunos retos, los cuales tuvieron bastante éxito y gustaron. En esta ocasión, la idea es que cualquier que descargue level_up! desde el Github oficial, pueda después configurar sus NFT y las imágenes asociadas a éstos. Nosotros solo damos una propuesta de la dinámica y el juego de NFTs que se pueden conseguir con los puntos que el jugador va consiguiendo.


Creemos que es interesante disponer de un mecanismo en una plataforma de este estilo en el que puedas alcanzar NFTs en función de tu nivel, es una forma de certificar que tienes un nivel. Por otro lado, se puede visualizar como un sistema en el que si alguien quiere verificar unos conocimientos tuyos, puede hacerlo al comprobar que dispones del NFT nivel X.

Añadiendo NFTs a level_up!

Desde el punto de vista técnico, hemos añadido un contrato que se encarga de gestionar los NFT de cada usuario. El contrato es básico y hemos elegido el estándar ERC-1155 debido a que tenemos una colección, en principio de 5 NFTs, y los usuarios pueden ir ‘minteando’ los diferentes NFT. Es decir, el contrato se encarga de gestionar la colección completa y de proporcionar a cada usuario que cumpla con unos requisitos un NFT u otro. Si eres un amante de los NFTS, te animamos que mires el Market de NFTs de Telefónica que hay algunos muy especiales.


El contrato nft.sol implementa la lógica para hacer esto, pero principalmente hereda del ERC-1155 de OpenZeppelin y, posteriormente, añade alguna funcionalidad. La idea es que cuando un jugador consiga N puntos pueda ir reclamando un NFT. A continuación, proporcionamos el listado de NFTs disponibles en la plataforma:
  • Nivel 0: Newbie. Se consigue con 0 puntos. Sólo por crear el jugador ya puedes reclamarlo.
  • Nivel 1: Rookie. Se consigue con 500 puntos. Necesitas superar algunos retos antes de poder solicitarlo.
  • Nivel 2: Hero. Se consigue con 1000 puntos.
  • Nivel 3: Super Hero. Se consigue con 1500 puntos.
  • Nivel 4: Master. Se consigue con 2500 puntos. 
Actualmente, sumando todos los puntos de los retos de level_up! no se puede conseguir. Está hecho para que cuando sigamos aumentando retos se pueda conseguir. Por supuesto, hay que recordar que level_up! es OpenSource y está pensado para que cada uno pueda descargarlo y montárselo en un entorno local casero y personalice cómo quiera la plataforma, por lo que cada uno puede añadir o eliminar los NFTs que quiera, así como personalizarlo (siempre respetando la licencia de level_up! :D)

Figura 4: Score "0"

Cuando nos registramos como jugador tenemos 0 puntos, ya que no hemos resuelto ningún reto, pero podemos reclamar el primer NFT. Al reclamarlo, se ‘mintea’ el NFT para el usuario y se podrá visualizar en la misma vista de jugador o, incluso, cargarlo en tu wallet de Metamask. Cuando se reclama el NFT se produce una petición de firma de un mensaje. Esto es realmente interesante desde el punto de vista de la seguridad.

Figura 5: Firma con Metamask

Cada vez que se solicita un NFT la plataforma validará si tienes derecho a un NFT por los puntos que tengas. Además, se enviará un mensaje aleatorio para que el usuario lo firme, de forma que se pueda verificar que el usuario es quién debe ser y que el NFT es ‘minteado’ para él. Es un proceso de seguridad necesario en el mundo Web3 para verificar que alguien es quién está detrás de cierta acción. Hay que tener cuidado en no caer en la posibilidad de un replay de la firma, como ya vimos en el reto Replay Me.

Una vez reclamado y firmado el mensaje se valida la transacción y se lleva a cabo. El usuario dispone de su NFT visible en la vista de jugador cada vez que accede. Ya con este NFT se puede visualizar el nivel que tiene el usuario en la plataforma.

Figura 6: NFT "Newbie"

Además, como se comentaba, el jugador puede meter su NTF a su Wallet y llevarlo consigo. Hay que recordar que level_up! está pensado principalmente para entornos privados y de testeo, bajo el control nuestro siempre, pero podrían llevarse en un Wallet sin problema. Cuando uno va consiguiendo superar retos puede ir reclamando NFTs. El botón de Reclamar NFT se habilitará solo cuando pueda reclamar al menos uno por los puntos acumulados que se tengan.

En la siguiente imagen, se puede ver cómo el jugador tiene más de 1.000 puntos y tiene 3 NFTs minteados y visibles en la plataforma. Están indicando el nivel del jugador en la plataforma y la superación de retos por valor de esos NFT.

Figura 7: Puntos y NFTs conseguidos.

En el mes de julio volveremos con un reto nuevo en level_up! y con la liberación de un writeup. Seguimos pensando en mejorar cosas y añadir funcionalidades a la plataforma. Esta nueva versión de level_up! ya fue liberada, por lo que esperemos que sigas aprendiendo con nosotros de la Web3 y los retos de seguridad que esta propone.

El mundo Web3 tiene conceptos nuevos, pero al mismo tiempo es apasionante por las arquitecturas que se pueden construir, así que te animamos a que te hagas un experto en pentesting en este nuevo mundo. Y recuerda que si quieres aprender de estas tecnologías, tienes Bit2Me Academy, que es una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos además del libro dedicado a "Bitcoin: La tecnología Blockchain y su investigación" de Yaiza Rubio y Félix Brezo que seguro que te ayudan a ponerte las pilas.

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

Contactar con Pablo González

No hay comentarios:

Publicar un comentario