Logo Studenta

Herramienta-para-la-deteccion-y-desinfeccion-de-gusanos-informaticos

¡Este material tiene más páginas!

Vista previa del material en texto

FACULTAD DE INGENIERÍA 
HERRAMIENTA PARA LA DETECCIÓN Y 
DESINFECCIÓN DE GUSANOS INFORMÁTICOS 
T E S I S 
QUE PARA OBTENER EL TÍTULO DE 
INGENIERO EN COMPUTACIÓN 
PRESENTAN: 
JOSÉ ROBERTO SÁNCHEZ SOLEDAD 
VLADIMIR MEDINA GARCÍA
DIRECTORA DE TESIS: 
M.C. MA. JAQUELINA LÓPEZ BARRIENTOS 
 MÉXICO, D. F. 2007 
UNIVERSIDAD NACIONAL 
AUTÓNOMA DE MÉXICO 
 
UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
Agradecimientos/Dedicatorias 
Vladimir Medina García 
A mi madre por ser la persona más importante durante toda mi vida y apoyarme en mi carrera 
por alcanzar esta meta de mi vida, no existen palabras para expresar el agradecimiento que le 
tengo; se que soy muy poco expresivo, pero ella sabe que es todo para mi y que todo lo hago 
por y para ella. 
A mi familia en general, por haberme apoyado, cada quien a su manera, en alcanzar y 
superar esta meta de mi vida. 
A la Facultad de Ingeniería y a todos los maestros que tuve durante mi carrera por haber 
contribuido a mi formación académica profesional, muchas gracias. 
A la M.C. Ma. Jaquelina López Barrientos por habernos apoyado para el desarrollo de este 
proyecto de Tesis, a pesar de todo el tiempo que nos llevo. 
Agradecimientos/Dedicatorias 
José Roberto Sánchez Soledad 
A mis padres, por apoyarme y creer en mi a lo largo de todo este tiempo. 
A mis Hermanos, Guadalupe y Jesús por su afecto y comprensión en todo momento. 
A Maribel, por dar sentido a mi vida. 
A la Maestra Jaqui, que siempre ha sido un ejemplo a seguir. 
Agradecimientos/Dedicatorias 
Generales 
A la M.C. Ma. Jaquelina López Barrientos por compartir sus conocimientos y guiarnos a lo 
largo de este trabajo. 
A nuestros Sinodales por su tiempo y dedicación. 
Índice 
Introducción ............................................................................................................................................................. 1 
Capítulo 1. Antecedentes........................................................................................................................................ 4 
�
1.1 Historia ............................................................................................................................................................... 5 
1.2 Concepto de seguridad.................................................................................................................................... 6 
 1.2.1 Concepto de Seguridad Informática....................................................................................................... 6 
 A) Distinción entre amenaza y ataque........................................................................................................ 7 
 B) ¿Qué queremos proteger?...................................................................................................................... 7 
 C) ¿De qué lo queremos proteger? ............................................................................................................ 8 
 D) ¿Cómo lo podemos proteger? .............................................................................................................. 11 
 1.2.2 Seguridad en Internet............................................................................................................................ 12 
 A) Vulnerabilidades en Internet.................................................................................................................. 13 
 1.2.3 Gusanos. .................................................................................................................................................. 15 
1.3 Sistemas Operativos ....................................................................................................................................... 16 
 1.3.1 Servicios del sistema operativo............................................................................................................. 17
 1.3.2 Estructura de los sistemas operativos ................................................................................................. 17 
 A) Administración de memoria .................................................................................................................. 17 
 B) Administración de procesos ................................................................................................................. 18 
 C) Administración del almacenamiento secundario................................................................................ 18 
 D) Administración de Archivos .................................................................................................................. 19 
 E) Sistema de protección............................................................................................................................ 19 
 F) Sistema distribuido................................................................................................................................. 19 
 G) Sistema intérprete de comandos .......................................................................................................... 19 
 H) Llamadas al sistema............................................................................................................................... 20 
 I) Manipulación de archivos ....................................................................................................................... 21 
 1.3.3 Sistemas Operativos más populares .................................................................................................... 21 
 A) Microsoft Windows................................................................................................................................. 22 
 B) Unix .......................................................................................................................................................... 22 
1.4 Lenguajes de programación........................................................................................................................... 23 
 1.4.1 Lenguaje C ................................................................................................................................................ 24 
 1.4.2 Lenguaje Perl............................................................................................................................................ 25 
 1.4.3 WMI (Windows Management Instrumentation) ..................................................................................... 25 
 1.4.4 Lenguaje C# ............................................................................................................................................. 27 
 1.4.5 Comparación de lenguajes ..................................................................................................................... 27 
 
Capítulo2. Gusanos y Vulnerabilidades .............................................................................................................. 29 
2.1 Gusanos Informáticos..................................................................................................................................... 30 
 2.1.1 Tipos deGusanos .................................................................................................................................... 31 
2.2 Vulnerabilidades .............................................................................................................................................. 33 
 2.2.1 Clasificación por tipo de Vulnerabilidad................................................................................................ 33 
 A) Vulnerabilidades de desbordamiento de pila (buffer overflow). ........................................................ 33 
 B) Vulnerabilidades de condición de carrera (Race condition)............................................................... 34 
 C) Vulnerabilidades de error de formato de cadena (format string bugs). ............................................ 34 
 D) Vulnerabilidades de Cross Site Scripting (XSS). ................................................................................. 34 
 E) Vulnerabilidades de inyección de código SQL (SQL injection).......................................................... 34 
 F) Vulnerabilidades de inyección de caracteres (CRLF).......................................................................... 35 
 2.2.2 Clasificación por Sistema Operativo...................................................................................................... 35 
 2.2.3 Clasificación por fabricante de Software............................................................................................... 41 
 2.2.4 Clasificación por Rango de Explotación ............................................................................................... 42 
 2.2.5 Clasificación por Tipo de Gravedad....................................................................................................... 42 
 2.2.6 Clasificación por Tipo de Pérdida .......................................................................................................... 43 
 2.2.7 Clasificación por Origen de Vulnerabilidad........................................................................................... 43 
 2.2.8 Clasificación por Componentes Expuestos.......................................................................................... 45 
 
Capítulo 3. Análisis y diseño................................................................................................................................ 46 
3.1 Análisis ............................................................................................................................................................. 47 
 3.1.1 Registro de Windows............................................................................................................................... 47 
 A) Diferencias entre Regedit.exe y Regedt32.exe..................................................................................... 47 
 B) Descripción de los valores del registro ................................................................................................ 48 
 3.1.2 Archivos de inicio del Sistema ............................................................................................................... 51 
 3.1.3 Procesos ................................................................................................................................................... 53 
 3.1.4 Servicios ................................................................................................................................................... 55 
 3.1.5 Validación de los archivos. ..................................................................................................................... 56
 A) Funciones Hash....................................................................................................................................... 56 
 3.1.6 Redes......................................................................................................................................................... 57 
 A) Redes de computadoras......................................................................................................................... 57
 B) Modelo OSI............................................................................................................................................... 59 
 C) Protocolos de red .................................................................................................................................... 61 
 D) Sistema de detección de intrusos ......................................................................................................... 63 
 E) Puertos .................................................................................................................................................... 64 
 1. Socket................................................................................................................................................... 64 
 2. Detección de puertos.......................................................................................................................... 65 
 3. Escáner de puertos............................................................................................................................. 66 
 3.1.7 Métodos de Cifrado.................................................................................................................................. 68 
 3.1.8 Bases de Datos......................................................................................................................................... 69 
 A) Clasificación de las Bases de Datos ..................................................................................................... 69 
 B) Modelos de base de datos...................................................................................................................... 70
 C) Normalización de Bases de Datos......................................................................................................... 72 
