lunes, 4 de noviembre de 2013

RETO 27 - "HI? Are you alive?

HI? ARE YOU ALIVE? 


Despues de terminado el CTF EKOPARTY (Argentina) y el CTF CAMPUS PARTY (Colombia), quedamos con unos cuantos retos que aún no se han resuelto, por lo que hemos decidido publicarlos independientemente para que se concentren en cada uno a la vez.

El famoso reto 27 del CTF tiene como título "HI? Are you alive?" , el titulo de este reto ha variado en los diferentes CTF pero sigue siendo el mismo archivo para analizar. ¿En que consiste?

Pueden descargar el siguiente archivo y analizarlo, la idea es que a partir de este archivo construyan una herramienta y puedan obtener la respuesta (la flag), esta vez, el ganador será el que desarrolle la mejor herramienta para solucionarlo. La respuesta la pueden enviar a mi correo personal o por el twitter @nonroot.

El plazo para resolver el RETO 27 es el próximo Lunes 25 de Noviembre de 2013 at 8:00AM.

Durante una investigación forense se identificó un archivo sospechoso que al parecer estaba siendo usado para realizar ataques informáticos. Su misión si decide aceptarla, es identificar al posible atacante y descubrir su guarida.

La flag tiene el siguiente formato:

FLAG=SHA1("Attack Vector|Attacker name|Attacker Age(aprox)")
Ejemplo: SHA1(SQL INJECTION|Nikita|39")  = 55a345333a4205755f0062eb4a07dd4530ae3d58
 
¿PREMIOS?

Bueno, no siempre esperen premios,  pero esta vez gracias a @4v4t4r (http://www.sec-track.com/) tenemos la donación del libro "¡Mucho Hacker!" que será enviado al lugar donde vivan.

Adicional a este premio tendrán una entrada gratuita para asistir al evento descentralizado mas grande de seguridad de la información que se esta organizando para el próximo 30 de Noviembre.  


Un saludo para todos, mucho ánimo con el reto!, lo importante es aprender en el proceso. Cualquier duda que tengan pueden buscar las pistas que se dieron durante los eventos mencionados y si no es suficiente pueden escribir a la lista CTF COLOMBIA para recibir apoyo.

Hasta la próxima!

[ RETO CERRADO - SIN GANADORES ] 

jueves, 24 de enero de 2013

Keygen for AppZapper (just for fun)

Esta entrada esta relacionada con el post de AppZapper que hice algún tiempo, donde usando el comando strings se pueden ver usuarios y seriales válidos. Me dio por revisar el algoritmo de generación de las claves y lo ví  como una oportunidad para explicar un poco el uso de IDA PRO como desensamblador "mágico" que nos ayuda a crear keygens. Esto se hace con fines académicos, realmente el AppZapper es una muy buena aplicación, así que si tiene los 13 dolares que cuesta el producto, mejor páguelos, usar seriales falsos? es ilegal.

Para empezar cargamos la aplicación en el IDA (file --> open)


Lo primero que se piensa es como llegar rápidamente a la rutina de validación de los seriales, la forma mas rápida es buscar los strings de validación que ya hemos encontrado como válidos, por ejemplo, busquemos la palabra "Pablo", para esto generamos los strings de la aplicación (view --> open subviews --> strings) y buscamos (Alt+t) la palabra "Pablo".


Para seguir la rutina hacemos doble click sobre el nombre y esto nos lleva a la rutina donde aparece el nombre buscaod, la "nueva vista" de la versión 6.3 de IDA permite ampliar o expandir solo las zonas que deseemos ver, para entrar o salir de las rutinas podemos usar las teclas + y -.


Al entrar a la rutina vemos que realmente estamos en la sección de definiciones de strings, esto es porque los nombres están definidos explícitamente en el sistema, así que tenemos que ubicar el punto desde donde este nombre es referenciado. Para esto nos paramos sobre el nombre (resaltado en amarillo) y presionamos la tecla "x", con esto aparece una ventana donde se muestra los lugares desde donde se invoca el nombre, como se puede ver en la siguiente imagen solo hay un solo punto.


Hacemos click sobre esta referencia y llegamos a la rutina verdadera.


Aquí se puede ver que la rutina se llama a_validatenameA, lo que nos esta indicando que efectivamente es la rutina donde se valida el serial de la aplicación. Algunas veces estos nombres no van a aparecer, todo depende de si la aplicación fue compilada con los símbolos reales y la depuración (debugging) habilitada.

Si aún no están acostumbrados a esta vista pueden regresar a la vista tradicional presionando la barra espaciadora.


Esta imagen nos muestra una hilera de condicionales anidados, del estilo, si este es el usuario válido entonces OK, sino es, entonces verifique el siguiente usuario ...


Si recorremos la función podemos encontrar cada uno de los usuarios válidos que hayamos con el comando string. Esto nos indica que efectivamente antes de generar el serial para un usuario particular, la rutina valida que el usuario no sea uno de los predefinidos, realmente no entiendo porque tienen todos estos usuarios ahí, seguramente tendrá algo que ver con las aficiones de los desarrolladores.

El último usuario que se valida es  "Pablo Sanchez", de modo que si ninguno de los usuarios fue el que se ingreso en el proceso de registro del software empieza una rutina de validación real sobre los datos ingresados.


En este punto entramos a la rutina que nos interesa.

Podemos ver que se carga el offset_3F788 que corresponde con la función lowercaseString(), porque lo primero que se hace es pasar el nombre de usuario a minúsculas. Podemos ir renombrando los offsets presionando la tecla "n" sobre el nombre y escribiendo algo que podamos recordar mas fácil.




El siguiente offset cargado es 3FA50, que apunta a la función mutableCopy(), esta función me genera una copia del valor entrado (con miras a modificarlo) de modo que el valor original no se vea alterado.

El siguientes es 3F530 que apunta a length() que como su nombre lo indica encontrará la longitud de la cadena ingresada.

3FEE4 apunta a la función replaceOccurrencesOfString:withString:o, esta rutina eliminará los espacios en el string que se ingresa .

Luego se carga el offset 3F754 que apunta a la función componentsSeparatedByString:, esta rutina permite dividir un string usando un delimitador. En este caso el delimitador es el carácter "-".

Una vez que el string se ha dividido se empieza a evaluar cada parte, según lo que conocemos de los seriales válidos el formato debe ser: APZP-XXX-XXX-XXX-XXX.

A cada una de las partes le llamaremos bloques, entonces el serial válido tendrá 5 bloques (APZP-Bloque1-Bloque3-Bloque4-Bloque5) como se ve en los ejemplos: APZP-101-109-198-114, APZP-105-108-206-110.

En el offset 3F528 se apunta a la rutina objectAtIndex que se encarga de seleccionar cada uno de los componentes, el primer componente empieza en cero.




BLOQUE 1

El offset 3F4C8 apunta a la función isEqualToString: que se encarga de comparar el valor del primer bloque. Para el primer bloque se compara la palabra "APZP" por lo que entendemos que el serial válido necesariamente tiene  que empezar con ese string.


Si el bloque uno es correcto se evalúa el bloque 2 y así con cada uno de los 5 bloques.

BLOQUE 2

En este punto aparecen dos rutinas mas:

3F9C0 --> intValue  , que se usa para validar que el bloque ingresado sea un número entero.
EFEE8 --> characterAtIndex: , se usa para convertir un carácter a un entero de 16 bits.

Lo que hace este bloque es tomar el usuario ingresado y convertir a un entero corto la letra que esta en la penúltima posición del usuario. Esa penúltima posición se alcanza restándole dos a la posición final del string, para restarle este valor lo que se hace es sumarle -2.

Código en ASM:   add     eax, 0FFFFFFFEh  =   add eax, -2


BLOQUE 3

Aquí se toma el primer carácter del usuario y se convierte a entero, este valor se compara con el valor ingresado en el serial.


BLOQUE 4

En este bloque se toma el segundo carácter del usuario y se convierte a entero, luego se toma el penúltimo valor y se hace lo mismo (se obtiene el mismo resultado del bloque 2), y finalmente se suman los dos valores (add     eax, ebx) para obtener el entero final que debe estar en esa posición.

BLOQUE 5
El último bloque toma la última letra del string de usuario y la convierte a un entero, la búsqueda la hace decrementando el valor  (dec eax) del registro que apunta al tamaño del string.



Al comparar este último bloque solo pueden haber dos caminos, el correcto que registra el programa o el incorrecto que hace que el programa genere un error de serial invalido.



Para automatizar este proceso generamos un script que funcione como keygen, el código es el siguiente:

[Hax0r@HOST] ~ $ cat keygen.py 
##
## Keygen for AppZapper by nonroot (c) 2013
##

import sys

def main():
  usuario=sys.argv[1]
  cusuario=usuario.lower().replace(' ','')
  lusuario=len(cusuario)
  B1="APZP"
  B2=ord(cusuario[lusuario-2])
  B3=ord(cusuario[0])
  B4=ord(cusuario[1])+B2          
  B5=ord(cusuario[lusuario-1])
  print "*********************"
  print usuario
  print str(B1)+"-"+str(B2)+"-"+str(B3)+"-"+str(B4)+"-"+str(B5)
  print "*********************"
if __name__ == '__main__':
  main()
[Hax0r@HOST] ~ $ 


Comprobemos con los usuarios por defecto (hardcoded) que trae el binario.

[Hax0r@HOST] ~ $ python keygen.py "Pablo Sanchez"
*********************
Pablo Sanchez
APZP-101-112-198-122
*********************
[Hax0r@HOST] ~ $ python keygen.py "Stephanie Lee"
*********************
Stephanie Lee
APZP-101-115-217-101
*********************
[Hax0r@HOST] ~ $ python keygen.py "MacZapper"
*********************
MacZapper
APZP-101-109-198-114
*********************
[Hax0r@HOST] ~ $ 

OK funciona, solo queda ingresar los datos generados en la ventana de registro.

[Hax0r@HOST] ~ $ python keygen.py "Intro a IDA PRO con AppZapper"
*********************
Intro a IDA PRO con AppZapper
APZP-101-105-211-114
*********************
[Hax0r@HOST] ~ $ 


Esto es todo, recuerden que la intención de crear este post no es otra que explicar un poco el uso de esta excelente herramienta usada en el mundo del reversing. En ningún momento se busca incentivar el registro de software de forma ilegal, por supuesto yo pagué mi versión de AppZapper ;)

Saludos.

domingo, 2 de diciembre de 2012

Barcamp Security Edition v3.0 (BCSE 2012)


En Colombia se viene realizando un evento de seguridad de la información desde hace tres años, la última versión se realizó el pasado 1ro de Diciembre de 2012 en diferentes ciudades de la país.

A diferencia de otros eventos el Barcamp Security Edition es un evento descentralizado organizado por profesionales en seguridad y cuyo objetivo es reunir a la comunidad en torno a actividades que se realizan durante todo un día. Entre las actividades comunes se tienen charlas, talleres, concursos y retos informáticos orientados a todos los temas de seguridad de la información que por lo general tienen un impacto local (ciudad, departamento, país).

Básicamente lo que hemos logrado es que se realice el evento de forma simultanea en cada ciudad un día del año (mes de Diciembre), tal como ocurre con el FLISOL en el ámbito del software libre. De esta forma se promueve la cultura de la seguridad en todas las ciudades teniendo un impacto mayor que si centralizáramos el evento en alguna ciudad específica.

Obviamente esto tiene sus problemas de logística que se han ido solucionando años tras año.


La versión 3.0 del evento en la ciudad de Medellín se realizó en los auditorios de la Universidad Eafit y como novedad tuvimos un par de concursos diferentes gracias al apoyo de las empresas Dsteam y Kronux que se comprometieron con diferentes premios.

El concurso @warcamp que se hace anualmente tuvo 5 retos informáticos en diferentes categorías, el reto estuvo publicado durante 8 horas sin que alguien se proclamara como ganador, pues no se recibieron solucionarios para ninguno de los retos. (Recuerden que pueden apoyarse para los temas de retos informáticos en la lista de CTF Colombia).

Uno de los nuevos concursos fue un juego de ciberdefensa que se jugó en el intermedio de las charlas con 20 personas, en este concurso algunos simulaban ser whitehats y otros blackhats  y cada uno realizaba su jugada por turnos para obtener puntos. La ganadora recibió un lapicero espía ;)


