Pontificia Universidad Católica Argentina SANTA MARÍA DE LOS BUENOS AIRES Facultad de Ciencias Fisicomatemáticas e Ingeniería SEGURIDAD INFORMÁTICA Y CRIPTOGRAFÍA (MARIÑO) 2010 OBJETIVOS DE LA MATERIA El objetivo de la materia es brindarle una formación 100% práctica a los alumnos en la seguridad informática desde el punto de vista de un programador, ya que éste es el punto de vista fundamental para comprender todos los otros aspectos. El objetivo de la materia es lograr esto, y no quedarse con meras explicaciones teóricas aisladas que no tengan llegada práctica. Se tomará como base el desarrollo de aplicaciones y se explicará cómo esto impacta desde todos los puntos de vista: Archivos, Sistemas Operativos, Redes, Bases de Datos, etc. BOLILLA I INTRODUCCIÓN A LA CRIPTOLOGÍA ( 4 HS ) Criptografía y Criptoanálisis. Algoritmos simétricos y asimétricos. Firma digital. Funciones de hash. Implementación de algoritmos y protocolos en lenguaje C. Consideraciones para programar algoritmos criptográficos de manera segura. BOLILLA II CONCEPTOS BÁSICOS DE LENGUAJE ENSAMBLADOR Y ARQUITECTURAS x86/x64 ( 12 HS ) Lenguaje ensamblador. Instrucciones básicas. Programación en ensamblador y debugging. Desensamblado. Arquitectura x86. Arquitectura familias Pentium y Core. Arquitecturas x64. BOLILLA III SEGURIDAD DE EJECUTABLES ( 10 HS ) Organización de un ejecutable compilado. Formatos de ejecutables típicos: ELF y PE. Buffer overflows. Bibliotecas dinámicas, linkeo con ejecutables y organización de la memoria. Identificación y eliminación de TEXTRELs. BOLILLA IV PROGRAMACION SEGURA ( 10 HS) Código fuente seguro. Relación entre el código fuente y el código compilado. Ejemplos en lenguaje C. Consideraciones para lenguajes pseudo interpretados y con generación de código intermedio. BOLILLA V SEGURIDAD EN MÁQUINAS VIRTUALES -JAVA, .NET- ( 4 HS ) Maquinas virtuales de java: JIT y Hotspot. Maquina virtual de .NET. Smalltalk en sus diversas implementaciones. Javascript en sus diversas implementaciones. BOLILLA VI SEGURIDAD EN SISTEMAS OPERATIVOS *NIX ( 12 HS ) Pontificia Universidad Católica Argentina SANTA MARÍA DE LOS BUENOS AIRES Facultad de Ciencias Fisicomatemáticas e Ingeniería Linux y OpenBSD: Análisis del código fuente de los kernels. Búsqueda y corrección de vulnerabilidades. Arquitectura de dichos sistemas operativos. Control de acceso. Hacking y defensa (casos prácticos.) Escalado de privilegios. SELinux y su implementación. BOLILLA VII SEGURIDAD EN WINDOWS Y OTROS S.O. ( 6 HS ) Arquitectura del kernel de windows. Elementos de seguridad y control de acceso. Hacking y defensa (casos prácticos.) Escalado de privilegios. Sistemas operativos para dispositivos móviles BOLILLA VIII SEGURIDAD EN REDES CABLEADAS ( 9 HS ) Análisis de seguridad desde el punto de vista de un atacante externo. Obtención de información, Protocolos, Servicios. Seguridad perimetral y física de la red. Stacks de TCP /IP de varios sistemas operativos. Firewalls, IDS , IPS y mecanismos de defensa. Conceptos de exploits remotos. Programación de exploits para vulnerabilidades conocidas en lenguaje C y ensamblador. Programación de parches en ensamblador para aplicaciones vulnerables. BOLILLA IX SEGURIDAD EN REDES INALÁMBRICAS ( 9 HS ) Consideraciones especiales para redes wireless. Protocolos de nivel físico y de enlace. Familia 802.11X. Protocolos WEP, WPA, WPA2. Ataques y defensas. BOLILLA X SEGURIDAD EN OTRAS REDES NO COMPUTACIONALES ( 6 HS ) Seguridad en redes de telefonía POTS y voz sobre IP. Seguridad en telefonía celular. Redes GSM. BOLILLA XI SEGURIDAD EN BASES DE DATOS ( 6 HS ) Conceptos generales de seguridad en Bases de Datos. Ataques de SQL Injection. Mecanismos de defensa. BOLILLA XII SEGURIDAD EN APLICACIONES WEB ( 8 HS ) El protocolo HTTP. Manejo de sesiones. Ataques de Cross site scripting. Configuración segura de servidores. Ejemplos de programación web segura en lenguaje PHP. METODOS DE EVALUACION La aprobación de la cursada se realzará por un parcial individual al final del curso y por los trabajos prácticos grupales a presentar durante la cursada. La aprobación de la materia será por examen final. Lista de Trabajos Prácticos: TP 1: Programación de algoritmos criptográficos en lenguaje C. TP 2: Programación de software en lenguaje ensamblador con mecanismos de seguridad propios TP 3: Debugging, cracking y patching de software en lenguaje de máquina (tomando como base el software desarrollado en el TP 2 por OTRO grupo) Pontificia Universidad Católica Argentina SANTA MARÍA DE LOS BUENOS AIRES Facultad de Ciencias Fisicomatemáticas e Ingeniería TP 4: Hardening de aplicaciones. Se entregará a cada grupo el código fuente de una aplicación open source pública y conocida de complejidad mediana ( 10.000 a 20.000 lineas de código) y deberá corregirse aplicando los conceptos vistos en clase. TP 5: Seguridad en redes cableadas: Penetration testing. TP 6: Hacking y defensa de redes inalámbricas. TP 7: Informe de vulnerabilidades de sitios webs públicos y conocidos. BIBLIOGRAFIA TEXTO HACKING EXPOSED APPLIED CRYPTOGRAPHY Web Hacking Exposed http://www.aircrackng.org/documentation.html AUTOR McClure et al. Schneier B. McClure Varios