Ingeniero en ciencias computacionales especializacion sistemas de informacion ingeniero en ciencias computacionales



Descargar 388.42 Kb.
Página1/6
Fecha de conversión18.12.2018
Tamaño388.42 Kb.
  1   2   3   4   5   6


ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

espol1-300x299.png

Facultad de Ingeniería en Electricidad y Computación

DESARROLLO DEL PRODUCTO PARA TEST DE PENETRACION ENFOCADO EN EL FUZZING DE APLICACIONES

TESIS DE GRADO

Previo a la obtención del Título de:

INGENIERO EN CIENCIAS COMPUTACIONALES

ESPECIALIZACION SISTEMAS DE INFORMACION
INGENIERO EN CIENCIAS COMPUTACIONALES

ESPECIALIZACION SISTEMAS MULTIMEDIA
INGENIERO EN CIENCIAS COMPUTACIONALES

ESPECIALIZACION SISTEMAS DE INFORMACION

Presentado por:

López Sánchez Omar Felipe
Ochoa Samaniego Ingrid Alfonsina
Pibaque Suárez Angélica María

Guayaquil - Ecuador

2011

AGRADECIMIENTO

Nuestro más Sincero Agradecimiento a

Dios por guiarnos en la toma de

nuestras decisiones, por brindarnos

cada día nuevas oportunidades, a

nuestros Padres por ser el ejemplo a

seguir, por apoyarnos siempre en los

estudios, a nuestros hermanos por

ayudarnos en todo lo que podían.

TRIBUNAL SUSTENTACIÓN

Ing. Alfonso Aranda



PROFESOR DE LA MATERIA DE GRADUACIÓN
Ing. Vanessa Cedeño

PROFESOR DELEGADO POR EL DECANO DE LA FACULTAD

DECLARACIÓN EXPRESA




“La responsabilidad del contenido de este informe de materia de graduación, me corresponde exclusivamente; y el patrimonio intelectual de la misma a la Escuela Superior Politécnica del Litoral”

(Reglamento de exámenes y títulos profesionales de la ESPOL)

____________________________

Omar López Sánchez.

___________________________

Ingrid Ochoa Samaniego

___________________________

Angélica Pibaque.Suárez


RESUMEN

Vivimos en plena era tecnológica, donde cada vez más información y datos de carácter personal son informatizados. La seguridad de los sistemas toma mayor importancia, sobre todo ahora que hay más amenazas y vulnerabilidades es necesario proteger uno de los activos más importantes de la organización, la información, garantizando siempre la disponibilidad, la confidencialidad e integridad de la misma.

La forma más adecuada para proteger dichos activos es mediante una correcta gestión del riesgo, logrando así identificar y focalizar esfuerzos hacia aquellos elementos que se encuentren más expuestos con el fin de detectar defectos en los sistemas.

Nuestro fin es dar a conocer que mediante la implementación y mejora de herramientas que sean capaces de categorizar la veracidad de las alertas y descartar los fallos de las aplicaciones, se podrá garantizar a la organización a que adopte las buenas prácticas sugeridas por la ISO27001:2005 para un correcto tratamiento del riesgo.



ÍNDICE GENERAL

Agradecimiento .………………………………………………………………………………………………………………………………II

Tribunal de Sustentación…………………......…………………………………………………………………………………………..III

Declaración Expresa ………………………………………………………………………………………………………………………….IV

Resumen…………………………………………………………………………………………………………………………………………….V

Índice General……………………………………………………………………………………………………………………………………VI

Índice de Figuras………………………………………………………………………………………………………………………………..IX

Glosario de Término……………………………………………………………………………………………………………………………X

Introducción………………………………………………………………………………………………………………………………….....XII


1

1. ANTECEDENTES Y JUSTIFICACION 1

1.1 Antecedentes 1

1.2 Objetivos 2

1.3 Introducción 3

1.3.1 Justificación 4

1.4 Estado de Arte 4

1.5 Alcance y Restricciones 5


2

2.- MARCO TEÓRICO 6

2.1.- ¿Qué es Fuzzing? 6

2.2.- ¿Qué es Test de Penetración? 6

2.3.- Historia 7

2.4.- Fases del Fuzzing 9

2.4.1.- Descripción 9

2.4.2- Fases del Test de Penetración 11

2.5.- Etapas del Fuzzing 13

2.6.- Representación de Datos 14

2.7 Limitaciones 17

2.8.- Tipos de Fuzzer 19

2.8.- Fuzzers Locales 19

2.8.- Fuzzers Remotos 21

