Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD NACIONAL AUTONOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ARAGÓN "Propuesta de una Estrategia para la detección de vulnerabilidades de tipo Cross-Site-Scripting en un sitio Web" T E S I S Para obtener el título de: INGENIERO EN COMPUTACIÓN P r e s e n t a: Karla González López Asesor de tesis: Asesor M. en C. Jesús Hernández Cabrera Febrero 2007 UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. Agradecimientos: A mis hijos: Gracias por su amor que hace que el más duro de los esfuerzos sea tan ligero como una pluma, cuando existe amor mi alma esta llena de energía, en especial si ustedes están a mi lado. A mi esposo: Tú amor, comprensión y apoyo me han ayudado a realizar las metas que me he fijado en la vida, gracias por ser más que mi esposo. A mis padres y hermanos: En el camino de mi vida las enseñanzas a su lado han sido muchas, pero lo que más me hace feliz es saber que gracias a ustedes soy una persona de bien, que cumple cada una de sus metas que se propone por sobre todas las cosas. En este mundo, la felicidad, cuando llega, llega incidentalmente, si la perseguimos, nunca la alcanzamos. En cambio, al perseguir otro objetivo, puede ocurrir que nos encontremos con ella cuando menos lo esperábamos. Recuerda siempre, aquí y ahora es Tu vida, vívela intensamente construyendo tu futuro. ÍNDICE Índice: Introducción Capítulo1. Fundamentos y Antecedentes. 1. Internet……………………………………………………………………………...1 1.1. Elementos de Comunicaciones……………………………………………..2 1.1.1. Modelo OSI……………………………………………………………..2 1.1.2. Protocolos de comunicación TCP/IP………………………………...4 1.2. Situación actual de Internet………………………………………………….5 1.2.1. Nombres de dominio…………………………………………………..7 1.2.2. Herramientas para explotar la Internet………………………………7 1.2.3. Amenazas y riesgos en la Internet…………………………………..8 1.2.4. Vulnerabilidades en Internet………………………………………….9 1.2.5. Análisis de vulnerabilidades en los sistemas…………………......12 1.3. Desarrollo de los sistemas y aplicaciones Web………………………….14 1.3.1. Ciclo de desarrollo de sistemas…………………………………….14 1.3.2. Definición básica de seguridad……………………………………..16 1.3.3. Auditoria Informática…………………………………………………16 1.3.4. Herramientas de la auditoria Informática………………………….17 1.3.4.1. Listas de Verificación………………………………………...18 1.3.5. Metodología de Evaluación de los sistemas………………………20 1.3.6. Ethical hacking tests…………………………………………………20 1.4. Propuesta de Estrategia de Seguridad……………………………………21 Capítulo2. Ataques de tipo Cross Site. 2. Nombre y descripción general de vulnerabilidades…………………………..24 2.1. Ataques derivados de las vulnerabilidades Cross Domain Scripting.....25 2.1.1. Descripción técnica…………………………………………………..26 2.1.2. Proceso de ataque…………………………………………………...27 2.1.3. Elementos y ambientes afectados………………………………….28 2.1.4. Impacto, riesgos y afectación……………………………………….28 2.1.5. Prevención y soluciones…………………………………………….29 2.2. Ataques derivados de las vulnerabilidades Cross Site tracing…………29 2.2.1. Descripción técnica…………………………………………………..29 2.2.2. Proceso de ataque…………………………………………………...30 2.2.3. Elementos y ambientes afectados………………………………….31 2.2.4. Impacto, riesgos y afectación……………………………………….31 2.2.5. Prevención y soluciones…………………………………………….32 ÍNDICE 2.3. Ataques derivados de las vulnerabilidades Cross Site Scripting………32 2.3.1. Descripción técnica…………………………………………………..34 2.3.2. Proceso de ataque…………………………………………………...35 2.3.3. Elementos y ambientes afectados………………………………….36 2.3.4. Impacto, riesgos y afectación……………………………………….36 2.3.5. Prevención y soluciones…………………………………………….36 2.4. Ataques derivados de las vulnerabilidades Cross Frame Scripting……37 2.4.1. Descripción técnica…………………………………………………..37 2.4.2. Proceso de ataque…………………………………………………...37 2.4.3. Elementos y ambientes afectados………………………………….38 2.4.4. Impacto, riesgos y afectación……………………………………….38 2.4.5. Prevención y soluciones…………………………………………….38 Capítulo3. Propuesta de una Estrategia adaptable para la detección de vulnerabilidades de tipo Cross-Site-Scripting en un sitio Web. 3. Evaluación de sistemas………………………………………………………….41 3.1. Estándares Web……………………………………………………………..42 3.1.1. Diagrama de flujo en el proceso de verificación de la seguridad.42 3.1.2. Puntos fundamentales de la lista de verificación del modelo……44 3.1.3. Técnicas de verificación……………………………………………..44 3.2. Lista de verificación sugerida para la detección de vulnerabilidades de tipo Cross Site……………………………………………………………….44 3.2.1. Personas involucradas………………………………………………53 3.3. Validación de código Script en sitios Web………………………………..53 3.4. Proceso de evaluación e identificación de resultados…………………..54 3.4.1. Reporte Final………………………………………………………….56 Capítulo4. Aplicación de la Estrategia para la detección de vulnerabilidades de tipo Cross-Site-Scripting en el sitio SMC ELITE PARTNER PROGRAM. 4. Introducción……………………………………………………………………….58 4.1. Aplicación de la Estrategia…………………………………………………58 4.2. Formas de utilización de la estrategia…………………………………….58 4.2.1. Aplicación de la estrategia durante la fase de desarrollo del sitio Web………………………………………………………………………59 4.3. Identificación de resultados………………………………………………...59 ÍNDICE 4.4. Informes y recomendaciones………………………………………………60 4.5. Casos de estudio…………………………………………………………….60 4.5.1. Descripción del Sitio SMC ELITE PARTNER PROGRAM de la empresa Networks de México, S.A. de C.V……………………………………………………………61 4.5.1.1. Aplicación de la estrategia…………………………………..68 4.5.1.2. Resultados obtenidos y su interpretación…………………85 4.6. Algunas recomendaciones de las Formas actuales de protección contra ataques……………………………………………………………………….89 Conclusiones. INTRODUCCIÓN ANTECEDENTES Actualmente la Internet es un medio de comunicación accesible a millones de personas en todo el mundo y sobre la que se sustentan diversas formas de presentación e intercambio de datos. Una de las más utilizadas es la que se conoce como la World Wide Web (WWW) la cual permite ver y enlazar documentos de hipertexto apoyándose en una aplicación llamada “navegador” (browser). La WWW adquiere forma por los enlaces que se establecen entre los equipos dedicados a responder peticiones para ver documentos y seguir enlaces entre éstos. Dichas peticiones son atendidas por programas que implementan diversos protocolos como por ejemplo el protocolo http. El protocolo http fue diseñado para la publicación de documentos de hipertexto empleando el Hyper Text Markup Lenguaje (HTML). Estos programas reciben el nombre de “servidores web” y cuando proporcionan una funcionalidad más compleja y transaccional son “servidores de aplicaciones web”. La combinación del protocolo HTTP, los servidores y los documentos que entregan es lo que al final da vida a la WWW. La popularidad, flexibilidad y universalidad de esta forma de comunicación ha dado lugar al desarrollo de aplicaciones que no estaban siquiera contempladas inicialmente, muchas de las cuales llevan información de naturaleza sensible.Actualmente las organizaciones que ocupan la Internet como medio de comunicación están expuestas a huecos en los accesos de control de sus aplicaciones y dispositivos. Existe una empresa líder en seguridad Web para aplicaciones llamada WebCohort1, la cual realizó pruebas a un aproximado de 300 aplicaciones web del año 2000 al 2004. Las pruebas demostraron que tan solo el 10% de las aplicaciones web eran seguras ante cualquier tipo de acceso mal intencionado o ataque. Desde esa fecha hasta el presente el entorno no ha cambiado mucho. Si bien es cierto que los requisitos de seguridad se han incrementado, muchos problemas ya han sido solucionados y usuarios y desarrolladores perciben el mundo digital bajo otra perspectiva, esto no quiere decir que los problemas de seguridad han terminado y son cosa del pasado. La acelerada evolución tecnológica provoca que esto sea un ciclo continuo en el que tecnología y productos son introducidos, problemas de seguridad son identificados, éstos son corregidos y posteriormente nuevos productos ocupan 1 Only 10% of Web Applications are Secured Against Common Hacking Techniques http://www.webcohort.com/web_application_security/company/news/020204.html I INTRODUCCIÓN el lugar de los primeros. Un proceso en el que nuevos problemas son identificados y resueltos y algunos otros algunos son reintroducidos. Los problemas relacionados con la seguridad (vulnerabilidades) crean situaciones que pueden poner en riesgo datos y servicios de muchas formas (ataques). La combinación de ataques y vulnerabilidades es lo que da lugar al concepto de “vulnerabilidades de la Web” que son las consecuencias de la falta de revisión, atención por parte de los desarrolladores y sobre todo que en algunas organizaciones todavía no se esta conciente del impacto que puede causar este tipo de problemas en sus sistemas, poniendo en riesgo a la organización y sus negocios. Esto da como consecuencia que los sitios Web sean atacados por dichas vulnerabilidades que desgraciadamente no pueden ser detectadas por algún software específico en un tiempo determinado. Existen diversas vulnerabilidades de tipo y magnitud, una de las más conocidas actualmente es la llamada vulnerabilidad Cross Site Scripting (XSS2) , dicha vulnerabilidad es sencilla de explotar y peligrosa. En los estudios realizados por la empresa llamada WebCohort quedó claro que el XSS era uno de los problemas que más afligían a las aplicaciones Web. A través de los ataques XSS era posible burlar las protecciones de antivirus que ofrecen ciertos servicios como por ejemplo Hotmail. Una definición de XSS es la siguiente: Cross Site Scripting es un tipo de brecha en la seguridad de una computadora donde la información de un contexto puede ser insertado en otro contexto, permitiendo que un acceso o uso no autorizado pueda ser llevado el segundo desde el primero. Los ataques de tipo XSS se pueden dar de diversas formas como por ejemplo: - Almacenados.- Se le llama así porque el código que se inyecta es almacenado en el servidor objetivo. La inyección de código se realiza en campos comentados, bases de datos, foro de mensajes, etc. De esa manera el usuario victima recupera el script malicioso del servidor cuando solicita alguna información almacenada. - Reflejados.- Se llevan a cabo cuando el código malicioso es manifestado desde el servidor como si fuera un mensaje de error de un resultado de una búsqueda o alguna otra respuesta que sea consecuencia de alguna petición al servidor. Estos ataques se envían mediante otra ruta como por ejemplo el correo electrónico o algún otro servidor web. El usuario da clic al enlace malicioso, el código inyectado viaja por el servidor web vulnerable y este es reflejado en el navegador del usuario.3 2 Para evitar confusiones con las siglas de las hojas de estilo (CSS, Cascade Styling Sheet), se suele denominar XSS a este concepto, por una alusión y juego de palabras con el término “cross”. 3 OWASP The Open Web Application Security project II INTRODUCCIÓN Por medio de esta brecha los ataques se formalizan cuando una aplicación Web se envía con un script (conjunto de instrucciones), que se activa al momento de que un navegador o alguna aplicación vulnerable lo lee. Dado que los sitios dinámicos dependen de la interacción del usuario por medio de herramientas como pueden ser: sistemas de encuestas, buscadores, foros, etcétera, es posible adherir un script malicioso a la página en ventanas que pertenecen a diferentes dominios (de aquí el término cross site). Lo que se puede realizar con cualquier sitio Web o con cualquier archivo de tipo local. A finales del año 2004 fue publicado por el Instituto de Seguridad de Internet, un artículo sobre Cross Site Scripting4 donde se menciona que los ataques de este tipo se facilitan en mayor grado cuando los usuarios navegan en las páginas de Internet, que a los servidores que proporcionan estos servicios. Esto se identifica como una consecuencia de la mala verificación por parte de los desarrolladores de los sitios Web en cuanto a sus aplicaciones y los formularios. Existen diversas páginas Web que cuentan con entradas dinámicas para un usuario como por ejemplo formularios de opinión; en dichos formularios pueden ser insertados scripts, dichos scripts pueden ser insertados con códigos no permitidos y ser ejecutados por el navegador del usuario dentro del contexto de seguridad de la página Web visitada. Estos scripts como consecuencia pueden interceptar entradas del usuario víctima. El problema es considerablemente grande y complejo debido a la diversidad de vulnerabilidades, ataques y situaciones en la que datos privados o personales pueden quedar comprometidos. La complejidad se incrementa por el entorno dinámico y evolutivo en el que se desenvuelve. Es imposible dar una receta de solución general y aunque fuera posible esta tendría un periodo de vida limitado hasta que nuevos productos, tecnología y usos hicieran su aparición. En relación a este problema el trabajo no busca proporcionar dicha solución general sino establecer una estrategia de la que pueden generarse y adaptarse soluciones prácticas y poder evolucionar con los productos y tecnologías recientes. 4 Este artículo se encuentra en la dirección http://www.instisec.com/publico/xss.asp III INTRODUCCIÓN MARCO DE DESARROLLO Ubicación del Problema. Hoy en día se emplea una gran variedad de técnicas para poder atacar los sistemas de cómputo, estos ataques pueden ser del nivel red hasta el nivel de aplicación. Solucionar los ataques es algo temporal ya que conforme nuevos productos, usos y tecnología aparecen generan el aumento de problemas ya trabajados o nuevos. Así también la solución no se limita a aspectos técnicos, hay acciones que corresponden a los desarrolladores así como también a la cultura de los usuarios. Una actitud reactiva ante el problema no es la solución, se requiere una actitud preventiva esencialmente, una actitud que parte del diseño de la aplicación y que se extiende hasta la vida operativa de la misma. Objetivos. El presente trabajo de investigación tiene como objetivos: Comprender el concepto de vulnerabilidades en sitios Web para identificar amenazas existentes en dichos sitios y clasificarlas. Distinguir la diferencia entre la aplicación de medidas de seguridad. Identificar y fijar responsabilidades del equipo de trabajo. Tener presente que las vulnerabilidades en los sitios Web pueden reaparecer. Conocer la importancia de la implementación de una estrategia de seguridad adaptable al sitio Web creado. Mejorar métodos y procedimientos de la organización. Definiruna Estrategia adaptable que guíe de una forma estructurada el proceso de diseño y evaluación de un sitio Web. Beneficios que se obtienen con la solución planteada en este trabajo. Dada su popularidad, la seguridad en Internet es ya un tema de suma importancia para el desarrollador y el usuario. Como resultado de este trabajo se contemplan las siguientes aportaciones al tema: Mantener los sitios Web actualizados y contar con diferentes alternativas de seguridad para una organización. Descripción de las alternativas de seguridad adaptables a los requerimientos de la empresa. IV INTRODUCCIÓN Avisos continuos de fechas en las que se debe de reforzar las estrategias de seguridad de los sitios Web. Ahorro de tiempo, dinero y recursos. Mejora de los sitios web en su funcionalidad. Alcances y limitaciones.- La estrategia de seguridad propuesta es aplicable para la evaluación de cualquier proyecto de aplicaciones web de nueva creación de igual forma se puede adaptar a aplicaciones que ya están generadas. Se pueden establecer distintos parámetros de evaluación para los resultados, para este trabajo se van a tomar en cuenta los siguientes: • Reducido.- áreas de actuación • Medio.- conclusiones y recomendaciones Conforme van cambiando los objetivos de la empresa, esta estrategia puede ser modificada con la finalidad de la vigencia permanente de lo contrario esta estrategia de seguridad solo será vigente por algún tiempo, mientras no cambien los requerimientos de las empresas que la aplican. Metodología.- Para resolver el problema se propone una estrategia de seguridad, dicha estrategia hará referencia a un conjunto de acciones o comportamientos que se pueden definir como un plan a trabajar durante el diseño de la aplicación o durante la revisión de algún sitio ya creado. Es importante conocer un poco la naturaleza de la empresa con la finalidad de estar concientes de la importancia de su información y datos. Teniendo el conocimiento previo de la empresa para la cual se va a realizar el estudio de vulnerabilidades, es importante conocer a grandes rasgos los problemas de seguridad con respecto a sus aplicaciones que han detectado a lo largo del diseño o de su uso. En el caso especifico de esta trabajo los problemas de seguridad se van a detectar cuando el sitio este en marcha. A partir de aquí se formulará un modelo que de lugar a los elementos esenciales que serán refinados para conformar la estrategia que se busca. El caso de estudio será seleccionado para mostrar la forma en que la estrategia deberá aplicarse y la manera en la que se puede realizar una evaluación del sistema web en cuanto a seguridad se refiere. Finalmente ya contando con los resultados de la aplicación de la estrategia se hará un breve análisis sobre la interpretación de resultados y la forma en que se deberán reportar los resultados a través de un reporte final. V INTRODUCCIÓN Resultados esperados.- El resultado de este trabajo de investigación es proporcionar una estrategia de seguridad que forme un proceso formal y estructurado que servirá como una guía para la evaluación y diseño de sitios web. En esta guía se pretende ser lo suficientemente clara para que sea utilizada por empresas como una herramienta para la toma de decisión de proyectos de esta naturaleza. Se va a dar una visión global de la seguridad y diseño de las aplicaciones Web, qué pasos se deben seguir, para lograr que nuestra información llegue al mayor número de usuarios y sobre todo desarrollar un medio en el cual sea posible el intercambio universal de información, sin barreras ni fragmentación tanto para los humanos como para las máquinas. VI Capítulo 1: Fundamentos y Antecedentes CAPÍTULO 1 Fundamentos y antecedentes. Las personas y todos los grupos sociales humanos necesitan comunicarse para poder existir. A lo largo del tiempo diversas formas de comunicación han sido desarrolladas. El siglo pasado se caracterizó por el desarrollo de medios masivos de comunicación electrónicos y dicho siglo concluyó con el nacimiento del medio de comunicación que ahora es tema de este trabajo, Internet. En la década de los 60’s, como un proyecto de investigación, en plena guerra fría, el departamento de la Defensa Americano (DoD) llegó a la conclusión de que su sistema de comunicaciones presentaba diversas vulnerabilidades. ARPANET1 (Advanced Research Projects Agency NET) era una red de conmutación que trabajaba por medio de paquetes de información, dicha red sirvió como base para el desarrollo de redes modernas. La Internet surge como un proyecto militar con el nombre de ARPANET, cuya finalidad era mantener la comunicación con instituciones académicas y la industria en caso de un ataque en gran escala contra USA. Tras múltiples cambios de nombre y reorganizaciones, y con el fin de la guerra fría, la agencia pasa a ser civil y la red que administra pública. En la década de los 80, la NFS (National Science Foundation) toma control del proyecto y adopta el protocolo TCP/IP como plataforma de comunicaciones, así nace entonces “la Internet” como la conocemos actualmente. 1. Internet. La Internet se ha convertido en un medio masivo de comunicación muy importante para todo tipo de empresas ya que por medio de ésta se pueden realizar acciones de diferentes tipos. Una definición de Internet es la siguiente: “Red informática mundial, descentralizada, formada por la conexión directa entre computadoras u ordenadores mediante un protocolo especial de comunicación”2 A través de dicha red se permite la comunicación de equipos de cómputo que cuentan con diferentes sistemas operativos o diferentes plataformas, esta comunicación se logra utilizando el mismo protocolo para unir desde equipos individuales hasta otras redes de cómputo. Por ello se le ha llamado la red de redes ya que a su alrededor se ha creado una base tecnológica muy extensa. 1 http://www.google.com.mx/search?hl=es&lr=&defl=es&q=define:ARPANET&sa=X&oi=glossary_definition&ct=title 2 Real Academia Española http://www.rae.es/ 1 CAPÍTULO 1 1.1. Elementos de comunicaciones. Como una necesidad de resolver problemas de comunicación entre equipos de diferentes fabricantes, en la década de los 80´s una organización llamada ISO (International Organization for Standardization) propuso un modelo llamado Modelo de referencia OSI, dicho modelo consta de 7 capas que se utilizan para la interconexión de sistemas abiertos, donde cada capa que se construye está basada en la anterior. 1.1.1. Modelo OSI Como se mencionó anteriormente el modelo OSI cuenta con 7 capas que se encuentran divididas en 2 grupos. Las primeras 4 capas (números 1 al 4), están dedicadas al trasporte de Información, mientras que las tres últimas al servicio de soporte del usuario. Capa 1 Capa 2 Dedicadas al trasporte de Información. Capa 3 Capa 4 Capa 5 Capa 6 Dedicadas al servicio de soporte del usuario Capa 7 Las capas que conforman el modelo OSI están generadas en forma de pila, a manera de ir generando una dependencia entre ellas. La arquitectura del modelo OSI es la siguiente: Número de capa Capa 1 Capa de aplicación 2 Capa de presentación 3 Capa de sesión 4 Capa de transporte 5 Capa de red 6 Capa de enlace 7 Capa física Tabla 1.1. Capas del modelo OSI 2 CAPÍTULO 1 Cada unas de las capas mostradas anteriormente realizan funciones específicas, a grandes rasgos las funciones de cada una de estas capas son las siguientes: - Capa física.- Aquí se ubican los medios materiales para la comunicación como por ejemplo, conectores, cables, etc. Esta capa también se ocupa de la transmisión de bits a lo largo deun canal de comunicación y debe garantizar que dichos bits lleguen con los mismos valores. - Capa de enlace.- Trasforma la línea de transmisión común en una línea sin errores para la siguiente capa, esto se hace dividiendo la entrada de los datos en tramas de asentamiento, entiendo por tramas como los datos que se organizan en unidades y constan de una cabecera; la capa de enlace también soluciona otros problemas como la duplicidad cuando existe una destrucción de tramas, mensajes duplicados y se encarga del control de tráfico. - Capa de red.- Esta capa se ocupa del control de la operación de la subred, encamina cada paquete a su destinatario, soluciona problemas de protocolos diferentes o direcciones que no son iguales, encamina los paquetes fuente a su destino final evitando la congestión y manejando saltos cuando los paquetes fuente y destino se encuentran en diferente red. - Capa de transporte.- Esta capa se encarga de aceptar los datos de la capa superior y dividirlos en pequeñas unidades para posteriormente transportarlos a la capa de red, asegurando que cada una de estas pequeñas unidades lleguen correctamente, esto se realiza independiente del hardware. Para realizar estas actividades de transporte se pueden multiplexar varias conexiones. - Capa de sesión.- Esta capa permite a los usuarios tener acceso a un sistema con tiempos compartidos, transferir archivos entre dos máquinas, vigila el tráfico de la información, administra tareas, sincroniza operaciones. - Capa de presentación.- Esta capa se ocupa de la sintaxis y semántica de la información que se tiene que transmitir. - Capa de aplicación.- Esta capa se ocupa de la transferencia de archivos solucionando problemas de incompatibilidad entre máquinas ya que cuenta con una variedad de protocolos que se necesitan para ello, maneja servicios de propósito general así como sistema de correo electrónico, en general asegura la estandarización de las aplicaciones en la red. 3 CAPÍTULO 1 1.1.2. Protocolos de comunicación TCP e IP. Cuando existen ordenadores con diferente hardware y software no pueden ser conectados a una red, por ello surge la necesidad de contar con un protocolo único que resuelva problemas de comunicación y de compatibilidad entre éstos. Dicho protocolo fue llamado TCP/IP, TCP significa Transmisión Control Protocol, mientras que IP significa Internet Protocol. Cuando se habla de TCP/IP se hace referencia a un conjunto de protocolos que permiten la comunicación en un entorno con diferentes equipos y proporcionan acceso a una red y a todos sus recursos. El protocolo TCP/IP es conocido como protocolo de interconexión de redes es decir su formación es de una red a través de la cual se intercomunican redes más pequeñas. El protocolo TCP/IP cubre algunas capas del modelo de referencia OSI pero TCP/IP tiene que funcionar de forma transparente a cualquier tipo de red, un ejemplo de dichas funciones se encuentran en los programas de aplicación como pueden ser: correo electrónico, páginas web, etcétera. Para la arquitectura TCP/IP a diferencia del modelo OSI, se propone un modelo de 5 capas. La capa de sesión y presentación se unen a la capa de aplicación y en lo que respecta a la capa de enlace de datos y capa física son unidas a la capa de Interfase de red. A continuación se presenta una tabla en donde se muestra el modelo de referencia TCP/IP, mencionando para cada una de las capas un ejemplo de las aplicaciones que utilizan: Nombre de la capa Capa Capa de aplicación HTTP, SMTP, FTP, TELNET... Capa de presentación Capa de presentación Capa de sesión Capa de sesión Capa de transporte UDP, TCP Capa de red IP Capa de acceso de red Ethernet, Token Ring... Capa física Cable coaxial, par trenzado... Tabla 1.2. Modelo de Arquitectura TCP/IP Es importante saber a grandes rasgos como funciona el protocolo TCP/IP para poder entender el porque es considerado como un protocolo necesario en la conexión a Internet. 4 CAPÍTULO 1 El protocolo TCP/IP cuenta con una arquitectura cliente/servidor dicha arquitectura se apoya en los llamados sockets. Se le llama socket a aquellos elementos que cuentan con la dirección del nodo y el número de puerto que identifica al servicio. El número de puerto se ocupa para hacer referencia a la localización de alguna aplicación o proceso que se encuentre en una máquina en específico. Mediante los sockets se establece conexión con los hosts y si es necesario se garantiza la entrega de datos pero si no es necesario garantizar la entrega de la información se elige un servicio no orientado a la conexión. Para que la arquitectura TCP/IP funcione de manera correcta con la finalidad de transmitir los datos de forma adecuada y confiable, tiene que cumplir con varias características, a continuación se mencionan algunas de ellas: 1. IP se encarga de mover los paquetes de un lado a otro, mientras TCP se asegura que los datos se envíen de forma correcta. 2. Las líneas de comunicación pueden ser compartidas ya que los paquetes se puede transmitir al mismo tiempo. Al llegar a su destino se acomodarán en el mismo orden en que fueron enviados. 3. Los paquetes transmitidos viajan por la línea más idónea en ese momento. 4. TCP se encarga de dividir los datos en paquetes, los ordena, agrega cierta información para control de errores y los envía. La recepción de paquetes la realiza también TCP; verifica si hay errores y los convierte en los datos originales. En caso de existir algún error envía un mensaje solicitando únicamente los paquetes que se tienen que enviar de nuevo. El protocolo TCP/IP actualmente es la base de todas las máquinas en lo que ha software se refiere y trata de cumplir con uno de sus objetivos principales como es, el de poder contar con un mejor servicio de Internet y realizar diversas funciones dentro de las cuales encontramos la transferencia de archivos, el uso de correo electrónicos, etcétera. 1.2. Situación actual de Internet Actualmente Internet es un medio de comunicación accesible a millones de personas en todo el mundo, sobre éste se sustentan diversas formas de presentación e intercambio de datos. Una de las formas más utilizadas es la que se conoce como la World Wide Web (WWW), la cual originalmente tenía como finalidad compartir textos de tipo científico mediante un sistema de hipertexto. Se le llama hipertexto al documento que cuenta con elementos adicionales (enlaces o ligas) por medio de los cuales se puede acceder a otras secciones de texto o datos de otra naturaleza (imagen estática, audio o video). El uso de un documento de hipertexto sólo puede lograrse a través de una aplicación que provea los mecanismos necesarios para hacer uso de los enlaces y presentar los diversos elementos directamente o a través de una aplicación especializada. Un ejemplo de dichas aplicaciones son los browsers. 5 CAPÍTULO 1 Se han realizado diversos estudios para saber como ha crecido el uso del servicio de Internet, dentro de dichos estudios figura “Hábitos de los usuarios de Internet en México”3, realizado por la firma Select en el año 2005 para la Asociación Mexicana de Internet (AMIPCI), con la finalidad de saber cuales son las cifras del uso del servicio en los últimos años. El reporte señala lo siguiente: Año Número de usuarios de Internet en México 2002 10 millones, 032 mil, 270 2003 12 millones, 250 mil, 300 2004 14 millones, 901 mil, 700 2005 17 millones, 140 mil Tabla 1.3. Usuarios de Internet en México 2002-20054 Confirmando las cifras que en un artículo con el nombre de “En México más de 14 millones de personas usan Internet”, publicado el día 12 de julio del 2004 por La Comisión Federal de Telecomunicaciones (Cofetel)5 reportaba: en el año 2003 la cifra estimada de usuarios de Internet fue aproximadamente de 12 millones 218mil 830, los cuales utilizaban el servicio de la siguiente manera: cuatro millones 632 mil 62 personas que ingresaron a la red desde su hogar, dos millones 288 mil 848 que ingresaron desde cualquier otro lugar y cinco millones 297 mil 920 usuarios que entraron al servicio de Internet sin contar con una máquina personal. Estas cifras dan una idea de la importancia de este medio de comunicación masivo. Actualmente el servicio de Internet se ha convertido en un medio de comunicación indispensable con la facilidad de poder interactuar con el usuario, de una forma amigable, apoyándose de diversas aplicaciones como el correo electrónico y otros más. El servicio de Internet brinda una variedad de entretenimientos, facilidad para la comunicación con personas que se encuentran en diversas partes del mundo, investigación de temas con mayor profundidad, realización de campañas publicitarias a bajo costo, entre otras. La WWW se ha convertido en una tecnología en constante evolución por los lenguajes script con que cuenta y que le permiten abarcar desde la aplicación visual hasta poder interactuar con el servidor. Dentro de los lenguajes que se ocupan para la realización de aplicaciones que trabajen en la Internet, existen diversos siendo el más representativo Java, de la compañía Sun Microsystems, con el cual se pueden incluir programas ejecutados en la máquina del cliente. Para facilitar el uso de la Internet, ésta ha sido organizada para que sus elementos puedan ser agrupados y reconocidos por “nombres de dominio”. 3 http://www.razonypalabra.org.mx/anteriores/n51/oislas.html. 4 (Elaboración propia, con base en la información que arrojó el estudio “Hábitos de los usuarios de Internet en México”, realizado por Select para la Asociación Mexicana de Internet, AMIPCI.). http://www.razonypalabra.org.mx/anteriores/n51/oislas.html 5 Información obtenida de la página http://www.cofetel.gob.mx/ 6 CAPÍTULO 1 1.2.1. Nombres de Dominio. Se entiende por dominio la designación usada para identificar algún sitio de Internet y éste forma parte de una red que desciende de una raíz que a su vez forma parte de una subred, de la misma forma que las ramas de un árbol. Uno de los nombres que es ya conocido que se utiliza para identificar una dirección es IP. Existen dos grupos de dominio, los genéricos que son para los usuarios de Internet y los de código de país que fueron creados para cada país. Regularmente un dominio esta formado por varios grupos separados por puntos, se trata de evitar la duplicidad de direcciones. Dentro de los dominios que se manejan en Internet se van a mencionar están: com Establecimientos comerciales net Infraestructura de red gob Gobierno edu Educación info Información Tabla1. 4. Ejemplos de dominios 1.2.2. Herramientas para explotar la Internet. Como se mencionó anteriormente las aplicaciones conocidas como navegadores son aplicaciones por medio de la cuales podemos visualizar los documentos web6. Dentro de los navegadores que existen se encuentran algunos de los siguientes: 1. Navegador modo en línea.- Este navegador es muy poco amigable para los usuarios ya que se maneja a base de comandos. Por ejemplo el Lynx creado para plataformas UNIX. 2. Navegador de pantalla completa.- Este trabaja mediante ligas para dirigirse a los documentos solicitados. 3. Navegadores gráficos.- mediante estos navegadores el usuario puede ver gráficos, textos, etc. Dentro de estos navegadores encontramos Amaya, Internet Explorer, Firefox, Mozilla, Netscape Navigator, Opera, Konqueror, Safari, ICab, OminiWeb, Dillo, IBrowse, AWeb, Voyager, Espial Escape, Hotjava. La WWW obtiene forma por los enlaces que se establecen entre los equipos dedicados a responder peticiones de vistas a documentos y seguimiento a enlaces entre éstos. Dichas peticiones son atendidas por los protocolos, como 6 http://www.definicion.org/browser 7 CAPÍTULO 1 por ejemplo el protocolo HTTP (Hyper Text Transfer Protocol). El protocolo HTTP fue diseñado para la publicación de documentos de hipertexto empleando el lenguaje HTML (Hyper Text Markup Language) y algunos otros. Por otro lado cabe mencionar que el protocolo HTTP se apoya en los llamados “servidores web”. Se le conoce como servidor, a la máquina cuyo propósito es proveer de datos a otras máquinas que se conectan a ella, también permite el acceso a programas, archivos y otra información. Cuando nos referimos a la web, un servidor es un ordenador que es utilizado por el protocolo HTTP mediante el cual se envían páginas Web a la computadora de un usuario, cuando dichas páginas sean solicitadas el usuario. La combinación del protocolo HTTP, los servidores, y los documentos que entregan es lo que al final da vida a la WWW. 1.2.3. Amenazas y riesgos en la Internet. La popularidad y facilidad de acceso a la Internet propició la proliferación de herramientas y aplicaciones. Desafortunadamente también facilitó la proliferación de problemas relacionados con la seguridad. Dentro de estos problemas encontramos los que pueden ser categorizados como “amenazas”, “riesgos” y “vulnerabilidades”. Se le llama amenaza porque hace referencia a un elemento, lugar o su combinación por el que se puede tener acceso a los recursos internos del sitio u organización y así estar en posibilidad de provocar algún daño. Dentro de las amenazas que pueden afectar a los sistemas que trabajan en Internet, existen varias pero sólo se van a mencionar algunas: 1. Existen grupos de personas que se dedican a atacar y buscar los huecos de seguridad en los sistemas existentes con la finalidad de explotarlos y ocasionar problemas: Los llamados hackers. Dentro de los hackers se conocen dos tipos de ellos. a. Los hackers que se dedican a explotar sus conocimientos para dañar los sistemas. Se menciona que los llamados crackers y script kiddies, son un ejemplo de los que realmente se dedican a ocasionar los problemas. b. Los hackers que se dedican a colaborar en el crecimiento de la tecnología para la solución de problemas en específico. 2. Por otro lado las empresas basan generalmente su seguridad en contar con una instalación de antivirus ya que otra amenaza son los virus. Los virus se aprovechan de las vulnerabilidades detectadas en los sistemas para afectar las computadoras pero el problema radica cuando en diversas ocasiones esos virus o gusanos se reproducen y el usuario no se da cuenta hasta que dicho virus o gusano ha afectado su sistema, existe una gama muy amplia de virus en la actualidad. 8 CAPÍTULO 1 3. Con cierta semejanza a los virus existen los llamados troyanos que son pequeños programas que se encuentran escondidos dentro de otro que aparentemente es normal y se activa al ejecutarse el programa principal. 4. Hoy en día lo que más se ocupa es el correo electrónico. Por vía correo electrónico se da mucho el envió de correos no solicitados por el usuario, a estos correos se le llama SPAM. El problema no es que no solicitemos el correo, si no que son muchos los enviados y pueden causar problemas con la red, como por ejemplo colapsarla. La problemática del SPAM ha crecido debido a que no hay forma de detenerla ya que es justificada como marketing sin imaginar que puede causar mucho daño y por la parte del marco legal no se puede tomar ninguna acción en contra de ello. 5. De las amenazas más recientes se habla de los Dialers, por medio de los Dialers se pueden realizar conexiones de una PC a Internet, pero por medio de un número telefónico con más costo de lo normal. Estas conexiones se realizan vía web y desgraciadamente el usuario se percata del daño hasta se ve reflejado en su recibo telefónico. Existen más amenazas que dañan los sistemaspero ya se comienzan a utilizar combinaciones de ellas y esto aumenta en forma muy importante los ataques, propagándolos en grandes cantidades. Durante la primer mitad del año 2003 Symantec7 publicó un artículo en la red en el cual se comenta que las amenazas combinadas aumentaron en un 20% comparados con las del año anterior, una amenaza de este tipo puede afectar sistemas de todo el mundo, ya que la propagación en Internet se da de una manera muy rápida y en corto tiempo. 1.2.4. Vulnerabilidades en Internet Así como la Internet se ha convertido en un medio de comunicación primordial y evoluciona constantemente, también crecen las vulnerabilidades que se presentan en este medio. Las vulnerabilidades en la Internet se dan por diversas causas, dentro de las cuales encontramos: • La realización de aplicaciones sin cuidar detalles de seguridad. • Equipo o software (sistemas operativos, por ejemplo) sobre sql que funcionan las aplicaciones creadas. La mayor parte de las aplicaciones cuentan con scripts o programas de instalación para facilitarle el trabajo al usuario e inclusive existen ocasiones en que se habilitan componentes de más, con la finalidad de ser utilizados posteriormente, como se vayan requiriendo por los usuarios. Muchos usuarios 7 http://www.symantec.com/region/mx/enterprisesecurity/threat_report/volIV/ 9 CAPÍTULO 1 no están consientes de lo que está instalado en sus equipos, ni que puertos son los que están abiertos y dejan una posibilidad muy amplia de vulnerabilidad en los sistemas. Aún cuando el uso de cuentas y contraseñas se ha vuelto algo común, su efectividad depende de los usuarios y de los administradores de los equipos y sistemas ya que se ha detectado que muchas veces debido a la falta de atención del usuario, se ocupan contraseñas o cuentas comunes y que dejan en cierta forma el sistema muy vulnerable. Cuando se requiere de algún servicio de la Internet, la salida se genera por los puertos de la computadora pero muchas veces ni si quiera se tiene la noción de cuales son los que van a ser ocupados y se tiene abiertos todos. Lo que es un descuido se vuelve un problema mayor: el defecto de una aplicación sumada al mal uso de las medidas básicas de seguridad da lugar a las vulnerabilidades. Así, lo que hemos venido llamando vulnerabilidad podemos describirlo con mayor formalidad como "Factor de riego interno de un sistema expuesto a una amenaza, con peligro de sufrir alguna pérdida parcial o total de información”8. El uso de estas vulnerabilidades para tratar de lograr un uso o acceso no autorizado es lo que se denomina ataque. Del año 2003 al 2004 existieron muchas vulnerabilidades que han afectado a varios navegadores, por ello SANS Institute, FBI y NIPC realizo una lista de vulnerabilidades por plataforma que se muestra a continuación en la siguiente tabla. Windows Unix Internet Information Services (IIS) BIND Domain Name System Microsoft SQL Server (MSSQL) Remote Procedure Calls (RPC) Windows Authentication Apache Web Server Internet Explorer (IE) General UNIX Authentication Accounts with No Passwords or Weak Passwords Windows Remote Access Services Clear Text Services Microsoft Data Access Components (MDAC) Sendmail Windows Scripting Host (WSH) Simple Network Management Protocol (SNMP) Microsoft Outlook Express Secure Shell (SSH) Windows Peer to Peer File Sharing (P2P) Misconfiguration of Enterprise Services NIS/NFS Simple Network Management Protocol (SNMP) Open Secure Sockets Layer (SSL) Tabla 1.5. Vulnerabilidades en plataformas Windows y Unix9 8 http://www.google.com.mx/search?hl=es&lr=&defl=es&q=define:Vulnerabilidad&sa=X&oi=glossary_definition&ct=title 9 http://www.sans.org/top20/ 10 CAPÍTULO 1 Diversas son las empresas que se dedican a estudiar el desempeño de las aplicaciones en la Web y sus vulnerabilidades. Por mencionar otro dato la empresa líder en seguridad Web de aplicaciones llamada WebCohort10, realizó pruebas a un aproximado de 300 aplicaciones web en los últimos cuatro años (del año 2000 al 2003). En estas pruebas se demuestra que tan solo el 10% de las aplicaciones web de comercio electrónico, banca online, sitios de administración, etcétera son seguras ante cualquier tipo de ataque. Dentro de las vulnerabilidades mas frecuentes encontradas en dicho estudio realizado por el Centro de Defensa de aplicación de Webcohort se detectaron un gran número de ellas. Dentro de las vulnerabilidades más importantes se mencionan las siguientes11: Vulnerabilidad Porcentaje de Vulnerabilidad Cross Site Scripting 80% SQL injection 62% Parameter tampering 60% Cookie poisoning 37% Database server 33% Web Server 23% Buffer overflow 19% Tabla 1.6. Resultados de los estudios de Webcohort. Diversos son los tipos de vulnerabilidades que dan lugar a los ataques en los sistemas que funcionan sobre la Internet, en muchos casos no son más que las consecuencias de una falta de revisión adecuada o constante de los sitios web, por otro lado también se dan por la falta de atención por parte de los desarrolladores de los sitios en cuanto a seguridad se refiere. En algunas organizaciones, todavía no están concientes del impacto que puede causar este tipo de problemas en sus sistemas, afectando a la organización y así a sus negocios que pueden ser evitadas o arregladas para minimizar su efecto. La combinación de ataques y vulnerabilidades es lo que da lugar al concepto de “vulnerabilidades de la web” y que da lugar a todas aquellas amenazas a las que están expuestos los sitios o servidores web. 10 Only 10% of Web Applications are Secured Against Common Hacking Techniques http://www.webcohort.com/web_application_security/company/news/020204.html 11 El tipo de ataque se deja en inglés debido a que es la forma en que más se conoce e identifica a éste en la comunidad informática e Internet. 11 CAPÍTULO 1 Una organización conocida como CERT, realizó un estudio en el cual demostró por medio de una gráfica, cuanto es lo que han aumentado las vulnerabilidades en los sistemas entre los año de 1995 y 200312. Vulnerabilidades por Años http:// www.cert.org )(Data Source: CERT 0 500 1000 1500 2000 2500 3000 3500 4000 4500 1995 1996 1997 1998 1999* 2000 2001 2002 2003 Figura 1 1 Vulnerabilidades en los sistemas Diversas son las vulnerabilidades encontradas en los sistemas de información, dentro de ella encontramos las vulnerabilidades de tipo cross site, el término cross-site se deriva de la forma en que la vulnerabilidad es explotada, a partir de un sitio o dominio confiable desde donde se liga o accede en forma o con código malicioso13. 1.2.5. Análisis de vulnerabilidades en los sistemas. En los últimos años ha crecido tanto el servicio de la Internet que por segura utilización surge la importancia de crear mecanismos de defensa y protección para ello, con la finalidad de saber con que vulnerabilidades cuentan los sistemas y si dichas vulnerabilidades se pueden evitar o prevenir. Para ello se lleva a cabo el llamado análisis de vulnerabilidades y existen diversos tipos, algunos de ellos son: - Análisis de vulnerabilidades para la red interna, que como su nombre lo dice el análisis se realiza para la red y sistemas internos; en dichos análisis se simula ser un usuario interno más ya que muchas de las faltas al sistema son realizadas por ellos. - Análisis de vulnerabilidades de tipo externo, que se efectúan desde Internet y por medio de este análisis, se realizan pruebas a los sistemas 12 http://download.microsoft.com/download/6/b/b/6bb2637c-b5f6-44dc-9da3-c2cbcad14efd/442,11,Vulnerabilidadespor Años 13 Tomado a partir de las definiciones del tema en los sitios www.whatis.com y www.wikipedia.org. 12 CAPÍTULO 1 operativos, dispositivos de comunicaciones visibles desde Internet y de las herramientas de seguridad con las que se cuentan. - Análisis de vulnerabilidades para aplicaciones Web, con éste se verifica tecnologías utilizadas para la implementación, esquemas, etcétera. Los análisis que se utilizan para detectar vulnerabilidades en Internet o en algún otro servicio tienen como objetivo, realizar mediciones y cálculos que nos den un resultado que sirva como parámetro para aplicar medidas de protección para los sistemas es recomendable realizar dichos análisis periódicamente ya que las vulnerabilidades van surgiendo día con día. Profundizando en estos análisis de riesgos, lo primero que se tiene que hacer es un estudio de los procesos de la organización con la finalidad de eliminar todos los servicios redundantes y dejar con mejor funcionamiento los que se utilizan de manera frecuente; así como poner énfasis en los servicios que deben de estar funcionando por encima de cualquier circunstancia. Dicho estudio es necesario para tener presentes las amenazas que se pueden materializar pero sobre todo el impacto que causas dichas vulnerabilidades dentro de la organización. Para tener presentes las vulnerabilidades con las que cuenta los sistemas lo que se sugiere hacer, es averiguar cada uno de los puntos frágiles del sistema, con la finalidad de detectar los problemas que pueden desencadenar un ataque hacia la seguridad de los mismos. La mayoría de vulnerabilidades pueden ser controladas con soluciones sencillas para que el impacto del daño sea menor. Por ello es recomendable realizar estos análisis a distintas partes del sistema. Existe gran número de vulnerabilidades en los sitios de Internet, conforme va pasando el tiempo, algunas son detectadas y reparadas. Pero van generándose nuevas vulnerabilidades e inclusive aparecen nuevamente las ya detectadas en los navegadores. Por otra parte las vulnerabilidades se manifiestan en todos los navegadores, por ejemplo en el navegador Internet Explorer existe una vulnerabilidad que permite imitar la dirección que aparece dicho navegador. Esta vulnerabilidad fue detectada en el mes de Agosto del año 200414, y requiere que el usuario cuente con una conexión de manera rápida a la Web. La dirección a la que accede el usuario es falsa y las páginas que visita dicho usuario son una copia de lo que se encuentra en el servidor del atacante, de manera que permite el robo de sus datos por parte del atacante. Esta vulnerabilidad se ha tratado de corregir y en los sistemas de Windows XP parece ser que ya no aparece pero ha sido detectada de nuevo en otras versiones de Internet Explorer aún contando con los parches instalados. 14 http://www.hispasec.com/unaaldia/2123 13 CAPÍTULO 1 El problema radica en que los parches que se sugieren para la seguridad en los sistemas no son para todas las versiones, puede ser que un parche de seguridad no sea compatible con versiones distintas de navegadores. En el navegador de Internet Explorer por ejemplo el 29%15 de las vulnerabilidades que existen en no cuentan con algún parche, el 12% cuentan con un parche parcial, esto es preocupante para los usuarios de este navegador, ya que no tienen una seguridad en su información. De igual manera el 8% de las vulnerabilidades en Mozilla Firefox se encuentran sin algún parche. Después de haber realizado análisis similar a los anteriores es importante contar con un manual, dicho manual debe de contener los reportes de los resultados de las evaluaciones realizadas, se recomienda entregar un reporte final con algunas recomendaciones y acciones para poder solucionar o minimizar las vulnerabilidades que se presenta en el desarrollo de los sistemas y aplicaciones ya implementadas. 1.3. Desarrollo de los sistemas y aplicaciones Web. Cuando se habla de un sistema de información nos referimos al conjunto de recursos que se encargan de gestionar, recoger, controlar y propagar la información dentro de una empresa u organización. Los sistemas de información para poder cumplir con sus objetivos se apoyan de diversas utilidades como son bases de datos, sistemas de gestión de las bases de datos, programas de aplicación, dispositivos físicos, así como el personal que utiliza y desarrolla dichos sistemas, a estos pasos se les conoce como ciclo de vida de los sistemas de información. 1.3.1. Ciclo de vida de los sistemas. Al ciclo de vida de los sistemas de información también se le llama ciclo de vida del desarrollo del software, este ciclo cuenta con diferentes etapas para el cumplimiento de sus objetivos, dentro de las etapas que conforman este ciclo son: 15 http://bitc.wordpress.com/2005/12/06/vulnerabilidades-en-internet-explorer/ 14 CAPÍTULO 1 - Planificación. Figura 1.2. Ciclo de vida de los sistemas Planificación Análisis de Datos Diseño Prototipos Implementación Pruebas Liberación Mantenimiento Muerte - Análisis de datos. - Diseño. - Prototipos. - Implementación. - Pruebas. - Liberación. - Mantenimiento. - Muerte. El ciclo de vida enfatiza en la identificación de funciones de la empresa y en el desarrollo de sus aplicaciones ya que sigue un enfoque orientado a sus funciones. Para este trabajo de investigación se va a hacer énfasis el la etapa de Diseño de la aplicación ya que en dicha etapa es en donde se generan los programas que se van a utilizar para el procesamiento de la información, en esta etapa hay que asegurarse de que se cumplen con todos los requisitos del usuario, también se realizan los diseños de las interfaces de los usuarios. En la figura 2 se muestra el ciclo de vida16: La etapa de diseño de la aplicación consta de dos partes muy importantes: 1. Diseño de transacciones.- Este diseño es en donde se definen y documentan las transacciones de nuestro sistema, esto se lleva a cabo al inicio del diseño del sistema, con la finalidad de garantizar el esquema lógico. Dentro de las transacciones que se pueden realizar en nuestro sistema se encuentran17: o Transacciones de recuperación: Informes que nos permiten el fácil acceso a los datos. o Transacciones de actualización: Actualizan la información en las bases de datos. o Transacciones mixtas: Combinación de las anteriores. 2. Diseño de la interfaz de usuario.- En este punto se toman en cuenta ciertas recomendaciones por parte del usuario con la finalidad de tener un acceso rápido y de una manera fácil a la información. 16 www.microsoft.com/.../roadmap_arq/heterodox.asp 17 http://www3.uji.es/~mmarques/f47/apun/node73.html 15 CAPÍTULO 1 Los sistemas informáticos mal diseñados pueden convertirse en una herramienta muy peligrosa para las empresas ya que las empresas no pueden depender de un software y hardware mal diseñados, por ello surge la necesidad de auditar. La auditoria contiene elementos de análisis, verificación y exposición de debilidades. 1.3.2. Definición básica de seguridad informática. La expansión de las nuevas tecnologías en las empresa conllevan también a la proliferación de nuevos peligros, un ejemplo claro se da en los sistemas de información, ya que se han vuelto demasiado vulnerables a cualquier tipo de ataque que se presente. Se ha tratado en gran medida proteger los sistemas y por ello se habla de la seguridad. La seguridad informática trata de asegurar cada uno de los recursos de los sistemas que se tienen en una empresa o institución, de posibles ataques o vulnerabilidades. La seguridad informática se apoya de varias opciones para poder realizar los estudiosde vulnerabilidades correctos como por ejemplo la auditoria informática. 1.3.3. Auditoria Informática. En primera instancia la auditoria informática tiene como alcance un informe final en donde quede asentado perfectamente hasta donde se ha llegado y se quiere llegar. Los Sistemas Informáticos han de protegerse de modo global y particular: a ello se debe la existencia de la Auditoria de Seguridad Informática en general. La auditoria informática nos ayuda a verificar lo que se están haciendo para validar las medidas de control aplicables a los sistemas, de una manera apropiada, con la finalidad de mantener la integridad de la información y prevenir los sistemas de diversos riesgos. Existe la llamada Auditoria de páginas Web, que se entiende como el análisis externo de la web, comprobando vulnerabilidades como la inyección de código sql, Verificación de existencia y anulación de posibilidades de Cross Site Scripting (XSS), etcétera18. Cuando se realiza una auditoria informática para Internet, es con la finalidad de detectar fallas en las aplicaciones, uno de sus principales objetivos es contar con una evaluación de riesgos, vulnerabilidades y arquitecturas de seguridad implementadas. Dentro de los principales objetivos que se persiguen con la auditoria informática son: 18 http://www.hispasec.com/corporate/auditoria.html 16 CAPÍTULO 1 1. Control de las funciones informáticas. 2. Análisis de la eficiencia de los sistemas informáticos. 3. Verificar que se cumplen las normas de la empresa. 4. Gestión de los recursos materiales y humanos. Para poder cumplir con los puntos anteriores en necesario auxiliarse con herramientas que pueden ayudar a evitar o a minimizar las vulnerabilidades en los sistemas o sitios Web, ya que cuando existe un sistema de información mal diseñado se puede convertir en algo muy peligroso para la empresa o institución. Existen diversos tipos de auditoria pero para poder detectar vulnerabilidades de tipo cross site, nos enfocaremos a la auditoria que se le realiza al desarrollo de proyectos o aplicaciones. A grandes rasgos esta auditoria cuenta con los siguientes pasos. Prerrequisitos del entorno Análisis Funcional Diseño Análisis en la Programación Figura 1.3. Pasos de la auditoria Alta de proceso Pruebas Para poder llevar a cabo los pasos de la auditoria se deben de tomar en cuenta las siguientes consideraciones: - Revisión de tecnologías utilizadas si es posible de forma modular - Control de las aplicaciones. - Estudio de viabilidad de la aplicación. - Satisfacción del usuario. - Control de los procesos de las aplicaciones. 1.3.4. Herramientas de la auditoria Informática. Cuando se habla de una auditoria informática es con la finalidad de contar con información necesaria para cualquier cambio en nuestros sistemas o cualquier actualización, la manera correcta de realizarla una auditoria informática es recabando información y documentos de todo tipo. 17 CAPÍTULO 1 Una de las formas de recabar información es enviando cuestionarios impresos a las personas que se creen adecuadas para contestar y que son responsables del área. Los cuestionarios aplicados para que puedan cumplir con su objetivo deben de ser muy específicos a situaciones concretas. Otra forma de recabar información es por medio de entrevistas con las personas encargadas de los proyectos o aplicaciones, dicha entrevista no tiene que seguir un protocolo. Otra forma de recabar información es ocupando listas de verificación (checklist) que son un conjunto de pasos, preguntas y actuaciones que se deben de seguir para lograr un objetivo, estos pueden ser de memoria o leídos con la finalidad de obtener una descripción completa del sistema y asegurarse de que no se ha saltado ningún paso, para que dicho sistema sea seguro. 1.3.4.1. Listas de verificación. Las listas de verificación se aplican a los sistemas que trabajan sobre Internet. Cuando los sistemas que funcionan por la Internet corren el riesgo de ser atacados debido a los diferentes tipos de vulnerabilidades que existen, es importante tomar en cuenta alguna forma de análisis que nos permita evitar o prevenir riesgos. Para ello se ocupan las listas de verificación que tienen los siguientes objetivos: • Conocer las vulnerabilidades en las aplicaciones que se manejan en la empresa. • Estar al tanto de que la empresa cuenta con estrategias para la prevención o corrección de vulnerabilidades, en caso de que se presenten. • Tomar en cuenta el impacto que dichas vulnerabilidades generan en nuestras organizaciones. Cuando a un sistema se le aplica una lista de verificación, se hace con la finalidad de calificarlo o evaluarlo, se utiliza en cualquier momento que se necesita asegurar los datos y acciones de un sistema. Las listas de verificación pueden estar dentro un rango preestablecido es decir contar una calificación para cada acción, que evalué los sitios Web, dichas listas de verificación son tomadas en consideración como parte de una escala para realizar evaluaciones del mismo tipo en otros sistemas. Un ejemplo claro de lo que puede ser una lista de verificación, es el siguiente: 18 CAPÍTULO 1 1.- A tu parecer el sistema es: a) Muy Eficiente b) Eficiente c) Deficiente d) Muy deficiente 2.- La programación del sistema es: a) Muy Eficiente b) Eficiente c) Deficiente d) Muy deficiente Figura 1.4. Ejemplo de una lista de verificación. Son diversas las listas de verificación que se aplican ya que son de acuerdo a la empresa y sus requerimientos pero en general existen dos formas muy comunes de realizar evaluaciones de este tipo 19: 1. Listes de verificación binaria.- Que están constituidas por preguntas cerradas en donde la respuesta sea un “si” o un “no” y estas equivaldrían a un “uno” o “cero” respectivamente en nuestra escala de evaluación. 2. Listas de verificación de rango.- En ellas se tienen preguntas que pertenecen a un rango preestablecido, son muy adecuados siempre y cuando el equipo que esta evaluando las aplicaciones sea muy pequeño y tenga criterios uniformes. Las listas de verificación no se presentan de forma estándar para todas las empresas cada una tiene alguna lista de verificación dependiendo de sus aplicaciones. Las listas de verificación se aplican de acuerdo a cada meta de cada institución, organización o lo que lo requiera. Por su efectividad es el instrumento que se va a utilizar para determinar ataques de tipo Cross Site en los sistemas ya que se van a contar con determinados escenarios específicos. Finalmente las listas de verificación pasan por un procesamiento interno de información, con el objetivo de obtener respuestas confiables que permitan la descripción de los puntos fuertes y débiles de los sistemas. Dentro de las ventajas que se encuentran para aplicar una lista de verificación son que existen de una forma libre, se aplican de una manera muy fácil, se pueden resumir y comparar, hasta cierto punto son flexibles. Los análisis que se realizan de las aplicaciones se hacen de manera rápida y se pueden aplicar medidas correctivas de forma inmediata. 19 http://www3.uji.es/~coltell/Docs/ITIG_F13/F13_2003_T02.pdf 19 CAPÍTULO 1 Todo procedimiento de evaluación tiene sus desventajas, en el caso particular de las listas de verificación es que son de manera arbitraria y sugestiva, necesitan actualización constante y hasta pueden no tratar necesidades de un sistema en particular, todo depende de las personas que realicen las auditorias a los sistemas. 1.3.5. Metodología de evaluación de los sistemas Las evaluaciones a un sistemaes recomendable realizarlas en un trabajo de investigación concreto ya que tienen como finalidad orientar al desarrollo general de los sistemas y establecer la validez y efectividad del mismo, comparándolo con otros servicios existentes. Dentro de los puntos que se toman en cuenta para poder efectuar una evaluación de sistemas son20: 1. Interfaz general.- Esta etapa evalúa la arquitectura de acceso de manera muy general, así como los accesos a los sistemas, gráficos, capacidad de acceso a la información, esquemas de búsqueda, sistema de ayuda a los usuarios entre otros. 2. Valoración sobre las categorizaciones y secciones.- En esta evaluación se detectan fallas en cada una de las secciones y si el modelo del sitio es el más adecuado. 3. Valorización sobre los resúmenes.- Si el contexto del contenido es adecuado a la empresa que pertenece. 1.3.6. Ethical hacking tests Cuando se habla de Ethical hacking tests es necesario tener una definición de lo que es la ética: “Parte de la filosofía que trata de la moral y de las obligaciones del hombre”.21 Y la definición de ética profesional es la siguiente: “Conjunto de normas morales que rigen la conducta humana”. 22 Estas dos definiciones se toman como referencia para saber que papel que juega un hacker ético, el cual debe de contar con ciertos principios y mantener algún código de conducta. Existen muchas personas que se llaman hackers y que utilizan la programación en nombre de distintos beneficios, uno de ellos es para buscar soluciones a problemáticas reales y el otro es para tener acceso ilegal a los medios actuales como Internet y otros. Pero los llamados hacker éticos son aquellos que tienen el conocimiento de la programación para resolver problemas que aporten algo en beneficio de la sociedad y cuentan con su código de conducta. 20 http://www.ucm.es/info/multidoc/multidoc/revista/num9/prensa/jime-chacon.htm 21 Real Academia Española http://www.rae.es/ 22 Real Academia Española http://www.rae.es/ 20 CAPÍTULO 1 Cuando se hace referencia al termino Ethical hacking tests estamos hablando de pruebas de penetración que se le realizan a los sistemas de una empresa o institución y que cuenta con Internet para el funcionamiento de su negocio. 1.4. Propuesta de Estrategia de seguridad. El propósito de este trabajo es la formulación de una estrategia de seguridad que sirva como una guía para ser utilizada en algunas partes del proceso de desarrollo de sitios Web ya existentes así como los de nueva creación. Se pensó en una estrategia antes que en una metodología ya que la metodología implica un conjunto de métodos que siguen una investigación científica completa, es algo más que una notación, un proceso, y herramientas. Una definición de estrategia es la siguiente: “Es un proceso regulable, conjunto de reglas que aseguran una decisión óptima en cada momento”23 Una estrategia de seguridad puede ahorrar mucho tiempo a la organización o institución y proporcionar importantes recomendaciones de lo que se debe hacer es mucho más sencilla y flexible de implementar que una metodología. Las actividades que se describen en este documento suelen requerir actualizaciones periódicas o las revisiones correspondientes, algo rápido de realizar bajo el concepto de lo que es una estrategia a lo que implica una metodología. Estos cambios se realizan cuando las configuraciones, otras condiciones y circunstancias cambian considerablemente o cuando hay que modificar las leyes y normas organizativas. Éste es un proceso nunca termina y debe revisarse y probarse con periodicidad. El establecimiento de un conjunto de controles de seguridad requiere el uso de un método para determinar los puntos vulnerables que existen en nuestros sistemas y aplicaciones. El estado actual de la seguridad informática se puede determinar mediante la revisión de ciertos parámetros y en dicha revisión se debe tomar nota de las áreas en las que hay problemas como por ejemplo: • Controles de acceso físico. • Directivas de seguridad de la red como por ejemplo, correo electrónico e Internet. • Aplicaciones. • Planes y pruebas de contingencias y de recuperación de desastres. • Conocimiento y formación en seguridad informática. Finalmente están las pruebas y el estudio de sus resultados, que se lleva a cabo después de que se han puesto en marcha los controles de seguridad. La 23 Real Academia Española http://www.rae.es/ 21 CAPÍTULO 1 realización de ataques simulados en sistemas de pruebas o en laboratorios permite evaluar los lugares en los que hay puntos vulnerables para ajustar las directivas y los controles de seguridad. La realización de pruebas y de ajustes en las directivas y controles de seguridad en función de los resultados de las pruebas es un proceso iterativo, nunca termina, debido a que en la red siguen apareciendo ataques y aunque algunos ya son solucionados tienden ha reaparecer con más fuerza, por ello debe evaluarse y revisarse de forma periódica para poder implementar mejoras continuas. 22 Capítulo 2: Ataques de tipo Cross Site Scripting CAPÍTULO 2 Ataques de tipo Cross Site Scripting. Durante los últimos años las aplicaciones, servidores y equipos web se han convertido en blanco perfecto para usuarios maliciosos, quienes se aprovechan de las configuraciones incorrectas o de la creación de aplicaciones no seguras para poder infiltrarse en ellas y obtener datos para su beneficio. Dentro de las formas más comunes para poder explotar las vulnerabilidades de los sistemas o aplicaciones, se encuentran las siguientes1: - Ejecución de código de manera remota. - Inyección SQL. - Vulnerabilidades asociadas a cadenas. - Cross Site Scripting. De las formas mencionadas anteriormente para este estudio se va a hacer énfasis en los ataques de tipo Cross Site, por medio de los ataques de este tipo se pueden infiltrar en un sistema generando códigos arbitrarios en lenguaje HTML que son ocupados en páginas Web estáticas u otros tipos, dichos códigos introducen información no invalida en campos permitidos para interactuar con el usuario, provocando afectar a las aplicaciones en incluso la caída de un servidor. El problema aumenta porque actualmente las empresas buscan contar con páginas Web que les ofrezcan servicios e información actualizada como son: comercio electrónico, catálogos en línea, portales, etcétera. Las empresas lo hacen con la finalidad de tener mayor contacto con sus clientes, proveedores, empleados, etcétera. Actualmente existe un equipo de seguridad que se dedica a la coordinación de emergencias de redes telemáticas llamado esCERT/TB-Security2 el cual realizó un estudio a finales del año 2005 con el nombre de “Balance 2005: Los virus y el phishing de nuevo son las estrellas” en dicho estudio demostró que los atacantes y los códigos maliciosos se dan principalmente por la ingeniería social y vulnerabilidades de los programas. Dicho estudio hace mención del aumento de vulnerabilidades en un 15% para Internet Explorer, Microsoft Office y Outlook entre otras. Mediante dicho estudio se percataron de que siguen apareciendo un gran número de vulnerabilidades en sistemas como Microsoft Windows, Internet Explorer entre otros y que dichas vulnerabilidades son consecuencia de fallas en el diseño de los sistemas. 1 http://www.hispasec.com/corporate/noticias/94 2 http://www.tb-security.com/prensa_not_009.htm 23 CAPÍTULO 2 2. Nombre y descripción general de vulnerabilidades. Para este trabajo de investigación se va a hacer énfasis en las vulnerabilidades que se aprovechan por los ataques de tipo cross site. Dentro de los ataques que se consideran de este tipo,encontramos los siguientes: a) Cross Domain Scripting. Existen múltiples vulnerabilidades en los navegadores y una de ellas se da cuando es deficiente la verificación de los controles utilizados para los dominios de seguridad definidos, a esto se le conoce como cross-domain. Una definición de cross domain scripting es la siguiente: “Consecuencia de ser invocado un frame en algún otro dominio de seguridad, si se trata de un dominio local, mediante el cual se permiten ejecutar códigos arbitrarios de un dominio diferente y tener mayores privilegios sobre el sistema atacado3” esto quiere decir que se encuentra abierta la posibilidad de ejecutar código malicioso en el equipo usando los permisos del usuario activo. b) Cross Site Tracing. Actualmente la mayor parte de los negocios debido al crecimiento de la tecnología requieren de un navegador Web común y de un método. Este navegador y método lo solicitan con la finalidad de poder mantener una sesión de un usuario abierta mientras se realizan algunas transacciones necesarias para dichos negocios, empresas u organizaciones. En general los ataques de tipo Cross Site Tracing son manipulados para obtener información exacta de algún usuario cuando se le envía la respuesta del servidor. Una definición de cross site Tracing es la siguiente: “Manejo del atributo Only del protocolo HTTP por medio de una conexión entre un cliente/servidor para poder robar información confidencial del usuario”. El protocolo HTTP se ocupa con la finalidad de poder mantenerse en el servidor en estado activo almacenando la información en las cookies, dichas cookies contienen la información del usuario. Las cookies permiten que el cliente y el servidor mantengan conexión mediante una sesión pero esto es peligroso porque accediendo a las cookies del usuario se puede tomar información confidencial del mismo. 3 www.us-cert.gov/cas/techalerts/TA04-163A.html 24 CAPÍTULO 2 c) Cross Site scripting. Otra de las vulnerabilidades de tipo cross site es la llamada cross-site scripting (XSS4); En los estudios realizados por WebCohort, quedó claro que el XSS era uno de los problemas que más afligían a las aplicaciones Web. Como ejemplo de su peligrosidad, a través de los ataques XSS fue posible burlar las protecciones de antivirus que ofrecen ciertos servicios como por ejemplo Hotmail. Una definición de XSS es la siguiente: Cross Site Scripting es un tipo de “Ataque en la seguridad de una computadora, donde la información de un contexto puede ser insertado en otro contexto, permitiendo que un acceso o uso de código de marca sea ejecutable en la máquina del cliente o del servidor con la finalidad de realizar ataques de diversos tipos”. d) Cross Frame scripting. Finalmente hablamos de los ataques de tipo Cross-frame scripting que se dan cuando “Existe la posibilidad de enmascarar un sitio Web como un marco dentro de otro sitio Web de confianza para robar la información del usuario”. Para los generadores de sitios Web actualmente trabajan con ventanas y sus secciones son manejadas por medio del HTML dinámico. La generación de numerosas ventanas y secciones es con la finalidad de poder mostrar documentos de manera reciproca pero este tipo de sitios peligran con respecto a la integridad de los datos y la información. 2.1. Ataques derivados de las vulnerabilidades Cross Domain Scripting. Existen diversas organizaciones dedicadas a estudiar las vulnerabilidades que existen en los sistemas, dentro de las organizaciones preocupadas por la seguridad de los sitios web se encuentra US-CERT que ha confirmado que siguen existiendo ataques de tipo Cross Site Domain para Microsoft Internet Explorer. Un ejemplo de un ataque de tipo Cross Domain Scripting se da de la siguiente forma: Cuando un script que contenga código malicioso sea descargado sin autorización por medio de Internet, en el momento que dicho usuario está ejecutando alguna página en algún navegador, como por ejemplo Internet Explorer. El script malicioso por lo regular se descarga en zonas conocidas 4 Para evitar confusiones con las siglas de las hojas de estilo (CSS, Cascade Styling Sheet), se suele denominar XSS a este concepto, por una alusión y juego de palabras con el término “cross”. 25 CAPÍTULO 2 como puede ser Mi PC. El problema radica en que dichos scripts con código malicioso, se descargan con los mismos privilegios que el usuario dando como consecuencia el robo de información confidencial. Para comprender un poco más como se explotan las vulnerabilidades con un ataque de tipo Cross Domain Scripting, es necesario tener presente el concepto de dominio, ya que los ataques se basan en los dominios. Mientras la seguridad del dominio tenga en cuenta la prevención de la interacción con el usuario la aplicación será segura de lo contrario se corre el riesgo de poder manipular la información dando paso a los ataques de usuarios malintencionados. Por medio de los ataques de tipo cross domain scripting lo que se hace es detectar si existen zonas no son seguras del browser, esto se detecta cuando el usuario esta abriendo cualquier dominio. Si el dominio que está consultando el usuario es inseguro esto es aprovechado por los atacantes enviando códigos maliciosos a los servidores y a otros dominios que están conectados con el que esta siendo visto por el usuario. Generalmente el problema afecta dominios que no están protegidos. 2.1.1. Descripción Técnica. Las vulnerabilidades encontradas por los ataques de tipo Cross Domain Scripting (en español dominio cruzado) permiten cierto código en un determinado dominio, los dominios pueden ser accedidos en otros dominios diferentes y con privilegios similares a los asignados en la primer zona, dicha zona puede ser un sitio remoto. Cuando se detectan los ataques de tipo Cross Domain Scripting en navegadores de Microsoft en el caso del sistema operativo Windows, es porque no determinan la zona de seguridad de un marco que se encuentra abierto en un dominio y redireccionado a un servidor Web en un dominio diferente. Para poder llevar acabo un ataque de tipo Cross Domain Scripting, se puede lanzar un evento con algún lenguaje de programación, como por ejemplo java script, dicho evento será invocado en la página nueva haciendo posible el ataque siempre y cuando las páginas pertenezcan a diferentes dominios. Por ejemplo en el navegador Mozilla hay una parte que se encarga de prevenir la explotación de documentos zombie, pero lo mas importante es que verifica todo el código de un script antes de ser ejecutado; esto lo hace con la finalidad de evitar ataques de tipo cross site. El problema se da en los manejadores de eventos conocidos como “event handlers” utilizados en códigos de documentos HTML, ya que los event handlers son códigos que se ejecutan como respuesta a ciertos eventos como pueden ser acciones de usuario de mover el Mouse, escribir, etcétera. 26 CAPÍTULO 2 2.1.2. Proceso de Ataque. Los ataques de tipo Cross Domain Scripting se puede dar de diversas formas, una de ellas es basándose en los elementos OBJECT, permitidos en el lenguaje de programación HTML, dichos objetos permiten insertar objetos externos a las páginas Web. Algunos ejemplos de los elementos OBJECT que son insertados pueden ser los controles Active X como Web Browser, imágenes, applets, aplicaciones y algunos otros. El elemento OBJECT permite realizar las especificaciones lo que necesita un agente de usuario para la representación de un objeto, es decir: valores, códigos fuente y datos de los tiempos de ejecución. El problema comienza algunas veces en los controles Web Browser que están incluidos en las etiquetas OBJECT ya que en estos controles se pueden evadir restricciones de seguridad
Compartir