Está en la página 1de 9

Publicado en la revista @rroba, n 68, pp. 16-19. Mayo, 2003. Romn Medina-Heigl Hernndez.

Hack21: diario de un participante


2 Edicin del concurso de hacking tico
Ha pasado ms de un ao desde la celebracin de lo que fue un concurso pionero en Espaa. Con unos meses de retraso, Hack21 se ha presentado de nuevo a la Comunidad y una vez ms, all hemos estado, participando, cara a cara con otros compaeros y concursantes. Desde la posicin privilegiada que nos ha brindado este hecho, narraremos escrupulosamente todo lo acontecido durante la celebracin del concurso. Tambin contaremos con la opinin de la otra cara de la moneda: los organizadores del evento. Un poco de historia A finales de Octubre de 2001 se inauguraba oficialmente el primer concurso de hacking tico celebrado en Espaa; su nombre, Hack21. En aquella ocasin el concurso result empaado por diversos motivos, como la extrema dificultad o una mala planificacin del mismo, lo que propici que los participantes pasaran la mayor parte de su tiempo atacando un formulario infranqueable, cuando la vulnerabilidad que se deba explotar estaba en otra parte (concretamente en el servidor DNS). Para ms inri, la mquina del concurso ejecutaba un sistema operativo poco corriente para la mayora de los participantes lo que dificultaba la confeccin del exploit necesario para superar el primer nivel del concurso, y adems el concursante deba tener acceso a un dominio, para que la explotacin del fallo DNS fuera posible. Por ltimo, se intent arreglar el desaguisado a ltima hora y a la desesperada, aadiendo una nueva vulnerabilidad, en uno de los servicios RPC de la mquina. Este ltimo intento tambin fue en vano, ya que el servicio RPC caa cada dos por tres, debido a los intentos de explotacin por parte de los concursantes. Como resultado, el premio se declar desierto y la verdad, no qued muy buen sabor de boca entre el pblico al que iba destinado el evento, que se sinti de alguna forma estafado y defraudado. La nueva edicin El concurso de este ao ha durado algo menos de un mes. Comenz el 4 de Febrero a las 14:00h (con unas horas de retraso, hora espaola) y finaliz el viernes 28 de Febrero a las 14h. Se divida en tres niveles de dificultad creciente y a cada uno de ellos corresponda un premio (una misma persona poda resultar ganadora de los tres premios ya que slo se premiaba al primer concursante que superara cada uno de los niveles, de forma independiente). Los premios eran muy atractivos: una cmara digital, 1500 y 3000 , para los niveles 1, 2 y 3, respectivamente. Adems, en los tres casos se hara entrega de un trofeo, y para los 100 primeros se regalara tambin una suscripcin a una revista de seguridad. En realidad, el concurso estaba diseado para que la probabilidad de que alguien ganara el premio correspondiente al ltimo nivel fuera nfima, con lo cual lo de los 3000 era ms una maniobra de marketing que otra cosa.

El nivel 1 Todos los niveles se basaban en una aplicacin (en ASP) creada a efectos del concurso y que emulaba una tienda de comercio electrnico. La plataforma empleada era Windows 2000 / IIS 5.0 / SQL Server 2000 (lgico, si tenemos en cuenta que Microsoft era uno de los patrocinadores del concurso). Existan dos pginas: la propia del concurso (hackit.hack21.com) donde se desarrollaban las pruebas, y otra (www.hack21.com) donde se encontraban las reglas del concurso, descripcin de los premios y dos foros: uno destinado a los propios concursantes y otro para noticias oficiales de la organizacin. Nada ms conectar a la pgina web del concurso tenamos acceso al catlogo de productos de la tienda virtual, con fotos, descripciones y precios. Arriba a la derecha se poda ver un formulario para entrar en la tienda como usuario registrado, mediante usuario y contrasea. Precisamente ste era el objetivo del primer nivel: conseguir acceder a la tienda como un usuario registrado. Evidentemente no haba formulario de registro gratuito sino una interfaz de administracin, al que inicialmente no se tena acceso: no est en el rango de clase permitido, slo acceso desde la LAN y/o no tiene acceso. Para saltarnos esto, simplemente haba que modificar la cookie y sustituir dos variables por los valores adecuados. La cookie quedaba as: src=172%2E16%2E16%2E1; permiso=1; ASPSESSIONIDSQTQDTQQ=. Para averiguar la clase de la direccin a IP a usar, bastaba con hacer telnet al puerto 80 del servidor web e introducir HEAD / HTTP/1.0, lo que le provocaba la visualizacin de la IP privada del servidor web y nos daba una idea sobre el direccionamiento usado. Por fn estbamos ante el formulario de administracin pero conocamos el usuario y contrasea de la persona encargada de esta funcin? El usuario se poda intuir 2