El segundo concurso fue mas técnico y permitió la participación de jugadores a nivel nacional, consistió en vulnerar la seguridad de un portal web (joomla) y hacer un defacement. El reto estuvo activo durante 5 horas y si bien se recibieron una tonelada de ataques no hubo ganador. El "truco" para resolver el reto era saltarse el sistema WAF que estaba delante del portal. Lo que se pudo observar de la mayoría de los ataques es que fueron automatizados usando herramientas de "pentesting" que no siempre lograrán el objetivo. El premio para el ganador de este reto era un servidor y al no tener uno, la empresa patrocinadora decidió sortearlo entre las personas que estaban inscritos y asistieron al BCSE en cualquiera de las ciudades.

En fin, el evento estuvo bueno y cada vez toma mas fuerza, este año se realizó en las ciudades de Barranquilla, Bogotá, Cali, Cartagena, Ibague, Popayán, Neiva y Medellín. Esperamos que para la próxima versión mas ciudades se unan y podamos mantener lo que hasta ahora se considera el evento descentralizado mas grande de seguridad de la información organizado por la comunidad colombiana.

Por último quiero darle un agradecimiento a todas las empresas de Medellín que siguen creyendo que apoyar este tipo de eventos ayuda a mejorar el ecosistema de seguridad, Defero, Kronux, Adcosy, DSteam y en general a todo el listado de patrocinadores que se encuentra en el sitio oficial del evento.