3.2 Diseño............................................................................................................................................................... 74 
 3.2.1 Función para buscar llaves..................................................................................................................... 74 
 3.2.2 Función para eliminar llaves................................................................................................................... 74 
 3.2.3 Función para buscar procesos............................................................................................................... 74 
 3.2.4 Función para matar procesos................................................................................................................. 75 
 3.2.5 Función para buscar puertos.................................................................................................................. 75 
 3.2.6 Función para matar puertos.................................................................................................................... 75 
 3.2.7 Función para obtener el MD5 de un archivo ......................................................................................... 75 
 3.2.8 Función para obtener el tamaño de archivos ....................................................................................... 76 
 3.2.9 Función para buscar archivos ................................................................................................................ 76 
 3.2.10 Función para eliminar archivos ............................................................................................................ 76 
 3.2.11 Función para buscar servicios ............................................................................................................. 76 
 3.2.12 Función para detener servicios ............................................................................................................77 
 3.2.13 Función para obtener información del sistema .................................................................................. 77 
 3.2.14 Función para crear un archivo HTML.................................................................................................. 78 
 3.2.15 Función para cerrar un archivo HTML ................................................................................................. 78 
 3.2.16 Diseño de la Base de Datos .................................................................................................................. 78 
 3.2.17 Interfaz de usuario ................................................................................................................................. 80 
 3.2.18 Software de instalación ......................................................................................................................... 81 
 
Capítulo 4. Desarrollo............................................................................................................................................ 82 
4.1 Software utilizado para la elaboración de la herramienta. .......................................................................... 83 
 4.1.1 WMI ............................................................................................................................................................ 83 
 4.1.2 Visual Studio............................................................................................................................................. 83 
 4.1.3 Md5sum..................................................................................................................................................... 84 
 4.1.4 Netstat ....................................................................................................................................................... 84 
4.2 Estructura de las funciones elaboradas ....................................................................................................... 85 
 4.2.1 Función busca_llave( )............................................................................................................................. 85 
 4.2.2 Función elimina_llave()............................................................................................................................ 85 
 4.2.3 Función busca_proceso()........................................................................................................................ 86 
 4.2.4 Función mata_proceso().......................................................................................................................... 86
 4.2.5 Función busca_puerto() .......................................................................................................................... 87
 4.2.6 Función cierra_puerto() ........................................................................................................................... 87 
 4.2.7 Función obtener_md5() ........................................................................................................................... 88
 4.2.8 Función tamano_archivo() ...................................................................................................................... 88 
 4.2.9 Función busca_archivo()......................................................................................................................... 89
 4.2.10 Función elimina_archivo()..................................................................................................................... 89 
 4.2.11 Función busca_servicio() ...................................................................................................................... 90 
 4.2.12 Función detener_servicio() ................................................................................................................... 90 
 4.2.13 Función info_sistema() .......................................................................................................................... 91 
 4.2.14 Función crea_html() ............................................................................................................................... 92 
 4.2.15 Función cierra_html()............................................................................................................................. 92 
4.3 Creación de la base de datos ......................................................................................................................... 93 
4.4 Creación de la interfaz de usuario ................................................................................................................. 93
 4.4.1 Seguridad interna de la herramienta..................................................................................................... 97 
 4.4.2 Ejecución de programa de WMI............................................................................................................ 99 
 4.4.3 Resultados obtenidos del análisis ....................................................................................................... 104 
4.5 Creación del instalador de la herramienta.................................................................................................. 104 
4.6 Proceso de ejecución interna de la herramienta........................................................................................ 106 
 
Capítulo 5. Pruebas y Estadísticas .................................................................................................................... 108
5.1 Ambientes controlados................................................................................................................................. 109 
 5.1.1 Windows 2000......................................................................................................................................... 110 
 A) Instalación de la herramienta............................................................................................................... 110 
 B) Desempeño de ejecución ..................................................................................................................... 112 
 C) Fallas encontradas ................................................................................................................................ 113 
 D) Estadísticas............................................................................................................................................ 113 
 5.1.2 Windows XP............................................................................................................................................ 114 
 A) Instalación de la herramienta............................................................................................................... 114 
 B) Desempeño de ejecución ..................................................................................................................... 114 
 C) Fallas encontradas ................................................................................................................................ 115 
 D) Estadísticas............................................................................................................................................ 115 
 5.1.3 Windows Vista ........................................................................................................................................ 115 
 A) Instalación de la herramienta............................................................................................................... 116 
 B) Desempeño de ejecución ..................................................................................................................... 116 
 C) Fallas encontradas ................................................................................................................................ 116 
 D) Estadísticas............................................................................................................................................117 
5.2 Ambientes Reales.......................................................................................................................................... 117 
 5.2.1 Windows 2000......................................................................................................................................... 117 
 A) Estadísticas............................................................................................................................................ 118 
 5.2.2 Windows XP............................................................................................................................................ 118 
 A) Estadísticas............................................................................................................................................ 119 
 5.2.3 Windows Vista ........................................................................................................................................ 120 
 A) Estadísticas............................................................................................................................................ 120 
�
Conclusiones ....................................................................................................................................................... 122 
Diccionario de Términos..................................................................................................................................... 125 
 Bibliografía .......................................................................................................................................................... 135 
