Espacio habilitado para el desarrollo del Hackathon

Crónica del Hackathon en CyberCamp 2015

Por segundo año consecutivo INCIBE organiza el evento de seguridad CyberCamp con el objetivo de atraer, identificar, gestionar e impulsar la generación del talento en seguridad. Un lugar de encuentro donde los desarrolladores tienen la oportunidad de demostrar su potencial en el Hackathon, una competición enfocada al desarrollo de herramientas de seguridad.

Aunque mi compañero Cristóbal ya nos hablara de este evento en Cybercamp 2015 – Mi experiencia como visitante, en este artículo trataré de contaros mi experiencia personal como participante en el Hackathon y dedicaré un segundo artículo para hablaros de la herramienta que comenzamos a desarrollar.

Pero antes de continuar me gustaría agradecer a INCIBE su apoyo y el de todas aquellas personas que estuvieron ahí durante el transcurso de la competición, pero sobre todo a mis compañeros de batalla por su interés, dedicación y compromiso demostrado en una experiencia tan intensa como un hackathon.

Gracias a mis compañeros que no dudaron en ningún momento en sumarse a esta iniciativa, llegamos a formar el equipo Beekeepers para desarrollar SmartHive. Una plataforma de gestión, explotación y despliegue ágil de Honeypots en redes públicas y privadas.

Beekeepers estaba formado por Gonzalo de la Torre; Emilio J. Grande (@erixdev), autor del blog JS Jutsu; Francisco J. Rodríguez (@0fjrm0), al que presentamos hace unas semanas en la sección De Charleta con HoneyStation; y un servidor.

Beekeepers en el Hackathon (de izquierda a derecha: Emilio, Gonzalo y Pedro)

Beekeepers en el Hackathon (de izquierda a derecha: Emilio, Gonzalo y Pedro)

¿En qué consiste un hackathon?

Según la Wikipedia hackathon proviene de la unión de dos palabras: hack y marathon. Un término cada vez más popular usado para referirse a un encuentro de desarrolladores cuyo objetivo es el desarrollo colaborativo tanto de software como de hardware en un periodo de tiempo limitado.

Una experiencia muy interesante desde un punto de vista pedagógico donde se fomenta la comunicación y el trabajo en equipo, se complementan los conocimientos y la experiencia de cada miembro del equipo en pos de un objetivo común, se buscan soluciones eficaces, rápidas y creativas, se favorece el intercambio de ideas entre los equipos, se da un proceso de aprendizaje intenso basado en problemas, etc.

El Hackathon de CyberCamp 2015

Entre los días 26 y 29 de noviembre tuvo lugar la segunda edición de este encuentro en el Barclaycard Center de Madrid. Una competición muy exigente que puso a prueba a los 13 equipos  participantes en el desarrollo y/o mejora de herramientas de seguridad (nuevas o ya existentes) de código abierto.

De tal manera que la comunidad de seguridad se ve reforzada por todos los desarrollos, mejoras y contribuciones que se llevan a cabo durante un breve periodo de tiempo. Más aún cuando esta experiencia debería de servir como catalizador para que todos los proyectos desarrollados en el Hackathon continuaran evolucionando.

La participación en el Hackathon estaba limitada a un máximo de 40 personas, donde los equipos no podían estar formados por más de 4 miembros. Además, las propuestas de desarrollo o de mejora tenían que estar relacionadas con herramientas de seguridad de código abierto, pudiendo pertenecer a alguna de las siguientes categorías:

  • Escáneres para el descubrimiento de equipos, redes y servicios; de vulnerabilidades de sistemas operativos y aplicaciones.
  • Honeypots / Honeynets.
  • Análisis y recolección del malware.
  • Análisis de tráfico de red.
  • Análisis forense.

Evaluación de las herramientas

Pero una competición no tendría sentido si no existiera un jurado que evaluara todos los desarrollos y seleccionara a los 3 equipos ganadores. Un jurado de lujo formado por personal de INCIBE y expertos en seguridad: (de izquierda a derecha en la foto)

