skipfish

16
Sistemas de la Información Grado en Ingeniería Informática Práctica 1: Skipfish Jorge Colmenar Casas Juan Sopale Thompson Víctor Puerta Rodríguez

Upload: juan-sopale

Post on 07-Dec-2014

142 views

Category:

Documents


0 download

DESCRIPTION

Skipfish es una aplicación que sirve para analizar plataformas web en busca de posibles vulnerabilidades. Trataremos Skipfish desde el punto de vista de sus funcionalidades, principales características y expondremos varios casos prácticos.

TRANSCRIPT

Page 1: Skipfish

Sistemas de la Información Grado en Ingeniería Informática

Práctica 1: Skipfish

Jorge Colmenar Casas

Juan Sopale Thompson Víctor Puerta Rodríguez

Page 2: Skipfish

2

ÍNDICE

1. ¿Qué es Skipfish?

2. Funcionalidades

3. Características principales

4. ¿Cómo usar/ejecutar Skipfish?

5. Casos prácticos

6. Limitaciones y/o problemas encontrados

7. Conclusiones

8. Bibliografía

Page 3: Skipfish

3

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: Inglés

Web oficial: http://code.google.com/p/skipfish/

Manual: http://code.google.com/p/skipfish/w/list?can=1

Descripción básica

Skipfish es una aplicación de seguridad web desarrollada por Google con la intención

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

evaluación profesional de la seguridad de aplicaciones web. Con esto Skipfish tiene

como objetivo verificar si el acceso a una determinada página es o no seguro. Skipfish

promete mucha fiabilidad debido a la poca tendencia a dar falsos positivos.

A pesar de ser multiplataforma, Skipfish está más orientado para uso en distribuciones

Linux. De hecho la distribución Backtrack 5 incorpora la herramienta como parte de sus

aplicaciones de seguridad. Por tanto este tipo de aplicación suele estar más orientado al

experto en seguridad más que a un usuario convencional.

Otro de los objetivos de la aplicación reside en ayudar al desarrollador web a realizar

aplicaciones más seguras teniendo en cuenta las consideraciones de Skipfish.

Sin embargo, Skipfish es un arma de doble filo debido a que para un atacante la

información, sobre los agujeros de seguridad de una aplicación web, proporcionada por

Skipfish puede ser muy valiosa.

Page 4: Skipfish

4

2. Funcionalidades

Realización 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 parámetros configurados. Del

mismo modo permite detectar errores de formato en el código del sitio

web y comprobar las conexiones http generadas.

o 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 visualización de la

página.

o Defectos de riesgo bajo. Test que tratan la realización análisis

relacionados con el almacenamiento de credenciales de usuarios en el

sitio web y la validez de los certificados SSL utilizados.

Detección de alertas internas.

Las alertas internas se encargan de detectar errores de búsqueda de ficheros

pertenecientes a recursos de la aplicación web y realizar filtros por IP en el

propio sitio web.

Detección de fallos en enlaces.

Facilita al usuario la búsqueda 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.

Análisis de seguridad de la información

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

envía dichos ficheros al portal, direcciones de correo externas que podrían no

pertenecer a un usuario de la propia aplicación, etc. Verifica la integridad y

confidencialidad de la información.

Page 5: Skipfish

5

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 aplicación posee

mecanismos para analizar los campos de entrada de contraseñas y formularios y

evitar así los ataques.

3. Características 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 tamaño de la

página o aplicación 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.

Diseño de la interfaz

Skipfish no posee interfaz gráfica, por lo que el usuario necesita abrir una línea

de comandos para ejecutarlo. De este modo, el usuario debe conocer todos los

comandos y opciones necesarios para realizar cualquier tarea de análisis de

seguridad en su página web. Está orientado a un tipo de usuarios más avanzados,

más que al usuario convencional.

Facilidad de uso

Para comenzar, Skipfish debe ser compilado antes de proceder a su instalación.

Este proceso necesita de una serie de librerías, dependencias de la aplicación, y

esto resulta de una dificultad añadida para usuarios inexpertos acostumbrados

más a las instalaciones a base de ‘clicks’. Las librerías no son mencionadas en la

página web de Skipfish. Aunque en tutoriales de Internet si muestran las

librerías necesarias para Skipfish.

Page 6: Skipfish

6

Una vez compilado e instalado, Skipfish se ejecuta a través 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 aplicación no cuenta con herramientas que ayuden a la accesibilidad de los

usuarios. Tan sólo es posible utilizar las herramientas que el sistema operativo

ofrece para tal fin. Es decir está enfocado a un tipo de usuario más avanzado y

concreto.

Multiplataforma

Puesto que Skipfish debe ser compilado antes de ser ejecutado y se encuentra escrito

en un lenguaje de programación como es C, la aplicación se encuentra disponible

para GNU/Linux, FreeBSD, Mac OS X y Windows, por lo que los usuarios podrían

utilizar este conjunto de herramientas en cualquier máquina sin ningún tipo de

problemas.

Page 7: Skipfish

7

4. Como ejecutar Skipfish

Primero son necesarias unas librerías que hay que instalar. Estas son libidn11-dev,

zlib1g-dev, libssl-dev y libcre3-dev. Después, 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 aplicación (./skipfish –h) se muestran más opciones.

5. Casos prácticos

Antes de comenzar con los casos prácticos que hemos probado, vamos a comentar

