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.
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).
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.
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.
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.
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.
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.
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.
Figura 2: Level_Up! en GitHub
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 |
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
- Blockchain & SmartContracts: Una serie para aprender
- BlockChain & SmartContrats: Primer SmartContract con Solidity
- Blockchain & SmartContracts: Cómo probar y desplegar un SmartContract en Ethereum
- WWW, Web 1.0, Web 2.0, Web 3.0, Web3 y ¿Web 4.0?
- Metaverso, multiverso y las tierras digitales en que vivimos en forma de avatar
- Los Fan Tokens vs. las Criptomonedas y los NFTs: Level 101
- Tokenomics: Las criptomonedas y las "Proof-of-work": Level 101
- Los NFTs y el registro mundial de los dueños de activos digitales en el Metaverso
- BitCoin: Blockchain y su investigación
- BlockChain & SmartContrats: El Internet descentralizado y el almacenamiento off-chain en IPFS
- Reentrancy Attack: Cómo te roban criptomonedas por un bug en tu SmartContract
- BlockChain & SmartContract: Bugs que pueden dejar tu SmartContrat "fuera de juego"
- Blockchain & SmartContracts: Patrones y buenas prácticas de seguridad
- Blockchain & SmartContracts: Herramientas de Auditoría de Seguridad de SmartContracts
- BlockChain & SmartContracts: Ataque de phishing a tx.origin y robo de criptomonedas
- BlockChain & SmartContracts: Ataques de Ice Phishing
- Blockchain & SmartContracts: Herramientas de análisis dinámico
- ZIION: Una distribución Linux para auditar SmartContracts (& BlockChain)
- Dominios Web3 en Etherenum Name Service y la trazabilizad de las transacciones Blockchain
- BlockChain & SmartContracts: Actualizar SmartContracts como los grandes protocolos
- Jumping level up (from) web2 (to) web3: Vulnerabilities & SCAMs - SmartContracts
- 20 millones (Euros) en Tokens de Optimism perdidos por no saber cómo funcionan los Wallets Multifirma
- BlockChain & SmartContracts: Cómo crear una DApp de la Web3 con Python (y Flask)
- Pentesting SmartContracts: From Web2.0 to Web3
- Tokenomics 101: Una explicación con gráficos
- Read-Only Reentrancy Attack: $220k robados y otros +$100M en riesgo
- Como utilizar ChatGPT para encontrar bugs en SmartContracts
- BlockChain & SmartContracts: Nuevas áreas profesionales relacionadas con la Web3
- Level_Up!: Una plataforma para aprender a hacer pentesting en Web3 (SmartContracts & BlockChain ) a través de retos hacking
- Level_Up!: Web3 Security WarGames para los amantes del Challenge Based Learning
- Bit2Me Academy: Una plataforma online para aprender de Web3, BitCoin, Tokenomics o Ethereum con cursos gratuitos
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