�
�
�
�
�
INTRODUCCIÓN
Introducción 
2
Introducción 
Hoy en día la seguridad informática en los equipos de cómputo ha tomado un gran auge; 
todos aquellos que hacen uso de estos equipos, desde las grandes compañías nacionales e 
internacionales que contratan empresas especializadas en la seguridad para proteger sus 
equipos, pasando por medianas y pequeñas empresas que buscan software que les ayude a 
este propósito, llegando inclusive a los usuarios particulares que se ven en la necesidad de 
buscar herramientas de software de bajo o ningún costo, debido a esto hemos visto la 
necesidad de crear una herramienta eficaz que se encuentre al alcance de cualquier tipo de 
usuario, incluyendo a los particulares; y que les ayude a combatir y protegerse de los distintos 
ataques a los que pueden estar expuestos. 
Los ataques a los que se puede ver comprometido todo usuario son: 
Spyware: software espía que tiene la capacidad de auto instalarse en las computadoras 
personales de los usuarios, con objeto de conocer su identidad y monitorear el 
comportamiento del equipo o los hábitos de navegación en Internet. 
Virus: programas informáticos o secuencias de comandos que intentan propagarse sin el 
consentimiento ni conocimiento del usuario. Algunas de sus características principales son: 
• Son archivos ejecutables, imágenes, hojas de cálculo o documentos. 
• No se auto reproducen por sí mismos. 
• Requieren de la intervención del usuario para ejecutarse. 
• Realizan una acción maliciosa. 
Malware: programa o archivo dañino para el ordenador, está diseñado para insertar virus, 
gusanos, troyanos o spyware intentando conseguir algún objetivo, como podría ser el de 
recoger información sobre el usuario. 
Caballo de Troya: También llamado comúnmente como Troyano. Programa de computadora 
que aparenta tener una función útil, pero que contiene código posiblemente malicioso para 
evadir mecanismos de seguridad, a veces explotando accesos legítimos en un sistema. 
Gusanos: utilizan vulnerabilidades (también llamados huecos de seguridad) en el sistema 
operativo (como por ejemplo equipos sin actualización tanto en el sistema operativo, como en 
programas) para poder infectarlo. Una vez que un gusano ha infectado el sistema, éste 
modifica ciertos parámetros en el mismo con el propósito de asegurarse de iniciar su actividad 
maliciosa cada vez que el usuario reinicie su equipo y para detener el funcionamiento del 
software de seguridad instalado como los antivirus y firewalls (programas que controlan el 
acceso de las conexiones entrantes) con el propósito de evitar su detección. 
Ya en el sistema, el gusano de Internet intenta propagarse a otros equipos que presenten la 
misma vulnerabilidad, a través de ciertas rutinas programadas en el mismo. Estas rutinas 
consisten en generar direcciones IP (la forma en como se identifican los equipos en una red) 
de forma aleatoria y lanzar hacia ellas el código malicioso del gusano. 
Introducción 
3
Los gusanos pueden estar diseñados para realizar ciertas actividades maliciosas, por 
ejemplo, una vez que se han infectado un gran número de sistemas con un gusano, éstos 
podrían lanzar un ataque contra algún sitio Web en particular. Estos ataques podrían ser los 
llamados Ataques de Negación de Servicio Distribuido o DDoS que tienen como propósito 
saturar los servicios de Internet proporcionados por alguna organización (servidores de correo 
electrónico, servidores de páginas Web, etcétera.). A los gusanos se les considera una 
subclase de los virus y son conocidos también por su término en inglés Worm. Los gusanos 
buscan propagarse lo más rápido posible tratando de infectar el mayor número posible de 
equipos, lo que tiene como consecuencia el colapso de las comunicaciones en Internet. 
Debido a sus características de auto propagación y forma de ataque es de primordial 
importancia contar con alguna herramienta que mantenga a los sistemas lo más actualizados 
y protegidos posibles para contrarrestar los ataques de estos peligrosos gusanos. 
Por ello, el objetivo primordial del presente trabajo de tesis es dotar a los usuarios, de una 
herramienta basada en Windows Management Instrumentation que le proporcione ayuda 
para: 
– Escanear su equipo en busca de posibles gusanos 
– Proteger su equipo de amenazas actuales y futuras por parte de los gusanos 
– Combatir las distintas intrusiones de gusanos que puedan ocurrir en sus equipos 
– Eliminar todo aquello que haya sido introducido por un gusano 
– Poder actualizar dicha herramienta para que ésta no quede obsoleta ni pierda 
fuerza. 
Por lo que en el capítulo 1 se presentan una serie de antecedentes referentes a la seguridad 
informática, a los sistemas operativos y a los lenguajes de programación; en el capítulo 2 se 
da una descripción de los diferentes tipos de gusanos informáticos conocidos, así como de las 
vulnerabilidades que éstos utilizan para su propagación; en el capítulo 3 se hace mención de 
conceptos referentes al análisis de la herramienta desarrollada, además del diseño detallado 
de la misma; en el capítulo 4 se describe el proceso llevado a cabo para la elaboración de la 
herramienta con base en el análisis y diseño previos; en el capítulo 5 se vierten las pruebas 
realizadas de la herramienta sobre distintos sistemas operativos de Microsoft haciendo uso de 
gusanos informáticos reales y se muestran las estadísticas obtenidas de dichas pruebas; 
finalmente se definen las conclusiones correspondientes al proyecto de Tesis con base en los 
objetivos planteados al principio del mismo y las perspectivas a futuro. 
Capítulo 1. Antecedentes 
1.1 Historia 
I. ANTECEDENTES
En este capítulo se abordan temas conceptuales referentes a la 
seguridad informática con un breve preludio histórico de la 
misma, así como definiciones funcionales de los sistemas 
operativos y descripción de algunos lenguajes de 
programación útiles para el desarrollo de la herramienta.
Capítulo 1. Antecedentes 
5
1.1 Historia 
Hasta finales de 1988 muy poca gente tomaba en serio el tema de la seguridad en redes de 
computadoras de propósito general. Mientras que por una parte Internet iba creciendo 
exponencialmente con redes importantes que se adherían a ella, como Bitnet o Hepnet; por 
otra parte, el auge de la informática de consumo (hasta la décadade los ochenta muy poca 
gente contaba con una computadora y un módem en casa) unido a factores menos técnicos 
iba produciendo un aumento espectacular en el número de piratas informáticos. 
Sin embargo, el 22 de noviembre de 1988 Robert T. Morris protagonizó el primer gran 
incidente de la seguridad informática: uno de sus programas se convirtió en el famoso Worm o 
gusano de Internet. Miles de ordenadores conectados a la red se vieron inutilizados durante 
días, y las pérdidas se estiman en millones de dólares. Desde ese momento el tema de la 
seguridad en sistemas operativos y redes ha sido un factor a tener muy en cuenta por 
cualquier responsable o administrador de sistemas informáticos. Poco después de este 
incidente, y a la vista de los potenciales peligros que podía entrañar un fallo o un ataque a los 
sistemas informáticos estadounidenses (en general, a los sistemas de cualquier país) la 
agencia DARPA (Defense Advanced Research Projects Agency) creó el CERT (Computer 
Emergency Response Team), un grupo formado en su mayor parte por voluntarios calificados 
de la comunidad informática, cuyo objetivo principal es facilitar una respuesta rápida a los 
problemas de seguridad que afecten a hosts de Internet. 
Desde la creación del primer CERT cada día se hace patente la preocupación por los temas 
relativos a la seguridad en la red y sus equipos, y también se hace patente la necesidad de 
esta seguridad. Los piratas de antaño casi han desaparecido, dando paso a nuevas 
generaciones de intrusos que forman grupos como Chaos Computer Club o Legion of Doom, 
organizan encuentros como el español Iberhack, y editan revistas o magazines electrónicos 
(2600: The Hacker’s Quartely o Phrack son quizás las más conocidas, pero no las únicas). 
Todo esto con un objetivo principal: compartir conocimientos. Si hace unos años cualquiera 
que quisiera adentrarse en el mundo underground casi no tenía más remedio que conectar a 
alguna BBS (Bulletin Board System) donde se tratara el tema, generalmente con una cantidad 
de información muy limitada, hoy en día tiene a su disposición gigabytes de información 
electrónica publicada en Internet; cualquier aprendiz de pirata puede conectarse a un servidor 
Web, descargar un par de programas y ejecutarlos contra un servidor desprotegido y con un 
poco de (mala) suerte, esa misma persona puede conseguir un control total sobre un servidor, 
probablemente desde su PC y con una comprensión básica de lo que se esté realizando. 
Aunque sin grandes conocimientos técnicos, tienen a su disposición multitud de programas y 
documentos sobre seguridad (algo que los piratas de los ochenta apenas podían imaginar), 
además de ordenadores potentes y conexiones a Internet baratas. Por si esto fuera poco, se 
ven estimulados a través de sistemas de conversación como el IRC (Internet Relay Chat), 
donde en canales como #hack o #hackers presumen de sus logros ante sus colegas. 
A la vista de lo comentado, parece claro que la seguridad de los equipos ha de ser algo a 
considerar en cualquier red. Diariamente por cualquiera de ellas circulan todo tipo de datos, 
entre ellos muchos que se podrían catalogar como confidenciales (nóminas, expedientes, 
presupuestos, entre otros) o al menos como privados (correo electrónico, proyectos de 
investigación, artículos a punto de ser publicados, etcétera.). Independientemente de la 
etiqueta que cada usuario de la red quiera colgarle a sus datos, parece claro que un fallo de 
Capítulo 1. Antecedentes 
6
seguridad de un equipo o de la propia red no beneficia a nadie; según el Computer Security 
Institute, en su encuesta de 1998, las pérdidas económicas ocasionadas por delitos 
relacionados con nuevas tecnologías (principalmente accesos internos no autorizados) sólo 
en Estados Unidos aumentan de forma espectacular año tras año, alcanzando incluso cotas 
del 800% 1. 
1.2 Concepto de seguridad 
Se puede entender como seguridad una característica de cualquier sistema (informático o no) 
que indica que ese sistema está libre de todo peligro, daño o riesgo, y que es en cierta 
manera infalible. Como esta característica, particularizando para el caso de sistemas 
operativos o redes de computadores, es muy difícil de conseguir (según la mayoría de 
expertos, imposible), se suaviza la definición de seguridad y se pasa a hablar de fiabilidad 
(probabilidad de que un sistema se comporte tal y como se espera de él) mas que de 
seguridad; por tanto, se habla de sistemas fiables en lugar de hacerlo de sistemas seguros, ya 
que no se puede garantizar el 100% de su seguridad.
A grandes rasgos se entiende que mantener un sistema seguro (o fiable) consiste 
básicamente en garantizar tres aspectos: confidencialidad, integridad y disponibilidad. 
Algunos estudios integran la seguridad dentro de una propiedad más general de los sistemas, 
la confiabilidad, entendida como el nivel de calidad del servicio ofrecido. Consideran la 
disponibilidad como un aspecto al mismo nivel que la seguridad y no como parte de ella, por 
lo que dividen esta última en sólo las dos facetas restantes, confidencialidad e integridad. 
¿Qué implican cada uno de los tres aspectos? La confidencialidad dice que los objetos de un 
sistema han de ser accedidos únicamente por elementos autorizados a ello, y que esos 
elementos autorizados no van a convertir esa información en disponible para otras entidades; 
la integridad significa que los objetos sólo pueden ser modificados por elementos autorizados, 
y de una manera controlada, y la disponibilidad indica que los objetos del sistema tienen que 
permanecer accesibles a elementos autorizados; generalmente se considera que tienen que 
existir los tres aspectos descritos para que haya seguridad. 
1.2.1 Concepto de Seguridad Informática 
El concepto de seguridad se refiere a todo tipo de precauciones y protecciones que se llevan 
a cabo para evitar cualquier acción que comprometa a la información, considerando que se 
entiende por información a todo mensaje (conjunto de datos) que: al receptor le interese, le 
entienda o lo ignore antes de recibirlo. Por consiguiente, el término seguridad de la 
información se refiere a la prevención y a la protección, a través de ciertos mecanismos, para 
evitar que ocurra de manera accidental o intencional, la transferencia, modificación, fusión o 
destrucción no autorizada de la información. 
Así, es necesario considerar dos nuevos conceptos debido a que la seguridad de la 
información así lo requiere: seguridad informática y seguridad de la red. Con la introducción 
 