Un agradecimiento también para todos los desconferencistas y organizadores del BCSE a nivel nacional y en especial para los de Medellín que este año trabajamos como un gran equipo y aunque parezca que siempre somos los mismos haciendo las cosas, año a año son muchos los que se suman al esfuerzo de difundir y aportarle a los temas comunidad. 

Algunas FOTOS aquí.

viernes, 9 de noviembre de 2012

MINI RETO #4 XOR IT



Este reto esta dedicado a todos aquellos que consideren que ganarse una entrada con un sorteo no es meritorio y prefieren hacer un poco mas de esfuerzo ;)

La primera persona que envíe la respuesta correcta al correo fernando.a.quintero AT gmail.com acompañada de un corto resumen explicando como logró solucionarlo se ganará una entrada* para el evento Security Zone que se realizará el 6 y 7 de Diciembre de 2012 en la ciudad de Cali, Colombia.


Muchas veces un XOR es solo el inicio, no pierdas la cabeza con este reto.

Bienvenido al mini reto #4 : XOR IT!

*Gastos adicionales como transporte, alimentación, alojamiento, cerveza, talleres, etc. NO están incluidos.

Buena suerte.

UPDATE:


Durante el reto recibí muchas consultas relacionadas sobre el procedimiento para solucionar el reto, la mayoría de las personas estaban bien encaminadas sin embargo se perdían en algunos detalles.