El jurado del Hackathon deliberando en la evaluación final

El jurado del Hackathon deliberando en la evaluación final

Para que todo el proceso de evaluación fuera completamente imparcial y no diera lugar a malentendidos, dado que todos los integrantes del equipo trabajamos en INCIBE, se acordó que todos los miembros del jurado participarían en nuestra evaluación salvo el personal de INCIBE. Por ello me gustaría agradecer a la organización el hecho de que nos dejaran participar en la competición y nos trataran (teniendo en cuenta lo anterior) como un equipo más.

La evaluación de las herramientas se llevó a cabo a través de una serie de hitos, que de forma diaria permitían al jurado realizar evaluaciones parciales y poder hacer un seguimiento de los desarrollos. El último día del Hackathon, como hito final, todos los equipos presentaron sus resultados y se realizó una evaluación final en la que no solo se tuvo en cuenta la decisión del jurado, sino la votación de todos los equipos que pudieron influir (en un 15%) en la selección de los ganadores.

Donde los criterios de evaluación utilizados a lo largo de la competición, grosso modo, fueron los siguientes:

  • Funcionalidad y capacidades aportadas por los desarrollos y herramienta presentados.
  • Estructura y calidad del código fuente.
  • Flexibilidad en las opciones y parámetros de configuración disponibles e información de ayuda sobre los mismos.
  • Innovación y originalidad.
  • Calidad de las pruebas de funcionalidad y seguridad realizadas sobre la herramienta (e.g., estabilidad frente a pruebas inesperadas, comportamiento frente a potenciales ataques).
  • Complejidad técnica.
  • Ámbito de aplicación en ciberseguridad y beneficios a la comunidad.
  • Documentación.
  • Calidad de la presentación final del desarrollo realizado.
  • Traducción (opcional).

Desarrollo del Hackathon

El Hackathon contó con una duración teórica de 42 horas (en relación con la distancia aproximada de un maratón), considerando un descanso recomendado de 8 horas al día, que tuvo lugar desde las 16:00 del día 26 hasta las 10:00 del día 29, momento en el que empezaron las presentaciones.

Se desarrolló en un espacio algo limitado para 13 equipos/mesas, pero dejaba de ser un problema en el momento que comenzaba la competición en un gran ambiente rodeado de todas las actividades que tuvieron lugar en CyberCamp 2015.

Equipos participando en el Hackathon

Equipos participando en el Hackathon

Los participantes teníamos que llevar nuestros propios equipos así como todo el material necesario para el desarrollo de la herramientas elegidas. Ya en la propia ubicación del Hackathon, y en determinados momentos, resultaba imposible hacer uso del acceso a Internet que se proporcionó a través de una red Wi-Fi. De cara a próximas ediciones, podría ser interesante contar con una red cableada acorde al número de participantes que proporcionara a los equipos mayor flexibilidad a la hora de desarrollar las distintas herramientas.

Así mismo, la organización puso a disposición de los participantes una zona de acampada en las instalaciones del evento para aquellos equipos que quisieran pasar las 3 noches de duración del Hackathon, ya sea para descansar o para aprovechar la coyuntura y seguir desarrollando en equipo 🙂

Una vez tomado asiento en el Hackathon, el primer día nos sirvió como primera toma de contacto y para conocer de primera mano cómo se desarrollaría la competición, reglas de participación, criterios de evaluación, recomendaciones, etc. Y nada más acabar como sorpresa, ¡tuvimos que pasar el primer hito!

Dado que a esas alturas era prácticamente imposible tener algo ya desarrollado para enseñar, este hito inicial consistió básicamente en juntarse con el jurado para explicarles la idea que teníamos en mente sobre SmartHive, la herramienta que íbamos a desarrollar. De esta forma comprenderían exactamente su funcionalidad, y podrían evaluar ya aspectos como la innovación, originalidad, aporte a la comunidad, complejidad, etc.

