lunes, junio 12, 2023

Level_Up! Configuración paso a paso de la plataforma de pentesting en Web3

En anteriores posts, hemos presentado todos los retos que tiene Level_UP! y algunos writeups de estos. En esta ocasión, vamos a hablar sobre cómo instalar y configurar la plataforma Level_UP! de retos Web3 desarrollada por el equipo de Ideas Locas, para que puedas comenzar a aprender sobre pentesting en Web3 y enfrentarte a los 11 retos que actualmente posee.

Figura 1: Level_Up! Configuración paso a paso de la plataforma de pentesting en Web3

Como ya sabrás, Level_UP! tiene su código disponible en GitHub como proyecto de código abierto. Por lo tanto, el primer paso para comenzar es descargar el repositorio en tu equipo.


Para hacer este proceso, lo único que necesitamos es hacer un Git clone del proyecto en nuestro sistema y listo, ya habremos acabado la primera fase.

Figura 3: git clone https://github.com/Telefonica/level_up

También, vamos a instalar Ganache, que es una herramienta de desarrollo Blockchain que permite simular y desplegar redes Ethereum localmente para propósitos de pruebas y desarrollo. Existen dos formas de utilizar Ganache, mediante CLI o GUIEn este artículo, lo haremos utilizando el entorno gráfico, pero si prefieres utilizar Ganache mediante CLI te aconsejo que visites su página de npm.js donde indican todos los detalles para usar este simulador de Ethereum desde una terminal.


Una vez que hayas instalado Ganache, se abrirá una ventana que mostrará dos opciones. Para comenzar rápidamente, simplemente haz clic en “QUICKSTART”. Esta opción configurará una red Blockchain local de forma rápida y automática, además de generar 10 cuentas con un saldo de 100 ETH para interactuar con la Blockchain. Por cada cuenta, podrás obtener su clave privada y dirección, las cuales serán útiles en los siguientes pasos.

Figura 5: Cadena de Blockchain local

A continuación, será necesario crear en la raíz del proyecto de Level_UP!  un fichero denominado “.env” donde configuraremos las siguientes variables:
  • FILE_BYTECODES_PATH: La ruta del archivo “bytecode.json” que contiene los bytecodes de los SmartContracts.
  • FILE_ABI_PATH: La ruta del archivo “abi.json” que contiene los ABI (Application Binary Interface) de los SmartContracts.
  • FILE_DATA_PATH: La ruta del archivo “data.json” que contiene los datos necesarios para la interacción con los SmartContracts.
  • FILE_CONTRACT_ADDRESS: La ruta del archivo “contract-address.json” que contiene las direcciones de los SmartContracts desplegados en la Blockchain.
  • NETWORK: La URL de la red Blockchain a la que se conectará el proyecto, por defecto, “http://127.0.0.1:7545” para una Blockchain local de desarrollo como Ganache.
  • NETWORK_NAME: El nombre de la red Blockchain, en este caso “ganache-gui”.
  • CHAIN_ID: El ID de la cadena Blockchain a la que se conectará el proyecto, por defecto, “1337” para una blockchain local de desarrollo como Ganache.
  • ADDRESS_OWNER: La dirección del propietario del contrato, que se debe reemplazar con una dirección de cuenta válida en la blockchain desplegada.
  • PRIVATE_KEY: La clave privada asociada a la dirección del propietario del contrato, que se debe reemplazar con la clave privada correspondiente a la cuenta seleccionada. 
  • LEVEL_BASE: El nivel base para el juego, por defecto, 1000.
Estas variables configurarán el entorno del proyecto de Level_UP! y permitirán la interacción con los SmartContracts en la Blockchain especificada. Asegúrate de reemplazar los valores entre corchetes ([...]) con la información correcta para tu entorno.

Figura 6: Valores de nuestro entorno

Para obtener estos valores, haz clic sobre el icono de la llave en una de las 10 cuentas generadas por Ganache. Esto desplegará un modal con la información necesaria para Level_UP!

Figura 7: Variables en Ganache

La plataforma Level_UP! utiliza un framework de Python denominado Flask. También es recomendable el uso de entornos Python virtualizados, como pipenv o virtualenv, para evitar posibles conflictos con otras librerías y versiones ya instaladas en el equipo. 

Figura 8: Libros de Python para Pentesters y Hacking con Python
de Daniel Echeverri publicados en 0xWord.

En Ideas Locas hacemos uso de pipenv, y será la herramienta que se utilizará en este artículo. Mediante el comando “pipenv install” crearás un entorno virtual con pipenv que instalará las dependencias del proyecto especificadas en el archivo “Pipfile” (se recomienda el uso de Python 3.9 o 3.10).


Una vez que las dependencias se hayan instalado correctamente, activa el entorno virtual con el comando “pipenv shell”. Esto te llevará al entorno virtual recién creado, donde podrás ejecutar los comandos necesarios para iniciar Level_UP! Ahora, ya puedes arrancar la plataforma ejecutando el comando “flask run”. Este comando iniciará el servidor Flask y la plataforma Level_UP! estará disponible en la dirección proporcionada en la salida de la terminal (por defecto, http://127.0.0.1:5000/).

Figura 10: flask run

Mencionar que Level_UP! también se encuentra “dockerizado”. Esto significa que, si lo prefieres, puedes utilizar docker-compose para levantar tanto una Blockchain en Ganache como la plataforma, usando únicamente el comando “docker-compose up”.

Figura 11: Docker de Level_Up!

Por último, si accedes a la dirección donde está corriendo  Level_UP! desde tu navegador, podrás ver que para poder interactuar con la DApp es necesario utilizar Metamask o algún wallet similar. Metamask es una billetera de criptomonedas en forma de extensión de navegador que permite a los usuarios interactuar con aplicaciones descentralizadas en la Blockchain de Ethereum, aunque también podremos agregar nuestras propias Blockchains como la de Ganache

Figura 12: Configuración de Metamask

Para ello, procedemos a agregar una nueva red en Metamask. Debes hacer clic en el menú desplegable de las redes y elegir "Agregar red". A continuación, debes hacer clic sobre la opción “Agregar red manualmente” e ingresar el nombre de la red, la URL, el identificador de cadena (por defecto, 1337) y el símbolo del Token (ETH). Una vez que hayas completado todos los campos, haz clic en "Guardar" y la nueva red se agregará a tu lista de redes en Metamask.
 
Figura 14: Resumen del proceso de instalación de Level_Up!

Y eso es todo lo que necesitas hacer para desplegar Level_UP! en tu propia máquina. En el vídeo anterior, te dejamos un resumen en menos de dos minutos de todo este proceso. Os animamos a que si probáis Level_UP! y encontráis algún fallo nos lo hagáis saber vía nuestro buzón público en https://MyPublicInbox.com/IdeasLocas.  Esperamos que disfrutéis del nuevo reto y que sigáis sumando puntos de conocimiento en Web3 y la seguridad de ésta.


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: Javier Álvarez Páramo (Intership en IdeasLocas)

1 comentario:

  1. Hola, gracias por compartir he estado tratando de desplegar el proyecto pero casi al final me da un error con el archivo contract-address.json el mismo debe contener las address de ganache solamente o la salida inicial con todo?

    ResponderEliminar