Curso "Seguridad en Sistemas Operativos"
Presenta la evolución histórica de los sistemas informáticos y analiza los componentes del kernel y qué hace que un sistema operativo sea considerado seguro
INTRODUCCIÓN HISTÓRICA
Se comparan las dos líneas genealógicas de las que han surgido los sistemas operativos actuales: la que comenzó con el "Project MAC" y produjo tanto los mainframes como los sistemas multiusuario, y la que comenzó con el PC y que ha producido las máquinas de escritorio o las tabletas y móviles.
Se analizan los préstamos tecnológicos ocurridos para conseguir sistemas basados en PC multitarea: los servidores, así como los sistemas actuales basados en terminales.Sistema operativo - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre Un sistema operativo (SO) es el programa o conjunto de programas que efectúan la gestión de los procesos básicos de un sistema informático, y permite la normal ejecución del resto de las operaciones.[1] Nótese que es un error común muy extendido denominar al conjunto completo de herramientas sistema operativo, es decir, la inclusión en el mismo término de programas como el explorador de ficheros, el navegador y todo tipo de herramientas que permiten la int...UNIDADES DE MEDIDA
Debido a la ambiguedad que produce usar el término "mega" como unidad de medida debido a que en realidad es un multiplicador, se examinan las unidades de medida de CAPACIDAD DE ALMACENAMIENTO (byte) y de VELOCIDAD DE TRANSMISIÓN (bit por segundo, bps).
Byte - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre Byte es una palabra inglesa (pronunciada [bait] o ['bi.te]), que si bien la Real Academia Española ha aceptado como equivalente a octeto (es decir a ocho bits), para fines correctos, un byte debe ser considerado como una secuencia de bits contiguos, cuyo tamaño depende del código de información o código de caracteres en que sea definido.Bit - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre Bit es el acrónimo de Binary digit. (dígito binario). Un bit es un dígito del sistema de numeración binario. Mientras que en el sistema de numeración decimal se usan diez dígitos, en el binario se usan sólo dos dígitos, el 0 y el 1.MEMORIA Y ARQUITECTURAS
Primero distinguiremos entre kernel y sistema operativo y analizaremos qué significa que un sistema operativo sea "de 32 bits" o "de 64 bits", así como los siguientes conceptos:
- mapa de memoria
- arquitectura
- chipset
A continuación se explica por qué los sistemas operativos de 32-bit tienen un límite de memoria de 4 Gigabytes y cómo puede superarse, introduciendo el concepto de "PAE".
32 bits - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre En arquitectura de computadoras, 32 bits es un adjetivo usado para describir enteros, direcciones de memoria u otras unidades de datos que comprenden hasta 32 bits (4 octetos) de ancho, o para referirse a una arquitectura de CPU y ALU basadas en registros, bus de direcciones o bus de datos de ese ancho.- Núcleo (informática) - Wikipedia, la enciclopedia libreEn informática, un núcleo o kernel (de la raíz germánica Kern) es un ...
MEMORIA Y PROCESOS
Usando el "administrador de tareas" de Windows analizamos el mapa de memoria para averiguar por qué un sistema con mucha memoria libre puede tener problemas de falta de memoria
Se analiza el mapa de la memoria virtual de un proceso para
introducirnos en conceptos que nos van a ayudar a entender cómo se producen las vulnerabilidades que se aprovechan para atacar sistemas operativos.Conceptos:
- envío de señales a procesos
- procesos padre/hijo
Utilidades:
- top
- pstree
- systrace
- kill
- procmon
- perfmon- windbg
Process MonitorBy Mark Russinovich and Bryce Cogswell Process Monitor is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity.Download and Install Debugging Tools for Windows
Use the Debugging Tools for Windows to debug drivers, applications, and services on Windows systems. Debugging Tools for Windows includes WinDbg, a powerful debugger with a graphical interface and a console interface, as well as the console-based debuggers NTSD, CDB, and KD.Proceso - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre Un proceso es un conjunto de actividades o eventos (coordinados u organizados) que se realizan o suceden (alternativa o simultáneamente)bajo ciertas circunstancias con un fin determinado. Este término tiene significados diferentes según la rama de la ciencia o la técnica en que se utilice.Proceso zombie - Wikipedia, la enciclopedia libre
De Wikipedia, la enciclopedia libre En sistemas operativos Unix, un proceso zombie o "defunct" (difunto) es un proceso que ha completado su ejecución pero aún tiene una entrada en la tabla de procesos, permitiendo al proceso que lo ha creado leer el estado de su salida.- Systrace - Niels ProvosA new version of Systrace that supports 64-bit Linux installations can be downloaded from here. The major changes are support of 64-bit Linux with ptrace as ...
VULNERABILIDADES
Explicamos a fondo qué es un "buffer overflow" y los síntomas de que se ha atacado un equipo con esta técnica.
Se hace un ejemplo práctico en Linux y OpenBSD para comprobar cómo funcionan los mecanismos de protección para evitar los "buffer overflow" y analizando el código determinamos las malas prácticas de programación en el lenguaje C que hacen que un sistema sea vulnerable.
Se analizan las formas de proteger un sistema operativo basadas en su propio diseño y no en mecanismos posteriores de protección:
1. limpieza de cadenas
2. auditoría de código
3. criptografía fuerte
4. pro-police
5. W^X
6. ASLR
7. Separación de privilegios
8. Revocación de privilegios
