República Bolivariana de Venezuela

Ministerio de Educación Cultura y Deporte

Universidad de Yacambu. Edo. Lara

Cátedra: Tecnología de Información

Contenido

 

 

 

 

 

Educación Virtual

 

  FACILITADOR:   

  Pérez Yaros

                           INTEGRANTES:
  • Dersia Álvarez

        

 
 

Seguridad en Sistemas Operativos

 Seguridad

Los temas relacionados con la seguridad de un sistema informático ha experimentado grandes transformaciones en los últimos años. Generalmente, antes para tener los datos valiosos en forma segura de una empresa, por ejemplo, estos datos se aseguraban por medio de dispositivos físicos. Por ejemplo uso de archivadores con doble cerradura y caja fuertes. Con la masificación del ordenador estos métodos pierden consistencia (si bien algunos los siguen utilizando - disco en cajas fuertes) y son necesarios métodos automáticos de protección y seguridad. Esta necesidad se agrava con la interconexión de ordenadores por red, el acceso remoto a los mismos y los ordenadores de tiempo compartido. El nombre genérico de herramientas diseñadas para proteger a los ordenadores  de los piratas informáticos es el de seguridad de ordenadores.

Un segundo aspecto de esta seguridad es la necesaria para que los usuarios de un sistema de ordenadores interconectados por una red (sistema distribuido) puedan proteger sus datos durante la transmisión.

En todos los temas de seguridad cobra vital importancia en los SO. ¿Porqué?:

·       Es fácil construir un programa para que, a través del SO, obtenga en una red (LAN) copias de mensajes entre otras aplicaciones.

·       Un servidor puede ser instalado como Servidor de Ficheros, no para ofrecer servicios sino para obtener información confidencial de los clientes.

·       Un cliente puede suplantar la identidad de otro y obtener información del Servidor comprometida.

·       etc.

Por ello es necesario poner remedio a este tipo de situaciones (y otras tantas no pensadas o analizadas): políticas de seguridad a nivel de diseño e implementación (mecanismos de seguridad). Los mecanismos por si solos no sirven para garantizar la seguridad! Una cerradura en la puerta no garantiza que nadie entre. El principal aspecto a considerar es la CONFIDENCIALIDAD de la información. Por lo cual necesitaré mecanismos de seguridad. El sistema debe ser seguro y se debe poder demostrar que lo es (security protocol).

 Amenazas

Para comprender los diferentes tipos de amenazas es necesario definir los requerimientos de seguridad :

·       Confidencialidad : La información sólo debe ser accesible a aquellos que estén autorizados.

·       Integridad: Necesito que la información sólo pueda ser modificada por aquellos que estén autorizados.

·       Disponibilidad : La información siempre debe estar disponible a quien para aquellos que estén autorizados a acceder y/o modificar.

 

Tipos de Amenazas (threats):

·       Filtración o escape (leackage): obtención de información por procesos no autorizados.

·       Falsificación (tampering): alteración no autorizada (incluyendo programas).

·       Robo de recursos (resource stealing): uso de recurso sin autorización.

·       Vandalismo: interferencia con el funcionamiento adecuado (SPM - Sólo Por  Molestar).

 

Existen para cada tipo de amenaza un método de ataque que depende por donde se produzca el intento:

1. Canales de comunicación (clave en un Sistema Informático actual).

·       Eavesdropping (fisgonear): obtener copia de mensajes sin autorización. Esto se puede hacer directamente sobre la red o examinando información no protegida adecuadamente en el disco (p.e. forma más fácil, una estación pone el IP de otra y “chupa” los mensajes para la estación suplantada).

·       Masquerading (enmascararse): enviar o recibir mensajes utilizando la identidad de otro.

·       Message tampering (falsificación): interceptar mensajes y alterar su contenido antes de pasarlo a su destino.

·       Replaying (repetición): almacenar mensajes y enviarlos luego (utilizado el SPM) con el problema que la encriptación no soluciona nada.

 

2.   Infiltración: Existe un usuario que denomino gadejo (individuo con ganas de ...) y que debe tener acceso al sistema para ejecutar los programas de ataque. La mayoría de los ataques viene desde adentro, es decir entran como usuarios legítimos dentro del sistema !!!!

Escenarios Posibles de Intrusión

 

Diferente tipos de Usuarios: El perfil del usuario también condiciona los mecanismos de seguridad o también el nivel de aplicación, ya que si es un sistema hostil con usuario de determinada clase, el nivel de seguridad deberá ser no sólo externo sino también interno.

·       UTon -Usuario Tontín- : Descuida el passwd, lo grita, lo escribe en su libreta y la pierde, lo presta a sus amigos, etc.)

·       UPoLi -Usuario Poco Listo- : Pone algo predecible como passwd por ejemplo User: Pirulo Passwd: pirulo.

·       UNo: usuario normal pero existen “passwd cracking” (con el passawd encriptado obtiene el passwd sin encriptar) o spoofing/sniffing (mirar la conexión remota de un usuario y capturar el mensaje donde irá el passwd sin encriptar).

 