1 Fuente: http://gocsi.com/press/prelea12.jhtml
Capítulo 1. Antecedentes 
7
de la computadora, la necesidad de herramientas automatizadas para proteger la información 
almacenada en la computadora se volvió más evidente, por lo que la seguridad informática es 
el nombre genérico dado a una colección de herramientas diseñadas para proteger datos y 
detener a los perpetradores, es decir, es la protección de los sistemas de cómputo para evitar 
ataques de confidencialidad, integridad o disponibilidad. Por otro lado cuando la necesidad de 
comunicación entre los equipos de cómputo se vio cubierta con la llegada de las redes, tanto 
internas (LAN, Local Area Network) como a gran escala (Internet), se hizo patente que la 
protección de la información almacenada ya no era suficiente, sino que también se requería 
de esa protección durante la comunicación; por tanto, la seguridad de la red se considera 
como la capacidad de mantener la integridad de la información que viaja a través de las 
redes. 
A) Distinción entre amenaza y ataque 
Una amenaza es un posible ataque en potencia, ya que todo el tiempo se encuentra la 
posibilidad de atacar, la mayoría de las amenazas no las podemos controlar, ya que 
dependen de factores externos o internos; así, se consideran amenazas internas a todas 
aquellas que se encuentran dentro de nuestro entorno de trabajo, y amenazas externas a 
todas las queafectan directamente al sistema. 
En tanto que se puede considerar un ataque a toda aquella acción que afecta nuestro sistema 
de manera intencional, es decir cuando una amenaza es llevada a la acción, en la mayoría de 
las veces con un fin específico. 
B) ¿Qué queremos proteger? 
Los tres elementos principales a proteger en cualquier sistema informático son: 
A. Software. Conjunto de programas lógicos que hacen funcional al hardware, tanto 
sistemas operativos como aplicaciones. 
B. Hardware. Conjunto formado por todos los elementos físicos de un sistema informático, 
como CPUs, terminales, cableado, medios de almacenamiento secundario (Cintas, CD-
ROMs, diskettes, etcétera) o tarjetas de red. 
C. Datos. Conjunto de información lógica que maneja el software y el hardware, como por 
ejemplo paquetes que circulan por un cable de red o entradas de una base de datos. 
Habitualmente los datos constituyen el principal elemento de los tres a proteger, ya que 
es el más amenazado y seguramente el más difícil de recuperar. 
Contra cualquiera de los tres elementos descritos anteriormente (pero principalmente sobre 
los datos) se pueden realizar multitud de ataques o, dicho de otra forma, están expuestos a 
diferentes amenazas. Generalmente, la taxonomía más elemental de estas amenazas las 
divide en cuatro grandes grupos: interrupción, intercepción, modificación y fabricación. Un 
ataque se clasifica como interrupción si hace que un objeto del sistema se pierda, quede 
inutilizable o no disponible. Se tratará de una intercepción si un elemento no autorizado 
consigue un acceso a un determinado objeto del sistema, y de una modificación si además de 
Capítulo 1. Antecedentes 
8
conseguir el acceso consigue modificar el objeto; algunos autores consideran un caso 
especial de la modificación: la destrucción, entendiéndola como una modificación que inutiliza 
al objeto afectado. Por último, se dice que un ataque es una fabricación si se trata de una 
modificación destinada a conseguir un objeto similar al atacado de forma que sea difícil 
distinguir entre el objeto original y el ‘fabricado’. En la figura 1.1 se muestran estos tipos de 
ataque de una forma gráfica. 
A) Flujo normal de la 
información
B) Interrupción C) Intercepción
D) Modificación E) Fabricación
Figura 1.1 (A) Flujo normal de información; posibles amenazas (B) Interrupción, (C) Intercepción, 
(D) Modificación, (E) Fabricación 
C) ¿De qué lo queremos proteger? 
A continuación se presenta una relación de las amenazas que potencialmente pueden incurrir 
en un ataque al sistema y que por ende son precisamente aquéllas de los cuales se desea 
proteger a la información. 
1.- Personas 
La mayoría de ataques a los sistemas provienen en última instancia de personas que, 
intencionada o inintencionadamente, pueden causarnos enormes pérdidas. Generalmente se 
trata de piratas informáticos que intentan conseguir el máximo nivel de privilegio posible 
aprovechando alguno (o algunos) de los riesgos lógicos de los que hablaremos a 
continuación, especialmente agujeros del software. 
Los entornos de seguridad son aquellos en los cuales se tienen políticas de seguridad 
implantadas, además de contar con esquemas que permiten brindar una mayor seguridad a 
los elementos críticos, dichos entornos son un objetivo típico de los intrusos, ya sea para 
fisgonear, para utilizarlos como enlace hacia otras redes o simplemente por diversión. Por un 
lado, son redes generalmente abiertas, y la seguridad no es un factor tenido muy en cuenta 
Capítulo 1. Antecedentes 
9
en ellas; por otro, el gran número y variedad de sistemas conectados a estas redes provoca, 
casi por simple probabilidad, que al menos algunos de sus equipos (cuando no la mayoría) 
sean vulnerables a problemas conocidos de antemano. De esta forma un atacante sólo ha de 
utilizar un escáner de vulnerabilidades contra el dominio completo y luego atacar mediante un 
simple exploit (programas utilizados para aprovechar fallos en los sistemas) a los equipos que 
presentan vulnerabilidades; esto convierte a las redes en un objetivo fácil y apetecible para 
piratas con cualquier nivel de conocimientos, desde los más novatos (y a veces más 
peligrosos) hasta los expertos, que pueden utilizar toda la red para probar nuevos ataques o 
como nodo intermedio en un ataque a otros organismos. 
2.- Amenazas lógicas 
Bajo la etiqueta de ‘amenazas lógicas’ se encuentran todo tipo de programas que de una 
forma u otra pueden dañar a nuestro sistema, creados de forma intencionada para ello 
(software malicioso, también conocido como malware) o simplemente por error (bugs o 
agujeros). 
a) Software incorrecto 
Las amenazas más habituales en un sistema provienen de errores cometidos de forma 
involuntaria por los programadores de sistemas o de aplicaciones. Una situación no 
contemplada a la hora de diseñar el sistema de red. A estos errores de programación 
se les denomina bugs, y a los programas utilizados para aprovechar uno de estos fallos 
y atacar al sistema, exploits. Representan el ataque más común, ya que cualquiera 
puede conseguir un exploit y utilizarlo para atacar la máquina de cualquier usuario sin 
siquiera saber cómo funciona y sin conocimientos mínimos de programación; incluso 
hay exploits que dañan seriamente la integridad de un sistema (negaciones de servicio 
o incluso acceso con privilegios de administrador de forma remota) y están preparados 
para ser utilizados desde MS-DOS, con lo que cualquier pirata novato, puede utilizarlos 
contra un servidor y conseguir un control total de una máquina desde su PC sin saber 
nada del sistema atacado. 
b) Herramientas de seguridad 
Cualquier herramienta de seguridad representa un arma de doble filo: de la misma 
forma que un administrador las utiliza para detectar y solucionar fallos en sus sistemas 
o en la subred completa, un potencial intruso las puede utilizar para detectar esos 
mismos fallos y aprovecharlos para atacar los equipos. Pasan de ser útiles a ser 
peligrosas cuando las utilizan usuarios malintencionados que buscan información sobre 
las vulnerabilidades de un host o de una red completa.
 
