Download - Sega Plic Web
-
Seguridad Informtica
Seguridad en Aplicaciones 1
Dr. Roberto Gmez Crdenas
Lmina 1
Seguridad en Aplicaciones Web
Daro [email protected]
Lmina 2
Seguridad es un Proceso
La seguridad debe contemplarse lo antes posible en el ciclo de vida del software Entre ms tarde se implementa la seguridad ms costosa
es
Seguridad en el Desarrollo Al inicio del proceso A lo largo del desarrollo En la implantacin En el mantenimiento diario
Buscar problemas de seguridad durante todo el proceso de desarrollo y continuar una vez en produccin
-
Seguridad Informtica
Seguridad en Aplicaciones 2
Dr. Roberto Gmez Crdenas
Lmina 3
Seguridad en el Proceso de Desarrollo
Concepto DiseoCompleto
Plan dePruebas
CdigoCompleto
ImplantacinConcepto Diseo
CompletoPlanes dePruebas
DesarrolloCompleto
Implantacin Operacin
Hacer una rev-isin en equipo de seguridad
Determinar criterios de aceptacin
Enviar a anlisis externo
Probar manipula-cin de datos y mnimos privilegios
= Continuo
Resolver problemas de seguridad y hacer revisin de cdigo
Entrenar a losintegrantes del equipo
Analizar amenazas
Hackeo tico de aplicacin
Aprender y refinar
Revisar conocimientode seguridad al encon-trar nuevos elementos
Lmina 4
Ah!, los costos
COST
OS
TIEMPO
-
Seguridad Informtica
Seguridad en Aplicaciones 3
Dr. Roberto Gmez Crdenas
Lmina 5
Autenticacin
es el proceso de verificar que los usuarios son quienes dicen ser
--wikipediahttp://es.wikipedia.org/wiki/Autenticacin
Lmina 6
Autorizacin
proceso de verificar si el usuario [] tiene permiso para acceder a un dato, funcionalidad o servicio
--wikipediahttp://es.wikipedia.org/wiki/Autorizacin
-
Seguridad Informtica
Seguridad en Aplicaciones 4
Dr. Roberto Gmez Crdenas
Lmina 7
Manejo de sesin
Longitud de la semilla de sesin Duracin de la sesin Reuso de sesin Borrado de sesin Formato de semilla de sesin
Lmina 8
Manejo de sesiones
Asegurar que los usuarios autenticados tengan una robusta y criptogrficamente
segura asociacin con su sesin
-
Seguridad Informtica
Seguridad en Aplicaciones 5
Dr. Roberto Gmez Crdenas
Lmina 9
Validacin de ingresos de informacin
Inyeccin de scripts Inyeccin de LDAP Inyeccin de SQL Cross site scripting
Lmina 10
Validacin de datos
Asegurar que la aplicacin es robusta en contra de todas las formas de entrada de
datos, tanto obtenidas del usuario, infraestructura, entidades externas o
sistemas de bases de datos
-
Seguridad Informtica
Seguridad en Aplicaciones 6
Dr. Roberto Gmez Crdenas
Lmina 11
Manejo de errores
Mensajes de error de aplicacin Mensajes de error de usuario Qu hacer cuando sucede un error?
Lmina 12
Manejo de errores
Los atacantes motivados gustan de ver los mensajes de error mientras van obteniendo
informacin que los conduzca ataques de gran alcance, o a obtener informacin sensitiva.
El manejo de errores en las aplicaciones web es raro que sea los suficientemente robusto para sobrevivir
una prueba de penetracin
-
Seguridad Informtica
Seguridad en Aplicaciones 7
Dr. Roberto Gmez Crdenas
Lmina 13
Administracin de configuraciones
Determinar si la aplicacin y su ambiente estn configurados correctamente Mtodos http Hosting virtual Actualizacin de servidor Programa de respaldo Configuracin de servidor Web Componentes de servidor Web Directorios comunes Opciones predeterminadas de lenguaje Acceso a consola de administracin
Lmina 14
Bitcoras
Trazabilidad de eventos Recuperacin de evidencias Entender la mecnica de ataques Aprender de los errores Automatizacin:
Rastreo Documentacin Aprendizaje Reaccin a incidentes
-
Seguridad Informtica
Seguridad en Aplicaciones 8
Dr. Roberto Gmez Crdenas
Lmina 15
Bitcoras
Las aplicaciones bien escritas tendrn bitcoras de doble propsito para auditar y monitorear, y hacer
mas sencillo rastrear una transaccin sin demasiado esfuerzo o acceso al sistema. Deben poseer la habilidad para rastrear o identificar fraudes
potenciales o anomalas de fin-a-fin
Lmina 16
A1 - Fallas de Inyeccin
La aplicacin Web pasa parmetros no validados cuando accede a sistemas externos o al sistema operativo local.
Tipos de ataque Lectura, modificacin o borrado de archivos del
sistema Lectura, modificacin o borrado de datos en una
base de datos Ejecucin de comandos en el sistema operativo Ejecucin de comandos en la base de datos
-
Seguridad Informtica
Seguridad en Aplicaciones 9
Dr. Roberto Gmez Crdenas
Lmina 17
A1 SQL Injection
Un query de login con error de inyeccin:SELECT * FROM usersWHERE login = 'victor'AND password = '123'
(True? - Si regresa algo entonces es vlido!)ASP/MS SQL Server login syntax
var sql = "SELECT * FROM usersWHERE login = '" + formusr + "' AND password = '" + formpwd + "'";
Lmina 18
A1 SQL Injection
formusr = ' or 1=1 formpwd = lo que sea
El query final se vera as:SELECT * FROM usersWHERE username = ' ' or 1=1 AND password = 'lo que sea'
-
Seguridad Informtica
Seguridad en Aplicaciones 10
Dr. Roberto Gmez Crdenas
Lmina 19
A1 Origen
El programador no valida los datos antes de pasarlos
Los datos que llegan en http son concatenados directamente con comandos
Muchos tutoriales o demos en Internet tienen errores de inyeccin
Cmo saber si soy vulnerable? Herramientas como nikto, nessus o fuzzers (diagnstico
parcial) Revisin de Cdigo Ethical hacking evaluacin de aplicaciones
Lmina 20
A1 Solucin
Una vez ms recaemos en el componente centralizado o librera que administre la validacin de entradas
Hacer filtros que dejen pasar slo lo que est bien. Aquello con error debe ser rechazado (no tratar de arreglarlo).
Hacer un aseguramiento del servidor para evitar lo que el atacante puede hacer si logra ejecutar (mnimos privilegios)
Validar contra una especificacin rigurosa de lo que debe ser permitido en todas las Cabeceras Cookies Cadenas de peticin Campos de formularios Campos escondidos etc. (todos los parmetros)
-
Seguridad Informtica
Seguridad en Aplicaciones 11
Dr. Roberto Gmez Crdenas
Lmina 21
A2 Admon. de Autenticacin y Sesin Incorrectos
Las credenciales de la cuenta y los tokens de sesin no estn bien protegidos
Tipos de Ataques Comprometer las contraseas, claves, cookies de
sesin u otro token Asumir la identidad de otros usuarios Robo de sesiones abiertas Reutilizacin de sesiones Cambio de usuario o contrasea Abuso de funcionalidad de contrasea olvidada
Lmina 22
A2 Origen
Cada request de HTTP abre y cierra una nueva conexin TCP (no maneja sesiones)
La mayora de los webservers y lenguajes tienen algn tipo implementado de manejo de sesiones Sin embargo, muchos programadores disean uno propio
o cambian uno existente Por conveniencia se agrega funcionalidad para que
el usuario administre su usuario y contrasea o la recupere en caso de olvido
Cmo saber si soy vulnerable? Revisin de Cdigo Ethical hacking evaluacin de aplicaciones
-
Seguridad Informtica
Seguridad en Aplicaciones 12
Dr. Roberto Gmez Crdenas
Lmina 23
A3 - Cross Site Scripting
La aplicacin Web puede ser usada como un mecanismo para transportar un ataque al navegador del usuario final
Pueden ser almacenados o reflejados Tipos de Ataque
Compromiso del token de sesin del usuario final Envo de usuario, contrasea y otros datos al sitio del
atacante Ataque a la mquina local
Divulgacin de archivos Instalacin de troyanos
Enmascarar contenido para engaar al usuario Ataque al servidor va Server Side Includes
Lmina 24
A3 Tipos de Ataques
Tipos de ataques: Navegacin forzada Insercin de comandos Cross site scripting Buffer overflow Ataques de formato de cadena de caracteres Inyeccin de SQL Manipulacin de cookies y campos escondidos
La mayora de estos se repiten ms a detalle en puntos posteriores
-
Seguridad Informtica
Seguridad en Aplicaciones 13
Dr. Roberto Gmez Crdenas
Lmina 25
A3 Origen
Falta de validacin de datos Desconocimiento de las implicaciones Una entrada de HTTP encuentra salida en el HTML Cdigo mal escrito Cmo saber si soy vulnerable?
Herramientas como nikto, nessus, appscan o fuzzers (diagnstico parcial)
Revisin de Cdigo Ethical hacking evaluacin de aplicaciones
Lmina 26
A4 Referencia directa insegura a objetos
Los programadores usan referencias directas a nombres de archivos del sistema para proveer funcionalidad
Internamente, la aplicacin puede tener acceso a archivos del sistema por llamados locales
Todos los marcos de trabajo de desarrollo permiten este comportamiento.
-
Seguridad Informtica
Seguridad en Aplicaciones 14
Dr. Roberto Gmez Crdenas
Lmina 27
A5 Configuracin Inadecuada de seguridad
Los servidores Web y los de aplicacin no son seguros pordefault al ser instalados
Es complicado mantener un hardenning eficiente para estos servicios
Muchas aplicaciones no estn desarrolladas para funcionar sobre servidores asegurados
Tipos de Ataques Explosin de vulnerabilidades (Exploits) Acceso no autorizado a recursos sensitivos Modificacin de los recursos en el servicio Explosin de vulnerabilidades en servicios relacionados Obtencin de informacin de mensajes de error Ataques de hombre en el medio
Lmina 28
A6 Exposicin de datos sensitivos
Una proteccin dbil o nula como resultado de mala implantacin de funciones criptogrficas o algoritmos de cifrado a nivel del almacenamiento
Tipos de Ataque Fallar al no cifrar informacin crtica (@rest, in-motion, @work) Almacenamiento inseguro de llaves, certificados y contraseas Almacenamiento incorrecto de secretos en memoria Semillas pobres para generar nmeros aleatorios Eleccin pobre de algoritmo Intentar inventar el nuevo algoritmo de cifrado Fallar al incluir soporte para cambios en las llaves de cifrado y otros
procedimientos requeridos de mantenimiento
-
Seguridad Informtica
Seguridad en Aplicaciones 15
Dr. Roberto Gmez Crdenas
Lmina 29
A7 Fallo de controles de acceso a nivel funcional
Un atacante podra acceder a recursos web annimamente o a los que no le estaba permitido en su perfil como usuario
Los desarrolladores parten de la base que un usuario slo navegar al dar click en los enlaces dentro de la pgina web
Tipos de Ataque Navegacin forzada Escalamiento de privilegios Crawling inteligente de los sitios web
Lmina 30
A8 - Cross Site Request Forgery
La sesin legtima del usuario puede ser aprovechada por un atacante para llevar a cabo acciones en nombre de la vctima
Pueden ser almacenados o reflejados Todas los marcos de aplicaciones web son
susceptibles a estos ataques Tipos de Ataque
Compromiso del token de sesin del usuario final Envo de usuario, contrasea y otros datos al sitio del
atacante Ejecucin de transacciones automatizada Robo de informacin privada
-
Seguridad Informtica
Seguridad en Aplicaciones 16
Dr. Roberto Gmez Crdenas
Lmina 31
A10 Redireccionamientos y reenvo no validados
La navegacin automatizada y parametrizada del sitio web puede exponer su sitio a ataques de phishing.
Se parte de la base que la URL del sitio es vlida, mientras que sus parmetros pueden descargar, instalar o ejecutar acciones no deseadas.
Tipos de ataque Phishing Spam, bombardeo de propaganda basura Ejecusin de transacciones combinando CSRF
Lmina 32
Plus - Buffer overflow
Componentes que no validan adecuadamente las entradas de datos pueden ser atacados y, en algunos casos, usados para tomar control de un proceso.
Lenguajes de alto nivel son inmunes pero no hay ningn tipo de proteccin en C, C++ o ensamblador
Tipos de Ataque Negacin de servicio Ejecucin de comandos Escalamiento de privilegios Puede ser en CGIs, rutinas, DLLs, componentes del servidor
Web o incluso biblioteca de terceros Race conditions y format string bugs resultan en ataques
similares al buffer overflow
-
Seguridad Informtica
Seguridad en Aplicaciones 17
Dr. Roberto Gmez Crdenas
Lmina 33
Origen
Al programar no se valida la longitud y tamao de los datos que se reciben
Ocurre cuando valores son escritos a un buffer de tamao fijo y al menos un valor sobrepasa el tamao designado
Se asumen tamaos errneos Mal uso de comandos como strcpy() y strcat() Mala lgica de programacin y forma no estructurada de punteros Cmo saber si soy vulnerable?
Si no se ha hecho un hardening adecuado o no estn las ltimas actualizaciones, es muy probable que sea vulnerable
Herramientas como nessus pueden ayudar a detectar las ms comunes Para aplicaciones propietarias, la forma ms rpida es por medio de una
Revisin de Cdigo
Lmina 34
stack
heap
Datos dinmicosdel programa
Contexto de un proceso
datos inicializadosREAD-ONLY
datos inicializadosREAD-WRITE
datos no inicializados
Datos estticos del programa
CDIGO Cdigo del programadirecciones bajasde memoria
direcciones altasde memoria
Direccin fija
-
Seguridad Informtica
Seguridad en Aplicaciones 18
Dr. Roberto Gmez Crdenas
Lmina 35
Stack
Una porcin del espacio de direcciones de un proceso
Provee un lugar de almacenaje temporal para variables locales declaradas dentro de funciones
Se usa como un bloc de notas cuando un proceso necesita almacenaje temporal
Guarda informacin de referencia cuando llama a una funcin Parmetros que no caben en los registros Valores guardados de los registros Direccin de donde la funcin fue llamada
Lmina 36
Inyectando cdigo
Buffer 100 bytes stack
RET
EBPstack
0x02
fe4f
0a
0x00
50a7
8f
Cadena con 120 caracteres A
0x41
4141
41
0x41
4141
41 El cdigo ASCII de A es 41
Buffer 100 bytes stack
RET
EBPstack
Cadena con SHELL CODE
NOPsCdigo enEnsamblador(ejecuta SH o ejecuta cmd.exe)0x
02fe
4f0a
0x02
fe4f
0a
0x02
fe4f
0a
0x02
fe4f
0a
-
Seguridad Informtica
Seguridad en Aplicaciones 19
Dr. Roberto Gmez Crdenas
Lmina 37
Solucin
Mantener siempre todos los sistemas operativos y aplicaciones con las ltimas actualizaciones y parches
Se deben validar todas las operaciones de entrada y salida as como las delimitaciones de todas las series
Revisar siempre el tamao de los buffers antes de manipularlos Evitar usar funciones que no revisan delimitaciones: strcpy(), strcat(),
sprintf(), gets(), etc. Usar funciones alternativas seguras: strncpy(), strncat(), snprintf(),
fgets(), etc. Los programas deben ser ejecutados con el mnimo nivel de privilegios
para realizar la tarea Usar lenguajes que prevengan los buffer overflows (Perl, Java, .Net,
etc.) Usar libreras y herramientas al disear y compilar que prevengan este
tipo de vulnerabilidades