Está en la página 1de 16

Sistemas de la Informacin

Grado en Ingeniera Informtica


Prctica 1: Skipfish

Jorge Colmenar Casas Juan Sopale Thompson Vctor Puerta Rodrguez

NDICE
1. 2. 3. 4. 5. 6. 7. 8.

Qu es Skipfish? Funcionalidades Caractersticas principales Cmo usar/ejecutar Skipfish? Casos prcticos Limitaciones y/o problemas encontrados Conclusiones Bibliografa

1. Qu es Skipfish?
Nombre: Skipfish Version: 2.10 beta Licencia: Apache License 2.0 Plataforma: GNU/Linux, FreeBSD, Mac OS X y Windows (mediante cygwin) Idioma: Ingls Web oficial: http://code.google.com/p/skipfish/ Manual: http://code.google.com/p/skipfish/w/list?can=1

Descripcin bsica
Skipfish es una aplicacin de seguridad web desarrollada por Google con la intencin en encontrar posibles vulnerabilidades. Genera un mapa interactivo para el sitio especificado mediante un rastreo recursivo y un diccionario basado en sondas. Posteriormente el mapa resultante pasa por diversos controles de seguridad. El informe final generado por la herramienta est destinado a servir como una base para la evaluacin profesional de la seguridad de aplicaciones web. Con esto Skipfish tiene como objetivo verificar si el acceso a una determinada pgina es o no seguro. Skipfish promete mucha fiabilidad debido a la poca tendencia a dar falsos positivos. A pesar de ser multiplataforma, Skipfish est ms orientado para uso en distribuciones Linux. De hecho la distribucin Backtrack 5 incorpora la herramienta como parte de sus aplicaciones de seguridad. Por tanto este tipo de aplicacin suele estar ms orientado al experto en seguridad ms que a un usuario convencional. Otro de los objetivos de la aplicacin reside en ayudar al desarrollador web a realizar aplicaciones ms seguras teniendo en cuenta las consideraciones de Skipfish. Sin embargo, Skipfish es un arma de doble filo debido a que para un atacante la informacin, sobre los agujeros de seguridad de una aplicacin web, proporcionada por Skipfish puede ser muy valiosa.

2. Funcionalidades

Realizacin de test para detectar defectos de bajo, medio y alto riesgo.


o

Defectos de riesgo alto. Los test permiten analizar bases de datos utilizadas por el sitio web para revisar los parmetros configurados. Del mismo modo permite detectar errores de formato en el cdigo del sitio web y comprobar las conexiones http generadas.

Defectos de riesgo medio. Test que se encargan de analizar las directivas de cookies almacenadas en cach y los scripts CSS generados por el usuario y que puedan generar conflictos con la visualizacin de la pgina.

Defectos de riesgo bajo. Test que tratan la realizacin anlisis relacionados con el almacenamiento de credenciales de usuarios en el sitio web y la validez de los certificados SSL utilizados.

Deteccin de alertas internas. Las alertas internas se encargan de detectar errores de bsqueda de ficheros pertenecientes a recursos de la aplicacin web y realizar filtros por IP en el propio sitio web.

Deteccin de fallos en enlaces. Facilita al usuario la bsqueda de servidores o enlaces que ya no se encuentran disponibles o que han sido re direccionados a otro lugar y utilizando un protocolo desconocido para el desarrollador de la web.

Anlisis de seguridad de la informacin Analiza el propio sitio web para buscar vulnerabilidades en los recursos utilizados por los usuarios que acceden al portal. Se buscan irregularidades internas en el servidor: ficheros del sitio web que no pueden ser accedidos por los usuarios o cuya seguridad puede verse comprometida cuando es ste quien enva dichos ficheros al portal, direcciones de correo externas que podran no pertenecer a un usuario de la propia aplicacin, etc. Verifica la integridad y confidencialidad de la informacin.
4

Capacidad para evitar ataque a claves por fuerza bruta La herramienta es capaz de detener ataques por fuerza bruta que comprometan la seguridad de las claves de los usuarios. Por consiguiente, esta aplicacin posee mecanismos para analizar los campos de entrada de contraseas y formularios y evitar as los ataques.

3. Caractersticas Principales

Alta velocidad Skipfish est desarrollado en C por lo que tiene un uso de CPU bajo. Sin embargo, hay otros factores que aumentan la lentitud, como son el tamao de la pgina o aplicacin web, la velocidad de Internet o el uso extenso de diccionarios que son usados para rastrear cualquier directorio o fichero ubicado en el servidor. Skipfish mejora el uso de los diccionarios.

Diseo de la interfaz Skipfish no posee interfaz grfica, por lo que el usuario necesita abrir una lnea de comandos para ejecutarlo. De este modo, el usuario debe conocer todos los comandos y opciones necesarios para realizar cualquier tarea de anlisis de seguridad en su pgina web. Est orientado a un tipo de usuarios ms avanzados, ms que al usuario convencional.

