Temario del curso
Día 1
- Seguridad informática y codificación segura- Naturaleza de la seguridad
- Términos relacionados con la seguridad informática
- Definición de riesgo
- Diferentes aspectos de la seguridad informática
- Requisitos de las diferentes áreas de aplicación
- Seguridad de TI frente a codificación segura
- De las vulnerabilidades a las botnets y la ciberdelincuencia- Naturaleza de las fallas de seguridad
- Razones de dificultad
- De un ordenador infectado a ataques dirigidos
 
- Clasificación de los fallos de seguridad- Taxonomía de Landwehr
- Los Siete Reinos Perniciosos
- OWASP Los diez mejores de 2013
- OWASP Comparación de los diez mejores entre 2003 y 2013
 
 
- Introducción al ciclo ® de vida de desarrollo de seguridad (SDL)- Agenda
- Aplicaciones bajo ataque...- Evolución de la ciberdelincuencia
- Los ataques se centran en las aplicaciones
- La mayoría de las vulnerabilidades se encuentran en aplicaciones ISV más pequeñas
 
- Orígenes de la Microsoft SDL...- Cronología de seguridad en Microsoft...
- ¿Qué aplicaciones deben seguir SDL?
 
- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)
- Requisitos previos a SDL: Formación en seguridad
- Primera fase: Requisitos
- Segunda fase: Diseño
- Tercera fase: Implementación
- Cuarta fase: Verificación
- Fase Cinco: Liberación – Plan de Respuesta
- Fase cinco: Lanzamiento – Revisión de seguridad final
- Fase Cinco: Lanzamiento – Archivo
- Requisito posterior al SDL: Respuesta
- Guía de procesos de SDL para aplicaciones de línea de negocio
- Guía de SDL para metodologías Agile
- El desarrollo de software seguro requiere la mejora de los procesos
 
 
- Principios de diseño seguro- Superficie de ataque- Reducción de la superficie de ataque
- Superficie de ataque: un ejemplo
- Análisis de la superficie de ataque
- Reducción de la superficie expuesta a ataques: ejemplos
 
- Privacidad- Privacidad
- Comprender los comportamientos y preocupaciones de las aplicaciones
 
- Defensa en profundidad- Principio básico de SDL: Defensa en profundidad
- Defensa en profundidad: ejemplo
 
- Principio de privilegio mínimo- Privilegio mínimo: ejemplo
 
- Valores predeterminados seguros- Valores predeterminados seguros: ejemplos
 
 
- Superficie de ataque
- Principios de implementación segura- Agenda
- Microsoft Ciclo de vida del desarrollo de la seguridad (SDL)
- Conceptos básicos de desbordamiento de búfer- Procesadores Intel 80x86 – registros principales
- El diseño de la dirección de memoria
- El mecanismo de llamada a la función en C/C++ en x86
- Las variables locales y el marco de pila
- Desbordamiento de pila- Desbordamiento de búfer en la pila
- Ejercicios – introducción
- Ejercicio BOFIntro
- Ejercicio BOFIntro: determinar el diseño de la pila
- Ejercicio BOFIntro: un exploit simple
 
 
- Validación de entradas- Conceptos de validación de entrada
- Problemas con enteros- Representación de números enteros negativos
- Desbordamiento de enteros
- Desbordamiento aritmético: ¡adivina el resultado!
- Ejercicio IntOverflow
- ¿Cuál es el valor de Math.Abs(int. MinValue)?
 
- Mitigación de problemas de enteros- Mitigación de problemas de enteros
- Evitar el desbordamiento aritmético – suma
- Evitar el desbordamiento aritmético – multiplicación
- Detección de desbordamiento con la palabra clave marcada en C#
- Ejercicio – Usando la palabra clave checked en C#
- Excepciones desencadenadas por desbordamientos en C#
 
- Caso práctico: Desbordamiento de enteros en .NET- Una vulnerabilidad de desbordamiento de enteros del mundo real
- Explotación de la vulnerabilidad de desbordamiento de enteros
 
- Vulnerabilidad de recorrido de ruta- Mitigación de recorrido de ruta
 
 
 
Día 2
- Principios de implementación segura- Inyección- Métodos típicos de ataque de inyección SQL
- Inyección ciega y basada en el tiempo SQL
- SQL Métodos de protección contra inyecciones
- Inyección de comandos
 
- Autenticación rota: gestión de contraseñas- Ejercicio – Debilidad de las contraseñas con hash
- Gestión y almacenamiento de contraseñas
- Algoritmos hash de propósito especial para el almacenamiento de contraseñas
 