de otro mensaje de error, puesto a propsito, que deca: el administrador y el usuario de mantenimiento son los nicos que pueden dar de alta usuarios nuevos. Dicho error se mostraba al intentar acceder al enlace nuevo usuario, el cual no vala para nada ms. Y la contrasea? Bastaba con analizar el cdigo HTML de la pgina para encontrar: <!-- CODE: 0x62,0x61,0x63,0x6B,0x75,0x70,0x2F,0x72,0x65,0x63,0x75, 0x70,0x65,0x72,0x61,0x72,0x2E,0x61,0x73,0x70-->. Traduciendo el comentario HTML a texto quedaba: backup/recuperar.asp. As llegbamos a una nueva pgina, con el dibujo de una llave y aparentemente nada ms. Pero si nos fijbamos otra vez en el cdigo HTML de la pgina, abajo del todo, tenamos un fichero codificado con uuencode. Bastaba con decodificarlo para obtener as un archivo ZIP. Dentro del mismo, se encontraba un segundo fichero, el cual no se poda extraer de buenas a primeras, al estar protegido por contrasea. Haba pues que crackear el archivo ZIP. Este punto ha sido duramente criticado, por un lado debido a la obvia dependencia de esta prueba con la CPU de que disponga cada concursante, lo que introduce desigualdades entre los mismos; y por otro, porque la contrasea del ZIP result tener 8 caracteres, lo cual significaba das (s, das) de tiempo de cracking para poder romperla, usando un charset normal (nmeros y letras maysculas-minsculas), incluso en una mquina potente (pongamos, 1-2 GHz). Consiguieron romper la contrasea un grupo de concursantes que optaron por distribuirse el espacio de claves posibles, lanzando as un ataque distribuido. La contrasea result ser: opqlmoeh. Evidentemente, si hubisemos sabido de antemano que la contrasea no inclua maysculas ni nmeros, el proceso de fuerza bruta se habra visto tremendamente reducido. Pero no contbamos con esa informacin.

El fichero extrado contena los hashes (LanMan y NT) correspondiente al usuario cuyo id era el 1010. Tras adecuar el fichero al formato correcto aceptado por la 3

conocida herramienta L0pthcrack, comenzbamos una nueva fase de fuerza bruta. En algo ms de 5h tenamos la contrasea: vutiZUviGi (a pesar de la longitud de la contrasea, este tipo de hashes se pueden romper fcilmente debido a la naturaleza dbil de los mismos; ms informacin en el manual de L0pthcrack). Era de suponer que el id 1010 se corresponda con el usuario de administracin. Slo restaba dirigirse al formulario de administracin e introducir como usuario mantenimiento junto con la contrasea anteriormente hallada. Habamos superado el nivel y debamos rellenar un pequeo formulario con los datos reales del concursante, para que la entrega de premios fuera factible. Estos datos privados (que incluan usuario, contrasea, nombre y apellidos, direccin postal completa y e-mail) seran ms adelante comprometidos, debido a una mala securizacin por parte de S21sec. Este grave hecho ha dado mucho que hablar. Suerte que nadie lo denunci a la APD En cualquier caso, aadir que el ganador de este nivel fue un inteligente concursante apodado Dreyer.

El nivel 2 Al contrario que el nivel 1, este nuevo nivel se poda resolver fcilmente y en su totalidad, en cuestin de horas. Lo ms lgico es que igualmente lo hubiera ganado Dreyer, precisamente por contar con la ventaja de haber llegado el primero. No fue as, hubo irregularidades que lo impidieron, anulando injustamente esta ventaja. Cules? No seis impacientes, todo a su debido tiempo. Comenzamos a jugar en este nivel horas ms tarde de que Dreyer lo hiciera. El objetivo era realizar una compra de un producto determinado de la tienda, pero claro, nuestro usuario registrado no contaba con saldo suficiente. Haba un formulario de bsqueda sospechoso, pero que no funcionaba: obtenamos un error de VBScript extrao y sobre el que nada se poda hacer. Pasamos unos dos das estudiando y analizando todo el escenario y nada, que no haba manera. Hablamos con otros concursantes y estaban en la misma situacin. Ya cansados, uno de ellos pregunt en el foro de S21sec si dicho formulario funcionaba correctamente. Si no recuerdo mal, hubo que insistir una vez ms hasta que los organizadores repasaran el script .asp del formulario de bsqueda y descubrieran que no funcionaba. Estaba mal programado! Y para colmo, era la nica puerta al siguiente nivel! Habamos tirado por la borda dos bonitos das! S21sec se disculp del tremendo fallo y cerr el nivel hasta las 10h del da siguiente. No salamos de nuestro asombro pues era temprano, principio de la tarde.