c) Puertas traseras 
Durante el desarrollo de aplicaciones grandes o de sistemas operativos es usual entre 
los programadores insertar ‘atajos’ en los sistemas de autenticación del programa o del 
núcleo que se está diseñando. A estos atajos se les denomina puertas traseras o 
Capítulo 1. Antecedentes 
10
backdoors, y con ellos se consigue mayor velocidad a la hora de detectar y depurar 
fallos: por ejemplo, los diseñadores de un software de gestión de bases de datos en el 
que para acceder a una tabla se necesiten cuatro claves diferentes de diez caracteres 
cada una pueden insertar una rutina para conseguir ese acceso mediante una única 
clave ‘especial’, con el objetivo de perder menos tiempo al depurar el sistema. 
Algunos programadores pueden dejar estos atajos en las versiones definitivas de su 
software para facilitar un mantenimiento posterior, para garantizar su propio 
acceso, o simplemente por descuido; la cuestión es que si un atacante descubre 
una de estas puertas traseras (no nos importa el método que utilice para hacerlo) va 
a tener un acceso global a datos que no debería poder leer, lo que obviamente supone 
un grave peligro para la integridad del sistema y por ende de la información. 
d) Bombas lógicas 
Las bombas lógicas son partes de código de ciertos programas que permanecen 
sin realizar ninguna función hasta que son activadas; en ese punto, la función que 
realizan no es la original del programa, sino que generalmente se trata de una acción 
perjudicial. Los activadores más comunes de estas bombas lógicas pueden ser la 
ausencia o presencia de ciertos ficheros, la ejecución bajo un determinado UID o 
la llegada de una fecha concreta; cuando la bomba se activa va a poder realizar 
cualquier tarea que pueda realizar la persona que ejecutael programa; si las activa 
el administrador, o el programa que contiene la bomba está ejecutado a su 
nombre, los efectos obviamente pueden ser fatales. 
e) Canales cubiertos 
Los canales cubiertos (o canales ocultos, según otras traducciones) son canales de 
comunicación que permiten a un proceso transferir información de forma ilícita, tal que 
viole la política de seguridad del sistema; dicho de otra forma, un proceso transmite 
información a otros (locales o remotos) que no están autorizados a leer dicha 
información. 
f) Virus 
Un virus es una secuencia de código que se inserta en un fichero ejecutable 
denominado host, de forma que al ejecutar el programa también se ejecuta el virus; 
generalmente esta ejecución implica la copia del código viral o una modificación 
del mismo en otros programas. El virus necesita obligatoriamente un programa 
donde insertarse para poderse ejecutar, por lo que no se puede considerar un 
programa o proceso independiente. 
g) Gusanos 
Un gusano es un programa capaz de ejecutarse y propagarse por sí mismo a través de 
redes, en ocasiones portando virus o aprovechando bugs de los sistemas a los que 
conecta para dañarlos. El daño que pueden causar es muy grande: el mayor incidente 
Capítulo 1. Antecedentes 
11
de seguridad en Internet fue precisamente el Internet Worm, un gusano que en 1988 
causó pérdidas millonarias al infectar y detener más de 6000 máquinas conectadas a la 
red. Hemos de pensar que un gusano puede automatizar y ejecutar en unos segundos 
todos los pasos que seguiría un atacante humano para acceder a nuestro sistema: 
mientras que una persona, por muchos conocimientos y medios que posea, tardaría 
como mínimo varias horas en controlar una red completa (un tiempo más que 
razonable para detectarlo), un gusano puede hacer eso mismo en pocos minutos: de 
ahí su enorme peligro y sus devastadores efectos. 
h) Caballos de Troya 
Los troyanos o caballos de Troya son instrucciones escondidas en un programa 
de forma que éste parezca realizar las tareas que un usuario espera de él, pero 
que realmente ejecute funciones ocultas (generalmente en detrimento de la 
seguridad) sin el conocimiento del usuario; como el Caballo de Troya de la mitología 
griega, al que deben su nombre, ocultan su función real bajo la apariencia de un 
programa inofensivo que a primera vista funciona correctamente. Cuando un intruso 
consigue el privilegio necesario en el sistema instala troyanos para ocultar su 
presencia o para asegurarse la entrada en caso de ser descubierto: por ejemplo, es 
típico utilizar lo que se denomina un rootkit, que no es más que un conjunto de 
versiones troyanas de ciertas utilidades, para conseguir que cuando el administrador 
las ejecute no vea la información relativa al atacante, como sus procesos o su conexión 
al sistema. 
i) Programas conejo o bacterias 
Bajo este nombre se conoce a los programas que no hacen nada útil, sino que 
simplemente se dedican a reproducirse hasta que el número de copias acaba 
con los recursos del sistema (memoria, procesador, disco, etcétera ), produciendo 
una negación de servicio. Por sí mismos no hacen ningún daño interno al sistema 
operativo, sino que lo que realmente perjudica es el gran número de copias suyas en el 
sistema, que en algunas situaciones pueden llegar a provocar el alto total de la 
máquina. 
3.- Catástrofes 
Las catástrofes (naturales o artificiales) son la amenaza menos probable en convertirse 
en ataque, pero existen. Dichas amenazas son clasificadas principalmente por su 
impacto en los sistemas, debido a que estas catástrofes no son controladas por los 
seres humanos tales como temblores, huracanes, inundaciones, entre otras. 
 
