Archivo

Sistemas Operativos

Una bomba lógica es un segmento de código de un programa que en determinado momento se activa, según las condiciones establecidas por el programador para hacer daño al sistema huésped.

Por su misma naturaleza, detectar una bomba lógica es muy difícil ya que no se tiene  conocimiento de ella, sino, hasta que se activa. Para ser considerada una bomba lógica la acción que se ejecuta es con fines maliciosos o desconocidos por el usuario afectado por la bomba lógica.

Los eventos que ejecuten el código malicioso pueden ser desde el cumplimiento de una fecha, ejecución de un comando en particular, pulsar una tecla o combinación de teclas. El objetivo principal y general de las bombas lógicas es colapsar el sistema huésped, entre muchas de las acciones que una bomba lógica puede ejecutar se encuentran:

  • Borrar la información del disco duro
  • Mostrar un mensaje
  • Enviar un correo electrónico
  • Ataque de denegación de servicio (DoS)
  • Ordenar pagos
  • Realizar transferencias de fondos

Características principales:

  • Siempre espera un tiempo antes de activarse, no se activa inmediatamente.
  • El creador es consciente en todo momento del posible daño que puede causar y del momento que éste se puede producir.
  • Este ataque está determinado por una condición que determina el creador dentro del código.
  • El código no se replica.
  • Colapsar el sistema huésped.

El primer paso que debe realizar una bomba lógica es la infección de la computadora o computadoras, la infección se puede hacer a través de una medio de almacenamiento como: USB, disquete, CD; por supuesto también a través de una LAN, para que la infección sea exitosa debe el usuario hacer clic para iniciar el conteo regresivo de la bomba. Luego de la infección, la bomba debe asegurar su supervivencia hasta que llegue la hora de activarse, esto se puede lograr agregando la bomba al registro que hace que la bomba se inicie con el sistema. Desencadenar todos los eventos, nuestra bomba estará vigilando constantemente las condiciones que la activan, al ser activada debe realizar todas las acciones programadas.

Aquí está el link a un muy buen tutorial para crear bombas lógicas: tuto.

Bibliografía

http://es.kioskea.net/contents/virus/bomblogi.php3

http://www.delitosinformaticos.com/delitos/bombalogica.shtml

http://es.wikipedia.org/wiki/Bomba_l%C3%B3gica

http://www.fcanals.com/contenidos/terminos/bombaslogicas.htm

Unix ha sido un sistema multitarea, multiusuario y de tiempo compartido desde sus inicios. Además la tecnología de red que incorpora proporciona la capacidad de conectarse al ordenador de forma remota (Telnet). Al momento de desarrollar el sistema de interfaz gráfica de usuario estos conceptos se tomaron en cuenta y formaron parte del diseño.

El sistema de ventanas X también llamado Servidor de las X, es el encargado de los entornos visuales en los sistemas operativos basados en UNIX. Fue el resultado de un proyecto académico llamado “Athena” en el Instituto de Tecnología de Massachusetts (MIT) a mediados de los 80. Las implementaciones principales actualmente son Xfree86 y X.org. La versión actual del protocolo es 11 por lo cual se le suele llamar X11.

X fue diseñado con una arquitectura cliente-servidor. El Servidor X es el que mantiene el control exclusivo de la pantalla y es el encargado de comunicarse con el dispositivo utilizado para la visualización de los gráficos. El cliente se comunica con el servidor y le indica cosas básicas como: “Trazar una línea de aquí para acá”, “Colar un punto aquí”.

Lo grandioso de esta arquitectura radica principalmente que no se limita a un cliente que este en el mismo equipo que el servidor, sino, a clientes remotos por medio de protocolos de comunicación como el TCP/IP.

Al contrario de lo que pareciese, el usuario (mouse, teclado) se comunica directamente con el Servidor X y este se comunica con el Cliente X, ésta comunicación se hace a través del Protocolo X (XProtocol) implementado en la librería Xlib.

Arquitectura X Windows System

Arquitectura X Windows System

El Servidor X reside en la máquina local y es el encargado de recibir las señales del hardware de entrada los envía al cliente X y luego el cliente X indica al Servidor X que se debe hacer.

Window Manager (Gestor de Ventanas) es otro cliente X, sin embargo, este cuenta con algunos privilegios especiales, también llamado meta-cliente, es decir un cliente que gestiona a otros clientes. Existe gran variedad de Window Manager cada uno de los cuales definen un estilo de diseño de ventana, decoración, etc.