Aqui les dejo algunas soluciones propuestas:


Juan Esteban Valencia: http://www.sendspace.com/file/yrrd7n


rmolina.co     : http://pastebin.com/mJn13eLE

Como siempre hay varias formas de resolver los retos, un procedimiento de ejemplo es el siguiente:

1. El archivo descargado parece simplemente DATA, si tenemos las pistas (xor) de que es posiblemente un PDF entonces con un "strings" podemos tener pistas para encontrar un byte ("s") repetitivo con el que se hace el xor. En las respuestas publicadas hay varias formas de acercarse a este valor. 

Herramientas útiles:

xor:


xorsearch:


2. El obtener el PDF es solo la primera parte, lo que sigue es abrirlo y tratar de entender de que se trata, el contenido del PDF sirve como pista también. A la mayoría de las personas se les ocurrió buscar el nombre en Internet y efectivamente van a encontrar el PDF original. Cuando los comparen se darán cuenta de que no son iguales. Puede compararlos con: 

vbindiff:


Se pueden ver en rojo los bytes que no son iguales en el archivo entregado para el reto.

3. Conociendo los bytes diferentes los extraigo y los pongo en un archivo diferente, en total serán 256 bytes. Esto se hace con un script en el lenguaje que mas les guste.

4. El paso difícil aqui es entender que hacer con los 256 bytes, pero la pista que se dio apunta a que se trata de un shellcode, para Linux de 64 bits. El shellcode se puede convertir en un binario, la mas fácil es usar un stub que funcione para 64 bits (ojo, no todos los stubs funcionaran y menos los tradicionales). Aqui pueden encontrar algunos:


5. Lo siguiente es analizar el shellcode anterior, el binario generado o ejecutar el binario y analizar su comportamiento (ojo, en algunos casos puede ser realmente maligno :P , se asume que están en un entorno de pruebas o están haciendo un análisis estatico). Con un simple "strings" al binario, con un análisis del shellcode o después de ejecutar el binario encontraran este string:

"|h.l$.L.d$.H..l.%...L.l$.L.t$.l.|$.h.\\\\$.h..a..i..h...i..|.H..T.1...@.l..L..D..a...H.H9.R.H.\\\\$.H.L$|h.L$.l.d$.h..L.%...l.l$.L.t$.l.|$.h.\\\\$.h..a..I..h...I..|.h..T.1...@.l..L..d..A...H.h9.R.h.\\\\$.H.L$|h.l$.l.d$.H..l.%...l.l$.L"