- Secuencias de comandos entre sitios (XSS)- Secuencias de comandos entre sitios (XSS)
- CSS Inyección
- Explotación: inyección a través de otras etiquetas HTML
- Prevención de XSS
 
- Falta control de acceso a nivel de función- Filtrado de cargas de archivos
 
- Criptografía práctica- Proporcionar confidencialidad con criptografía simétrica
- Algoritmos de cifrado simétrico
- Cifrados de bloques: modos de funcionamiento
- Hash o resumen de mensaje
- Algoritmos hash
- Código de autenticación de mensajes (MAC)
- Proporcionar integridad y autenticidad con una clave simétrica
- Proporcionar confidencialidad con cifrado de clave pública
- Regla general: posesión de clave privada
- Errores típicos en la gestión de contraseñas
- Ejercicio – Contraseñas codificadas de forma rígida
- Conclusión
 
 
- Inyección
- Principios de verificación segura- Pruebas funcionales vs. pruebas de seguridad
- Vulnerabilidades de seguridad
- Priorización
- Pruebas de seguridad en el SDLC
- Pasos de la planificación de pruebas (análisis de riesgos)
- Determinación del alcance y recopilación de información- Participantes
- Activo
- La superficie de ataque
- Objetivos de seguridad para las pruebas
 
- Modelado de amenazas- Modelado de amenazas
- Perfiles de los atacantes
- Modelado de amenazas basado en árboles de ataque
- Modelado de amenazas basado en casos de uso indebido/abuso
- Casos de uso indebido/abuso: un ejemplo sencillo de tienda web
- Enfoque STRIDE por elemento para el modelado de amenazas: MS SDL
- Identificación de objetivos de seguridad
- Diagramación: ejemplos de elementos DFD
- Diagrama de flujo de datos: ejemplo
- Enumeración de amenazas: elementos STRIDE y DFD de MS SDL
- Análisis de riesgos: clasificación de amenazas
- El modelo de clasificación de amenazas/riesgos DREAD
 
- Técnicas y herramientas de pruebas de seguridad- Enfoques generales de las pruebas
- Técnicas para varios pasos del SDLC
 
- Revisión de código- Revisión de código para la seguridad del software
- Análisis de la contaminación
- Heurística
 
- Análisis de código estático- Análisis de código estático
- Análisis de código estático
- Ejercicio: uso de herramientas de análisis de código estático
 
- Prueba de la implementación- Verificación manual en tiempo de ejecución
- Pruebas de seguridad manuales vs. automatizadas
- Pruebas de penetración
- Pruebas de estrés
 
- Fuzzing- Pruebas de seguridad automatizadas: fuzzing
- Desafíos del fuzzing
 
- Escáneres de vulnerabilidades web- Ejercicio: uso de un escáner de vulnerabilidades
 
- Comprobación y endurecimiento del entorno- Sistema común de puntuación de vulnerabilidades – CVSS
- Escáneres de vulnerabilidades
- Bases de datos públicas
 
- Caso práctico: omisión de autenticación de formularios- Vulnerabilidad de terminación de bytes NULL
- La vulnerabilidad de omisión de autenticación de formularios en el código
- Aprovechamiento de la omisión de autenticación de formularios
 
 
- Fuentes de conocimiento- Fuentes de codificación seguras: un kit de inicio
- Bases de datos de vulnerabilidades
- Directrices de codificación segura de .NET en MSDN
- Hojas de referencia rápida de codificación segura de .NET
- Libros recomendados: .NET y ASP.NET
 
Testimonios (5)
Múltiples ejemplos para cada módulo y gran conocimiento del formador.
Sebastian - BRD
Curso - Secure Developer Java (Inc OWASP)
Traducción Automática
Module3 Applications Attacks and Exploits, XSS, SQL inyección Ataques y exploits de servidores Module4, DOS, BOF
Tshifhiwa - Vodacom
Curso - How to Write Secure Code
Traducción Automática
El conocimiento del tema del entrenador fue excelente, y la forma en que se estructuraron las sesiones para que el público pudiera seguir las demostraciones realmente ayudó a consolidar ese conocimiento, en comparación con solo sentarse y escuchar.
Jack Allan - RSM UK Management Ltd.
Curso - Secure Developer .NET (Inc OWASP)
Traducción Automática
El excelente nivel de conocimientos del instructor, la disposición y su amabilidad.
Luis Antonio Salazar Rivero - Banco de Mexico
Curso - C/C++ Secure Coding
Nada fue perfecto.
Zola Madolo - Vodacom
Curso - Android Security
Traducción Automática