Cuando instalamos X Window System en una máquina, este instalará tres componentes:

  1. Servidor X: (paquete xorg)
  2. Display Manager: (paquete x-display-manager) se encarga del login grafico y es el encargado de iniciar el windows manager. Algunos display Manager, para cada entorno de escritorio:
    • Gdm (paquete gdm): display manager de GNOME. Se configura desde Sistema / Administración / Ventana de entrada (comando gdmsetup).
    • Kdm (paquete kdm): display manager de KDE. Se configura desde Inicio / Preferencias del sistema / Administrador de acceso.
    • Wdm (paquete wdm): display manager de WindowMaker.
    • Xdm (paquete xdm): display manager del X Window System.
  3. Window Manager (paquete x-window-manager) cómo se ha dicho, el Window Manager es un cliente X. Se encarga de:
    • Mmanejar las ventanas: crearlas, moverlas, cerrarlas, minimizarlas, qué ventana está encima, cuál tiene el foco, cuál recibe las entradas del teclado, etc.
    • La apariencia de las ventanas (look and feel): bordes, color, tamaño, etc.
    • El fondo del escritorio (background), el menú contextual, el panel (barras de herramientas, barra de tareas, accesos directos), los atajos de teclado (shortcuts) y los escritorios virtuales (workspaces).
    • Lanzar programas cuando el entorno gráfico se inicia, ya sea por medio de un script o mediante un directorio de autoinicio.
    • El window manager no dibuja los iconos del escritorio: de eso se encarga el desktop icon manager(otro cliente X).
En Linux hay gran cantidad de entornos de escritorio:

1. Entornos de escritorio pesados: además del window manager traen numerosas herramientas integradas entre sí que proporcionan todo lo necesario para trabajar en el entorno gráfico, como iconos, session manager (que se encarga de guardar el estado de las aplicaciones cuando hacemos logout y restaurar la sesión cuando nos logueamos de nuevo), file manager, framework (entorno de desarrollo, protocolos para que se comuniquen entre sí las aplicaciones y librerías gráficas) y aplicaciones como editor de textos, navegador, multimedia, gráficos, etc.

Los entornos de escritorio pesados necesitan más recursos para ejecutarse que los entornos de escritorio ligeros (al menos 128 MB de RAM), se configuran mediante herramientas gráficas y los más utilizados son:

  • GNOME: el window manager es Metacity.
  • KDE: el window manager es Kwin.
  • Xfce: el window manager es Xfwm.

2. Entornos de escritorio ligeros: constan del window manager y poco más. Son rápidos, ligeros y estables, con un consumo muy bajo de recursos (sólo necesitan 32-64 MB de RAM), no tienen iconos y normalmente se configuran editando manualmente los archivos de configuración. Algunos son:

  • IceWM.
  • FluxBox y otros derivados de BlackBox, como OpenBox y Waimea.
  • WindowMaker y similares (Twm, Vtwm, Fvwm, Fvwm-Crystal, AfterStep).
  • Enlightenment.

3. Entornos de escritorio 3D: si tenemos una tarjeta gráfica con aceleración y queremos efectos impactantes disponemos de Compiz Fusion, un entorno de escritorio con efectos 3D espectaculares.

Ventajas

1.  La posibilidad de escoger el mejor entorno de escritorio que se adapte a nuestras necesidades.

2.  Desarrollar nuestro propio entorno de escritorio, mejorar o adaptar a nuestras necesidades los entornos de escritorio existentes.

3.   Aprovechar la arquitectura cliente-servidor a través de la red. En donde solo se cuenta con computadoras de muy bajos recursos que podrían funcionar como terminales y tener centralizado el Sistema X.

Desventajas

1.  Gran cantidad de entornos de escritorio, que se hace difícil seleccionar el más adecuado.

2.  Se suele pensar el entorno de escritorio es el Sistema Operativo (Windows), al principio la arquitectura X resultará muy confusa y difícil de comprender.

Bibliografía

http://tldp.org/HOWTO/XWindow-Overview-HOWTO/
http://tldp.org/HOWTO/XWindow-User-HOWTO/
http://es.wikipedia.org/wiki/X_Window_System
http://www.estrellateyarde.es/so/x-window-system
http://gersoft.wordpress.com/2009/02/18/servidor-x/
http://www.freebsd.org/doc/es_ES.ISO8859-1/books/handbook/x11.html