2.8.- Fuzzers en Memoria 23

2.9 Metodologías para el Descubrimiento de Vulnerabilidades 24



3

3. ANALISIS DE REQUERIMIENTOS Y DISEÑO 29

3.1 Requerimientos Funcionales 29

3.2 Requerimientos No Funcionales 29

3.3 Diseño 30

3.3.1 Arquitectura 30

3.3.2 Características 35

3.4 Herramientas de Desarrollo 35

3.4.1. Herramientas de Software 36

3.5 Los ataques de seguridad más comunes 40



4

4. PLAN DE NEGOCIOS 43

4.1 Plan Estratégico 43

4.1.1 Análisis Externo de la Empresa 43

4.1.2 Análisis Interno de la Empresa 44

4.1.3. Estrategias 45

4.2 Delimitaciones del proyecto 47

4.2.1 Competencia 48

4.2.2 Mercado Objetivo 49

4.2.3 Factores Clave de Éxito 49

4.3 Estudio de Mercado 49

4.3.1 Análisis de la Demanda 49

4.3.2 Análisis de la Oferta 49

4.3.3 Procedimientos y controles de calidad 49

4.4 Proceso de Comercialización 50

4.4.1 Contenido de la prestación del Servicio de Test de Penetración 50

4.4.2 Presentación de la empresa 50

4.5 Penetración en el mercado 51

4.5 Prescriptores 52

4.5.1 Canales de distribución. Red comercial 52

4.5.2 Acciones de promoción 53

4.6 Recursos humanos 54

4.6.1 Estructura de Organización 54

4.7 Análisis Financiero 54

4.7.1 Financiamiento del Proyecto 55

4.7.2 Depreciaciones 56

4.7.3 Ingresos – Previsión de ventas anuales 56

4.7.4 Costos Variables 57

4.7.5 Costos Fijos 57

4.7.6 Punto de equilibrio 58

4.7.7 Flujo de caja 59

4.7.8 Rentabilidad 60



5

5. Implementación del Servicio 61

5.1 Pruebas 66

5.2 Análisis 68

5.3 Modelo de Reporte 68

CONCLUSIONES

RECOMENDACIONES

ANEXOS



ÍNDICE DE FIGURAS

Figura 2.1 Historia del Fuzzing…….……..…………………………………….....7

Figura 2.2 Fases del Fuzzing……….……………………………………...……...9

Figura 2.3 Arquitectura genérica de un fuzzer………………………….……...14

Figura 2.4 Mutación de Datos….………………………………….……………..26

Figura 2.5 Permutación de Datos….………………………………………........27

Figura 2.6 Incremento del número de caracteres……………………….……28

Figura 3.1 Diseño del Producto…………………………………………….…….31

Tabla 4.1 Matriz FODA……………….……..…………………………….………43

Tabla 4.2 Estructura de Organización ……………….……..………….………52

Tabla 4.3 Análisis Financiero………….……………….……..………….………52

Tabla 4.4 Activos Fijos………………………………….……..………….………53

Tabla 4.5 Costos Fijos…………………………………..……..………….………54

Tabla 4.6 Depreciación Mobiliaria.…………………….……..………….………54

Tabla 4.7 Depreciación de Equipos de Computación.……..………….………55

Tabla 4.8 Flujo de Caja………………………………....……..……………….…56

Tabla 4.9 Rentabilidad.………………………………....……..…...…….…….…57

Figura 5.1 Plugin Manual Request………………………………………………59

Figura 5.2 Plugin XSS/CRLF …………………………………………………….60

Figura 5.3 Plugin SessionIDAnalysis……………………………………………60

Figura 5.4 Plugin Fuzzer………………………………………………………….61

Figura 5.5 Plugins Jmeter………………………………………………………...62

Figura 5.6 OpenVAS………………………………………………………………63

Figura 5.7 Ejemplo Peticiones……………………………………………………64




GLOSARlO DE TÉRMINOS

BUGS: Fallas técnicas que se detectan cuando el elemento tecnológico, como hardware o software, ya se encuentra en producción.
BUFFER OVERFLOW: Es un error de software que se produce cuando se copia una cantidad de datos sobre un área que no es lo suficientemente grande para contenerlos, sobrescribiendo de esta manera otras zonas de memoria. Esto se debe en general a un fallo de programación.
OWASP (Open Web Application Security Project): Proyecto Abierto de Seguridad de Aplicaciones Web.
XSS (Cross Site Scripting): Son ataques de inyección de código en los diferentes

