Professional Documents
Culture Documents
Roberto Gm ez Crdenas
Lmina 1
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
Seguridad en Aplicaciones
Enviar a anlisis
externo
Determinar
criterios de
aceptacin
Hackeo tico de
aplicacin
Concepto
Diseo
Planes de
Concepto
Diseo CompletoPlan de Pruebas
Cdigo
Completo
Pruebas
Completo
Entrenar a los
integrantes del
equipo
Aprender y
refinar
Desarrollo
Implantacin
Implantacin
Completo
Operacin
Resolver problemas de
seguridad y hacer
revisin de cdigo
= Continuo
Lmina 3
COSTOS
TIEMPO
Lmina 4
Seguridad en Aplicaciones
Autenticacin
Lmina 5
Autorizacin
Lmina 6
Seguridad en Aplicaciones
Manejo de sesin
Lmina 7
Manejo de sesiones
Lmina 8
Seguridad en Aplicaciones
Inyeccin de scripts
Inyeccin de LDAP
Inyeccin de SQL
Cross site scripting
Lmina 9
Validacin de datos
Lmina 10
Seguridad en Aplicaciones
Manejo de errores
Mensajes de error de aplicacin
Mensajes de error de usuario
Qu hacer cuando sucede un error?
Lmina 11
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
Lmina 12
Seguridad en Aplicaciones
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 13
Bitcoras
Trazabilidad de eventos
Recuperacin de evidencias
Entender la mecnica de ataques
Aprender de los errores
Automatizacin:
Rastreo
Documentacin
Aprendizaje
Reaccin a incidentes
Lmina 14
Seguridad en Aplicaciones
Bitcoras
Lmina 15
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
Lmina 16
Seguridad en Aplicaciones
A1 SQL Injection
Un query de login con error de inyeccin:
SELECT * FROM users
WHERE login = 'victor'
AND password = '123'
A1 SQL Injection
formusr = ' or 1=1
formpwd = lo que sea
El query final se vera as:
SELECT * FROM users
WHERE username = ' ' or 1=1
Seguridad en Aplicaciones
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 19
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)
Lmina 20
Seguridad en Aplicaciones
10
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
Seguridad en Aplicaciones
11
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
Seguridad en Aplicaciones
12
A3 Origen
Lmina 25
Lmina 26
Seguridad en Aplicaciones
13
A5 Configuracin Inadecuada de
seguridad
Los servidores Web y los de aplicacin no son seguros por
default 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
Lmina 27
Lmina 28
Seguridad en Aplicaciones
14
Seguridad en Aplicaciones
15
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
Lmina 32
Seguridad en Aplicaciones
16
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 33
Contexto de un proceso
direcciones altas
de memoria
Direccin fija
stack
Datos dinmicos
del programa
heap
datos no inicializados
datos inicializados
READ-WRITE
datos inicializados
READ-ONLY
direcciones bajas
de memoria
CDIGO
Cdigo del
programa
Lmina 34
Seguridad en Aplicaciones
17
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 35
Inyectando cdigo
stack
El cdigo ASCII de A es 41
Cadena con
SHELL CODE
Cdigo en
Ensamblador
(ejecuta SH o
ejecuta cmd.exe)
0x02fe4f0a
0x0050a78f
0x41414141
EBP
EBP
0x02fe4f0a
0x41414141
0x02fe4f0a
0x02fe4f0a
stack
0x02fe4f0a
stack
RET
RET
stack
NOPs
Lmina 36
Seguridad en Aplicaciones
18
Solucin
Lmina 37
Seguridad en Aplicaciones
19