D) ¿Cómo lo podemos proteger? 
Primeramente es necesario entender que se requieren identificar las amenazas a las que está 
expuesto el sistema para entonces escribir las políticas de seguridad informática que se 
Capítulo 1. Antecedentes 
12
requieren y entonces poder seleccionar los mecanismos de seguridad adecuados a las 
necesidades identificadas, así los mecanismos de seguridad; son la parte más visible de todo 
sistema de seguridad, y se convierten en la herramienta básica para garantizar la protección 
de los sistemas o de la propia red. 
Los mecanismos de seguridad se dividen en tres grandes grupos: 
• Los de prevención son aquellos que aumentan la seguridad de un sistema durante el 
funcionamiento normal de éste, previniendo la ocurrencia de violaciones a la seguridad; 
por ejemplo, el uso de cifrado en la transmisión de datos se puede considerar un 
mecanismo de este tipo, ya que evita que un posible atacante escuche las conexiones 
hacia o desde un sistema en la red. 
• Los de detección son aquellos que se utilizan para detectar violaciones de la seguridad 
o intentos de violación; ejemplos de estos mecanismos son los programas de auditoría, 
así como los sistemas de detección de intrusos (IDS). 
• Finalmente, los de recuperación son aquellos que se aplican cuando una violación del 
sistema se ha detectado, para retornar a éste a su funcionamiento correcto; ejemplos 
de estos mecanismos son la utilización de copias de seguridad o el hardware adicional. 
Dentro de este último grupo de mecanismos de seguridad encontramos un subgrupo 
denominado mecanismos de análisis forense, cuyo objetivo es el de averiguar el 
alcance de la violación, las actividades de un intruso en el sistema, y la puerta utilizada 
para entrar; de esta forma se previenen ataques posteriores y se detectan ataques a 
otros sistemas de nuestra red. 
Parece claro que, aunque los tres tipos de mecanismos son importantes para la seguridad de 
los sistemas, se enfatiza en el uso de mecanismos de prevención y de detección; la máxima 
popular ‘más vale prevenir que lamentar’ se puede aplicar a la seguridad informática: para 
nosotros, evitar un ataque, detectar un intento de violación, o detectar una violación exitosa en 
el momento que se está llevando a cabo es mucho más productivo y menos comprometedor 
para el sistema que restaurar el estado tras una penetración de la máquina. 
1.2.2 Seguridad en Internet. 
Las empresas dedicadas a ofrecer acceso a Internet a través de la línea telefónica, así como 
otros servicios de red (principalmente, hospedaje de páginas Web) son los conocidos ISPs 
(Internet Service Providers); conocidos tanto por sus servicios como por su inseguridad. Si los 
ISPs viven justamente de permitir accesos a Internet o a sus propios servidores, parece obvio 
que no podrán aplicar estrictas políticas de seguridad en las máquinas: mientras que por 
ejemplo en una empresa el administrador puede obligar, relativamente, a sus usuarios a 
utilizar protocolos cifrados, si un ISP no permite acceso FTP a los clientes que deseen colgar 
sus páginas Web y les obliga a usar un protocolo de transferencia de archivos que aplique 
criptografía, es muy probable que muchos de esos clientes abandonen y se vayan a la 
competencia: es más fácil utilizar el FTP clásico que instalar software adicional para poder 
actualizar una página Web. 
Capítulo 1. Antecedentes 
13
Con situaciones tan sencillas y comunes como las anteriores podemos hacernos una idea de 
la potencial inseguridad de los ISPs; se trata de problemas reales, no meramente teóricos: en 
Internet no es raro encontrar piratas con casi todas, o con todas, las claves de los clientes de 
un proveedor. 
A mediados de los 90’s, el número de entradas a Internet fue creciendo en un 70% cada año 
según OECD2 (Organization for Economic Co-operación and Development). Tan pronto como 
el potencial de Internet para el comercio electrónico se volvió evidente, la vulnerabilidad de 
Internet se convirtió en la noticia primordial. Internet conecta muchos anfitriones que están 
configurados y administrados de manera insegura y eso minimiza el uso de medidas para 
evitar cualquier ataque. Muchosde los delitos se deben a la vulnerabilidad de los 
proveedores, de los sistemas que no están bien configurados y de las claves de acceso por 
omisión o que son fáciles de adivinar. 
A) Vulnerabilidades en Internet. 
Los protocolos TCP/IP (Transmission Control Protocol/ Internet Protocol) protegen contra 
algunas amenazas; pero esta suite de protocolos tiene como fin enlazar computadoras que 
utilizan diferentes sistemas operativos, incluyendo PC, minicomputadoras y computadoras 
centrales sobre redes de área local y área extensa. Ahora bien, algunas sumas de 
comprobación se llevan a cabo como parte de este conjunto de protocolos, los cuales 
protegen contra las modificaciones que puedan existir en las cabeceras de los paquetes, y 
aún cuando en TCP la secuencia de los números protegen contra los paquetes perdidos o 
duplicados y otras medidas protegen contra el repudio de los paquetes, las protecciones son 
débiles, además TCP se encarga sólo de formar los paquetes en salida y reensamblarlos en 
llegada, el envío de éstos queda a cargo de IP, protocolo que se encarga de elegir la ruta 
más adecuada, esto es la más rápida, no la más segura, por la que los datos serán enviados. 
Donde el usuario no puede determinar la ruta por la que deberán transitar los paquetes, ni 
siquiera existe la posibilidad de especificar por dónde precisamente es que no deben pasar 
(por razones de seguridad), aunado a esto los paquetes IP no acarrean autenticadores de su 
carga de datos (una debilidad corregida en la versión 6 de IP, conocida como IPv6). No existe 
un lugar común para la identificación y autenticación de la información o los servicios. Para la 
mayoría, las aplicaciones deben realizar su propia autenticación. La autenticación del Telnet y 
FTP recae en las contraseñas transmitidas en el texto en claro, ambos son riesgosos para un 
anfitrión que no está bien asegurado. Las aplicaciones y los accesorios son más fáciles de 
explotar. De manera que Internet es una red inherentemente insegura, desde su surgimiento y 
hasta la época de su desarrollo la seguridad no era un objetivo que se requiriera y por ende 
que se persiguiera. 
Las principales vulnerabilidades son las siguientes: 
 
1. Suplantación de IP: Muchos ataques de Internet se basan en la suplantación de IP, 
la cual permite que un anfitrión se disfrace como otro. 
 
2 Fuente: http://www.oecd.org/dataoecd/34/13/31483554.pdf
Capítulo 1. Antecedentes 
14
 Un paquete es enviado por un equipo, pero la dirección fuente en el paquete es la de 
otro equipo. Esto es peligroso ya que las aplicaciones comúnmente utilizan las 
direcciones fuente para identificar las peticiones de los equipos que son confiables 
(figura 1.2). De esta forma el atacante en el equipo A, de quien el destino es el equipo 
B, suplanta al equipo C el cual es confiable para B. Un ataque común explota una 
característica IP llamada encaminamiento de fuente, la cual permite al emisor de un 
paquete especificar su ruta y la ruta de regreso. Si la ruta es A, B, C, entonces C debe 
utilizar la ruta de regreso C, B, A. Para que el ataque sea exitoso, el paquete enviado 
desde A debe parecer que fue enviado desde C, además, si el ataque es para 
completar algo, la réplica de B debe dirigirse a A no a C. Primero el atacante toma 
control del equipo A y cambia su dirección IP a C, entonces envía un paquete a B, 
especificando la ruta de la fuente con A como último trayecto de la ruta. El equipo B 
acepta la petición como si viniera de C y reenvía su paquete hacia A. Un firewall puede 
proteger una red interna contra los ataques de suplantación de IP mediante el rechazo 
de los paquetes entrantes direccionados desde cierta fuente. Los equipos dentro del 
firewall no deben especificar a algún equipo externo para que sea confiable y el firewall 
debe rechazar cualquier paquete entrante cuya dirección fuente se encuentra dentro de 
la red interna. El firewall debe bloquear los paquetes salientes cuya dirección fuente no 
esté dentro de la red interna, esto es para evitar que se convierta en el origen de un 
ataque. 
Figura 1.2 Suplantación de IP 
2. Conexiones secuestradas: un atacante que gana el control de una sesión activa 
gana los derechos del usuario legítimo. La autenticación y los servicios de control de 
acceso no son útiles ya que se toma posesión de la sesión después de la autenticación 
y de que el control de acceso asume que el usuario es el que está autenticado. En los 
sistemas UNIX en Internet el atacante penetra al sistema utilizando cualquier método y 
modifica el kernel para permitir el secuestro de cualquier sesión activa. 
 
