Professional Documents
Culture Documents
Introducción
Por aquellos días, solía recibir algún que otro obsequio, de esos que tías, abuelas y
padres suelen dar a sus pequeños de vez en cuando... como varoncito... me tocaba
recibir autos, bloques de construcción y robots (mis preferidos). El tema, es que
generalmente todos esperaban que los autos sean utilizados como autos, los bloques
como bloques y los robots como tales... y en eso yo tenia serios problemas... mi juego..
el que en verdad me divertía... pasaba por desarmar cada uno de ellos y utilizar sus
piezas para armar cualquier otra cosa!! y si alguno de estos juguetes tenia algún
componente distintivo tal como luces, sonido, pilas o motor... sin lugar a dudas tenia
que desarmarlos pues me resultaba imposible aguantar la tentación de saber como
funcionaba!
Obviamente que mis padres, al igual que probablemente los tuyos en tal situación, no se
sentían muy a gusto con el hecho de que su hijo desarmara todo lo que le llegaba a las
manos... sobre todo... cuando pocas veces (mmmm... ehhh... ninguna al decir verdad...)
era capaz de volver a armar el mismo mediante el procedimiento inverso...
Para ser franco, las cosas no cambiaron mucho en mi vida en tal sentido, y la curiosidad
demostrada de pequeño, es hoy día un aspecto con el que me he acostumbrado a
convivir.
Pero que tiene que ver todo esto con la Seguridad Informática o el Hacking? pues
hombre! vaya que si tiene que ver!! no conozco en esta profesión, colega alguno que no
se admita sumamente curioso!!! de hecho... si así fuera... me permitiría dudar de su
pericia técnica y su amor por la profesión. ..
Claro esta que los ética, conceptos y fundamentos, tal como nos encargáramos de
mencionar en artículos anteriores, deben formar parte IMPRESCINDIBLE del
background profesional, a pesar de ello sin práctica, solo podremos convertirnos en un
Figura 1
El Verdadero Aprendizaje
Hasta hace no mucho tiempo, el 99% de los cursos impartidos respecto de seguridad
informática se basaban en clases teóricas y dejaban la parte practica relegada a la buena
predisposición y entendimiento del alumno, quien en el mejor de los casos no conforme
con esta metodología buscaba conocimiento práctico, por ejemplo en los lugares mas
recónditos del underground!! (Saludos para todos mis amigos allí.. :D )
Uno de los motivos de la práctica de hacking sobre ordenadores de terceros por parte de
los adolescentes de todo el mundo, se encuentra relacionado con la falta de
posibilidades de poder llevar a la acción conceptos aprendidos en sus clases formales.
Por suerte, esta situación ha cambiado en los últimos años y cada vez son más las
posibilidades y/o recursos al alcance del alumno.
Dicho esto, espero que la información vertida a lo largo de las próximas páginas te
motive una vez mas a llevar a la acción todo eso que has estado aprendiendo en este
ultimo tiempo, pero esta vez... sin causarle problemas a tu vecino o a ti mismo
metiéndote en problemas de índole legal... ;) no desperdicies tu intelecto... aprovéchalo!
de eso se trata esta nota!!
Figura 2
A romper todo!!
Bien, este artículo a diferencia de otros, no tratará de técnicas, sino que estará orientado
a dotar a tu laboratorio casero, de las utilidades necesarias a efectos de que PRUEBES
cada una de las técnicas y herramientas que habiendo aprendido en algún momento aún
no has tenido oportunidad de llevar a la práctica o requieren de mas esfuerzo para que
terminen por ser de utilidad!
Puesto que como siempre este artículo tiene una extensión acotada, nos hemos tomado
el atrevimiento de seleccionar en forma arbitraria uno de los cuatro escenarios
propuestos, a fin de poder profundizar sobre el aunque sin lugar a dudas con la
información brindad no tendrás ningún inconveniente al utilizar el resto!
WebGoat Project
De las utilidades a las que pasaremos revista en este artículo, “WebGoat” sin lugar a
dudas es el que debería sonarte mas conocido. Puesto que hace tan solo algunos
números nos valimos de el para llevar a la práctica algunas de las técnicas de testing de
aplicaciones web, no nos detendremos mucho en el, aunque mencionaremos su filosofía
y aprovecharemos para destacar algunos de los aspectos que han hecho que mis
alumnos a menudo se refieran a el como su plataforma de testing preferida.
Sucede que tal como se menciona en la web oficial del proyecto, la seguridad en
Aplicaciones Web, es un tema difícil de aprender y practicar. Y si a esto le sumamos
que incluso teniendo la práctica adecuada, muchas veces el profesional de testeo
requiere confirmar que tal o cual herramienta se comporta del modo en que dice
comportarse, la posibilidad de contar con un entorno a partir del cual sea posible
encontrarnos con gran variedad de vulnerabilidades dispuestas específicamente para que
las mismas sean explotadas por el practicante de turno, representa una gran ventaja.
Figura 3
Por ultimo, me gustaría mencionar que en su versión 3.7, liberada en Agosto de este
año, se han agregado una serie de ejercicios (Figura 2) y mejorado algunos aspectos de
usabilidad, que no hacen más que mejorar la experiencia del usuario. Entre las
vulnerabilidades que deberás ser capaz de explotar a fin de concluir con éxito el
programa de entrenamiento dispuesto en “WebGoat” se encuentran:
“WebMaven” (mejor conocido como “Buggy Bank”) (Figura 3), al igual que el resto
de las aplicaciones que lo acompañan en este artículo, es un ambiente interactivo
desarrollado con el fin de que el usuario final pueda aprender acerca de los diferentes
aspectos relacionados con la seguridad de aplicaciones web. La aplicación
específicamente diseñada a tal efecto, básicamente emula varios defectos de seguridad
de aquellos que suelen ser encontrados en la vida real, con el fin de que el usuario pueda
encontrar y explotar los mismos.
Una vez mas, de este modo el usuario tiene a su disposición un entorno contra el cual
probar algunas de sus herramientas con seguridad y mientras practica legalmente varias
de las técnicas de hacking mas conocidas.
Figura 4
Ahora bien, si tienes un webserver en tu entorno de prueba que soporte Perl CGI
Scripts, instalar los archivos de “WebMavent” no te llevara mas de 5’ y te dará unos
cuantos minutos de diversión!
Hacme Bank
Hacme Books
Ok, en los párrafos anteriores hemos tenido oportunidad de presentar de manera muy
escueta, tres opciones con las que cuentas a la hora de poner manos a la obra en el testeo
de aplicaciones desde el punto de vista práctico. Ahora echaremos un vistazo un poco
mas profundo a nuestra cuarta opción: “Hacme Books”.
Para comenzar, diremos que al igual que “Hacme Bank”, “Hacme Books” es un
producto de Foundstone de descarga gratuita, liberado a mediados de este año (Un año
después que su antecesor), el cual fuera desarrollado oportunamente, como entorno de
prueba para los distintos ejercicios dispuestos para los asistentes al curso “Writing
Secure Code - Java (J2EE) class” dictado por la mencionada empresa.
Programado como una autentica aplicación J2EE íntegramente en Java, y con su código
fuente disponible, el alcance de “Hacme Books” va un paso más allá que sus
predecesores permitiendo que desarrolladores experiencia en el desarrollo de
aplicaciones Java, puedan observar directamente en el fuente aquellos errores que no se
debieran cometer y planificar, desarrollar e incluso testear sus propios parches. Pero
ahora nos centraremos en la faceta más popular de “Hacme Books”, el testing de la
aplicación, para lo cual comenzaremos por ver los pasos necesarios antes de poder tener
el entorno funcionando en nuestro equipo.
http://www.foundstone.com/resources/freetooldownload.htm?file=hacmebooks.zip
http://java.sun.com/j2ee/1.4/download.html#sdk
Una vez allí podrás acceder a los links que te permitirán, previo alguna aceptación de
licencia, descargar el archivo de instalación requerido mediante el link que se encuentra
dentro del recuadro mencionado como “All-in-One Bundle”. Por si acaso te perdieras en
el intento, el nombre puntual del archivo que necesitas instalar en tu equipo es:
“j2eesdk-1_4_02_2005Q2-windows.exe”.
Te adelanto que este .exe pesa 116 MB, por lo tanto si quieres evitar esta descarga
porque crees que el SDK de Java ya se encuentra instalado en tu equipo, quizás quieras
primero intentar instalar “Hacme Books” directamente, en caso de que el entorno JAVA
necesario no se encuentre finalmente instalado en tu equipo, el instalador de “Hacme
Books” te lo hará saber e incluso ejecutara tu browser en forma automática, situándolo
directamente en el sitio desde donde podrás acceder a la descarga de dicho aplicativo.
Puesto que entonces ya contamos con los archivos necesarios, ahora si es tiempo de
proceder a su instalación. En ambos casos (J2EE SDK y “Hacme Books”) esta se reduce
a ejecutar los .exe correspondientes y seguir paso a paso las indicaciones de asistente de
instalación. En la Figura 5 encontrarás la secuencia seguida por el instalador de
“Hacme Books”.
Ok, llegado este punto contaremos con nuestro sitio de venta de libros On-line, listo
para ser ejecutado. La instalación habrá dejado en nuestro menú de programas
Figura 5
(Founstone Free Tools / Hacme Books), los links necesarios para arrancar en primera
instancia, el servidor que soportara la aplicación (Start Hacme Books Server), y luego la
aplicación en si misma (HacmeBooks). Si todo ha salido como separábamos, tu browser
mostrara una página idéntica a la de la Figura 6.
Y ahora que ??
página principal, veremos que se nos dan algunas pistas, al menos respecto del tipo de
vulnerabilidades que son provistas con la aplicación:
• SQL Injection
• Cross Site Scripting
• Broken Authorization
• Weak Passwords
• Inproper Use of Crypto
Figura 6
Puesto que en artículos anteriores se han tratado temas tales como SQL Injection o XSS
(Cross Site Scripting), dejaremos estos para que los investigues por tus propios medios,
y en cambio comentaremos brevemente un tipo de vulnerabilidad que suele ser
encontrada a menudo en los sitios de Internet y que se encuentra muy bien representada
en “Hacme Books”.
Figura 7
En el caso puntual del ejemplo que nos ocupan, sucede que la gente que administra el
comercio de venta de libros on-line “Hacme Books”, suele repartir cupones publicitarios
a partir de los cuales nos brinda la posibilidad de comprar libros con algún descuento
extra. A fin de poder llevar a cabo el ejemplo, vamos a suponer que como parte de tu
etapa de “Information Gathering” fuiste capaz de obtener alguno de los cupones
publicitarios que “Hacme Books” suele regalar como parte de su estrategia de
Marketing, y que los mismos incluyen los siguientes Códigos de Promoción señalados
en la Tabla 1.
Nº de
Descuento Otorgado Código Promocional
Cupón
1 15% AEODBOBOOE
2 25% BEAAABBOOE
3 25% BEOABDBOOE
Tabla 1
Para comenzar nuestra prueba, deberemos primero darnos de alta como clientes, para lo
cual deberás hacer click sobre el link dispuesto a tal efecto en la página principal (Not a
member? Signup for an account). Este link te llevara a un formulario similar al
mostrado en la Figura 7, el cual podrás completar a fin de obtener acceso legítimo
como usuario registrado.
Figura 8
Ahora que ya tenemos un usuario y password asignados, los utilizaremos para ingresar
al shopping virtual, y una vez allí seleccionar alguno de los artículos accesibles a través
del tab “Browse Books”. En mi caso he agregado a mi carro electrónico el título:
“Hacking Exposed: Network Security Secrets & Solutions, Fourth Edition”, y tal como
podrás observar en la Figura 8, al momento de procesar nuestra selección (“Proceed To
Checkout”) se nos presenta la posibilidad de ingresar junto a la información de nuestra
tarjeta de crédito, el “Código Promocional” (Promotional Code (recieve 10-50% off).
Pero ahora que pudimos interpretar el uso de los códigos de promoción que “Hacme
Books” reparte a sus clientes, volvamos sobre la información recolectada (Tabla 1) a
fin de ver si encontramos cualquier tipo de patrón respecto de la lógica detrás del
armado de dichos códigos... ok... aquí viene la ayuda... después de todo... la idea es
aprender no crees? pues entonces develemos el misterio tal como se muestra en la
documentación que acompaña esta aplicación! veamos:
Figura 9
Conocemos que de estos tres códigos de promoción, dos poseen un descuento del 25%
y uno del 15%, a su vez al momento de apilarlos podemos observar que existe una
coincidencia en el último grupo de cada uno de ellos:
AEODBOBOOE
BEAAABBOOE
BEOABDBOOE
AEODBO2OOE
2EAAAB2OOE
2EOABD2OOE
Y continuando con este analisis y tomando como punto de partida que la letra “B”
probablemente deba ser sustituida con el número 2, tambien podríamos inferir entonces
que a la “E” podría corresponderle el número 5, a la “A” el 1 y finalmente a la “D” el 4
no crees?:
1504202005
2511122005
2501242005
Parece tener lógica no? tenemos dos números “25” (Recuerda los dos cupones de
descuento conteniendo este porcentaje!) y un número “15”!! Pero pasemos esto en
limpio:
Por lo visto hemos encontrado algo... pero probemos esta teoría en “Hacme Books” a
ver si podemos comprar ese libro que tanto deseamos con algún descuento importante...
digamos un 85% , para ello vamos a ingresar, tal como se muestra en la Figura 9, la
siguiente información:
Si todo ha salido bien y nuestras suposiciones son correctas, deberíamos estar pudiendo
comprar el libro seleccionado (u$s 49.99 + Impuestos = u$s54.11) por solo u$s 8.12
(Figura 10) .
Figura 10
Conclusión
Muy bien... a lo largo de este artículo hemos tenido la oportunidad de revisar algunos de
los recursos a nuestra disposición, a la hora de llevar a la práctica aquellas técnicas que
por uno u otro motivo nunca has tenido oportunidad de utilizar. Al mismo tiempo,
probablemente hayas descubierto un nuevo sitio donde probar aquella herramienta
nueva que aún requiere de algún testing adicional, antes de ser incluida en tu “caja de
herramientas”.
Internet esta llena de recursos desarrollados por gente habilidosa, que al igual que yo,
probablemente se encuentren convencidos, respecto de que la práctica es un factor
fundamental al momento de fijar conocimientos y explorar los alcances de la teoría...
Referencias
http://www.owasp.org/software/webgoat.html
http://www.mavensecurity.com/webmaven
http://www.xitami.com
http://msdn.microsoft.com/netframework/howtoget
http://www.microsoft.com/sql/msde/downloads
http://java.sun.com
http://www.foundstone.com