Seguridad

Deny_to_me Challenge activado en la plataforma Level_up! de retos hacking Web3

Hace un mes publicamos la plataforma de Level_Up! y estamos muy orgullosos de ella. En la pasada RootedCON la presentamos y mostramos nuestros objetivos respecto a ella. La idea es publicar un reto nuevo mensual y escribir un Writeup sobre un reto mensual. Es algo que dentro del equipo de IdeasLocas podemos llevar a cabo, ya que la inclusión de un nuevo reto en la plataforma no supone un gran desarrollo o un gran quebradero de cabeza.

El primer Writeup podemos decir que fue publicado en febrero, antes de presentar la plataforma. Escribimos un artículo dónde comentábamos lo que sería esta plataforma y las opciones que tendría. El reto que hemos llamado ‘interact’ y que para nosotros internamente se denomina ‘zero’ es un reto tutorial, en el que mostramos paso a paso cómo se irán obteniendo las flags de los diferentes desafíos y cómo se deberán validar dichas flags para obtener los puntos dentro de la plataforma. Si queréis saber más sobre este tutorial tenéis más información en el artículo sobre level_up! y el reto interact.

Reto Deny_to_me   

Hoy traemos el reto / desafío del mes de abril. El reto se llama ‘Deny to me’ y hablará de la importancia de programar de forma segura para evitar los ataques de denegación de servicio. Ya tienes disponible en el Github de Telefónica la nueva actualización de level_up! con el nuevo reto.


En la imagen siguiente se puede observar que es el reto número 11, ya que empezamos en el número 0. La dificultad de este reto está catalogado en 4, por lo que no es un reto de introducción al mundo de la ciberseguridad en Web3. Si tú quieres comenzar a introducirte en el mundo de la ciberseguridad en SmartContracts y proyectos Web3 te recomendamos que empieces por el tutorial (dificultad 0) y continues con retos como el de ’Questions’ o el de ‘Safeguarding’ (dificultad 1 y 2 respectivamente).

Figura 3: Dificultad del reto 10 «Deny_to_me» es 4

En la siguiente imagen, se puede observar la descripción que presenta el reto ‘Deny_to_me’. Se puede observar que hay cinco pasos y una pista. En algunos retos se pueden encontrar un mayor número de pistas, pero en esta ocasión, el desarrollador del reto ha decidido que con una pista es suficiente.

Figura 4: Descripción del reto «Deny_to_me»

Como se puede leer, el reto trabajará el concepto de la denegación de servicio. Se deberá conseguir una denegación de servicio en el contrato del reto y poder validarla para conseguir la flag. Siempre que en level_up! trabajemos con retos debemos tener en cuenta que necesitamos leer el código, para eso lo proporcionamos. Creemos que es una forma interesante de estudiar y aprender, a través del código de la lógica de los SmartContracts.

Cuando se despliega el reto a través del botón ‘Deploy Contract’ se debe acceder a las ‘Dev Tools’ del navegador. Desde la consola de desarrollo del navegador, se puede acceder a través del comando ‘help’ o ‘help()’ (depende del navegador) a la ayuda. Disponemos de 3 objetos con los que interactuar: player, base y contract.


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

El objeto player almacena la dirección pública del usuario con el que estamos jugando en la plataforma. El objeto base representa la conexión con el contrato base de la plataforma, es el contrato que gestiona los puntos, los jugadores que están jugando, etcétera. Por último, y una vez está desplegado el reto, tenemos el objeto contract, el cual nos permite interactuar con el contrato del reto. Siempre recomendamos que hagas uso de la instrucción ‘contract.functions’ para ver las funciones disponibles. También puedes aprender qué funciones hay disponibles leyendo el contrato, tal y como se puede ver en la siguiente imagen.

Figura 6: SmartContract DenyToMe

Por último, vamos a mostrar un poco la interacción desde la consola y algunas ‘pistas’ de interacción. Estas ‘pistas’ no tienen que ver con el reto en particular y sí con la interacción con la plataforma en particular. Uno de los puntos importantes es el de validar la flag conseguida a través del contrato base. Para ello se hace uso de la función ‘validateFlag’ pasándole la dirección del contrato del reto desplegado y el valor de la flag. Hay que recordar que cada vez que desplegamos un reto con un usuario, la flag cambia, es decir, es dinámica.

Figura 7: ValidateFlag

Esperamos que las Universidades, los chicos y chicas de Escuela 42 y demás hackathones que quieran jugar con una plataforma de retos para Web3 hagan uso de level_up! Pronto traeremos más novedades, además del Writeup del mes de abril que aún no se ha publicado. 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

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.