Tanto se tarda en arreglar un .asp? Mientras tanto, y durante esos ms de dos das de incertidumbre, el pnico cundi en los foros, publicaron incluso la solucin al nivel 1, y hubo bastante gente que lleg al nivel 2 de una manera injusta. Ahora comprendis lo de las irregularidades a las que me he referido antes.

Son las 10h del da siguiente. El nivel 2 comienza a funcionar, con el .asp de bsqueda operativo (por fin). El que ms tarde resultara ganador de este nivel y que haba superado el nivel 1 la tarde de antes, Mandingo, est ah puntual. Segn pudimos saber a posteriori, sobre las 13h aproximadamente ya haba superado el nivel, aunque la organizacin no lo notificara oficialmente hasta media tarde. No tuvimos siquiera oportunidad porque por motivos personales no pudimos empezar a jugar hasta aproximadamente media maana. Por aquel entonces, Mandingo ya era ganador o estaba a punto de serlo. Aunque no perdimos el tiempo: aparte de superar el nivel en unas horas, y sin ser el siguiente nuestro objetivo, acabamos descubriendo cosas interesantes El nivel 2 se superaba mediante inyeccin SQL a travs del recin arreglado formulario de bsqueda. Simplemente haba que inyectar: ';exec dt_setcash_u 'romansoft','hack21'--. Ya est, este nivel era ms sencillo que el primero, y muchsimo menos costoso en trminos de tiempo. Slo haba que indagar un poco en las tablas de sistema del SQL Server, no haba que ser ningn experto en SQL Server; bastaba con utilizar Google y los documentos sobre injecting de NGSSoftware. Como paso previo, tuvimos que inyectar: kkkk' union select 1,'a',1,text,1 from syscomments--. Esto nos muestra la tabla syscomments, dentro de la cual se defina el store procedure que debamos utilizar para pasar de nivel (dt_setcash_u):

CREATE PROC dt_setcash_u @usuario varchar(10), @pass varchar(7) AS if (@pass ='hack21') UPDATE cliente SET saldo = 3000 WHERE usuario = @usuario. Al ejecutar el procedimiento, y si la contrasea era la correcta, nuestro saldo se actualizaba a 3000, que era justo la cantidad necesaria para poder comprar el producto y superar el nivel. Una solucin completamente artificial y distante de la realidad. Tambin mediante inyeccin era posible obtener acceso a la tabla que guardaba los datos privados que los concursantes haban rellenado al superar el nivel 1. Notificamos inmediatamente a S21sec, quien nos requiri pruebas. Se las dimos, y al rato, el servidor del concurso era misteriosamente desconectado, sin ningn tipo de aviso. La mayora de la gente nunca supo la verdadera razn, nosotros s. Entre medias, el login de usuarios al nivel 2 dej de funcionar (los organizadores haban cambiado los permisos sobre la tabla en cuestin, causando un mal funcionamiento generalizado de la aplicacin). Al rato, el servidor volvi a ser activado y de nuevo investigamos la vulnerabilidad descubierta. Esta vez, S21sec haba cambiado de estrategia: no haba cerrado completamente el agujero sino que lo haba parcheado. El formulario usado para inyectar filtraba ahora, mediante una expresin regular, la cadena correspondiente al nombre de la tabla en cuestin. Se pretenda evitar as la manipulacin de la misma. Nos remos bastante, porque una vez ms era trivial obtener acceso a la tabla: bast con cambiar algunas maysculas a minsculas (o viceversa), de forma que nos saltamos el filtro, sin alterar la sentencia SQL usada (parece que S21sec ignoraba que SQL Server es case-insensitive). Notificamos la vulnerabilidad por segunda vez a S21sec, y esta vez exigimos que eliminaran nuestros datos personales de dicha tabla, visto que eran incapaces de protegerlos adecuadamente. El nivel 3 Simplemente era infranqueable. Consista en aadir una cierta cadena de texto (en realidad, un hash MD5 que identificaba al concursante) a la pgina principal de la tienda virtual. Para ello, era necesario hackear el sistema, ya fuera a travs del propio servidor web o bien del servidor de bases de datos. Teniendo en cuenta que tanto el IIS 5.0 como el SQL Server 2000 estaban completamente actualizados, securizados (por ejemplo, la mayora de objetos de IIS haban sido deshabilitados) y con los ltimos parches aplicados, sin olvidar las medidas de proteccin adicionales (como un firewall), la prueba resultaba extremadamente difcil hasta para el hacker ms experimentado del planeta. Se requera descubrir una nueva vulnerabilidad (en apenas dos semanas que restaban de concurso) en un software cerrado (no disponemos de acceso al cdigo fuente) o hacer uso de algn exploit 0-day (es decir, no pblico), si es que realmente lo hubiera. No es de extraar pues que nadie superara este nivel y S21sec se guardara para s los 3000 presupuestados para el premio. Una buena idea pero una mala implementacin. Con estas palabras podramos resumir el concurso de este ao. La historia se repite y, es una pena, porque las intenciones no creemos que hayan sido malas. Quizs S21sec debera poner ms cuidado o destinar ms recursos para el prximo concurso. Deseamos de todo corazn que tomen nota de nuestras crticas (siempre constructivas), y el ao que viene no vuelvan a caer en los mismos errores. A