Facilidad de uso Para comenzar, Skipfish debe ser compilado antes de proceder a su instalacin. Este proceso necesita de una serie de libreras, dependencias de la aplicacin, y esto resulta de una dificultad aadida para usuarios inexpertos acostumbrados ms a las instalaciones a base de clicks. Las libreras no son mencionadas en la pgina web de Skipfish. Aunque en tutoriales de Internet si muestran las libreras necesarias para Skipfish.

Una vez compilado e instalado, Skipfish se ejecuta a travs de comandos introducidos por consola. Un ejemplo seria el siguiente (en Linux): ./skipfish -o <salida> -S dictionaries/<diccionario>.wl <URL> Skipfish analizando la URL

Accesibilidad

Esta aplicacin no cuenta con herramientas que ayuden a la accesibilidad de los usuarios. Tan slo es posible utilizar las herramientas que el sistema operativo ofrece para tal fin. Es decir est enfocado a un tipo de usuario ms avanzado y concreto.

Multiplataforma

Puesto que Skipfish debe ser compilado antes de ser ejecutado y se encuentra escrito en un lenguaje de programacin como es C, la aplicacin se encuentra disponible para GNU/Linux, FreeBSD, Mac OS X y Windows, por lo que los usuarios podran utilizar este conjunto de herramientas en cualquier mquina sin ningn tipo de problemas.

4. Como ejecutar Skipfish


Primero son necesarias unas libreras que hay que instalar. Estas son libidn11-dev, zlib1g-dev, libssl-dev y libcre3-dev. Despus, se compila con make. Y para ejecutarlo, le pasas como entrada el diccionario que quieres que utilice, el fichero de salida donde quieres que guarde los resultados obtenidos y la URL de la web que quieres analizar: ./skipfish -o <salida> -S dictionaries/<diccionario>.wl <URL> ./skipfish -o <salida> -W <diccionario> -S <diccionario de solo lectura>.wl <URL>
En la ayuda de la aplicacin (./skipfish h) se muestran ms opciones.

5. Casos prcticos
Antes de comenzar con los casos prcticos que hemos probado, vamos a comentar brevemente como muestra los resultados Skipfish. Cuando la aplicacin finalmente termine nos mostrar los siguientes mensajes:

Los resultados se almacenan en la carpeta que se haya especificado, solo hay que abrir el archivo index.html para verlos, se recomienda abrir con Firefox ya que con Google Chrome no se muestra la primera seccin (Crawl results). En la parte superior derecha tenemos ms informacin como el tiempo que ha estado trabajando, la fecha, la versin de Skipfish y la semilla utilizada. Un ejemplo es el siguiente:
7

Podemos ver como los resultado se agrupan en 3 reas. La primera es Crawl results, nos permite navegar por el sistema de ficheros:

Y ver donde se encuentran las mayores vulnerabilidades. El siguiente rea es Document type overview que nos permite ver qu tipos de ficheros hay en el sitio web, lo ms comn son los ficheros html, pero tambin podemos encontrar swf (flash), pdf etc. La ltima rea agrupa los ficheros por vulnerabilidades, desde las ms graves hasta las notas, con una pequea explicacin de la posible vulnerabilidad encontrada. Para ayudar a la comprensin y resolucin de la vulnerabilidad podemos ver cul ha sido la peticin y cul la respuesta del servidor dando al enlace show traces +. Por ejemplo esta es la peticin de la posible vulnerabilidad grave del sitio web:

Caso www.iesdionisioaguado.com Con esta pgina hemos tenido una curiosa experiencia, dos de nosotros hemos probado Skipfish contra este sitio web, y los resultados obtenidos han sido distintos, esto se ha debido a que Skipfish detect un error mientras trabajaba, y no entr a la seccin del departamento de matemticas mientras que el otro de nosotros Skipfish si entr (y encontr una vulnerabilidad grave) pero tras 10 horas de ejecucin par el programa ya que el sitio web es muy grande. Para poder sacar los resultados de la seccin de matemticas sin repetir todo el anlisis hemos utilizado la opcin -I
http://www.iesdionisioaguado.com/matematicas que permite que solo analice aquellos que

solo tengan en su URL el termino definido, en este caso es una URL completa por lo que solo analizar dentro de ese directorio. Caso http://www.urjc.es/ A continuacin hemos analizado la web de nuestra Universidad. Al ser una web muy grande, Skipfish ha estado mucho tiempo analizndola. Los resultados obtenidos son estos:

Para la web de la universidad, Skipfish ha detectado 4 errores graves de seguridad, 6 riesgos medios y 9 de riesgo bajo. Centrndonos primero en los riesgos graves, se puede ver que son Shell injection. Esto significa que cualquier persona con malas intenciones podra introducir comandos o cdigo malicioso poniendo en serio peligro la seguridad de la web. Ms concretamente si abrimos uno de los 4 riesgos graves:

Vemos como hubo un error interno que no pudo completar la peticin. En esta peticin podra haber sido ejecutado un script, comando o consola que hubiera dejado a la pgina web a expensas de cualquier atacante, poniendo en compromiso el sistema entero. Siguiendo con los riesgos medios, existen contenidos externos a la pgina web como puedan ser videos, imgenes,, que Skipfish ha considerado como riesgo. Aqu pensamos que se da un falso positivo ya que son contenidos de la propia universidad, en particular la unidad de prcticas externas, por lo que no son externos a ella.
10