intérpretes del navegador web. Se pueden llevar a cabo utilizando HTML, Java Script, VBScript, ActiveX, Flash y otros lenguajes del lado del cliente.


UNIX: es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969 por un grupo de empleados de los laboratorios Bell de AT&T, entre los que figuran Ken Thompson, Dennis Ritchie y Douglas McIlroy.
VERITAS BACKUP EXEC: Software desarrollado por Symantec

SETUID: términos de Unix, abreviatura para "Set User ID".

SDLC (SOFTWARE DEVELOPMENT LIFE CYCLE): Ciclo de Vida de Desarrollo del Software.
FRAMEWORK: termino escogido para la traducción: entorno de trabajo.

SERVICIOS PÚBLICOS: Las actividades, entidades u órganos públicos o privados con personalidad jurídica creados por Constitución o por ley, para dar satisfacción en forma regular y continua a cierta categoría de necesidades de interés general, bien en forma directa, mediante concesionario o a través de cualquier otro medio legal con sujeción a un régimen de Derecho Público o Privado, según corresponda".

PRESCRIPTORES: También llamados indicadores son aquellos que conociendo el producto pueden influir por diferentes motivos en la adquisición o no de un bien determinado.

VAN: Es un procedimiento que permite calcular el valor presente de un determinado número de flujos de caja futuros, originados por una inversión. La metodología consiste en descontar al momento actual (es decir, actualizar mediante una tasa) todos los flujos de caja futuros del proyecto. A este valor se le resta la inversión inicial, de tal modo que el valor obtenido es el valor actual neto del proyecto.

TIR: La tasa interna de retorno o tasa interna de rentabilidad de una inversión, está definida como la tasa de interés con la cual el valor actual neto o valor presente neto (VAN) es igual a cero. Es un indicador de la rentabilidad de un proyecto, a mayor TIR, mayor rentabilidad.

INTRODUCCIÓN

Actualmente, las tecnologías han revolucionado al mundo, mostrando nuevas y diferentes formas de manejar la información, se considera a la información como un activo de la empresa, por lo tanto es primordial proteger este activo, considerado uno de los más importantes de las empresas.


Para proteger este activo las empresas buscan nuevas soluciones que no solo vayan de la mano con el desarrollo de la tecnología sino que también los provea de forma eficiente y eficaz que su información esté disponible en todo momento.
Existen en este momento diferentes implementaciones que realizan esta función pero que por barreras tecnológicas aun se desconocen en nuestro medio ya sea por desinformación o por cuestiones económicas todavía no se han desarrollado.
Las técnicas de pruebas de vulnerabilidades son utilizadas en la actualidad en el mercado local pero aun no son completamente explotadas, es por esta razón que se decidió desarrollar el producto Test de Penetración, que no solo permite realizar pruebas de vulnerabilidades, sino que a través del Fuzzing de Aplicaciones podemos hacer un seguimiento a profundidad sobre las vulnerabilidades detectadas.
Esta técnica puede estar enfocada en varios instancias desde protocolos de red, formatos de archivos, sistemas de ficheros, etc. Siendo de gran utilidad no solo para los auditores informáticos sino también para los desarrolladores de software que tendrían a esta herramienta como un apoyo.
Es aquí donde nuestro producto encuentra un mercado objetivo que con una campaña de información puede llegar a ser una solución para las empresas, ya que de esta manera protegerían su activo más importante.



  1. ANTECEDENTES Y JUSTIFICACION



    1. Antecedentes

La evolución tecnológica genera oportunidades pero también grandes riesgos a los activos de información, uno de los bienes más valiosos. Hay que garantizar que los recursos informáticos de una compañía estén disponibles para cumplir sus propósitos, es decir, que no estén dañados o alterados por circunstancias o factores externos, es una definición útil para conocer lo que implica el concepto de seguridad informática.

En la actualidad la seguridad informática es usada para proteger la confidencialidad, disponibilidad e integridad de la información. Es importante señalar que su manejo está basado en la tecnología y que a medida que ésta va avanzando afecta su seguridad.



Además, la seguridad de la información involucra la implementación de estrategias que cubran los procesos en donde la información es el activo primordial. Estas estrategias deben tener como punto primordial el establecimiento de políticas, controles de seguridad, tecnologías y procedimientos para detectar amenazas que puedan explotar vulnerabilidades y que pongan en riesgo dicho activo, es decir, que ayuden a proteger y salvaguardar tanto información como los sistemas que la almacenan y administran

    1. Objetivos