la tercera va la vencida, esperemos. Al menos, siempre nos quedar la satisfaccin de haber quedado entre los seis primeros puestos.

Entrevista a S21sec organizadores de Hack21@rroba.- Qu les ha llevado a montar este concurso? Le reporta beneficio alguno a S21sec? S21.- S21sec, empresa de Seguridad Telemtica Avanzada, naci en Febrero de 2000 a raz del primer congreso de hackers que se celebr en Espaa en Septiembre de 1999. Conociendo nuestros orgenes siempre quisimos organizar un concurso de hacking propio con la idea de reunir anualmente a todos los amantes de la seguridad para la puesta en comn de todas las tcnicas de seguridad y poner en prctica sus conocimientos y habilidades. S21sec, persigue con estas iniciativas concienciar a las organizaciones de los riesgos a los que se enfrentan y busca dar a conocer la importancia de las tcnicas de hacking tico a la hora de securizar los sistemas de informacin. @rroba.- Cunto tiempo les ha llevado preparar el concurso? Qu infraestructura tanto tcnica (servidores, ancho de banda, software, etc) como humana se ha escondido tras el mismo? S21.- A mediados de Octubre del pasado ao, nos pusimos en marcha en la organizacin de la segunda edicin del Concurso Hack21, empezamos a idear las pruebas que podran disearse y a obtener los patrocinios oportunos. Y, fue a finales de Diciembre cuando el equipo de desarrollo puso todos sus esfuerzos en la preparacin del mismo. 7