Fue entonces cuando el jurado ya nos adelantó que seguramente no tendríamos tiempo suficiente para abordar todas las funcionalidades que pretendíamos desarrollar en el Hackathon. Y efectivamente, a medida que iban pasando las horas y nos acercábamos al segundo hito del día siguiente, ya nos dimos cuenta que teníamos que acotar el alcance del proyecto y centrarnos en cerrar cuanto antes una versión estable de la herramienta, aunque fuera reducida, de cara a la presentación de los resultados y para que el jurado pudiera avanzar con las evaluaciones parciales.

A pesar de no despegar la vista de nuestros equipos y de esforzarnos al máximo durante toda la competición, hasta que no nos vimos dentro no fuimos realmente conscientes del tiempo con el que contábamos para desarrollar la herramienta. Claramente esto se vio agravado por la falta de experiencia en algunas tecnologías utilizadas y por todos los problemas derivados de ello.

Una vez completados todos los hitos del segundo día, se mostró una clasificación parcial con las puntuaciones alcanzadas por los equipos hasta el momento, donde pudieron verse aquellos equipos en cabeza que contaban con las ideas más maduras y con los desarrollos más avanzados. De igual manera, al finalizar los hitos del tercer y último día antes de las presentaciones, se volvieron a mostrar las puntuaciones de los equipos pero esta vez anonimizadas.

Presentación de las herramientas

Después de varios días intensos de maratón llegaba el momento de correr el último kilómetro en el que los equipos tenían que hacer el último esfuerzo para presentar todo el trabajo desarrollado y alzarse con los premios.

Las presentaciones comenzaron a las 10:00 del último día del Hackathon, donde los equipos disponían únicamente de 5 minutos para exponer sus resultados incluyendo una demostración práctica de las herramientas desarrolladas.

Desde Beekeepers conseguimos llegar a tiempo para presentar una versión funcional de SmartHive, aunque muy reducida respecto al roadmap que habíamos pensado para el Hackathon. Sin embargo, el simple hecho de haber participado en esta iniciativa para lanzar este proyecto podría verse perfectamente como una gran oportunidad para retomar el roadmap y continuar evolucionando SmartHive 😉

Beekeepers presentando SmartHive (de izquierda a derecha: Pedro, Emilio y Fran)

Beekeepers presentando SmartHive (de izquierda a derecha: Pedro, Emilio y Fran)

Una vez acabadas las presentaciones, el jurado comenzó a deliberar para seleccionar a los 3 equipos ganadores teniendo en cuenta la opinión de todos los equipos participantes.

Finalmente, la clasificación final del Hackathon quedó de la siguiente forma:

  1. Ontic (YAES)
  2. SecurityArtWork (MEMT)
  3. Cátedra DARS – UNIR (Owade)
  4. UrjcWorks (MontyPlugin)
  5. Iptables lo peta-bles (Googlespoof)
  6. FlyWire Team (FlyPass)
  7. Beekeepers (SmartHive)
  8. Nottingham Prisa (Pyersinia)
  9. ShellWarp (Open Banner Grabbing System)
  10. Mustaco (Auditware)
  11. VulsecureTeam (Vulsecure)
  12. Develovers (Nmap)
  13. Spark Zero (Metasploit)

¡Enhorabuena a todos los equipos participantes por el gran trabajo realizado! A la vista del gran nivel alcanzado por los proyectos, apuesto a que el jurado no lo tuvo nada fácil 🙂

Conclusiones

El Hackathon llegaba a su fin después de 4 días agotadores en los que todos los equipos se esforzaron al máximo en el desarrollo de unas herramientas realmente interesantes en tiempo récord. Unos proyectos que nacieron de esta genial iniciativa que debería de considerarse como punto de partida para continuar evolucionando las contribuciones desarrolladas.

Una experiencia muy gratificante que merece la pena probar si se tiene la oportunidad. No sabemos si volveremos a juntarnos para participar en un hackathon, pero lo que sí tenemos claro es que en caso de ser así, llevaremos con nosotros todas las lecciones aprendidas para hacerlo aún mejor.

Pedro Castillo