Diferentes tipos de programas : programas que utilizados por usuario no experto pueden causar perjuicio al mismo usuario o a otros usuario sobre la máquina o la red.

·       Virus: programa anexo a otro que cuando se ejecuta envía información sobre la máquina (host), por ejemplo la tabla de passwd encriptados.

·       Worm (gusano): ejecuta remotamente (accidentalmente o no) programas (a veces utilizado con fines útiles -búsquedas en Internet, determinar que SO está ejecutando, ...) que servirán para obtener información con fines diversos de la máquina o la red.

·       Trojan Horse: ofrezco un programa a un usuario pero dentro lleva algo escondido (p.e. pantalla de login: almaceno login y passwd, pongo msg al usuario de “passwd equivocado” y luego llamo al proceso de login.

 

Esto activa un estado de paranoia que a veces puede parecer exagerado, pero es mejor curarse en salud ya que evita futuros dolores de cabeza. Por ello las reglas principales a seguir siempre son las mismas:

·       Siempre diseñar los programas con características Cliente - Servidor como si los elementos del sistema no fueran seguros (más código pero menos problemas).

·       No ejecutar ni utilizar programas que no podamos garantizar su origen (servidores fantasmas, programas que parecen otros pero no lo son, etc.)

·       No utilizar cosas que no sabemos que hacen e intentar descubrirlas a base de ejecuciones.

·       No utilizar usuarios privilegiados para realizar el trabajo normal de una máquina.

·       No acceder por red a una máquina como usuario privilegiado ni ejecutar programas que tengan privilegios en forma remota.

·       Todos los usuarios pueden ser amigos (o no) pero la responsabilidad siempre es individual por ello tener en cuenta nuestro comportamiento dentro del sistema.

 

Estas reglas suelen ser generalmente totalmente improductivas ya que por ejemplo es imposible crear aplicaciones pensando siempre que el resto del sistema es inseguro. La confianza total es un mal vicio, pero la desconfianza total peor aún. Por ello, debo partir de un conjunto mínimo de elementos del sistema que son seguros -Trusted Computing Base- sino cada usuario debería escribir hasta el SO.

Con respeto a los Servidores (ficheros, datos, etc) la seguridad implica también otras premisas tales como : control físico (prevenir interferencias p.e. cargando otro SO) y canales de comunicación seguros y protegidos por autentificación (seguridad en quien dice que es Juan, es Juan y no Tepincho disfrazado de Juan) y encriptación (que si Tepincho accede a los datos que Juan envía a Pirulo, no sean legibles excepto para Juan y Pirulo).

 

Elementos de un Sistema de Ordenadores

Los elementos de un sistema informático pueden clasificarse en hardware, software, datos, líneas de comunicación y redes. Cada elemento se enfrenta a una amenaza que se describirá en la tabla siguiente :

 

Elemento

Accesibilidad

Confidencialidad

Integridad

Hardware

Robo o utilización de equipos eliminando el servicio

 

 

Software

Borrado de programas, denegando el acceso

Copias no autorizadas del software

Alteración de un programa para que falle durante la ejecución y/o realice alguna tarea no pretendida.

Datos

Borrado de archivos, denegando el acceso

Lectura de datos no autorizadas.

Modificación de archivos existentes o creación de nuevos

Líneas de Comunicación

Destrucción o eliminación de mensajes lo cual implica redes no disponibles

Lectura de mensajes, observación del tráfico de mensajes desde y hacia una máquina

Mensajes modificados, retardados, reordenados o duplicados. Generación de mensajes falsos.

 

 Principios de Diseño

Son un conjunto de reglas o principios en el diseño de medidas de seguridad para diversas amenazas a los sistemas informáticos :

·       Mínimo privilegio : Todos los programas/usuarios deben operar con el menor privilegio posible para realizar su tarea. Por omisión un derecho debe estar negado.

·       Ahorro de mecanismos : Los mecanismo de seguridad deben ser pequeños, simples y fácilmente verificables.

·       Aceptación : No deben interferir con el trabajo de un usuario ya que sino no los utilizará (igual que si son demasiado complicados).

·       Control : Todas las tareas deben ser controladas incluso aquellas que no tienen demasiada importancia (backups, mantenimiento, etc).

·       Diseño abierto : La seguridad no debe estar basada en algo secreto, así los mecanismo podrán ser analizados por muchos más usuarios e incrementar su confianza en ellos.

 

Protección

La introducción de la multiprogramación implica que diverso recursos en la máquina también deberán ser protegido en forma individual ya que ellos son compartidos por los restantes usuarios :

·       Memoria

·       Dispositivos de E/S (discos e impresoras)

·       Programas

·       Datos

La protección puede pasar por ninguna protección, aislamiento, compartir todo o nada, compartir por limitación de acceso, compartir por capacidad dinámica o uso limitado de un objeto (ver Stallings, pág. 578). Estos elementos están enumerados por orden de complejidad y cada sistema operativo implementará uno  o más de ellos en función de la seguridad que proporcione. Es necesario que el SO equilibre la necesidad de compartir que implica una mayor utilidad de sistema informático con la necesidad de proteger los recursos de los usuarios individuales.

En los siguientes apartados veremos algunos de los mecanismos , mediante los cuales los SO han hecho respetar la protección a estos elementos.

 

Protección de la memoria

Es fundamental la protección de la memoria principal (swap incluido). El interés no es sólo la seguridad sino también el funcionamiento correcto de los procesos activos.  Si un proceso puede escribir en el espacio de memoria de otro (Wxx por ejemplo) este último no se ejecutará correctamente (violación de privilegio/error de protección de memoria/etc.). Este esquema se facilita con la utilización de la memoria virtual. La paginación, segmentación, o combinación de ambas proporciona un método eficaz de protección de memoria. Por ejemplo si se persigue el aislamiento (sistema hostil) el SO sólo tiene que asegurar que cada segmento/página es accesible sólo por el proceso que está asignada controlando que no haya entradas duplicadas en las tablas de segmentos/páginas.

 

Control de acceso orientado al usuario

Algunos autores utilizan para el control de acceso de usuario a un sistema informático el nombre de autentificación. La técnica más habitual implica que el usuario se identifica con un nombre y una contraseña. El sistema dejará conectarse al usuario sólo si existe este identificador y coincide con la contraseña. Este método, como ya hemos visto, no funciona con algun tipo de usuario “especial” que es el que buscarán los piratas informáticos (hackers) para penetrar en el sistema “legalmente” (luego veremos algunas contramedidas).

El problema se agrava si la conexión del usuario es remota, ya que se puede “escuchar” (“snifar”) en la red el inicio de una conexión obteniendo el par de acceso y luego entrando como usuario legal. Generalmente esto se controla con esquema de control de acceso centralizado o descentralizado. En el primero la red proporciona un servicio de conexión para determinar quien se puede conectar, desde donde y a que. En el 2º, la red es un enlace transparente y el procedimiento de conexión lo lleva a cabo el servidor destino.

Pero todo esto es muy dinámico y día a día cambia por lo  cual es necesario estar siempre informado y controlando que, como y desde donde se utiliza el sistema que queremos que sea seguro. No nos podemos conformar que con la última versión del sistema operativo tenemos todos los problemas resueltos. También debemos tener en cuenta el tipo de información que guardamos en nuestra máquina y si sale a cuenta invertir tanto tiempo (tanto nosotros en protegerla como el hacker en intentar entrar -no es lo mismo la máquina donde esta el web de SO que la máquina donde almacena la deuda que tenemos en una tarjeta de crédito-).

 

Control de acceso orientado a datos

Después de una conexión con éxito, al usuario se le habrá concedido acceso a un servidor y aplicaciones. Este acceso permitirá en función del perfil definido para el usuario, obtener las operaciones y los accesos a archivos que este usuario podrá utilizar. Es decir, el usuario por haber entrado en el sistema no tendrá acceso a toda la información dentro del mismo, el SO dispondrá de reglas y permisos para que por ejemplo un usuario no le cambie la contraseña a otro usuario dentro del mismo sistema o acceda a información confidencial de otro usuario.

Un modelo general de control de acceso para un sistema es el de matriz de acceso (MA).

 

 

archivo A

Servicio X

Programa Z

...

Proceso 1

RX

 

X

...

Usuario A

 

W

RX

...

...

...

 

Los elementos son los siguientes :

·       Sujeto : entidad que puede acceder a los objetos, es decir quien utilizará los datos, recursos, etc. (1ª columna).

·       Objeto : Elementos de sistema susceptibles de ser protegidos tales como archivos, recursos, etc. (1ª fila).

·       Permisos : La forma que un sujeto accede a un objeto, por ejemplo lectura (R), ejecución (W), escritura (W), borrado (D), etc.

El mayor problema de la MA es el tamaño que ocupa y que muchos celdas no se utilizan. El tamaño también implica lentitud a la hora de verificar el acceso. Por esto se utiliza la matriz descompuestas por fila o columnas. Cuando se descompone la MA en columnas, se denomina listas de control de acceso (ACL Access Control List). Cada objeto posee un conjunto de pares (Quien, Que) indicando quien puede acceder a este objeto para hacer que. Por ejemplo ArchivoA : (Pirulo, RX) (TePincho, WD) (*, X). Esta lista dice que Pirulo puede leer y ejecutar el ArchivoA, TePincho escribir y borrar, y los restantes usuarios sólo ejecutar. Las implementaciones de ACLs en los SO comerciales permiten permisos para grupos de usuario, permisos globales, por defecto, etc. Unix, utiliza como protección una ACL encubierta para tres tipos de usuarios (dueño, grupo, resto) con 3 bits de protección cada uno (RWX, lectura, escritura/borrado, ejecución). Es decir, FileA:rwxrwxrwx donde los tres primeros bits son para el dueño del archivo, los tres siguientes para el grupo al cual pertenece el dueño del archivo y lo tres últimos para los restantes usuarios del sistema. Si el bit correspondiente está activo la propiedad que representa está concedida caso contrario (-) está negada. 

Si considero la MA por filas tendré lista de capacidades o etiquetas de capacidades, esta indica todo lo que puede hacer un sujeto. Este método es menos utilizado porque presenta mayores problemas de seguridad ya que las etiquetas pueden prestarse o compartirse.

Las consideraciones sobre las redes en el control de acceso orientado a los datos son análogas a las del control de acceso orientado a los usuarios. Si sólo se permite a ciertos usuarios acceder a ciertos datos, puede ser necesario la encriptación para proteger estos elementos cuando son transmitidos por una red.

 

Intrusos

Una de las dos amenazas más conocidas a la seguridad de un sistema informático (SI) (la otra son los virus) son los intrusos (hacker o cracker). Los ataques de los intrusos varían desde benignos hasta serios. Los primeros comprende a mucha gente que simplemente desde explorar la redes y ver que hay ahí fuera. Los segundos están movido por otro tipo de objetivo tal como acceder a datos privilegiados, hacer modificaciones no autorizadas o simplemente destruir el sistema operativo para que ese sistema quede fuera de servicio.

El problema tiene cada vez más importancia debido a la inteconexión de ordenadores y nuevos usos que se le dan a estos (comercio electrónico por ejemplo) y  también a la falta de legislación sobre el muchos temas en algunos países. Por ejemplo un análisis de Laboratorios Bell en el ‘93 mostraba que estaban sufriendo lo siguiente : Intento de copiar el archivo de contraseñas más de una vez por día, solicitudes sospechosas de llamadas a procedimientos remotos más de una vez por semana, intentos de conexión de máquinas inexistentes al menos cada dos semanas. Por ejemplo, la experiencia con nuestras máquinas muestran para las vacaciones de Navidad (14 días) 320 intentos de conexión por telnet, tftp, ftp, finger, sendmail, etc. no autorizadas. Es decir, los ataques de intrusos (benignos o serios) son un problema real y creciente. Como razones básicas de esta tendencia pueden enumerarse :

·       Globalización : la competencia internacional ha provocado caso de espionaje industrial y ya hay por ejemplo “clubs de cracker” que ofrecen sus servicios.

·       Cambio hacia la arquitectura cliente servidor : Este tipo de arquitectura necesita mecanismos de protección diferentes a los mecanismos de protección de los ordenadores centrales, que a veces no son utilizados o simplemente no están activados.

·       Curva de aprendizaje de los piratas : la divulgación de información entre los piratas es común por lo cual existen tableros de anuncios (clandestinos o no tanto -se encuentran con un buscador normal-) para intercambiar sofware de cracking, puertos, contraseñas, métodos, IP, maquinas, agujeros, técnicas como también solicitud de mano de obra o ofrecimientos de “No sabes como copiarte la práctica de tu compañero, pues te enseño por 10 Euros”.

Uno de los resultados del conocimiento creciente de los intrusos ha sido el CERT (Computer Emergency Response Team). Esta organización (en España esta el ESCERT en la UPC) reune información sobre puntos vulnerables de los SI y los divulgan a los administradores  (ver www.rediris.es) pero cuidado, estos informe también puede ser (y lo son) leídos por los piratas que puede aprovechar estos punto vulnerables sobre otras máquinas que no han corregido lo que el CERT ha publicado.

 

Técnicas de Intrusión

El fin de los intrusos  es obtener acceso a un sistema o aumentar el conjunto de privilegios en un sistema. Generalmente esto pasa por obtener información que debería estar protegida. En la mayor parte de los casos esta información está en forma de contraseña, por lo cual el objetivo del intruso es averiguar esta contraseñas y entrar al sistema como un usuario legítimo. Desde el punto de vista del sistema las contraseñas se almacenan generalmente en un archivo que si se almacena sin protección será muy fácil que el intruso averigüe las contraseñas de otros usuarios, para ello puede protegerse de 2 formas :

·       Encriptación (cifrado) : las contraseñas son almacenadas por medio de una encriptación unidireccional. Cuando el usuario introduce una contraseña, esta se encripta y se compara con la que se tiene almacenada. En general se realiza una transformación unidireccional (no reversible) en la que la contraseña se emplea para generar una clave para la funcion de encriptación produciendo una salida de longitud fija.

·       Control de acceso : el archivo de contraseñas solo puede ser leído por un usuario privilegiado.

Este tipo de seguridad es el mínimo que llevan los sistemas operativos actuales, y requiere un cierto esfuerzo para que los intrusos aprendan las contraseñas, por ejemplo :

·       Probar contraseñas por defecto emplea en cuentas estándares que se crean cuando se instala el SO. Muchos administradores no se molestan en quitarlas o cambiar estos valores.

·       Prueba exhaustiva de contraseñas cortas de 2 o 3 caracteres.

·       Prueba de palabras del diccionario del sistema o de una lista de contraseñas posibles.

·       Reunir información sobre el usuario tal como nombres completos, nombres de su/s novia/o, esposa/o, hijas/os, pasatiempo preferido, deporte, dirección, Nº teléfono, DNI, SSocial, matriculas, mascotas, aficiones, etc.

·       Emplear un caballo de Troya (pantalla de login similar igual a la que sale cuando se intenta una conexión que almacene la contraseña y luego haga un reset del ordenador pero ya haya enviado la contraseña por mail a un lugar seguro o la haya guardado en la CMOS escondida hasta que el intruso la venga a buscar)

·       Intervenir la línea de conexión entre el usuario remoto y el sistema host (“sniffing”)

Para los 4 primeros métodos, si el intruso intenta hacerlo probando conexiones es una tarea lenta y fácil de contrarrestar. Por ejemplo el usuario que pruebe 3 contraseñas y ninguna sea válida se bloquea o se impide que en x tiempo no pueda volver a conectarse. Pero hoy en día no es probable que un intruso emplee un método tan primitivo, lo que generalmente se hace es intentar obtener el archivo de contraseñas encriptado y por medio de programas + diccionarios (el más conocido se llama “crack”) averiguar todas las contraseñas del sistema. La forma de contrarrestarlo es que sólo el usuario privilegiado puede acceder a este archivo.

El método del caballo de Troya es difícil de contrarrestar ya que depende donde este escondido. La pantallas de login implica educación del usuario (siempre  inicializar la máquina antes de una conexión, a veces ni esto resulta -hay programas activos en la CMOS-), los juegos que se distribuyen por ahí, nunca utilizarlos como usuario privilegiado ya que así podrá acceder al las contraseñas del sistema, los programas de  dominio público, controlar el sitio o la distribución de donde lo hemos sacado, etc.

El 6º tipo de ataque es una cuestión fisica y puede contrarrestarse encriptando lo que va por la línea de comunicación como lo veremos más adelante.

La discusión principal sobre este temas se centra sobre dos puntos diferentes : prevención y detección. La 1º intenta que defenderse de todos los ataques posibles antes de que esten dentro del sistema, es una lucha desafiante y ardua ya que el que ataca tiene toda la libertad de encontrar un puntos débil en la defensa, mientras que el que defiende debe defenderse de todos los ataques posibles sin saber por donde llegarán (o teniendo algún indicio). La detección tiene que ver con el conocimiento tanto antes como después del triunfo del ataque.

 

Protección de contraseñas

La línea de defensa contra intrusos más común son las contraseñas. El usuario debe identificarse ante el sistema con un nombre (ID) e introducir una palabra clave que sólo el conoce.

Para comprender la naturaleza de los ataques es necesario analizar la vulnerabilidad de las contraseñas sabiendo como estas son almacenadas. En nuestro caso analizaremos el caso de Unix (los demás SO utilizan métodos similares). El esquema es el mostrado en la figura siguiente :

 

Carga de una contraseña

Verificación de una contraseña

Cada usuario elige una contraseña de 8 bytes, esta es convertida en un valor de 56 bits (usa ASCII de 7bits) que sirve como clave a la rutina de encriptado (crypt). Esta rutina está basada en el algoritmo DES (Data Encription Standard). El DES se modifica utilizando una base de 12 bits donde la base esta asociado al momento que se genera la contraseña. El DES modificado se ejecuta con una entrada de 64 bits a cero. La salida sirve como entrada para el 2º encriptado y así sucesivamente por 24 veces (total 25 encriptados). La salida en 64 bits se traduce en 11 caracteres y se guarda en el archivo de contraseñas junto con la base para el usario correspondiente. La base se utiliza para :

·       Impide que contraseñas duplicadas puedan ser detectadas mirando el archivo de contraseñas ya que las contraseñas en momentos diferentes tendrán base diferente.

·       Aumenta en forma efectiva la longitud de las contraseñas sin que el usuario  recuerde dos caracteres adicionales, por lo cual el Nº de contraseñas posibles aumenta en un factor de 212=4096  aumentando la posibilidad de adivinar la contraseña.

·       Impide el uso de una implementación DES en hardware que facilitaría la dificultad de adivinación por fuerza bruta (probando todas las combinaciones posibles).

Para verificar una contraseña de usuario, el SO utiliza la base para encriptar la contraseña introducida para este ID la encripta y la compara con la contraseña almacenada, si son iguales el usuario puede acceder al sistema si son diferentes niega el accedo y en función del número de intentos comienza el proceso de nuevo.

La rutina de cifrado esta diseñada para reducir los ataques por adivinación. El DES por software es lento (25 iteraciones) pero se puede solucionar con el uso de versiones hardware. El algoritmo original incorpora dos modificaciones que permiten que sea más rápido y seguro.

Pero el problema de las contraseñas esta en que si el atacante accede al archivo de contraseñas puede intentar diversos métodos para averiguar las contraseñas : fuerza bruta (necesita una potencia de cálculo muy elevada) y utilización de programas que hacen servir diccionarios. El primer método es descartable ya que produce pocos o ningún resultado en un tiempo aceptable (días). El segundo es el elegido por los intrusos ya que produce resultados en tiempos muy reducidos (segundos/minutos). Si se analizan las contraseñas introducidas por los usuarios en general son muy obvias o cortas lo que facilita su adivinación. Un estudio en la Universidad de Purdue (USA) sobre 7000 cuentas, el 3% eran de 3 caracteres de largo o menores lo cual es muy fácil de adivinar. La forma de contrarrestar esto es que el sistema no acepte contraseñas menores de 6 caracteres. Pero esto no es todo el problema, los usuarios seleccionan como contraseñas palabras fáciles de recordar de su entorno lo cual facilita enormemente su adivinación a través de diccionarios y reglas de control. Por ejemplo utilizando un programa como el crack con diccionarios en español generalmente el 30% de la contraseñas pueden ser averiguadas. Las reglas más utilizadas son las permutaciones de letras del nombre, apellidos, información personal, aficiones, letras mayúsculas/minúsculas, caracteres especiales, etc.

La forma de proteger este tipo de ataque es que el archivo de contraseñas no sea visible a ningún usuario (shadow) excepto al superusuario pero para ello es necesario tomar ciertas reglas de prevención ya que si tienen la contraseña del superusuario ya no necesitarán las de los restantes usuarios. Lo más común es que el superusuario sólo pueda conectar desde la consola no por medio de la red y así evitar un sniff. Pero esto siempre es relativo porque un administrador mal pagado por el doble del sueldo puede pasarse a la competencia llevando consigo las contraseñas evitando tener que adivinarlas.

Para garantizar que los usuarios eligen las contraseñas adecuadas (que no sea cortas, que no sean obvias, etc.) existen cuatro reglas que permiten mejorar el método :

·       Instrucción del usuario : indicarle al usuario como debe poner su contraseña para que sea difícil su adivinación. En general el usuario pasa de esta indicaciones excepto que sean más o menos obligatorias (el SO obliga a ciertas condiciones).

·       Contraseñas generadas por el ordenador :  presentan problemas ya que si son aleatorias, serán difíciles de recordar y el usuario caerá en la tentación de escribirlas. Tiene escasa o ninguna aceptación por los usuarios.

·       Inspección reactiva de usuarios : el sistema ejecuta un adivinador de contraseñas sobre el mismo para ver cuales son fáciles y bloquea las cuentas de usuario si logra adivinarlas. Es un método ampliamente utilizado, consume muchos recursos pero el sistema se cura en salud (siempre es posible ejecutarlo durante la noche o el fin de semana).

·       Inspección proactiva de contraseñas : El usuario escoge su contraseña pero el sistema verifica si esta es permisible, si no la rechaza. Para ello utiliza reglas de construcción de contraseñas hasta que el usuario introduzca una que sea difícil de averiguar y que la pueda recordar sin problemas. En el Stallings (pág 597) existen una reglas comunes para generar contraseñas que serán difíciles de adivinar y fáciles de recordar (pro ejemplo en lugar de poner como contraseña pirulo pongo transformaciones de la palabra por ejemplo qosame (siguiente inicial/siguiente vocal de la palabra clave).

 

Detección de intrusos

Si la prevención falla, es necesario tener un método para detectar los intrusos. La detección implica determinar cuando hay un intruso, cuanto daño ha hecho, como ha entrado para tratar de reparar el sistema lo más pronto posible. La calidad del intruso determinará el tipo de actividad y las pistas que deje para su posible detección. Un intruso inteligente será muy difícil de detectar ya que tendrá la actitud de un usuario normal pero realizando ciertas tareas (pocas) privilegiadas he intentando no dejar pistas (excepto que desee fama). El intruso aprendiz es fácil de detectar por un administrador experto porque no sabe exactamente que es lo que hace (generalmente utiliza programas o indicaciones que no sabe bien como funciona) y por lo tanto es más fácil detectarlo pero también es el que más daño puede hacer al sistema.

Las siguientes reglas pueden servir a un administrador para determinar si existen intrusos sobre su sistema o no :

1. Detección de anomalías estadísticas : juntar datos de usuarios estadísticamente (que hacen, como, donde, con quién se conectan, ...) durante un período de tiempo y luego analizar si esto es correcto para este usuario.

·       Detección de nivel crítico : definición de umbrales para la aparición de diversos sucesos.

·       Detección basada en perfiles : construir un perfil del actividad y verificar si los usuarios lo cumplen detectando cambios de comportamiento.

2.   Detección basada en reglas : definir un conjunto de reglas que permitan decidir si es un usuario o un intruso.

·       Detección de anomalías : ver que hay de diferente respecto a las reglas para todos los usuarios.

·       Identificación de intrusión : sistema experto (software o no) que persigue los comportamientos sospechosos.

Es decir los primeros intentan definir un comportamiento normal o esperado mientras que los segundo intentan definir un comportamiento correcto.

Una herramienta fundamental par uno u otro caso es el registro de auditoría (audit, syslog, ...), que básicamente utilizan dos ideas : sistemas nativos incorporados al SO (es más difícil detectar intrusos ya que la información está mezclada con otra del SO) y sistemas específicos de auditoría de intrusos (necesita software especial y coste extra de cómputo).

 

Virus y amenazas afines

Tal vez los ataques más sofisticados son los realizados por programas que aprovechan los puntos vulnerables de los mismos. Aquí se incluyen programas de aplicación, utilidades, editores y compiladores. Las principales amenazas a programas y sistemas son:

·         Bacterias: programas que consumen recursos del sistema reproduciéndose a si mismo. Algo así como poner un fork dentro de un lazo de control donde el hijo hace un sleep un tiempo aleatorio y luego cualquier otra cosa.

·         Bomba Lógica: Lógica incrustada sobre un programa de ordenador que comprueba cuando se presenta un conjunto de condiciones. Cuando estas se cumplen ejecuta alguna función que intenta provocar acciones no autorizadas.

·         Trampilla (Back door): Puerta de entrada secreta y no documentado en un programa empleado para otorgar acceso fuera de los métodos usuales.

·         Caballo de Troya: rutina secreta y no documentada incrustada en un programa útil del usuario. La ejecución del programa origina la ejecución de la misma.

·         Virus: código incrustado sobre un programa con capacidad de copiarse a otros programas. Además de la propagación un virus suele ejecutar alguna acción no deseada.

·         Gusano: programa que puede reproducirse y enviar copias de un ordenador a otro a través de la red. Además generalmente realiza alguna actividad (deseada o no).

Probablemente el más conocido de todos y más dañino de todas esta amenazas son los virus por lo cual le dedicaremos más atención (siempre un virus puede ir como Caballo de Troya, convertirse en bacteria, gusano o bomba lógica).

 

La naturaleza de los Virus

Un virus puede hacer cualquier cosa que realice otro programa, hoy en día realmente existe un tecnología (underground) sobre la forma, métodos de propagación y construcción de los virus (el mayor problema de estos que esta información esta en Internet a disposición de cualquiera que la sepa encontrar por supuesto). Según Stallings un ejemplo sencillo de cómo se puede implementar un virus sería:

1.        Encontrar la primera instrucción de un programa.

2.        Sustituirla por un salto a la posición de memoria siguiente a la última instrucción del programa.

3.        Insertar una copia del código del virus en dicha posición.

4.        Hacer que el virus simule la instrucción sustituida por el salto.

5.        Saltar a la segunda instrucción del programa anfitrión.

Cada vez que se ejecutara el programa anfitrión, primero se ejecutaría el virus que aprovecharía para propagarse y luego se ejecutaría el programa anfitrión. Excepto una corta demora, el usuario no notaría nada. En la ejecución del virus, este podría activarse y hacer alguna función (dañina o no).

La estructura básica de un virus es la del código siguiente:

            Program Virus () {

                        Goto main;

                        123456789

                        Infectar_ejecutable () {

                                   Loop: File = Seleccionar_archivo_ejecutable_random;

                                   If (1º_línea_de_File == 123456789) goto Loop;

                                   Else Copie_Virus ();

                                   }

                        Haga_Daño () {

                                   Realice_Daño();

                                   }

                        Activación () {

                                   Retorna True si se dan las condiciones de disparo;

                                   }

                        main () {

                                   Infectar_ejecutable ();

                                   If (Activación ())  Haga_Daño();

                                   Goto next;

                                   }

                        next:

                        }

Un virus como el descrito es muy fácil de detectar porque el código del progrma infectado crecerá en tamaño. Una forma muy simple de frustrar esto es comprimiendo el programa anfitrión de forma tal que la versión infectada y la no infectada tengan el mismo tamaño.

La infección inicial siempre es por programas externos al sistema ya sean instalados o que vengan por la red (programas que luego se instalarán o correo). Si bien nadie puede probarlo existe sospechas que ciertos programas originales cuando se copian (ilegalmente) y se instalan activan virus que causan mal funcionamiento de programa en cuestión o incluso de otros programas. Como siempre en un ordenador se comparte información, este es el punto de entrada de los virus que generalmente infectan toda la máquina y luego pasado un cierto tiempo se activan realizando su función. Por ello la prevención siempre es importante para evitar la vulnerabilidad a este tipo de amenazas. 

 

Tipos de Virus

A medida que ha ido apareciendo los virus se ha desarrollado contramedidas eficaces que han provocado la aparición de nuevos virus. Las categorías más significativas de estos virus son:

·         Virus parásitos: forma más tradicional y más común de virus. Se engancha al ejecutable y se reproduce causando daño cuando se activa.

·         Virus residentes en memoria: ocupan la memoria principal como un programa residente e infecta a todos los programas que se ejecutan.

·         Virus del sector de arranque: infecta el sector de boot y se propaga cuando se carga el SO.

En todos estos existen técnicas muy sofisticadas para evitar su limpieza además de la compresión, por ejemplo interceptar la E/S de disco y mostrar el programa principal cuando se intenta acceder a los sectores que posee el virus en el disco, pequeñas rutinas enla CMOS de un PC que “esconden” el virus en partes no accesibles del disco (espacio intersectores) para resistir a un format del disco o sino los virus polimorfos que a medida que se copia va cambiando (mutación) así los detectores pueden encontrar el virus original pero no la mutaciones. Par lo virus polimorfos existen técnicas de mutación  por encriptado para que el virus reconozca una mutación suya pero que sea diferente para un detector externo que no conoce el motor de mutación.

 

Métodos Anti-Virus

La solución real es la prevención: no permitir que los virus entren en el sistema. Esta premisa a veces no posible cumplir por lo cual es necesario es hacer lo siguiente:

·         Detección: Una vez producida la infección, detectarla y localizar el virus.

·         Identificación: identificar el virus para poder eliminarlos de forma adecuada para que no pueda extenderse.

·         Eliminación: eliminar todo rastro del virus y restituir el programa original.

 

Si la detección tiene éxito pero los siguientes pasos no, será necesario eliminar el programa infectado y instalar nuevamente el original. La tecnología antivirus y los virus van de la mano. Por ello existe una tecnología que intenta detectar – eliminar los virus que siempre van un paso por delante. Los detectores se clasifican en 1º, 2º, 3º, o 4º generación en función de la tecnología utilizada en la detección-eliminación del virus.

 

Seguridad en redes

La seguridad en redes presenta una multitud de problemas nuevos ya que existe más elementos donde realizar el ataque. La información introducida por un usuario en un terminal remoto debe viajar por un cable hasta el concentrador de red, luego por la red principal, gateways, y dispositivos hasta que llega al sistema host. El ataque puede tener lugar en cualquier punto de la comunicación. Para contrarestar esta amenazas en necesario encriptar (cifrado) de los mensajes que viajan por la red  Las técnicas de cifrado utilizan un palabra clave que por medio de esta se encripta/desencripta el/los mensaje/s. El principal problema de estos métodos es la distribución de la clave, es decir como le entrego al receptor la clave para que pueda desencriptar los mensajes. Los métodos propuestos son los siguientes para dos partes A y B:

·         A puede entregar físicamente la llave a B y luego B utilizarla (seguro e incómodo)

·         Una tercera parte elige la clave y la entrega físicamente a A y B.

·         Si A y B ya tienen una clave, pueden utilizarla para enviarse la nueva clave encriptada con la clave anterior.

·         Si A y B tienen una conexión encriptada con C, C puede entregar la clave a A y B por los enlaces encriptados.

 

Otro método de distribución es el denominado clave pública (Stalling pág 629, PGP –programa de dominio público para generación/utilización de llaves y firma digital-). En este método existen dos llaves una pública y otra privada y un centro certificador/depositario seguro de las llaves públicas. La parte A encripta su mensaje con la llave pública de la parte B obtenida desde el centro certificador y se lo envía a B. B con su llave privada puede desencriptar el mensaje. Si un intruso captura el mensaje no lo podrá abrir porque una vez encriptado el mensaje con la llave pública sólo se puede abrir con la llave privada. Excepto que el intruso tenga acceso a la llave privada el mensaje estará seguro. El mayor problema de este método es que los algoritmos son complejos (más que los de cifrado convencional) y requerirán más recursos, pero tiene la gran ventaja que no han distribución de claves por la red por lo cual es totalmente más seguro.

 

 

INFOGRAFIA

  1. Auditoria aplicada a la seguridad en redes de computadores

La organización en la parte de las redes de comunicaciones de computadores es un punto de viraje bastante importante; es por ello, que uno de los modelos de red más conocidos, es el modelo OSI. A grandes rasgos, el modelo OSI, dado por capas, está dividido en: Capa física, Capa de enlace, Capa de red, Capa de transporte, Capa de sesión, Capa de presentación, Capa de aplicación. http://monografias.com/trabajos10/auap/auap.shtml

  1. Seguridad en redes inalámbricas (norma 802.11 a-g )

En este articulo conoceremos un poco del concepto de una red inalámbrica, tipos de inseguridades y algunos consejos de seguridad. http://www.zonagratuita.com/servicios/seguridad/wireles.html

 

  1. SEGURIDAD EN REDES COMPLEJAS: EL CASO DE INTERNET

El fenómeno de la extensión de la Internet ha adquirido una velocidad tan rápida y unas proporciones, que el panorama actual y muchos de los efectos que se dan en su seno resultan sorprendentes y difícilmente imaginables hace sólo una década. Inicialmente Internet nace como una serie de redes que promueven el intercambio de información entre investigadores que colaboran en proyectos conjuntos o comparten resultados usando los recursos de la red. En esta etapa inicial, la información circulaba libremente y no existía una preocupación por la privacidad de los datos ni por ninguna otra problemática de seguridad. Estaba totalmente desaconsejado usarla para el envío de documentos sensibles o clasificados que pudieran manejar los usuarios. situación esta muy común, pues hay que recordar que la Internet nace como un contrato del Departamento de Defensa Americano -año 1968- para conectar entre sí tanto las Universidades como los centros de investigación que colaboran de una manera u otra con las Fuerzas Armadas Norteamericanas.

 

  1. Seguridad Informática y Seguridad en Redes.

La seguridad en cada empresa tiene diferentes requerimientos, diferentes características, culturas diferentes y una infraestructura tecnológica distinta. En las múltiples organizaciones se tienen diferentes requerimientos para almacenar, enviar y comunicar información de manera electrónica. De la misma manera en la que un negocio está envuelto en un mercado cambiante, las políticas de seguridad cambian día con día de manera que emerge una nueva tecnología. http://www.iec.uia.mx/proy/titulacion/proy14/seguridad.htm

 

[Inicio]