Lecturas recomendadas
http://tldp.org/HOWTO/XWindow-Overview-HOWTO/
http://tldp.org/HOWTO/XWindow-User-HOWTO/

HAL (Hardware Abstract Layer -Capa de Abstracción de Hardware- )

El sistema operativo es una capa de software cuyo objetivo es gestionar todos los dispositivos y proporcionar a los programas del usuario una interfaz con el hardware más sencilla.

Se puede dividir la arquitectura de la computadora en una jerarquía de capas las cuales se pueden observar a continuación:

capas

(Tomada de: Sistemas Operativos Modernos, Andrew S. Tanembaum)

En el nivel de “lenguaje maquina” para controlar un dispositivo se hace necesario utilizar instrucciones -50 a 300 instrucciones existen en lenguaje máquina, depende de la arquitectura del procesador- para cargar y mover valores en los registros  especiales de los dispositivos.

Por ejemplo, puede encargarse la lectura de un sector del disco cargando los valores de la dirección del sector en el disco, la dirección de memoria principal, el número de bytes y la direccionalidad (lectura o escritura) en sus registros. En la práctica, se necesita especificar muchos más parámetros, y la información de estado retornada por la unidad después de una operación es enormemente compleja. Además, en la programación de muchos dispositivos de E/S juega un papel muy importante una adecuada temporización.

Para ocultar esa complejidad se proporciona el sistema operativo utiliza una subcapa o elemento que oculta (parcialmente) el hardware y da al programador un repertorio de instrucciones más conveniente con el que trabajar. Por ejemplo, “read block from file” es más simple conceptualmente que tener que preocuparse sobre los detalles de cómo mover las cabezas lectoras, esperar a que se estabilicen, etcétera.

Entonces podemos definir HAL como un elemento del sistema operativo entre el  hardware y software que provee una abstracción sencilla en la arquitectura de la computadora.

Cuando HAL es empleado, las aplicaciones no acceden directamente al hardware pero sí lo hacen a esa capa de abstracción que provee el HAL.  HAL permiten a las aplicaciones ser independientes  de los dispositivos de hardware porque él se encarga de interactuar con el controlador del dispositivo.

capas_hal(Tomada de: Nios II Software Developer's Handbook)

HAL es un API con el cual podemos programar nuestras rutinas y aplicaciones y acceder a los dispositivos. En algunos sistemas operativos funciona como un ligero entorno en tiempo de ejecución que proporciona una simple interfaz con el controlador del dispositivo lo cual permite comunicación con el hardware subyacente. El HAL API está integrado en la biblioteca del estándar ANSI C. El HAL API permite acceder a archivos a través de dispositivos y funciones de la biblioteca familiar C, como printf (), fopen (), fwrite (), etc. Gracias a HAL no es necesario reescribir  las funciones printf(), fopen(),… para nuestro hardware especifico.

Los cambios en nuestro hardware automáticamente son detectadas por HAL gracias al HAL daemon que es el encargado de controlar y mantener la información de los dispositivos, la actualización automática de los cambios en el hardware subyacente evita los bug. Los administradores de dispositivos se comunican con HAL daemon para obtener el árbol de los dispositivos funcionando en la computadora.

admin_disp(Tomada de: mi PC)

Cada sistema operativo tiene su propia implementación de HAL.

Para Windows:

  • Standard PC (non-ACPI) – Hal.dll
  • MPS Uniprocessor PC – Halapic.dll
  • MPS Multiprocessor PC – Halmps.dll
  • Advanced Configuration and Power Interface (ACPI) PC – Halacpi.dll
  • ACPI Uniprocessor PC – Halaacpi.dll
  • ACPI Multiprocessor PC – Halmacpi.dll

Para ver que HAL utiliza tu sistema operativo windows mira:  ver hal

Bibliografía:
Sistemas operativos Modernos. Andrew S. Tanenbaum
Nios II Software Developer’s Handbook
http://people.freedesktop.org/~david/hal-spec/hal-spec.html
http://en.wikipedia.org/wiki/Hardware_abstraction_layer
http://www.freedesktop.org/wiki/Software/hal
http://es.wikipedia.org/wiki/HAL_(software)
http://www.iyonix.com/32bit/HAL.shtml

Seguir

Get every new post delivered to your Inbox.