Este string esta fabricado a proposito pues es un string generico en muchos binarios de Linux, así que bien podría ser una pista o ser algo mas. La mayoría de los concursantes llegaron hasta aquí y falto solo un paso como se dijo en los tuits de ayuda.

El ultimo paso era usar este string en el software de horrografia de @hecky :


Dando como resultado la flag ganadora: secxone  ;)

Gracias a todos por jugar!


lunes, 5 de noviembre de 2012

Network Forensics en el SecZone



CONCURSO NETWORK FORENSICS




Si quieres ir al 2º Congreso de Seguridad Informática Security-Zone, aquí está tu oportunidad de conseguir una entrada. 


Escribe un artículo/post introductorio sobre el tema de Network Forensics, comparte la URL de tu artículo en twitter agregando un cc @nonroot , el tuit debe incluir la siguiente frase del concurso: "quiero ir al @SecZone, #Network #Forensics es mi entrada".


Se recibirán artículos hasta el Martes 13 de noviembre a las 23:59 (GMT -5) y el anuncio del ganador de la entrada* al evento se hará el Viernes 16 de noviembre a las 23:59 (GMT -5), el ganador será el autor del mejor articulo publicado. 

Las métricas para la evaluación son:
  • El mas preciso
  • El mas bonito
  • El mejor redactado
En conclusión:  el mas chévere :P

El anuncio se hará por la cuenta @nonroot 

Aclaración:

* La entrada que se entrega es para el evento Security Zone, los días 6 y 7 de Diciembre en la ciudad de Cali, Colombia. Gastos adicionales como transporte, alimentación, alojamiento, cerveza, talleres, etc. NO están incluidos.

Nos vemos en Cali!

miércoles, 31 de octubre de 2012

MISCONF v1.0 CLOSED


The challenge has been closed, but you can still play ...


#
# FLAGS para MISCONF v1.0 (Entorno de entrenamiento hacking en español)
#
# El instructivo del juego se puede bajar de: 
# http://www.sendspace.com/file/9b7c4n (MISCONFv1.pdf)
#

FLAG1:BH-7AA-F00-JB (flag.txt)
FLAG2:OT-RAF-LAG-DD (.htaccess)
FLAG3:87A134E04A6A + 9A515643D879 = 121F28B2422E3 (DUMP)
FLAG4:89-ZZZ-A09-BV  (flag)
FLAG5:93-67X-FTP-9V (banner)
FLAG6:am0__los_CODIFICADORES_0nlin3 (raro)
FLAG7:YH-K9K-LLL-8A (test.php)
FLAG8:GB-WEB-2XD-02 (test3.php)
FLAG9:A_SIMPLE_DESIGN_BUG_XD (solve the challenge)
FLAG10:8U-PLZ-J7A-63 (sysContact)
FLAG11:6H-7AA-F32-AB (en el data)
FLAG12:crypto|stego (visual crypto)
FLAG13:UU-DNS-9OA-NZ (registro TXT)
FLAG14:TT-XXX-PLA-MX (registro MX)
FLAG15:Toy_OFuscaita() (basic reversing)
FLAG16:VO-IPA-STE-XX (sendtext antes de los tonos)
FLAG17:50-600-VOI-PP (sendtext despues de los tonos)
FLAG18:¿Conoces_el_Pr0y3ct0:http://busy-tone.org/?(demo echo)
FLAG19:HE-IPV-6XD-OO  (correo1)
FLAG20:DO-VEC-OTT-TT (banner)
FLAG21:OpenBSD Rulx (correo2, binario openbsd)
FLAG22:P1-4P0-C0C-0D (banner)
FLAG23:9T-UNI-XRU-LX (README)
FLAG24:ESTAFLAGESCOMORARAPEROESLAFLAGCORRECTA (piapoco)
FLAG25:OO-SVN-CVS-OO (commit inicial)
FLAG26:UN-AFL-AGM-AS (commit 47)
FLAG27:SUN TZU (reto .cap)
FLAG28:FE-RON-744-XD (coordenadas)
FLAG29:ES-TEG-ANO-:P (clave de la imagen estegano : cerdo)
FLAG30:e7a1ab1fa73e310a30d43633c5528404

Resultado final después de 2 meses de juego, GRACIAS a todos por participar !
Fig 1. Ranking final
Fig 2. Top 10
Fig 3. Top 33 de jugadores