3. Ataques por husmeo: Internet ha sufrido ataques que recolectan contraseñas u 
otra información que puede ser utilizada por usuarios no autorizados. A estos ataques 
se les llama ataques por husmeo ya que utilizan herramientas que monitorean la red, 
también conocidas con el nombre de sniffers. El monitoreo se basa en una 
característica de interfaz de red llamada modo promiscuo, la cual es útil para la 
Capítulo 1. Antecedentes 
15
administración de la red pero no para la seguridad. Una computadora cuya unidad de 
interfaz de red se encuentra en modo promiscuo puede leer todos los paquetes que 
pasan por la red. Un atacante que tome posesión de una computadora así, ejecuta un 
programa que captura los primeros datos transmitidos para cada sesión de la red 
(como el Telnet y el FTP). Los datos incluyen el nombre del equipo remoto, el nombre 
de la cuenta y la contraseña. 
1.2.3 Gusanos. 
El término gusano, acuñado en 1975 en la obra de ciencia ficción de John Brunner: The 
Shockwave Rider, hace referencia a programas capaces de viajar por sí mismos a través de 
redes de computadoras para realizar cualquier actividad una vez alcanzada una máquina; 
aunque esta actividad no tiene por qué entrañar peligro, los gusanos pueden instalar en el 
sistema alcanzado un virus, atacar a este sistema como haría un intruso, o simplemente 
consumir excesivas cantidades de ancho de banda en la red afectada, entre otras 
actividades maliciosas. Aunque se trata de malware muchísimo menos habitual que por 
ejemplo los virus o las puertas traseras, los gusanos son una de las amenazas que 
potencialmente puede causar mayores daños, no debemos olvidar que el mayor 
incidente de seguridad de la historia fue a causa de un gusano (el famoso Worm de 
1988). 
Antes del gusano de Robert T. Morris, existieron otros con fines muy diferentes; a 
principios de los setenta Bob Thomas escribió lo que muchos consideran el primer gusano 
informático. Este programa, denominado ‘creeper’, no estaba diseñado para dañar al 
sistema, sino que era utilizado en los aeropuertos por los controladores aéreos para 
notificar que el control de determinado avión había pasado de un ordenador a otro. Otros 
ejemplos de gusanos útiles fueron los desarrollados a principios de los ochenta por 
John Shoch y Jon Hupp, del centro de investigación de Xerox en Palo Alto, California; 
estos gusanos se dedicaron a tareas como el intercambio de mensajes entre sistemas o 
el aprovechamiento de recursos ociosos durante la noche. Todo funcionaba 
aparentemente bien, hasta que una mañana al llegar al centro ningún ordenador funcionó 
debido a un error en uno de los gusanos; al reiniciar los sistemas, inmediatamente volvieron a 
fallar porque el gusano seguía trabajando, por lo que fue necesario diseñar una vacuna. 
Éste es considerado el primer incidente de seguridad en el que entraban gusanos en juego. 
Sin embargo, no fue hasta 1988 cuando se produjo el primer incidente de seguridad ‘serio’ 
provocado por un gusano, que a la larga se ha convertido en el primer problema de seguridad 
informática que saltó a los medios y también en el más grave de todos los tiempos. El 
2 de noviembre de ese año,Robert T. Morris saltó a la fama cuando uno de sus 
programas se convirtió en el primer Gusano de Internet. La principal causa del problema 
fue la filosofía ‘Security through Obscurity’ que muchos aún defienden hoy en día. Este joven 
estudiante era hijo del prestigioso científico Robert Morris, experto en Unix y seguridad, quien 
conocía perfectamente uno de los muchos fallos en Sendmail. No hizo público este fallo 
ni su solución, y su hijo aprovechó ese conocimiento para incorporarlo a su gusano. El Worm 
aprovechaba varias vulnerabilidades en programas como Sendmail, fingerd, rsh y 
rexecd para acceder a un sistema, contaminarlo, y desde él seguir actuando hacia otras 
máquinas. En unas horas, miles de equipos conectados a la red dejaron de funcionar, todos 
Capítulo 1. Antecedentes 
16
presentando una sobrecarga de procesos sh (el nombre camuflado del gusano en los 
sistemas Unix); reiniciar el sistema no era ninguna solución, porque tras unos minutos de 
funcionamiento el sistema volvía a presentar el mismo problema. 
Fueron necesarias muchas horas de trabajo para poder detener el Worm de Robert T. 
Morris; expertos de dos grandes universidades norteamericanas, el MIT y Berkeley, 
fueron capaces de desensamblar el código y proporcionar una solución al problema. Junto a 
ellos, cientos de administradores y programadores de todo el mundo colaboraron 
ininterrumpidamente durante varios días para analizar cómo se habían contaminado y cuáles 
eran los efectos que el gusano había causado en sus sistemas. El día 8 de noviembre, casi 
una semana después del ataque, expertos en seguridad de casi todos los ámbitos de la vida 
estadounidense se reunieron para aclarar qué es lo que pasó exactamente, cómo se había 
resuelto, cuáles eran las consecuencias y cómo se podía evitar que sucediera algo parecido 
en el futuro; allí había desde investigadores del MIT o Berkeley hasta miembros de la CIA, el 
Departamento de Energía o el Laboratorio de Investigación Balística, pasando por supuesto 
por miembros del National Computer Security Center, organizador del evento. Esta 
reunión, y el incidente en sí, marcaron un antes y un después en la historia de la 
seguridad informática; la sociedad en general y los investigadores en particular tomaron 
conciencia del grave problema que suponía un ataque de esa envergadura, y a partir de ahí 
comenzaron a surgir organizaciones como el CERT, encargadas de velar por la seguridad de 
los sistemas informáticos. También se determinaron medidas de prevención que siguen 
vigentes hoy en día, de forma que otros ataques de gusanos no han sido tan 
espectaculares. 
1.3 Sistemas Operativos 
Un sistema operativo es un conjunto de programas destinado a permitir la comunicación del 
usuario con la computadora y gestionar sus recursos de manera eficiente. Comienza a 
trabajar cuando se enciende la computadora, y gestiona el hardware de la máquina desde los 
niveles más básicos. 
Éste se encarga de reconocer dispositivos de entrada y salida que van desde el teclado, 
enviar mensajes a pantalla manteniendo rastro de los archivos y directorios en el disco, y 
controlar los dispositivos periféricos como las impresoras. Provee de una plataforma de 
software por encima de la cual otros programas, llamados aplicaciones, pueden ejecutarse. 
Las aplicaciones tienen que crearse de acuerdo a la plataforma en donde se van a ejecutar. 
La elección del sistema operativo, entonces, determina el tipo de uso que se le va a dar a la 
PC como también el tipo de aplicaciones que se puedan ejecutar. 
Para poder hablar más detalladamente de las características de los sistemas operativos es 
necesario definir los siguientes conceptos. 
• Programa: secuencia de instrucciones escrita en un lenguaje dado; es un concepto 
estático, mientras que un proceso es un concepto dinámico. Es posible que un 
programa sea ejecutado por varios usuarios en un sistema multiusuario, por cada 
una de estas ejecuciones existirá un proceso, con su contador de programa, 
registros, etcétera. 
Capítulo 1. Antecedentes 
17
• Proceso: instancia de ejecución de un programa, caracterizado por su contador de 
programa, su palabra de estado, sus registros del procesador, su segmento de 
texto, pila y datos, etcétera. El sistema operativo necesita el concepto de proceso 
para poder gestionar el procesador mediante la técnica de multiprogramación o de 
tiempo compartido, de hecho, el proceso es la unidad de asignación de la CPU. 
1.3.1 Servicios del sistema operativo 
Los sistemas operativos proporcionan servicios que permiten la interacción del usuario con el 
hardware, a continuación se describen brevemente algunos de ellos. 
• Ejecución de programas.- El sistema operativo tiene que ser capaz de cargar un 
programa en memoria y ejecutarlo. 
• Operaciones de entrada/salida.- Como un programa no puede acceder directamente a 
un dispositivo de E/S el sistema operativo debe proporcionarle los medios necesarios 
para realizarlo. 
• Manipulación del sistema de archivos.- El sistema operativo facilita las herramientas 
necesarias para que los programas puedan leer, escribir y eliminar archivos, estos 
servicios varían dependiendo del tipo de sistema así como de la versión del mismo. 
• Detección de errores.- El sistema operativo necesita constantemente detectar posibles 
errores. Los errores pueden producirse en el CPU, la memoria, en los dispositivos de 
E/S o bien en los programas que los usuarios están ejecutando. Para cada tipo de 
error, el sistema operativo debe adoptar la iniciativa apropiada que garantice una 
computación correcta y consistente. 
• Asignación de recursos.- Cuando hay múltiples usuarios o múltiples trabajos 
ejecutándose al mismo tiempo, hay que asignar recursos a cada uno de ellos. El 
sistema operativo se encarga de gestionar muchos tipos de recursos diferentes. 
1.3.2 Estructura de los sistemas operativos 
Si bien no todos los sistemas operativos tienen la misma estructura, la mayoría de los 
sistemas operativos modernos poseen esta estructura: 
A) Administración de memoria 
Para que un proceso pueda ejecutarse debe estar ubicado en la memoria principal del 
ordenador. Una parte del sistema operativo se va a encargar de gestionar la memoria 
principal, de forma que los procesos puedan residir en la memoria sin conflictos. La gestión de 
la memoria implica varias tareas, una de ellas es llevar un registro de qué zonas están libres 
(es decir, no están siendo utilizadas por ningún proceso), y qué zonas están ocupadas por 
Capítulo 1. Antecedentes 
18
qué procesos. Otra tarea importante surge en sistemas en los que no todos los procesos, o no 
todo el código y datos de un proceso, se ubican en la memoria principal. En estos sistemas, a 
menudo se debe pasar parte, o la totalidad del código y datos de un proceso, de memoria a 
disco, o viceversa; siendo el sistema operativo responsable de esta tarea. De esta forma se 
libera al usuario de realizar estas transferencias de información, de las cuales no es 
consciente. 
Otros dos temas importantes en la gestión de la memoria son el de la carga de los programas 
de disco a memoria y el de la protección. Desde el momento en que varios procesos deben 
compartir la memoria del ordenador surge el problema de la protección. En general, se 
pretende que un proceso no pueda modificar las direcciones de memoria en las que no reside. 
Esto es así ya que en las direcciones de memoria donde no está ubicado el proceso pueden 
residir otros procesos, o código o estructuras de datos del S.O. Si un proceso puede modificar 
indiscriminadamente la memoria, podría, por ejemplo, cambiar el valor de una dirección de 
memoria donde residiera una variable de otro proceso, con la consecuente ejecución 
incorrecta del proceso propietario de la variable. Algunos sistemas ni siquiera permiten que un 
proceso pueda leer las direcciones dememoria en las que no reside, con esto se consigue 
privacidad sobre el código y datos de los procesos. 
B) Administración de procesos 
A primera vista, la función de cambio de proceso parece sencilla. En cierto momento, un 
proceso que se está ejecutando se interrumpe, el sistema operativo pone a otro proceso en el 
estado de ejecución y pasa el control a dicho proceso. 
Un cambio de proceso puede suceder en cualquier instante en el que el sistema operativo 
gana el control de la CPU. 
En primer lugar, se van a tener en cuenta las interrupciones del sistema. Se pueden distinguir 
dos clases de interrupciones del sistema. La primera es originada por algún tipo de suceso 
que es externo e independiente del proceso que se está ejecutando, como la culminación de 
una E/S por ejemplo. La segunda tiene que ver con una condición de error o excepción 
generada dentro del proceso que se está ejecutando, como un intento ilegal de acceso a un 
fichero, una división entre cero, una instrucción máquina con código de operación no 
contemplado. 
C) Administración del almacenamiento secundario 
Como la memoria principal (RAM, Random Access Memory) no cuenta con la capacidad 
suficiente como para almacenar todos los datos y programas, la computadora posee un 
almacenamiento secundario para volcar los datos de memoria no utilizados. Las 
computadoras modernas utilizan el disco duro para este fin. La mayoría de los programas se 
almacenan en disco hasta que son cargados en memoria. 
Por lo que el sistema operativo se encarga de: 
• Administrar el espacio libre. 
• Asignar espacio de almacenamiento. 
Capítulo 1. Antecedentes 
19
• Organizar el disco. 
D) Administración de Archivos 
El administrador de archivos es uno de los componentes más visibles de un sistema 
operativo. Las computadoras pueden almacenar información en diferentes tipos de medios 
físicos. Cintas magnéticas, discos magnéticos, memorias USB y discos ópticos, son los más 
comunes. Cada uno de estos medios tiene sus propias características y organización física, 
por lo cual se requiere de un dispositivo que controle cada uno de ellos. Las propiedades de 
estos dispositivos incluyen velocidad de lectura, capacidad de almacenamiento, velocidad de 
transferencia de datos y método de acceso. 
La administración de archivos se encarga de: 
• Creación y eliminación de archivos. 
• Creación y eliminación de directorios. 
• Soporte de primitivas (instrucciones) para manipular archivos y directorios. 
• Mapeo de archivos dentro de almacenamiento secundarios.
• Resguardo de archivos en medios de almacenamiento estables. 
E) Sistema de protección 
Si un sistema permite tener múltiples usuarios concurrentes, los procesos deben estar 
protegidos de otras actividades. Para tal propósito se provee de mecanismos que aseguran 
que los archivos, segmentos de memoria, CPU y otros recursos pueden ser operados sólo por 
aquellos procesos que tienen permiso otorgado por el sistema operativo. 
Ciertas instrucciones máquina pueden ejecutarse sólo en modo privilegiado. Entre éstas están 
la lectura o modificación de registros de control (como la palabra de estado), instrucciones 
primitivas de E/S e instrucciones relativas a la gestión de memoria. Y solamente se puede 
acceder a ciertas zonas de memoria en el modo privilegiado. El modo de menor privilegio se 
conoce como modo usuario, y el de mayor privilegio como modo de sistema, supervisor o 
núcleo. 
La razón por la que se usan dos modos debe quedar clara. Es necesario proteger al sistema 
operativo y a las estructuras de datos importantes, tales como los bloques de control de 
procesos, de las inferencias de los programas de usuario. En el modo núcleo o privilegiado, el 
software tiene control completo del procesador y de todas las instrucciones, registros y 
memoria. 
F) Sistema distribuido 
Un sistema distribuido es una colección de procesos que no comparten memoria o recursos. 
Cada procesador tiene su propia memoria local, y los procesadores se comunican con otros a 
través de varias líneas de comunicación como buses de alta velocidad o líneas telefónicas. 
Capítulo 1. Antecedentes 
20
Los procesadores en el sistema se conectan a través de redes de comunicación, las cuales se 
pueden configurar de muchas maneras. La red puede esta completa o parcialmente 
conectada. 
En un sistema distribuido los recursos se comparten entre varias estaciones, los sistemas 
operativos de red se encargan de administrar el acceso a estos recursos. 
G) Sistema intérprete de comandos 
Una de las funciones más importantes de un sistema operativo es el intérprete de comandos, 
que es la interfaz entre el usuario y el sistema operativo. Algunos sistemas operativos 
incluyen el intérprete en el kernel. Otros como el DOS o UNIX, poseen un programa especial 
para cumplir esta función que se ejecuta cuando se inicia el sistema. 
Cuando un usuario se conecta a un equipo se inicia un intérprete de comandos (en entornos 
UNIX son llamados shells). El intérprete de comandos es un programa que muestra un 
indicador (prompt) formado por algunos caracteres, que pueden incluir el directorio de trabajo 
(un posible indicador en MS DOS es C:\>), que indica al usuario que es posible introducir una 
orden. El usuario escribirá una orden, por ejemplo C:\> copy fich fich2 y pulsará la tecla return. 
En un entorno UNIX, o MS DOS, la primera palabra es el nombre de un fichero que contiene 
un programa, siendo el resto de la línea una serie de argumentos, separados por espacios, 
que toma dicho programa. Una excepción a esto son las órdenes internas, que el intérprete 
implementa como rutinas suyas, y que no tienen, por tanto, un programa asociado guardado 
en disco. El intérprete de órdenes realiza entonces una o varias llamadas al sistema para 
ejecutar dicho programa. Cuando el programa finalice el control vuelve al programa que lo 
lanzó (el intérprete), mostrando éste otra vez el indicador, y repitiéndose el ciclo. 
Así pues, el intérprete de órdenes es un programa que sirve de interfaz entre el sistema 
operativo y un usuario, utilizándolo este último para ejecutar programas. A diferencia de un 
programador, un "usuario final" realiza todas las llamadas al sistema indirectamente, a través 
de las llamadas al sistema de los programas que ejecuta. En muchos sistemas se ha optado 
por sustituir el intérprete de comandos por un programa que utiliza ventanas. En estos 
programas aparecen iconos que el usuario puede seleccionar mediante un ratón. Cuando el 
usuario selecciona un icono que representa un programa se realizan llamadas al sistema para 
ejecutar un fichero, asociado al icono, que contiene el programa. Por lo tanto, se sustituye la 
interfaz del usuario para ejecutar programas, pero la interfaz con el sistema operativo no 
cambia. 
H) Llamadas al sistema 
El Sistema Operativo en conjunto con el Hardware se muestra al usuario como un solo 
dispositivo con un conjunto de instrucciones más flexibles y variadas a las que se conoce 
como Llamadas al Sistema 
Estas llamadas se implementan generalmente por instrucciones en lenguaje de máquina. 
La forma en que se realiza una llamada al sistema consiste en colocar una serie de 
parámetros en un lugar específico (como los registros del procesador), para después ejecutar 
Capítulo 1. Antecedentes 
21
una instrucción del lenguaje máquina del procesador denominada trap (en castellano, 
trampa). La ejecución de esta instrucción máquina hace que el hardware guarde el contador 
de programa y la palabra de estado del procesador (PSW, Processor Status Word) en un 
lugar seguro de la memoria, cargándose un nuevo contador de programa y una nueva PSW. 
Este nuevo contador de programa contiene una dirección de memoria donde reside una parte 
(un programa) del sistema operativo, el cual se encarga de llevar a cabo el servicio solicitado. 
Cuando el sistema operativo finaliza el servicio, coloca un código de estado en un registro 
para indicar si hubo éxito o fracaso, y ejecuta

Continuar navegando