Actualmente no se utilizan métodos de evaluación de la seguridad de un sistema informático, la información debe ser protegida desde antes de lanzar un nuevo producto al mercado encontrando los fallos de seguridad, por medio de varias herramientas nosotros nos enfocaremos en un producto que analice y encuentre estos fallos por medio de un test de penetración enfocado en el fuzzing de aplicaciones.

  1. El proyecto consiste en la oferta, al mercado nacional e internacional, de un servicio de análisis de seguridades de red y aplicaciones basado en técnicas de fuzzing las mismas que consisten no sólo identificar huecos de seguridad a nivel de aplicación sino también identificar la tolerancia a fallas, bugs desconocidos, capacidad de procesamiento, corrupción de memoria y errores en general. El desarrollo de este proyecto se enfocará en los siguientes puntos:

  2. Desarrollar y ejecutar la estrategia de ventas, publicidad y marketing del Servicio (Brochure, Sitios Web, Lista de precios, descripción técnica)

  3. Empaquetar y customizar el Kit de herramientas que se usarán para lo cual se hará un estudio del arte de los recursos existentes, para plantear y validar mejoras.

  4. Desarrollar la metodología que categorice la veracidad de las alertas para así descartar falsos positivos de todos los reportes que arrojen las herramientas.

  5. Profesionalización del reporte, en diferentes niveles: Técnico detallado, Técnico y Gerencial.



    1. Introducción

      1. Justificación

Con el avance de la tecnología y a su vez de las amenazas, la seguridad de los sistemas toma progresivamente mayor importancia, sobre todo ahora que la mayoría de los atacantes ya no se contentan con hacer acto de presencia, sino que son contratados por empresas de la competencia para saltarse las medidas de protección y robar o destruir datos importantes.
Existen diversas formas de intrusión en un sistema, desde el acceso físico al remoto, aprovechándose este último de los servicios ofrecidos por las máquinas. Normalmente se piensa que con un buen antivirus, un cortafuegos con buenas reglas de filtrado y una buena política de parcheo es suficiente. Pero nadie se para a pensar en las llamadas vulnerabilidades, de las que nadie tiene conocimiento y que se descubren a diario en cantidad de aplicaciones.
Para lograr el descubrimiento de estos fallos se suelen emplear, entre otras, unas herramientas que se dedican a lanzar peticiones mal formadas de forma automática. A éstas se les llama fuzzers, y pueden estar enfocadas tanto a protocolos de red, como a formatos de archivos, sistemas de ficheros, etc. Son de gran utilidad para auditores informáticos, estos evitan intrusiones indeseadas y desarrolladores de software obtienen un producto seguro.

    1. Estado de Arte

En la actualidad la seguridad de la información es usada para proteger la confidencialidad de la información, ya que ésta tiene un alto valor y puede ser divulgada, mal utilizada o borrada. Es importante señalar que su manejo está basado en la tecnología y que a medida que ésta va avanzando afecta su disponibilidad y la pone en riesgo.

Además, la seguridad de la información involucra la implementación de estrategias que cubran los procesos en donde la información es el activo primordial. Estas estrategias deben tener como punto primordial el establecimiento de políticas, controles de seguridad, tecnologías y procedimientos para detectar amenazas que puedan explotar vulnerabilidades y que pongan en riesgo dicho activo, es decir, que ayuden a proteger y salvaguardar tanto información como los sistemas que la almacenan y administran.




    1. Alcance y Restricciones

En este proyecto se implementará un fuzzer basado en diferentes técnicas de testeo de aplicaciones web que sean capaces de generar datos de distintos tamaños y enviar estos a uno de los puntos de entrada existentes en la aplicación, con el objeto de observar su comportamiento ante estas pruebas o mejor dicho como estos requerimientos son manejados. Si el programa a testear falla en los resultados del análisis, esto significará dos cosas: que hay defectos que corregir, y que probablemente sea posible explotar la falla.

El proceso empezará en identificar las entradas, tales como páginas web, directorios, campos ocultos, encabezados HTTP y cookies, el medio más sencillo y eficaz de identificar algún fallo implica simplemente en navegar por la página web y revisar el código fuente de la misma.

Lo más importante a remarcar es que estas técnicas son genéricas – es decir, que no están diseñadas para un código específico, sino para aplicaciones en general. Lo que significa que aunque se pueden encontrar algunos problemas genéricos, no tienen el conocimiento suficiente sobre una aplicación como para permitirles detectar la mayoría de los fallos.



1.MARCO TEORICO


    1. ¿Qué es Fuzzing?

