Contacta con nosotros

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 informática frente a codificación segura.
  • De las vulnerabilidades a los botnets y la ciberdelincuencia
    • Naturaleza de los fallos de seguridad.
    • Causas de la dificultad.
    • De un ordenador infectado a ataques dirigidos.
  • Clasificación de los fallos de seguridad
    • Taxonomía de Landwehr.
    • Los Siete Reinos Perniciosos (The Seven Pernicious Kingdoms).
    • Las diez vulnerabilidades más críticas de OWASP 2013.
    • Comparativa de las diez vulnerabilidades más críticas de OWASP entre 2003 y 2013.

Introducción al Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft®

  • 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 pequeñas aplicaciones de ISV (Independent Software Vendor o proveedor independiente de software).
  • Orígenes del SDL de Microsoft...
    • Línea temporal de seguridad en Microsoft...
    • ¿Qué aplicaciones deben cumplir con la SDL?
  • Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft
    • Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft.
    • Requisitos previos a la SDL: Formación en seguridad.
    • Fase uno: Requisitos.
    • Fase dos: Diseño.
    • Fase tres: Implementación.
    • Fase cuatro: Verificación.
    • Fase cinco: Lanzamiento – Plan de respuesta.
    • Fase cinco: Lanzamiento – Revisión final de seguridad.
    • Fase cinco: Lanzamiento – Archivo.
    • Requisito posterior a la SDL: Respuesta.
    • Orientación del proceso SDL para aplicaciones LOB (Line of Business o de negocio).
    • Orientación SDL para metodologías ágiles.
    • El desarrollo seguro de software requiere la mejora del proceso.

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.
    • Ejemplos de reducción de la superficie de ataque.
  • Privacidad
    • Privacidad.
    • Comprensión de los comportamientos y preocupaciones de la aplicación.
  • Defensa en profundidad
    • Principio fundamental de la SDL: Defensa en profundidad.
    • Ejemplo de defensa en profundidad.
  • Principio de privilegio mínimo
    • Ejemplo de privilegio mínimo.
  • Valores predeterminados seguros
    • Ejemplos de valores predeterminados seguros.

Principios de implementación segura

  • Agenda.
  • Ciclo de Vida de Desarrollo Seguro (SDL) de Microsoft.
  • Conceptos básicos del desbordamiento de búfer
    • Procesadores Intel 80x86: registros principales.
    • Disposición de la dirección de memoria.
    • Mecanismo de llamada a funciones en C/C++ en x86.
    • Variables locales y marco de pila.
    • Desbordamiento de pila
      • Desbordamiento de búfer en la pila.
      • Introducción a los ejercicios.
      • Ejercicio BOFIntro.
      • Ejercicio BOFIntro: determinar la disposición de la pila.
      • Ejercicio BOFIntro: un exploit simple.
  • Validación de entrada
    • Conceptos de validación de entrada.
    • Problemas con números enteros (integers)
      • Representación de números enteros negativos.
      • Desbordamiento de números enteros.
      • Desbordamiento aritmético: ¡adivine el resultado!
      • Ejercicio IntOverflow.
      • ¿Cuál es el valor de Math.Abs(int.MinValue)?
    • Mitigación de problemas con números enteros
      • Mitigación de problemas con números enteros.
      • Evitar el desbordamiento aritmético: suma.
      • Evitar el desbordamiento aritmético: multiplicación.
      • Detección de desbordamientos con la palabra clave checked en C#.
      • Ejercicio: uso de la palabra clave checked en C#.
      • Excepciones provocadas por desbordamientos en C#.
    • Estudio de caso: desbordamiento de números enteros en .NET
      • Una vulnerabilidad real de desbordamiento de números enteros en el mundo real.
      • Explotación de la vulnerabilidad de desbordamiento de números enteros.
    • Vulnerabilidad de traversía de rutas
      • Mitigación de la traversía de rutas.

Día 2

Principios de implementación segura

  • Inyección (Injection)
    • Métodos típicos de ataque de inyección SQL.
    • Inyección SQL ciega y basada en tiempo.
    • Métodos de protección contra la inyección SQL.
    • Inyección de comandos.
  • Autenticación rota: gestión de contraseñas
    • Ejercicio: debilidad de las contraseñas en formato hash (hashing).
    • Gestión y almacenamiento de contraseñas.
    • Algoritmos hash especializados para el almacenamiento de contraseñas.
  • Cross-Site Scripting (XSS) o scripting entre sitios
    • Cross-Site Scripting (XSS).
    • Inyección de CSS.
    • Explotación: inyección a través de otras etiquetas HTML.
    • Prevención de XSS.
  • Control de acceso al nivel de función ausente
    • Filtrado de cargas de archivos.
  • Criptografía práctica
    • Proporcionar confidencialidad con criptografía simétrica.
    • Algoritmos de cifrado simétrico.
    • Cifradores de bloques: modos de operación.
    • 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 la clave privada.
    • Errores típicos en la gestión de contraseñas.
    • Ejercicio: contraseñas codificadas en el programa (hard-coded).
    • Conclusión.

Principios de verificación segura

  • Pruebas funcionales frente a pruebas de seguridad.
  • Vulnerabilidades de seguridad.
  • Priorización.
  • Pruebas de seguridad en el Ciclo de Vida del Desarrollo de Software (SDLC).
  • Etapas de la planificación de las pruebas (análisis de riesgo).
  • Delimitación y recopilación de información
    • Partes interesadas.
    • Activos.
    • La superficie de ataque.
    • Objetivos de seguridad para las pruebas.
  • Modelado de amenazas
    • Modelado de amenazas.
    • Perfiles de atacante.
    • Modelado de amenazas basado en árboles de ataque.
    • Modelado de amenazas basado en casos de mal uso (abuso) o abuso.
    • Casos de mal uso: un ejemplo simple 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).
    • Diagrama de flujo de datos: ejemplo.
    • Enumeración de amenazas: STRIDE de MS SDL y elementos DFD.
    • Análisis de riesgo: clasificación de amenazas.
    • El modelo de clasificación de amenazas / riesgos DREAD.
  • Técnicas y herramientas de pruebas de seguridad
    • Enfoques generales de prueba.
    • Técnicas para las distintas etapas del SDLC.
  • Revisión de código
    • Revisión de código para la seguridad del software.
    • Análisis de manchado (taint analysis).
    • Heurísticas.
  • Análisis estático de código
    • Análisis estático de código.
    • Ejercicio: uso de herramientas de análisis estático de código.
  • Prueba de la implementación
    • Verificación manual en tiempo de ejecución.
    • Pruebas de seguridad manuales frente a automatizadas.
    • Pruebas de penetración (pentesting).
    • 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 (hardening)
    • Sistema común de puntuación de vulnerabilidades – CVSS.
    • Escáneres de vulnerabilidades.
    • Bases de datos públicas.
  • Estudio de caso: elusión de la autenticación de formularios
    • Vulnerabilidad de terminación de byte nulo (NULL byte).
    • La vulnerabilidad de elusión de la autenticación de formularios en el código.
    • Explotación de la elusión de la autenticación de formularios.

Fuentes de conocimiento

  • Fuentes de codificación segura: un kit de inicio.
  • Bases de datos de vulnerabilidades.
  • Guías de codificación segura para .NET en MSDN.
  • Listas de comprobación (cheat sheets) de codificación segura para .NET.
  • Libros recomendados: .NET y ASP.NET.
 14 Horas

Número de participantes


Precio por participante

Reseñas (3)

Próximos cursos

Categorías Relacionadas