brevemente como muestra los resultados Skipfish.

Cuando la aplicación 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 sección (Crawl results). En la parte superior derecha

tenemos más información como el tiempo que ha estado trabajando, la fecha, la versión

de Skipfish y la semilla utilizada. Un ejemplo es el siguiente:

Page 8: Skipfish

8

Podemos ver como los resultado se agrupan en 3 áreas. La primera es Crawl results, nos

permite “navegar” por el sistema de ficheros:

Page 9: Skipfish

9

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 más común son los ficheros html, pero también podemos

encontrar swf (flash), pdf etc.

La última área agrupa los ficheros por vulnerabilidades, desde las más graves hasta las

notas, con una pequeña explicación de la posible vulnerabilidad encontrada. Para ayudar

a la comprensión y resolución de la vulnerabilidad podemos ver cuál ha sido la petición

y cuál la respuesta del servidor dando al enlace “show traces +”. Por ejemplo esta es la

petición de la posible vulnerabilidad grave del sitio web:

Caso www.iesdionisioaguado.com

Con esta página 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 sección del

departamento de matemáticas mientras que el otro de nosotros Skipfish si entró (y

encontró una vulnerabilidad grave) pero tras 10 horas de ejecución paró el programa ya

que el sitio web es muy grande. Para poder sacar los resultados de la sección de

matemáticas sin repetir todo el análisis hemos utilizado la opción “-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 continuación hemos analizado la web de nuestra Universidad. Al ser una web muy

grande, Skipfish ha estado mucho tiempo analizándola. Los resultados obtenidos son

estos:

Page 10: Skipfish

10

Para la web de la universidad, Skipfish ha detectado 4 errores graves de seguridad, 6

riesgos medios y 9 de riesgo bajo. Centrándonos primero en los riesgos graves, se

puede ver que son Shell injection. Esto significa que cualquier persona con malas

intenciones podría introducir comandos o código malicioso poniendo en serio peligro la

seguridad de la web. Más concretamente si abrimos uno de los 4 riesgos graves:

Vemos como hubo un error interno que no pudo completar la petición. En esta petición

podría haber sido ejecutado un script, comando o consola que hubiera dejado a la página

web a expensas de cualquier atacante, poniendo en compromiso el sistema entero.

Siguiendo con los riesgos medios, existen contenidos externos a la página web como

puedan ser videos, imágenes,…, 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 prácticas externas, por lo que no son externos a ella.

Page 11: Skipfish

11

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

podría 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>

Page 12: Skipfish

12

Sin embargo la aplicación web no coge los símbolos especiales de forma literal sino que

los transforma: /webct/.htaccess.aspx--&gt;"&gt;'&gt;'"&lt;sfi000097v040026&gt; de

forma que los símbolos necesarios para introducir código como < o > se pierden y por

tanto un intento de incorporar código al sitio web de forma ilegítima no es posible.

Caso Drupal recién instalado.

Un caso que podía ser interesante era probar un CMS recién instalado, para probar la

seguridad del CMS con la configuración por defecto.

En el resultado se nos muestra que sería posible tanto inyección SQL como inyección

por Shell, por tanto sería necesario comprobar si realmente lo es y solucionarlo para

evitar ataques maliciosos.

Caso Ministerio de Educación, Cultura y Deporte (MECD):

Page 13: Skipfish

13

En los resultados procesados por Skipfish, en el index.html, se puede apreciar todas las

posibles vulnerabilidades en la página analizada. Centrándonos en los problemas de

riesgo algo alto se puede entrever diferentes tipos de ‘inyecciones’ que pueden poner en

peligro la seguridad de la página 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 petición 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 inyección realizada por Skipfish. Esto puede dejar entrever que realmente

puede haber un agujero de seguridad en el aspecto de las consultas.

Page 14: Skipfish

14

Por otro lado, también encontramos posibilidad de inyección 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:

Page 15: Skipfish

15

A continuación hablaremos de los warnings y las notas que salen al final del listado de

errores. Ya que en ningún 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 serían 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 ejecución es sencillo el uso. No es intuitivo a

primera vista.

Por otro lado, otra de las grandes carencias reside en que no es fácil encontrar manuales

de uso, o al menos una guía de la aplicación para usuarios convencionales.

Depende de la conexión a Internet, de lo ocupada que esta la red, del propio pc que este

ejecutando Skipfish.

Si se cae la conexión a Internet o se produce un error al analizar se perderá el análisis y

habrá que empezarlo de nuevo.

No se pueden visualizar los resultados obtenidos hasta el momento, es necesario esperar

hasta la finalización del análisis (lo cual puede tardar horas, incluso días).

7. Conclusiones

De las ventajas de Skipfish aparte de su rendimiento y mayor fiabilidad, está en que es

multiplataforma y de código abierto. Esto supone que cualquier usuario podría realizar

mejoras sobre el código. El resultado de probar la aplicación ha sido muy satisfactorio

ya que con un simple comando y gran rendimiento somos capaces de llevar a cabo un

examen exhaustivo a una aplicación/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 otorgándole

una aplicación mucho más segura. Es una forma de ganarte la confianza del cliente.

Page 16: Skipfish

16

8. Bibliografía

Interpretation - The H Security: News and Features

lcamtuf’s 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, escáner 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 Informática: Skipfish Web Application Security Scanner