Se conoce como fuzzing a las diferentes técnicas de pruebas de software capaces de generar y enviar datos secuenciales o aleatorios a una o varias áreas o puntos de una aplicación, con el objeto de detectar defectos o vulnerabilidades existentes en el software auditado.
Generalmente utilizado como complemento a las prácticas habituales de chequeo de software, ya que proporcionan cobertura a fallos de datos y regiones de código no testados, gracias a la combinación del poder de la aleatoriedad y ataques heurísticos entre otros.
El fuzzing es usado por compañías de software y proyectos Open Source para mejorar la calidad del software, por investigadores de seguridad para descubrir y publicar vulnerabilidades, por auditores informáticos para analizar sistemas, y, en última instancia, por delincuentes informáticos (hackers) para encontrar agujeros en sistemas y explotarlos de forma secreta.


    1. ¿Qué es Test de Penetración?

El Test de Penetración, también llamado a veces “hacking ético” es una evaluación activa de las medidas de seguridad de la información. En los entornos de red complejos actuales, la exposición potencial al riesgo es cada vez mayor y hacer a los sistemas seguros se convierte en un auténtico

reto.
A través del Test de Penetración es posible detectar el nivel de Seguridad Interna y Externa de los Sistemas de Información de la empresa, determinando el grado de acceso que tendría un atacante con intenciones maliciosas. Además, el servicio chequea las vulnerabilidades que pueden ser vistas y explotadas por individuos no autorizados, "hackers", agentes de información, ladrones, antiguos empleados, competidores, etc. Estos servicios permiten:


- Evaluar vulnerabilidades por medio de la identificación de debilidades de configuración que puedan ser explotadas.
- Analizar y categorizar las debilidades explotables basadas en el impacto potencial y posibilidad de ocurrencia.
- Proveer recomendaciones para mitigar y eliminar las debilidades.
El Test de Penetración está dirigido a la búsqueda de agujeros de seguridad de forma focalizada en uno o varios recursos críticos, como puede ser el firewall o el servidor Web.


    1. Historia

La referencia más temprana al termino fuzzing aparece alrededor de 1989, el Profesor Barton Miller (considerado el padre del fuzzing) y su clase Advanced Operating System, se desarrollo y uso un fuzzer primitivo para testear aplicaciones UNIX. El objetivo de este test no era necesariamente el acceso a la seguridad del sistema, sino a la calidad y fiabilidad del código.
En 1995 la prueba fue repetida pero expandida hacia las utilidades de UNIX y pruebas del sistema operativo.
El método de fuzzing empleado por el equipo de Miller era muy brusco, si la aplicación colapsaba la prueba fallaba, sino terminaba con éxito. Esto se logro con simples cadenas aleatorias de caracteres objetivos de la aplicación.
Alrededor de 1999, comenzó a trabajar en la Universidad de Oulu en PROTOS, varias de estas pruebas fueron desarrolladas por protocolos de análisis y paquetes que no cumplían con las respectivas especificaciones.
En el 2002 Microsoft fundo la iniciativa PROTOS y en el 2003 los miembros del equipo de PROTOS lanzaron Codenomicon, una compañía dedicada al diseño y producción de pruebas comerciales de fuzzing. Aunque el producto está basado en la idea original de Oulu pero incluye una interfaz gráfica, soporte de usuario, entre otros.
En 2002 Dave Aitel lanzo en Open Source la herramienta llamada SPIKE bajo licencia GNU, este implementa un bloque que se acerca a las aplicaciones para testing – network, toma algunos elementos de las pruebas de Miller, pero lo más notable es que incluye la habilidad para describir el tamaño de las variables de los bloques de datos, no pueden generar datos aleatorios pero también empaqueta librerías de valores como las que producen fallos en aplicaciones pobremente escritas.
La mayoría de innovaciones que fueron lanzadas eran en forma de herramientas para las diferentes clases de fuzzing. En el 2004 Common Gateway Interface (CGI) script fue diseñado para producir archivos HTML malformados que se repetían cuando se refrescaba un navegador.
En el 2005 la compañía Mu Security comenzó a desarrollar un Hardware fuzzing para mutar protocolos de datos en una red. Active X comenzó a ser popular en el 2006 cuando David Zimmer lanzo COMRaider y HD Moore publico AxMan, ambas herramientas trabajaban con controles ActiveX que podían ser instanciados por aplicaciones web y con el navegador de Microsoft, Internet Explorer. Remotamente explotaban vulnerabilidades que representaban un riesgo en el uso.

  1   2   3   4   5   6


La base de datos está protegida por derechos de autor ©bazica.org 2016
enviar mensaje

    Página principal