@rroba.- Qu infraestructura tanto tcnica (servidores, ancho de banda, software, etc) como humana se ha escondido tras el mismo? S21.- El concurso ha requerido de 5 mquinas: un servidor web, un servidor de Base de Datos, un Firewall para el concurso, un Firewall para la administracin y un NIDS. - Servidor Web, Servidor Windows 2000 Advanced Server, IIS 5.0 y HIDS - Servidor Base de Datos, Windows 2000 Server, SQL Server 2000 y HIDS - Firewall Concurso, Servidor Linux e Iptables - Firewall Administracin, Servidor Linux, Iptables, centralizador de logs - NIDS y consola de Administracin de los HIDS @rroba.- Podran describir brevemente el proceso de securizacin que se ha aplicado a los servidores del concurso? Han utilizado su solucin HIVE? S21.- Principalmente y resumiendo en el servidor de Aplicacin y el Servidor de Base de Datos se aplicaron diferentes tcnicas y polticas de seguridad propias de S21sec as como recomendadas por Microsoft. Los cortafuegos slo dejaban acceso al puerto 80 y a los servicios de administracin que eran nicamente accesibles por S21sec. En breve, podris disponer de un informe completo sobre la securizacin del concurso en nuestra web. Por ltimo, HIVE, cortafuegos de aplicaciones web desarrollado por el equipo de S21sec, no estuvo presente en el concurso pero creemos que el mtodo de encriptacin empleado as como las restricciones que se establecieron en el foro han podido confundir a los participantes. @rroba.- En el foro del concurso se ha hablado de un grave hecho: la fuga de datos personales debido a un mal diseo del nivel 2. Qu tienen que decir al respecto? S21.- Durante la implementacin del concurso cometimos el error de utilizar la base de datos que contena la vulnerabilidad necesaria para la superacin del nivel 2 para almacenar detalles de los usuarios que superaban dicho nivel. Un concursante nos advirti del problema y procedimos a solucionarlo de inmediato, eliminando los detalles de los concursantes del nivel 2 de la base de datos afectada. @rroba.- Tambin ha habido quejas respecto al primer nivel, porque su solucin supona dos pruebas de fuerza bruta, una de las cuales (obtener la contrasea de un .zip) estaba pensada para consumir abundantes recursos (ciclos de CPU) de los ordenadores de los concursantes. Dicho con otras palabras: teniendo en cuenta que no todos los concursantes tienen un ordenador potente, consideran justo que un nivel tenga una tan alta dependencia de la CPU? Por qu se ha diseado as el nivel? Les parece comprensible el enfado de muchos concursantes que se estancaron en la prueba de cracking, simplemente por el hecho de que no contaban con un ordenador lo suficientemente potente? S21.- Las crticas de los participantes sean buenas o malas son importantes y a tener en cuenta para futuras ediciones. Realizar un concurso que guste a la mayora puede ser factible pero ser prcticamente imposible que guste a la totalidad de los concursantes. El primer nivel (cookie, archivos) en ningn momento pretenda ser un caso real, nadie hace un filtrado de IPs con cookies. Lo que se buscaba era conseguir que todos los participantes tomasen parte en la superacin de este nivel y lo logramos con creces. Eran pruebas sencillas pero requeran ciertas dosis de investigacin y paciencia,

virtudes imprescindibles para cualquier persona con dedicacin a la seguridad informtica. El segundo nivel (SQL Server), requera de unos conocimientos avanzados en SQL Server y SQL Injection para superar la prueba. @rroba.- Han considerado la posibilidad de hacerle una oferta de trabajo a alguno/s de los mejores concursantes de esta edicin? Qu opinan de esta posible forma de cazar talentos? S21.- En esta edicin hemos contado con participantes cuyos perfiles se adecuan a los demandados por S21sec por lo que dejamos la puerta abierta a esta posibilidad. @rroba.- El tercer y ltimo nivel ha consistido en encontrar alguna vulnerabilidad en software comercial tan probado y auditado como Microsoft IIS 5.0 o SQL Server 2000, con todos los ltimos parches de seguridad aplicados. Realmente pensaban que alguien lo lograra? Cul era la intencin de una prueba as? S21.- A diferencia de los 2 primeros niveles que se basaban en problemas y vulnerabilidades conocidas, el tercer nivel requera del descubrimiento de una nueva vulnerabilidad. Sabemos que no hay ningn servidor 100% seguro en Internet por lo que este nivel poda haber sido superado a travs de una investigacin interna, exploits 0 days no pblicos u otras fuentes. @rroba.- Qu conclusiones han sacado del desarrollo del concurso? Cul es el balance? S21.- El resultado del concurso ha sido muy positivo y estamos francamente satisfechos. Hay cosas que mejorar para prximas ediciones pero la elevada participacin y el reconocimiento obtenido nos dicen que organizaremos una tercera edicin. @rroba.- Cuntos concursantes han participado? Cuntos no espaoles? Cmo calificaran el nivel tcnico de los mismos? Y su comportamiento humano (participacin en el foro, posibles ataques DoS, etc)? S21.- En total se inscribieron 1600 participantes de los cuales el 80% fue de nacionalidad espaola y el 20% restante de pases sudamericanos (Argentina, Chile, Colombia, Mjico), EEUU y Europa en su mayora. El nivel tcnico de los mismos fue muy elevado aunque nicamente 30 personas fueron capaces de superar el segundo nivel en el tiempo establecido. @rroba.- Cunto tendremos que esperar para el Hack21 3 Edicin? S21.- La tercera edicin est prevista para dentro de 1 ao.

Romn Medina-Heigl Hernndez -[ RoMaNSoFt ]roman@rs-labs.com


[ http://www.rs-labs.com/ ]

También podría gustarte