Todos los que quieran jugar/practicar pueden descargar el siguiente material donde encontrarán pistas:

La maquina virtual : MISCONFv1.0.tgz
El instructivo de juego : MISCONFv1.0.pdf
Las banderas (respuestas) que debes encontrar : FLAGS.txt

Happy Hacking!


martes, 16 de octubre de 2012

Solución al Reto 16 - Un crackme cualquiera


Hace unos días Vicente, líder del proyecto hackplayers abrió un reto relacionado con ingeniería inversa.

Para los que quieran aprender un poco sobre los procedimientos usados en la solución del crackme, les recomiendo leer la introducción y descargarse el crackme desde:

http://www.hackplayers.com/2012/09/reto-16-otro-crackme-cualquiera.html

Y leer el procedimiento paso a paso para solucionarlo en:

http://www.hackplayers.com/2012/10/solucion-al-reto-16-de-otro-crackme.html

Cualquier duda adicional que tengan pueden usar el sistema de comentarios.

PD: Que tal si alguien se hace un dumpeador automático de todos los archivos que tenga el .exe empaquetados?, algo como: http://exe2perl.danuk.ru/ pero que funcione para las nuevas versiones.

¿Alguien se anima?

Saludos!

EKOPARTY 2012 (IN X0R WE TRUST)


Este año tuve la oportunidad de asistir  a la que se considera  la conferencia de seguridad informática mas grande de todo Latinoamérica. La Electronic Knock Out Party o simplemente La EKO ;)

 

Este evento se realiza durante toda una semana en la ciudad de Buenos Aires (AR) y después de asistir a los trainings, ver la calidad de los speakers y participar de las actividades que hacen parte del evento  (retos, concursos, talleres de lockpicking, wardriving, desafio coreX, etc), no me queda mas que reconfirmarlo!, la eko es el mejor evento de seguridad informática en Latinoamérica*.

                            
                                  

* Por lo menos al que haya asistido ;)

Hay unos excelentes posts con información relacionada sobre el evento los cuales recomiendo leer para entender un poco mas de que se trata todo esto:

http://www.securitybydefault.com/2012/09/mi-experiencia-personal-en-ekoparty.html

http://www.securitybydefault.com/2012/09/ekoparty-2012-cronica-del-dia-1.html

http://www.securitybydefault.com/2012/09/ekoparty-2012-cronica-del-dia-2.html

Otra entrada con algunas demostraciones en video:

http://spamloco.net/2012/09/resumen-de-la-ekoparty-2012-fotos-y-videos-de-algunas-demos.html

#JMP CTF

                      
                      

Por otro lado este año junto con @ftbfs nos encargamos de diseñar el CTF para el evento, el cual estuvo bastante concurrido con un total de 150 inscritos y un promedio de 90 jugadores activos distribuidos en diferentes equipos. Algo muy interesante en esta competición en sitio es que jugaron equipos de diferentes paises de Suramerica: Brasil, Uruguay, Chile, Argentina, Perú y Colombia.
                 
                     

Ya que muchos me han preguntado por los retos del CTF de la Eko, voy a tratar de organizar la plataforma para liberarla y que puedan practicar libremente, mientras tanto para los que quieran ver el reto Pre-CTF lo pueden descargar desde el sitio oficial:
http://blog.ekoparty.org/2012/09/ekoparty-pre-ctf-wargame.html

                      
                      

Felicitamos al ganador del CTF --> mj , que con 13/30 banderas se llevó un premio equivalente a 5M de pesos colombianos (el mejor premio que he visto para un CTF latinoamericano).
                                       

Felicitamos también a los amigos brasileros de "Coca Cuela" que estuvieron muy cerca del primer lugar, a los amigos de LimaHack que se sentaron a jugar un rato en el tiempo que tuvieron libre, a los amigos OpenBSDeros que quedaron en 3er lugar y en general a todos los competidores que trabajaron muy duro durante los dos días de competencia. Un gusto conocerlos a todos !

#JMP GOODBOY

Les mentí, la verdad es que la principal motivación para ir a la EKO es ...

Comer Pizza, Carne, tomar Quilmex y reirse con todos los amigos :P



                                                                            


Salud!

NO puedo cerrar esta entrada sin agradecerle a toda la organización de la Ekoparty por el trabajo impecable que realizan en cada edición, en especial a Leo, Jero, Juan y Federico por estar pendientes de  que todo funcionara como tenía que funcionar, un abrazo!

FIN.

Entradas populares