Caso www.campusvirtual.urjc.es Nuestro tercer caso ha sido el Campus Virtual de nuestra Universidad. Los resultados que hemos obtenido son los siguientes:

Se han encontrado 25 vulnerabilidades de riesgo medio y 283 de riesgo bajo, el campus podra ser vulnerable a XSS (Cross-site scripting), analizando los resultados se observa como realmente no lo es ya que lo que se trasmite es lo siguiente: GET /webct/.htaccess.aspx-->">'>'"<sfi000097v040026>

11

Sin embargo la aplicacin web no coge los smbolos especiales de forma literal sino que los transforma: /webct/.htaccess.aspx--&gt;"&gt;'&gt;'"&lt;sfi000097v040026&gt; de forma que los smbolos necesarios para introducir cdigo como < o > se pierden y por tanto un intento de incorporar cdigo al sitio web de forma ilegtima no es posible. Caso Drupal recin instalado. Un caso que poda ser interesante era probar un CMS recin instalado, para probar la seguridad del CMS con la configuracin por defecto.

En el resultado se nos muestra que sera posible tanto inyeccin SQL como inyeccin por Shell, por tanto sera necesario comprobar si realmente lo es y solucionarlo para evitar ataques maliciosos. Caso Ministerio de Educacin, Cultura y Deporte (MECD):

12

En los resultados procesados por Skipfish, en el index.html, se puede apreciar todas las posibles vulnerabilidades en la pgina analizada. Centrndonos en los problemas de riesgo algo alto se puede entrever diferentes tipos de inyecciones que pueden poner en peligro la seguridad de la pgina web. Por un lado nos encontramos que la web est expuesta a inyecciones SQL. Esto significa que una consulta maliciosa puede poner en riesgo la integridad de la base de datos usada por el MECD. Al abrir una de las trazas nos encontramos con lo siguiente:

Lo anterior representa la peticin realizada al servidor y la respuesta de ste. La respuesta recibida se corresponde con un error interno generado en el servidor debido a la prueba de inyeccin realizada por Skipfish. Esto puede dejar entrever que realmente puede haber un agujero de seguridad en el aspecto de las consultas.

13

Por otro lado, tambin encontramos posibilidad de inyeccin XML y Shell:

En los riesgos de nivel medio nos encontramos con lo siguiente: No cumple con las directivas de control de la cache:

Y aqu ocurre lo mismo que en el caso de la urjc, que es un falso positivo ya que el contenido embebido externo en principio no puede ser considerado una amenaza ya que es de google:

14

A continuacin hablaremos de los warnings y las notas que salen al final del listado de errores. Ya que en ningn ejemplo hemos hablado de ellos pero en todos significan lo mismo. Los warnings y las notas serian recursos no accesibles directamente, archivos ocultos, y otros errores menores que no seran culpa de la web sino del propio skipfish que no pudo abrir ficheros, o acceder a recursos, etc. No serian errores de seguridad propiamente dichos sino fallos del skipfish al analizar.

6. Limitaciones y/o problemas encontrados


Una vez que aprendes los comandos de ejecucin es sencillo el uso. No es intuitivo a primera vista. Por otro lado, otra de las grandes carencias reside en que no es fcil encontrar manuales de uso, o al menos una gua de la aplicacin para usuarios convencionales. Depende de la conexin a Internet, de lo ocupada que esta la red, del propio pc que este ejecutando Skipfish. Si se cae la conexin a Internet o se produce un error al analizar se perder el anlisis y habr que empezarlo de nuevo. No se pueden visualizar los resultados obtenidos hasta el momento, es necesario esperar hasta la finalizacin del anlisis (lo cual puede tardar horas, incluso das).

7. Conclusiones
De las ventajas de Skipfish aparte de su rendimiento y mayor fiabilidad, est en que es multiplataforma y de cdigo abierto. Esto supone que cualquier usuario podra realizar mejoras sobre el cdigo. El resultado de probar la aplicacin ha sido muy satisfactorio ya que con un simple comando y gran rendimiento somos capaces de llevar a cabo un examen exhaustivo a una aplicacin/sitio web. Creemos que Skipfish es muy til para buscar posibles vulnerabilidades en tus propias aplicaciones web y de ese modo ofrecer al cliente una mejor experiencia otorgndole una aplicacin mucho ms segura. Es una forma de ganarte la confianza del cliente.

15

8. Bibliografa
Interpretation - The H Security: News and Features lcamtufs blog: Understanding and using skipfish skipfish: Web Security Reconnaissance Tool | Anestis Bechtsoudis A quick-start guide to SkipFish jumboframe.net Analizar la seguridad de un sitio usando Skipfish | El blog de Federico Hlawaczek Skipfish, escner de seguridad para aplicaciones web Skipfish Web Application Security Scanner Skipfish Web Application Security Scanner sectools: "Skipfish" Tester de Vulnerabilidades Web de Google!" SkipfishDoc - skipfish - Project documentation - web application security scanner Google Project Hosting [In]Seguridad Informtica: Skipfish Web Application Security Scanner

16