1 Seguridad en Aplicaciones Web
2 Chema Alonso MS MVP Windows Server Security [email protected]Amenazas Web Chema Alonso MS MVP Windows Server Security
3 Agenda Amenazas Web Aplicaciones Web Vulnerabilidades: Sql InjectionVulnerabilidades: Cross-Site Scripting Vulnerabilidades: RFI Vulnerabilidades: Phising Vulnerabilidades: WebTrojan Vulnerabilidades: Capa 8
4 Aplicaciones Web
5 Tipos de Aplicaciones WebWeb Site público. Información destinada al público. Intranet (ERP/CRM/Productividad) Información privada de acceso interno. Extranet (Productividad/B2B/B2C) Información privada de acceso externo.
6 Arquitectura MulticapaInterfaz de Usuario (GUI) Lógica de la Aplicación Almacén De Datos DCOM BBDD WebServer Browser WebService BBDD WebServer RPC
7 Amenazas Zone-h contabiliza intrusiones Web con éxito cada día en 2004. Se atacan todas las tecnologías Los ataques se han escalado desde el sistema operativo a la aplicación. Ataques no masivos. Motivos: Económicos Venganza Reto Just For Fun
8 Cliente - Riesgos Navegador de Internet:Ejecuta código en contexto de usuario. Lenguajes potentes: HTML/DHTML vbScript/JavaScript/Jscript Programas embebidos Applets Java ActiveX Shockwave Flash Códigos No protegidos Cifrado cliente: Atrise. Ofuscación de código.
9 Código y poder El código fuente es poderTanto para defenderse como para atacar Compartir el código es compartir el poder. Con los atacantes y defensores Publicar el código fuente sin hacer nada más degrada la seguridad Por el contrario, publicar el código fuente permite a los defensores y a otros elevar la seguridad al nivel que les convenga.
10 Software Seguro El software Fiable es aquel que hace lo que se supone que debe hacer. El software Seguro es aquel que hace lo que se supone que debe hacer, y nada mas. Son los sorprendentes “algo mas” los que producen inseguridad. Para estar seguro, debes de ejecutar solo software perfecto :-) O, hacer algo para mitigar ese “algo mas” Doing Something Code Auditing: static or dynamic analysis of programs to detect flaws, e.g. ITS4 and friends Vulnerability Mitigation: compiled in defense that block vulnerability exploitation at run-time, e.g. StackGuard and friends Behavior Management: OS features to control the behavior of programs Classic: mandatory access controls Behavior blockers: block known pathologies
11 Cliente - Riesgos Ninguna protección en cliente es buenaUtilización de técnicas de MITM Achilles BurpSuite Odysseus… Decompiladores Flash Java
12 Lógica de Aplicación - RiesgosServidor Web Ejecuta código en contextos privilegiados. Lenguajes potentes Acceden a BBDD Envían programas a clientes Transferir ficheros Ejecutar comandos sobre el sistema. Soporte para herramientas de administración de otro software. Códigos de Ejemplo
13 Almacén de Datos - RiesgosSGBD Lenguaje de 3ª y 4ª Generación. Soporta múltiples bases de datos. Catálogo global de datos. Ejecuta programas sobre Sistema. LOPD. Transacciones económicas. Información clave de negocio.
14 Vulnerabilidades: SQL Injection
15 Explotación del AtaqueAplicaciones con mala comprobación de datos de entrada. Datos de usuario. Formularios Text Password Textarea List multilist Datos de llamadas a procedimientos. Links Funciones Scripts Actions Datos de usuario utilizados en consultas a base de datos. Mala construcción de consultas a bases de datos.
16 Riesgos Permiten al atacante: Saltar restricciones de acceso.Elevación de privilegios. Extracción de información de la Base de Datos Parada de SGBDR. Ejecución de comandos en contexto usuario bd dentro del servidor.
17 Tipos de Ataques Ejemplo 1:Autenticación de usuario contra base de datos. Select idusuario from tabla_usuarios Where nombre_usuario=‘$usuario’ And clave=‘$clave’; Usuario Clave ****************
18 Tipos de Ataques Ejemplo 1 (cont) Select idusuario from tabla_usuariosWhere nombre_usuario=‘Administrador’ And clave=‘’ or ‘1’=‘1’; Usuario Administrador Clave ‘ or ‘1’=‘1
19 Demo
20 Tipos de Ataques Ejemplo 2:Acceso a información con procedimientos de listado. Ó
21 Tipos de Ataques Ejemplo 2 (cont):union select nombre, clave,1,1,1 from tabla_usuarios; otra instrucción; xp_cmdshell(“del c:\boot.ini”); shutdown -- Ó union select .....; otra instrucción; --
22 Demo
23 Contramedidas No confianza en medias de protección en cliente.Comprobación de datos de entrada. Construcción segura de sentencias SQL. Fortificación de Servidor Web. Códigos de error. Restricción de verbos, longitudes, etc.. Filtrado de contenido HTTP en Firewall. Fortificación de SGBD. Restricción de privilegios de motor/usuario de acceso desde web. Aislamiento de bases de datos.
24 Contramedidas Desarrollo .NETRedirigir a una página personalizada en caso de error Web.Config Mode On, Off, RemoteOnly DefaultRedirect Error no especificado
25 Contramedidas Desarrollo .NET (Validadores)
26 Contramedidas Desarrollos en .NET (Código inseguro)protected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "Select * from Usuarios where login='"+ txtLogin.Text +"‘ and password='"+ txtPassword.Text +"'"; cmd.CommandType = CommandType.Text; SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows){ //Código para permitir el paso a la aplicación Response.Write(""); } else{ //Codigo para rechazar el usuario Response.Write(""); conn.Close(); Desarrollos en .NET (Código inseguro) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/3570981/12/images/26/Contramedidas+Desarrollos+en+.NET+%28C%C3%B3digo+inseguro%29.jpg", "name": "Contramedidas Desarrollos en .NET (Código inseguro)", "description": "protected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = Select * from Usuarios where login= + txtLogin.Text + ‘ and password= + txtPassword.Text + ; cmd.CommandType = CommandType.Text; SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows){ //Código para permitir el paso a la aplicación. Response.Write( alert( Acceso permitido ); ); } else{ //Codigo para rechazar el usuario. Response.Write( alert( Acceso denegado ); ); conn.Close(); Desarrollos en .NET (Código inseguro)", "width": "800" }
27 Contramedidas Desarrollo .NET (Código seguro) Consultas parametrizadasprotected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "Select * from Usuarios where and cmd.Parameters.AddWithValue("login", txtLogin); cmd.Parameters.AddWithValue("pass", txtPassword.Text); cmd.CommandType = CommandType.Text; dr = cmd.ExecuteReader(); if (dr.HasRows){//Código para permitir el paso a la aplicación Response.Write(""); } else{//Codigo para rechazar el usuario Response.Write(""); } conn.Close(); } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.es/3570981/12/images/27/Contramedidas+Desarrollo+.NET+%28C%C3%B3digo+seguro%29+Consultas+parametrizadas.jpg", "name": "Contramedidas Desarrollo .NET (Código seguro) Consultas parametrizadas", "description": "protected void Button1_Click(object sender, EventArgs e){ SqlConnection conn = new SqlConnection(connstr); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = Select * from Usuarios where login=@login. and password=@pass ; cmd.Parameters.AddWithValue( login , txtLogin); cmd.Parameters.AddWithValue( pass , txtPassword.Text); cmd.CommandType = CommandType.Text; dr = cmd.ExecuteReader(); if (dr.HasRows){//Código para permitir el paso a la aplicación. Response.Write( alert( Acceso permitido ); ); } else{//Codigo para rechazar el usuario. Response.Write( alert( Acceso denegado ); ); } conn.Close(); }", "width": "800" }
28 Vulnerabilidades: Cross-Site Scripting (XSS)
29 Explotación del AtaqueDatos almacenados en servidor desde cliente. Datos van a ser visualizados por otros cliente/usuario. Datos no filtrados. No comprobación de que sean dañinos al cliente que visualiza.
30 Riesgos Ejecución de código en contexto de usuario que visualiza datos. Navegación dirigida Phising Spyware Robo de credenciales Ejecución de acciones automáticas Defacement
31 Tipos de Ataques Mensajes en Foros. Firma de libro de visitas.Contactos a través de web. Correo Web. En todos ellos se envían códigos Script dañinos.
32 Demo
33 Robo de Sesiones (XSS) Mediante esta técnica se puede robar sesiones de una manera bastante sencilla Bastaría con realizar un script que llamase a una página alojada en nuestro servidor pasándole la cookie Este Script se colaría en el servidor de la victima aprovechando un punto vulnerable a XSS Cuando un usuario este logueado en el servidor y ejecute el script se enviara a nuestro servidor el contenido de la cookie
34 Robo de Sesiones (XSS) Una vez que la página obtiene la cookie (almacenandola por ejemplo en un fichero) mediante programas como Odysseus se puede hacer una llamada al servidor pasándole la cookie original Por supuesto esta cookie es válida para robar la sesión solo mientras el usuario no cierre la sesión
35 Demo
36 Contramedidas Fortificación de aplicación Fortificación de ClientesComprobación fiable de datos Fortificación de Clientes Ejecución de clientes en entorno menos privilegiado. Fortificación de navegador cliente. MBSA. Políticas.
37 Contramedidas Desarrollo .NETEn ASP.NET el Cross Site Scripting está deshabilitado por defecto El Framework se encarga de buscar posibles ataques de este tipo en las entradas de datos Se puede deshabilitar este tipo de verificación mediante un atributo de la Para deshabilitarlo Page … ValidateRequest=“false” … %>
38 Vulnerabilidades: Remote File Inclusion (RFI)
39 Remote File Inclusion (RFI)Vulnerabilidad propia de páginas PHP dinámicas que permite enlace de archivos remotos situados en otros servidores Se debe a una mala programación o uso de la función include() Esta vulnerabilidad no se da en páginas programadas en un lenguaje que no permita la inclusión de ficheros ajenos al servidor
40 Remote File Inclusion (RFI)La vulnerabilidad es producida por código semejante a este En páginas de este tipo se puede incluir ficheros que estén en nuestro servidor $page = $_GET['page']; include($page);
41 Remote File Inclusion (RFI)Existen herramientas que permite explorar un sitio Web en busca de este tipo de vulnerabilidades (rpvs)
42 Remote File Inclusion (RFI)Mediante las shell PHP se pueden ejecutar comandos en una página Web Usando RFI se puede incluir un fichero que ejecute comandos, tales como listar directorios, obtener y colocar ficheros, etc. “El inconveniente” es que la mayoría de servidores Web en PHP tienen deshabilitadas las funciones exec, system o passthru que impiden la ejecución de comandos
43 Remote File Inclusion (RFI)Sin embargo, existen funciones como show_source(‘archivo’) que permiten la visualización del código fuente de una página A su vez, existen otra serie de funciones que nos permiten listar el contenido de un directorio El uso de estas funciones no puede ser limitado y no depende del SO sobre el que se encuentra instalado el Servidor Web
44 Demo
45 Vulnerabilidades: Phising
46 Explotación del AtaqueBasado en técnicas de Ingeniería Social. Se aprovecha de la confianza de los usuarios. Se aprovecha de la falta de formación en seguridad de los usuarios. Certificados digitales no generados por Entidades Emisoras de Certificados de confianza.
47 Riesgos Suplantación de Sitios Web para engañar al usuario.Robo de credenciales de acceso a web restringidos. Robo de dinero Compras por Internet Bromas pesadas
48 Tipos de Ataques Se falsea la dirección de DNS del servidorFalsificación hosts Troyanos, Físicamente, Shellcodes exploits DHCP DNS Spoofing Man in The Middle Se engaña la navegación. Frames Ocultos URLs falseadas. Se implanta en la nueva ubicación un servidor replica. Se implantan hasta fakes de certificados digitales
49 Exploits infohacking.com
50 Contramedidas Uso de CA de confianza Formación a usuariosGestión de actualizaciones de seguridad Códigos de aplicaciones seguras Control físico de la red Comprobación DHCP
51 Vulnerabilidades: WebTrojan
52 Explotación de Ataque Servidores Web no fortificadosEjecución de programas en almacenes de ficheros. Subida de ficheros a servidores. Imágenes para publicaciones. Archivos de informes. Currículos, cuentos, etc... Almacenes de ficheros accesibles en remoto Usuario en contexto servidor Web no controlado
53 Riesgos Implantación de un troyano que puede: Gestionar ficherosEjecutar programas Destrozar el sistema Defacement Robo de información ....
54 Tipos de Ataques Programación de un troyano en PHP, ASP o JSPUtilización de objetos FileObject Subida mediante ASP Upload, FTP o RFI Busqueda del lugar de almacenamiento Invocación por URL pública del servidor Web
55 Demo
56 Contramedidas Fortificación de servidores Web Menor PrivilegioEjecución de programas en sitios restringidos Listado de directorios ocultos Usuario de servidor en contexto controlado Subida de archivos controlada Ubicación no accesible desde URL pública Tipos de ficheros controlados Tamaño, tipo, extensión, etc.. Filtrado vírico -> Rootkits
57 Contramedidas Desarrollo .NETEn ASP.NET se puede verificar la extensión del fichero que se sube al servidor Evita la subida de ficheros potencialmente peligrosos if (!FileUpload1.PostedFile.FileName.EndsWith(".jpg")) { //Error: El fichero no es del tipo esperado }
58 Vulnerabilidades: Capa 8
59 Explotación de Ataque Falta de conocimiento SD3Diseño Configuraciónes Implantación Administradores/Desarrolladores no formados en Seguridad Hacking Ético Falta de conocimiento del riesgo
60 Riesgos Insospechados: Bases de datos públicas No protección de datosNo protección de sistemas .....
61 Tipos de Ataques Hacking Google Administradores predecibles Ficheros log públicos WS_ftp.log Estadísticas públicas Webalyzer
62 Demo
63 Contramedidas Formación Ficheros Robots LOPD y LSSIRobots.txt LOPD y LSSI Writting Secure Code
64 Contramedidas
65 ¿ Preguntas ?
66 Troyanos “Hay un amigo en mi”
67 Que puede hacer un troyanoVideo Que puede hacer un troyano
68 Troyano Programa que se ejecuta en tu máquina y cuyo control no depende de ti. Como el ….. Mil formas, mil colores Los Hackers la llaman la “girlfriend”
69 Obtención de PrivilegiosFallo en la cadena: Procesos: Sistema no cerrado. Tecnología: Fallo en sw de sistema operativo Fallo en sw ejecución de códigos. Personas: Ingeniería Social: “¡Que lindo programita!” Navegación privilegiada
70 Objetivos Control remoto: Robo de informaciónInstalan “suites” de gestión del sistema. Robo de información Modificación del sistema: Phishing Creación de usuarios Planificación de tareas ....
71 Instalación del TroyanoSe suele acompañar de “un caballo” para tranquilizar a la víctima. Se añaden a otro software. EJ: Whackamole Joiners, Binders Incluidos en documentos que ejecutan código: Word, excel, swf, .class, pdf, html, etc...
72 Instalación del TroyanoSimulando ser otro programa P2P, HTTP Servers Paquetes Zip autodescomprimibles Programas con fallo de .dll Instaladores de otro SW
73 Un troyano de andar por casa pa… phisearDemo: Un troyano de andar por casa pa… phisear
74 Un troyano de andar por casa pa… meter un backdoorDemo: Un troyano de andar por casa pa… meter un backdoor
75 Un troyano de andar por casa pa… abrir una shellDemo: Un troyano de andar por casa pa… abrir una shell
76 Un troyano de andar por casa pa… robar una shellDemo: Un troyano de andar por casa pa… robar una shell
77 Detección de Troyanos Anti-Mallware Comportamiento anómalo del sistemaAntivirus AntiSpyware Comportamiento anómalo del sistema Configuraciones nuevas Cambio en páginas de navegación Puertos ....
78 Prevención contra TroyanosDefensa en Profundidad Mínimo Privilegio Posible Mínimo punto de exposición Gestión de updates de seguridad Antivirus/AntiSpyware Ejecución controlada de programas Navegación segura
79 Ataque: Envenenamiento ARP
80 RFC TCP/IP tutorial There are security considerations within the TCP/IP protocol suite. To some people these considerations are serious problems, to others they are not; it depends on the user requirements. This tutorial does not discuss these issues, but if you want to learn more you should start with the topic of ARP-spoofing, then use the "Security Considerations" section of RFC 1122 to lead you to more information. There are security considerations within the TCP/IP protocol suite. To some people these considerations are serious problems, to others they are not; it depends on the user requirements. This tutorial does not discuss these issues, but if you want to learn more you should start with the topic of ARP-spoofing, then use the "Security Considerations" section of RFC 1122 to lead you to more information.
81 Técnicas de Spoofing Las técnicas spoofing tienen como objetivo suplantar validadores estáticos Un validador estático es un medio de autenticación que permanece invariable antes, durante y después de la concesión.
82 Niveles Afectados Nombres de dominio Direcciones de correo electrónicoNombres de recursos compartidos SERVICIO RED Dirección IP ENLACE Dirección MAC
83 Tipos de técnicas de SpoofingSpoofing ARP Envenenamiento de conexiones. Man in the Middle. Spoofing IP Rip Spoofing. Hijacking. Spoofing SMTP Spoofing DNS WebSpoofing.
84 Técnicas de Sniffing Switches utilizan dirección MAC.Capturan tráfico de red. Necesitan que la señal física llegue al NIC. En redes de difusión mediante concentradores todas las señales llegan a todos los participantes de la comunicación. En redes conmutadas la comunicación se difunde en función de direcciones. Switches utilizan dirección MAC.
85 Nivel de Enlace: Spoofing ARPSuplantar identidades físicas. Saltar protecciones MAC. Suplantar entidades en clientes DHCP. Suplantar routers de comunicación. Solo tiene sentido en comunicaciones locales.
86 Dirección Física Tiene como objetivo definir un identificador único para cada dispositivo de red. Cuando una máquina quiere comunicarse con otra necesita conocer su dirección física. Protocolo ARP No se utilizan servidores que almacenen registros del tipo: Dirección MAC <-> Dirección IP. Cada equipo cuenta con una caché local donde almacena la información que conoce.
87 Ataque ARP Man In The Middleesta en 99:88:77:66:55:44 esta en 99:88:77:66:55:44 ¿Quien tiene ? esta en 00:11:22:33:44:55:66
88 Protección contra EnvenenamientoMedidas preventivas. Control físico de la red. Bloqueo de puntos de acceso. Segmentación de red. Gestión de actualizaciones de seguridad. Protección contra Exploits. Protección contra troyanos.
89 Protección contra EnvenenamientoMedidas preventivas. Cifrado de comunicaciones. IPSec. Cifrado a nivel de Aplicación: S/MIME. SSL. Certificado de comunicaciones.
90 Protección contra EnvenenamientoMedidas reactivas. Utilización de detectores de Sniffers. Utilizan test de funcionamiento anómalo. Test ICMP. Test DNS. Test ARP. Sistemas de Detección de Intrusos
91 Frase vs. Passwords ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●
92 Web MVPs
93 TechNews Suscripción gratuita enviando un mail:
94 Contacto Chema Alonso Informatica64 [email protected]