380 likes | 564 Views
Introducción a la seguridad web. Daniel Correa Botero José López Vélez Universidad de Antioquia 2013-II. Ética y moral. ¿Qué clase de ingenieros y personas queremos ser para la sociedad?. Leyes en Colombia. LEY 1273 DE 2009 Diario Oficial No. 47.223 de 5 de enero de 2009
E N D
Introducción a la seguridad web Daniel Correa BoteroJosé López VélezUniversidad de Antioquia 2013-II
Ética y moral • ¿Qué clase de ingenieros y personas queremos ser para la sociedad?
Leyes en Colombia LEY 1273 DE 2009 Diario Oficial No. 47.223 de 5 de enero de 2009 CONGRESO DE LA REPÚBLICA Por medio de la cual se modifica el Código Penal, se crea un nuevo bien jurídico tutelado - denominado “de la protección de la información y de los datos”- y se preservan integralmente los sistemas que utilicen las tecnologías de la información y las comunicaciones, entre otras disposiciones. Artículo 269G: Suplantación de sitios web para capturar datos personales. El que con objeto ilícito y sin estar facultado para ello, diseñe, desarrolle, trafique, venda, ejecute, programe o envíe páginas electrónicas, enlaces o ventanas emergentes, incurrirá en pena de prisión de cuarenta y ocho (48) a noventa y seis (96) meses y en multa de 100 a 1.000 salarios mínimos legales mensuales vigentes, siempre que la conducta no constituya delito sancionado con pena más grave. Artículo 269A: Acceso abusivo a un sistema informático. El que, sin autorización o por fuera de lo acordado, acceda en todo o en parte a un sistema informático protegido o no con una medida de seguridad, o se mantenga dentro del mismo en contra de la voluntad de quien tenga el legítimo derecho a excluirlo, incurrirá en pena de prisión de cuarenta y ocho (48) a noventa y seis (96) meses y en multa de 100 a 1.000 salarios mínimos legales mensuales vigentes. http://www.eltiempo.com/justicia/ARTICULO-WEB-NEW_NOTA_INTERIOR-11242405.html http://www.secretariasenado.gov.co/senado/basedoc/ley/2009/ley_1273_2009.html
Hackers La palabra hacker se relaciona con 2 significados: • Tradicionalmente un hacker es aquella persona que le gusta jugar con software o sistemas electrónicos. Los hackers disfrutan de explorar y aprender como operan los sistemas informáticos. • En los últimos años han tomado un nuevo significado. Se definen como aquellas personas que maliciosamente irrumpen en sistemas para obtener beneficios personales. Técnicamente estos criminales son CRACKERS (criminal hackers).
Categorías de hackers • White hat (los chicos buenos)Dentro de los chicos buenos encontramos los ETHICAL HACKERS o investigadores de seguridad. Los cuales irrumpen en sistemas tratando de encontrar vulnerabilidades para proteger estos sistemas y corregir las fallas. • Grey hat (un poco de ambos) • Black hat (los chicos malos)
¿Cuáles son las razones para irrumpir en diferentes sistemas? • Curiosidad, adrenalina o desparche. Para algunos mientras el trabajo sea mas difícil mayor es la emoción. • Promover la descentralización de la información: ya que creen que toda la información debe ser libre. • Venganza. • Obtener información personal o beneficios económicos (robos de identidad). • Búsqueda de fama. • Terrorismo. • Política.
Misión: desactivar el sitio web de armamento nuclear ruso. • Los únicos datos que tenemos es el nombre del sitio web. Y que el dueño es un vecino.
Paso 1: Informationgatheringorscanningsystems • ¿Cómo obtener toda la información posible acerca de nuestro objetivo? • Analizar su sitio web. • Google (usar googledorks). • Who.is. • Nmap. • Whireshark. • Ingeniería social
Google dorks • Utilizar google para encontrar información sensitiva. http://www.exploit-db.com/google-dorks/9/
Google dorks • http://www.thekeyboardcowboys.org/downloads/postfix/postfix-db.sql
Paso 1: información recopilada Puertos abiertos
Ingenieria social • La ingeniería social es la explotación de la naturaleza confiada de los seres humanos para obtener información con fines maliciosos. • Supongamos que la información encontrada no es suficiente (aunque encontramos la dirección de la compañía) y que deseamos recopilar mas información sobre la compañía de armamento nuclear. ¿Que ataques “no técnicos” o de ingeniería social utilizaríamos?
Ingenieria social La Falacia del experto. ¿Qué es la falacia del experto? El mundo en que vivimos es tan complejo, estamos inundados de tantos mensajes, imágenes, y sonidos permanentemente lo que hace muy difícil descifrarlo, es por eso que nuestro cerebro nos ayuda buscando algunas señales que nos permita interpretar de una manera ágil y confiable una realidad. Dada esta necesidad, nuestro cerebro construye su percepción de lo que ve, usando unas ideas preconcebidas y nos hace confiar en aquellas personas que dan una imagen de estabilidad (El Médico y su bata blanca, o el abogado que usa traje y corbata por ejemplo). Por lo tanto, confiamos mas en lo que nos dicen, porque el cerebro envía un mensaje de confiabilidad por la interpretación que le da, a la realidad que ve.
Ingenieria social • Ataques no técnicos: • Entrar en el edificio de la compañía (normalmente utilizando la falacia del experto) y buscar en las papeleras, zonas de computación y servidores, información. • Realizar llamadas telefónicas haciéndose pasar por un técnico de la empresa de telefonía y preguntar por contraseñas. • Pagar a algún empleado para que entregue la contraseña o simplemente preguntarle. • Realizar (shouldersurfing)
Paso 2: análisis de vulnerabilidades • Exploites un fragmento de software, fragmento de datos o secuencia de comandos y/o acciones, utilizado con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo. • Las vulnerabilidades son puntos débiles del software que permiten que un atacante comprometa la integridad, disponibilidad o confidencialidad del mismo. Algunas de las vulnerabilidades más severas permiten que los atacantes ejecuten código arbitrario, denominadas vulnerabilidades de seguridad, en un sistema comprometido. http://www.exploit-db.com/
Exploits • Se dan por mala programación y poca experiencia de los desarrolladores. • Comúnmente se encuentran en módulos, plugins o librerías adicionales que suben los integrantes de las diferentes comunidades de desarrollo. Desarrolladores de joomla, wordpress, etc. • Suponga que una compañía le vende a usted un sitio web de ventas online, al mes de finalizado el proyecto se descubre un exploit en uno de los módulos utilizados en su sitio web. • ¿Cree usted que la compañía lo llamará para indicarle como solucionar el problema? • ¿Cree usted que este inconveniente es responsabilidad de la compañía o suya?
Paso 2: análisis de vulnerabilidades • Supongamos que luego de recopilar la información del sitio web nuclear encontramos cosas tales como: • Utilizan joomla para uno de sus portales. • Todos los empleados se conectan desde una red de wifi de la compañía. • Utilizamos Acunetix para búsqueda de vulnerabilidades con los siguientes resultados. ¿Qué haríamos luego de recopilar esa información?
Paso 3: explotación de vulnerabilidades. • Luego de detectar las vulnerabilidades procedemos a explotarlas. Este paso es de mucha paciencia y no siempre una vulnerabilidad encontrada garantiza acceso al sistema. • Para 1: podríamos utilizar un joomscan
Paso 3: explotación de vulnerabilidades. • Para 2: podríamos utilizar whireshark – ettercap - xplico
Paso 3: explotación de vulnerabilidades. • Para 3: podríamos utilizar sqlmap
Sqlinjection • Cuando no se limpian bien las variables, ni se crean bien las consultas, dejamos un hueco de seguridad en el sistema. Y los hackers utilizando herramientas como el sqlmap pueden averiguar información tal como: nombres de bases de datos, tablas, columnas, filas, etc. • Solución: utilizar mysql_real_escape_string() u otras funciones para limpiar variables antes de ejecutar una consulta sql. Igualmente verificar que donde exista una variable hayan comillas antes y al final de la variable en la consulta. • Ejemplo: $id=mysql_real_escape_string($id); “SELECT * FROM usuarios WHERE id=‘$id’”; Debido a que diferentes programadores no utilizaron esos 2 elementos encontramos cientos de sitios vulnerables.
Sqlinjection • Para encontrar un sitio web vulnerable se buscan rutas en las cuales se envien datos por GET y se coloca al final una comilla simple. Si sale un error de sintaxis es muy probable que el sitio sea vulnerable.
Sqlinjection • ¿Qué pasa si un hacker logra obtener la información de nuestra tabla de usuarios? Podría buscar un panel de administración y loguearse. • Podría modificar la información de nuestro sitio web. • Podría cargar archivos o información maliciosa. • Recopilar muchos más datos de los visitantes nuevos. • Enviar correos spam. • Subir un shell.
Backdoors - shell • ¿Suponga que un hacker encontró la forma de acceder a la administración de su software web, pero de alguna manera se entero de que el ing. de sistemas ya sabe como corregir el error, que cree usted que haría el hacker?
Shell • Es un archivo malicioso que permite acceder a un sin número de funciones dentro de un servidor, tales como: modificar archivos, crear archivos, subir archivos, crear carpetas, borrar carpetas, enviar correos, entre otros.
Passwords • ¿Cuáles crees que son las 10 contraseñas mas utilizadas a nivel mundial?
Encriptarpasswords • La encripción de passwords es supremamente importante, debido a que supongamos que un hacker accede a la info de la base de datos. Si las contraseñas están encriptadas le será mucho mas difícil encontrar su solución, si están desencriptadas podrán aprovecharlas y acceder a otros sistemas tales como: • Tu cuenta en facebook. • Tu correo electrónico. • Tus cuentas en foros, etc. Esto debido a que muchas personas utilizan la misma contraseña para todo. Mientras mas compleja la contraseña mas difícil de desencriptar. Para encriptar contraseñas recomendamos PHPASS. Tratar de no utilizar MD5 ya que en internet hay muchos sistemas para desencriptar este tipo de contraseñas.
Otras sugerencias • Mucho cuidado con la información que colocas en el cliente (ojo con los input typehidden, y los códigos en javascript). Revísalos y asegúrate que no puedan vulnerar la aplicación por este medio. • Ej: registrarse en un sitio web <formaction=“registrar.php” method=“post”> <input type=“text” name=“nombre”> <input type=“text” name=“edad”> <input type=“hidden” name=“tipo_usuario” value=“normal”> </form> Aunque el usuario final no lo ve a simple vista, puede usar firebug o la consola de chrome para modificarlo.
Otras sugerencias • Cuando uno de los requisitos sea cargar archivos como fotos, docs, etc. Valida muy bien el tipo de dato que cargan los usuarios y establece un directorio a donde carguen estos archivos. Dentro de este directorio coloca un .htaccess que impida ejecutar archivos de otro tipo. • Nunca subas backups o información importante a carpetas dentro de tu propio servidor. • Establece permisos para carpetas y archivos, no permitas que mas usuarios de diferentes cuentas puedan acceder a información de tu servidor.
Como proteger tus sistemas de los chicos malos • No debes proteger tus sistemas contra TODO. Sencillamente no puedes, la única protección contra TODO es desconectar el pc o servidor y esconderlo donde nadie pueda encontrarlo (incluso tu mismo). • Debes proteger tus sistemas contra las vulnerabilidades y ataques mas comunes. • Hackea tus propios sistemas sin dañarlos. • Realiza un documento o informe con las vulnerabilidades que encuentres. • Elimina las vulnerabilidades.
Bibliografía • Beaver, Kevin. Hacking for dummies. John Wiley & Sons, 2013. • Stuttard, David; Pinto, Marcus. The Web Application Hacker's Handbook: Finding and Exploiting Security. ISBN-10: 1118026470. 2011. • ESET-LA [Online] http://blogs.eset-la.com/laboratorio/2012/06/21/google-dorks-ocultar-informacion-critica-servidores/ • CSIRC Universidad de Granada [Online] http://csirc.ugr.es/informatica/ServiciosCorporativos/PaginaWeb/AccesoRestringido.html • SQL Injection Are Your Web Applications Vulnera-ble? SPI Dynamics. 2002. http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf • BackTrack [Online] http://www.backtrack-linux.org/ • Acunetix [Online] http://www.acunetix.com/ • Alguien en la Fisi - Blog [Online] http://alguienenlafisi.blogspot.com/2011/08/sql-injection-web-attacks-parte-vii.html • ElHacker.Net http://www.elhacker.net