Vous êtes sur la page 1sur 14

1. Introduccin La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con mucho cuidado.

Aunque actualmente la mayora de los sistemas de cmputo cuentan con una alta capacidad de memoria, de igual manera las aplicaciones actuales tienen tambin altos requerimientos de memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario. La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor consiste en llevar un registro de las partes de memoria que se estn utilizando y aquellas que no, con el fin de asignar espacio en memoria a los procesos cuando stos la necesiten y liberndola cuando terminen, as como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella. Los sistemas de administracin de memoria se pueden clasificar en dos tipos: los que desplazan los procesos de la memoria principal al disco y viceversa durante la ejecucin y los que no. El propsito principal de una computadora es el de ejecutar programas, estos programas, junto con la informacin que accesan deben de estar en la memoria principal (al menos parcialmente) durante la ejecucin. Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos a la vez en la memoria principal, para lo cual dispone de varias opciones de administracin tanto del procesador como de la memoria. La seleccin de uno de ellos depende principalmente del diseo del hardware para el sistema. A continuacin se observarn los puntos correspondientes a la administracin de la memoria. 2. Aspectos generales Memoria real La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la informacin contenida en ella es de ms rpido acceso. Solo la memoria cache es ms rpida que la principal, pero su costo es a su vez mayor. Memoria El termino memoria virtual se asocia a dos conceptos que normalmente a parecen unidos: 1. virtual

2.

El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusin de tener mas memoria RAM de la que realmente hay en el sistema. Esta ilusin de existe tanto a nivel del sistema, es decir, teniendo en ejecucin mas aplicaciones de las que realmente caben en la memoria principal, sin que por ello cada aplicacin individual pueda usar mas memoria de la que realmente hay o incluso de forma mas general, ofreciendo a cada aplicacin mas memoria de la que existe fsicamente en la maquina. Ofrecer a las aplicaciones la ilusin de que estn solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo. Esta tcnica facilita enormemente la generacin de cdigo, puesto que el compilador no tiene porque preocuparse sobre dnde residir la aplicacin cuando se ejecute. Direcciones

Espacio De Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos: y y

Direcciones fsicas: son aquellas que referencian alguna posicion en la memoria fsica. Direcciones lgicas : son las direcciones utilizadas por los procesos. Sufren una serie de transformaciones , realizadas por el procesador (la MMU), antes de convertirse en direcciones fsicas.

Direcciones lineales: direcciones lineales se obtienen a partir de direcciones logicas tras haber aplicado una transformacin dependiente de la arquitectura.

Los programas de usuario siempre tratan con direcciones virtuales ; nunca ven las direcciones fisicas reales.. Unidad De Manejo De La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son: y y Memoria

y y

y y

Convertir las direcciones lgicas emitidas por los procesos en direcciones fsicas. Comprobar que la conversin se puede realizar. La direccin lgica podra no tener un direccin fsica asociada. Por ejemplo, la pagina correspondiente a una direccin se puede haber trasladado a una zona de almacenamiento secundario temporalmente. Comprobar que el proceso que intenta acceder a una cierta direccion de memoria tiene permisos para ello. La MMU se Inicializa para cada proceso del sistema. Esto permite que cada procesop pueda usar el rango completo de direcciones lgicas (memoria virtual), ya que las conversiones de estas direcciones sern distintas para cada proceso. En todos los procesos se configura la MMU para que la zona del ncleo solo se pueda acceder en modo privilegiado del procesador. La configuracin correspondiente al espacio de memoria del ncleo es idntica en todos los procesos.

3. Intercambio El objetivo del intercambio es dar cabida a la ejecucin de mas aplicaciones de las que pueden residir simultneamente en la memoria del sistema: Consiste en trasladar el cdigo y los datos de un proceso completo de memoria al sistema de almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar mas memoria RAM de la que realmente existe en el sistema. Esta tcnica puede ser ineficiente ya que se tiene que hacer el intercambio completo del proceso, aunque ste solo vaya a ejecutar una pequea porcin del cdigo. Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar especial del disco y posteriormente vuelto a memoria y continuada su ejecucin.. El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imgenes de meoria de todos los usuarios. Asignacion La memoria principal normalmente se divide en dos particiones: y y Contigua

Sistema operativo residente, normalmente en la parte baja de memoria con los vectores de interrupcin. Procesos de usuario en la parte alta.

Asignacin de particin simple: Puede utilizarse un esquema de registro de relocalizacin y limite para proteger un proceso de usuario de otro y de cambios del cdigo y datos del sistema operativo . El registro de relocalizacin contiene la direccin contiene la direccin fsica mas pequea; el registro limite contiene el rango de las direcciones lgicas cada direccin lgica debe ser menor al registro limite Asignacin de particiones mltiples: Bloques de distintos tamaos estn distribuidos en memoria , cuando llega un proceso se le asigna un hueco

suficientemente grande El sistema operativo debe tener informacin sobre: a. b. Particiones asignadas Particiones libres (huecos)

para

acomodarle.

Asignacin de particin dinmica El proceso de compactacin es una instancia particular del problema de asignacin de memoria dinmica, el cual es el cmo satisfacer una necesidad de tamao n con una lista de huecos libres. Existen muchas soluciones para el problema. El conjunto de huecos es analizado para determinar cul hueco es el ms indicado para asignarse. Las estrategias ms comunes para asignar algn hueco de la tabla son: y Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La bsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o en donde termin la ltima bsqueda. La bsqueda termina al encontrar un hueco lo suficientemente grande. Mejor ajuste: Busca asignar el espacio ms pequeo de los espacios con capacidad suficiente. La bsqueda se debe de realizar en toda la tabla, a menos que la tabla est ordenada por tamao. Esta estrategia produce el menor desperdicio de memoria posible. Peor ajuste: Asigna el hueco ms grande. Una vez ms, se debe de buscar en toda la tabla de huecos a menos que est organizada por tamao. Esta estrategia produce los huecos de sobra ms grandes, los cuales pudieran ser de ms uso si llegan procesos de tamao mediano que quepan en ellos.

Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en trminos de uso de espacio, pero por lo general el primer ajuste es ms rpido. Problema: La fragmentacin. 4. Fragmentacin La fragmentacin es la memoria que queda desperdiciada al usar los mtodos de gestin de memoria que se vieron en los mtodos anteriores. Tanto el primer ajuste, como el mejor y el peor producen fragmentacin externa. La fragmentacin es generada cuando durante el reemplazo de procesos quedan huecos entre dos o ms procesos de manera no contigua y cada hueco no es capaz de soportar ningn proceso de la lista de espera. La fragmentacin puede ser: y y Fragmentacin Externa: existe el espacio total de memoria para satisfacer un requerimiento, pero no es contigua. Fragmentacin Interna: la memoria asignada puede ser ligeramente mayor que la requerida; esta referencia es interna a la particin, pero no se utiliza.

La fragmentacin externa se puede reducir mediante la compactacin para colocar toda la memoria libre en un solo gran bloque, pero est a solo es posible si la relocalizacin es dinmica y se hace en tiempo de ejecucin. 5. Paginacin

Es una tcnica de manejo de memoria, en la cual el espacio de memoria se divide en secciones fsicas de igual tamao, denominadas marcos de pgina. Los programas se dividen en unidades lgicas, denominadas pginas, que tienen el mismo tamao que los marcos de pginas. De esta forma, se puede cargar una pgina de informacin en cualquier marco de pgina. Las pginas sirven como unidad de almacenamiento de informacin y de transferencia entre memoria principal y memoria auxiliar o secundaria. Cada marco se identifica por la direccin de marco, que esta en la posicin fsica de la primera palabra en el marco de pgina. Las pginas de un programa necesitan estar contiguamente en memoria, aunque el programador lo observe de esta forma. Los mecanismos de paginacin permiten la correspondencia correcta entre las direcciones virtuales (dadas por los programas) y las direcciones reales de la memoria que se reverencien. Cada pagina consiste en z palabras contiguas; un espacio de direcciones N de un programa consiste de n paginas (0,1,2,3 n-1) (n*z direcciones virtuales) y el espacio de memoria consiste de m marcos de paginas (0,z,2z, ,(m-1)z)(m*z posiciones). Una direccin virtual a es equivalente a una direccin dada como una dupla (p, d), en la cual p es el nmero de la pgina y d el nmero de la palabra dentro de la pgina, de acuerdo con la relacin: a=p*z+d (0<=d<z) p=(a/z) (parte entera de la division) d=a mod z (resto de divisor a/z) En las maquinas que usan aritmtica binaria, el calculo de (p, d) es trivial, si z es potencia de 2. Por ejemplo, si el campo de direcciones de la instruccin es de m bits (m>6), los cuatro bits mas significativos indican el numero de la pagina y los m-4 bits restantes, el desplazamiento. Para tener el control de las pginas, debe mantenerse una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para cada uno de los procesos. Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos han dejado con un problema: fragmentacin, (huecos en la memoria que no pueden usarse debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria principal. Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida. Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin. La paginacin evita el considerable problema de ajustar los pedazos de memoria de tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en muchos sistemas operativos. Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria, sino que van a una unidad administradora de la memoria (MMU Memory Management Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina o frames. Las pginas y los frames tienen siempre el mismo tamao. Tablas de pginas Cada pgina tiene un nmero que se utiliza como ndice en la tabla de pginas, lo que da por resultado el nmero del marco correspondiente a esa pgina virtual. Si el bit presente / ausente es 0, se provoca un sealamiento (trap) hacia el sistema operativo. Si el bit es 1, el nmero de marco que aparece en la tabla de pginas se copia en los bits de mayor orden del registro de salida, junto con el ajuste (offset) de 12 bits, el cual se copia sin modificaciones de la direccin virtual de entrada. Juntos forman una direccin fsica de 15 bits. El registro de salida se coloca entonces en el bus de la memoria como la direccin en la memoria fsica. En teora, la asociacin de las direcciones virtuales con las fsicas se efecta segn lo descrito. El nmero de pgina virtual se divide en un nmero de pgina virtual (los bits superiores)y un ajuste (los bits inferiores). El nmero de pgina virtual se utiliza como un ndice en la tabla de pginas para encontrar la entrada de esa pgina virtual. El nmero de marco (si existe) se determina a partir de la tabla de pginas. El nmero de

marco se asocia al extremo superior del ajuste y reemplaza al nmero de pgina virtual para formar una direccin fsica que se puede enviar a la memoria. La finalidad de la tabla de pginas es asociar las pginas virtuales con los marcos. En trminos matemticos, la tabla de pginas es una funcin, cuyo argumento es el nmero de pgina virtual y como resultado el nmero del marco fsico. Mediante el resultado de esta funcin, se puede reemplazar el campo de la pgina virtual de una direccin virtual por un campo de marco, lo que produce una direccin en la memoria fsica. Sin embargo hay que enfrentar dos aspectos fundamentales: 1. 2. La tabla de pginas puede ser demasiado grande. La asociacin debe ser rpida.

El primer punto proviene del hecho de que las computadoras modernas utilizan direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamao de pgina es de 4K, un hueco de direcciones de 32 bits tiene un milln de pginas; en el caso de un hueco de direcciones de 64 bits, se tendra ms informacin de la que uno quisiera contemplar. El segundo punto es consecuencia del hecho de que la asociacin virtual fsica debe hacerse en cada referencia a la memoria. Una instruccin comn tiene una palabra de instruccin y tambin un operando de memoria. Entonces es necesario hacer una, dos o ms referencias a la tabla de pginas por cada instruccin. Caractersticas de la paginacin: y y y y y y y El espacio de direcciones lgico de un proceso puede ser no contiguo. Se divide la memoria fsica en bloques de tamao fijo llamados marcos (frames). Se divide la memoria en bloques de tamao llamados paginas. Se mantiene informacin en los marcos libres. Para correr un programa de n paginas de tamao, se necesitan encontrara n marcos y cargar el programa. Se establece una tabla de paginas para trasladar las direcciones lgicas a fsicas. Se produce fragmentacin interna.

Ventajas de la paginacin 1. 2. 3. 4. 5. Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud. No es necesario que las paginas estn contiguas en memoria, por lo que no se necesitan procesos de compactacin cuando existen marcos de paginas libres dispersos en la memoria. Es fcil controlar todas las pginas, ya que tienen el mismo tamao. El mecanismo de traduccin de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario. Se libera al programador de la restriccin de programar para un tamao fsico de memoria, con lo que s e aumenta su productividad. Se puede programar en funcin de una memoria mucho ms grande a la existente. Al no necesitarse cargar un programa completo en memoria para su ejecucin, se puede aumentar el numero de programas multiprogramndose. Se elimina el problema de fragmentacin externa.

6. 7.

Desventajas de la paginacin 1. El costo de hardware y software se incrementa, por la nueva informacin que debe manejarse y el mecanismo de traduccin de direcciones necesario. Se consume mucho mas recursos de memoria, tiempo en el CPU para su implantacin.

2.

3.

Se deben reservar reas de memoria para las PMT de los procesos. Al no ser fija el tamao de estas, se crea un problema semejante al de los programas (como asignar un tamao ptimo sin desperdicio de memoria, u "ovearhead" del procesador). Aparece el problema de fragmentacin interna. As, si se requieren 5K para un programa, pero las paginas son de 4K, debern asignrseles 2 paginas (8k), con lo que quedan 3K sin utilizar. La suma de los espacios libres dejados de esta forma puede ser mayor que el de varias paginas, pero no podr ser utilizados. Debe asignarse un tamao promedio a las pginas, evitando que si son muy pequeas, se necesiten TABLAS BMT y PMT muy grandes, y si son muy grandes, se incremente el grado de fragmentacin interna. de Direcciones

Traduccin La direccin generada por la CPU se divide en: y y

Numero de pagina (p): utilizado como indice en la tabla de pagins que contiene la direccin base de cada pagina en la memoria fisica. Offset de la pagina (d): combinado con la direccin base dfine la direccion fisica que ser enviada a la unidad de memoria.

Ejemplo de paginacin: 6. Segmentacin Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa. La segmentacin permite alcanzar los siguientes objetivos: 1. 2. 3. 4. 5. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamao y este puede variar. Proteccin: se puede proteger los mdulos del segmento contra accesos no autorizados. Comparicin: dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. Enlace dinmico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern solo cuando sea necesario. la segmentacin

Ventajas de El esquema de segmentacin ofrece las siguientes ventajas: y y y y y

El programador puede conocer las unidades lgicas de su programa, dndoles un tratamiento particular. Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Debido a que es posible separar los mdulos se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. Es fcil el compartir segmentos. Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin.

Existe la posibilidad de definir segmentos que aun no existan. As, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los arreglos cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cual se referencia el arreglo u otra estructura de dato por primera vez.

Desventajas de la segmentacin y y Hay un incremento en los costos de hardware y de software para llevar a cabo la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc. Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, puede ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.

y y

Estas desventajas tratan de ser minimizadas, bajo la tcnica conocida como Segmentacin paginada. 7. Segmentacin Paginada Paginacin y segmentacin son tcnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. Para la segmentacin se necesita que estn cargadas en memoria, reas de tamaos variables. Si se requiere cargar un segmento en memoria; que antes estuvo en ella y fue removido a memoria secundaria; se necesita encontrar una regin de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible; en cambio "recargar" una pagina implica solo encontrar un merco de pagina disponible. A nivel de paginacin, si quiere referenciar en forma cclicas n paginas, estas debern ser cargadas una a una generndose varias interrupciones por fallas de paginas; bajo segmentacin, esta pagina podra conformar un solo segmento, ocurriendo una sola interrupcin, por falla de segmento. No obstante, si bajo segmentacin, se desea acceder un rea muy pequea dentro de un segmento muy grande, este deber cargarse completamente en memoria, desperdicindose memoria; bajo paginacin solo se cargara la pgina que contiene los tems referenciados. Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez; adems las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real. Las direcciones tienen tres componentes: (s, p,d), donde la primera indica el numero del segmento, la segunda el numero de la pagina dentro del segmento y la tercera el desplazamiento dentro de la pagina. Se debern usar varias tablas: y SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se

y y y

indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento. PMT (tabla de mapas de pginas): una por segmento; cada entrada de la PMT describe una pgina de un segmento; en la forma que se presento la pagina pura. TBM (tabla de bloques de memoria): para controlar asignacin de pginas por parte del sistema operativo. JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.

En el caso, de que un segmento sea de tamao inferior o igual al de una pagina, no se necesita tener la correspondiente PMT, actundose en igual forma que bajo segmentacin pura; puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no. Ventajas de la segmentacin paginada El esquema de segmentacin paginada tiene todas las ventajas de la segmentacin y la paginacin: y y y Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentacin externa y la necesidad de compactacin.

Desventajas de la segmentacin paginada y Las tres componentes de la direccin y el proceso de formacin de direcciones hace que se incremente el costo de su implantacin. El costo es mayor que en el caso de de segmentacin pura o paginacin pura. Se hace necesario mantener un nmero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento.

Sigue existiendo el problema de fragmentacin interna de todas- o casi- todas las pginas finales de cada uno de los segmentos. Bajo paginacin pura se desperdician solo la ltima pgina asignada, mientras que bajo segmentacin paginada el desperdicio puede ocurrir en todos los segmentos asignados. 8.3 Las 50 herramientas de seguridad ms utilizadas Segn una encuesta hecha por Insecure.com a 1200 usuarios del NMAP en su lista de correo, las herramientas de seguridad preferidas e independientemente de la plataforma, son las siguientes: Ordenadas empezando por la ms popular, se agrupan utilidades como scanners, sniffers y dems programas de seguridad. Se incluye el enlace para descargarlas y una breve explicacin sobre su uso y/o utilidad teniendo en cuenta que hay algunas que no conoca. * Nessus (http://www.nessus.org): este programa es un scanner de seguridad empleado para hacer ms de una auditora en busca de vulnerabilidades. Consta de dos partes, cliente y servidor (nessusd) con versiones para Windonws, Java y Unix (la parte cliente) y slo para Unix el servidor. El servidor /daemon realiza los ataques mientras que el cliente interacta con el usuario a travs de un interface grfico. Pros: desarrolla una completa exploracin de todos los puertos y servicios y presenta los puntos vulnerables que encuentra y sus posibles soluciones. Contras: es un poco lento. Como comentario decir que es comparable al Retina. * Netcat (http://www.atstake.com/research/tools/nc11nt.zip): esta sencilla utilidad para Windows y Unix sirve para escuchar y analizar las conexiones de red usando los protocolos TCP o UDP. Se ha usado bastante para explotar el bug del Isapi en los servidores IIS (ref. Desbordamiento de bfer en el IIS del 21 de junio).

* TCPDump (http://www.tcpdump.org): este sniffer para Unix sirve para monitorizar todo el trfico de una red, recolectar toda la informacin posible y detectar as posibles problemas como ataques ping. Combinado con SNORT se convierte en una poderosa herramienta solventando las carencias que ambos porgramas tienen por separado. Es curioso porque podemos servirnos del propio TCPDump para evadir IDSs de los que forma parte porque presenta una vulnerabilidad en las capacidades de decodificacin de DNS y puede entrar en un loop infinito que nos permita saltarnos ese IDS (Sistema de Deteccin de Intrusos). * Snort (http://www.snort.org): sniffer/logger, Snort sirve para detectar intrusiones y ataques tipo bfer overflows, CGI, SMB, scanneo de puertos, etc. Snort puede enviar alertas en tiempo real, envindolas directamente al archivo de Unix syslog o incluso a un sistema Windows mediante SAMBA. Las versiones anteriores a la 1.8.1 presentan una vulnerabilidad en la codificacin Unicode que posibilita que un atacante evada dicha deteccin. * Saint (http://www.wwdsi.com/saint): Security Administrator s Integrated Network Tool (SAINT) es una evolucin del conocido SATAN para plataformas Unix que sirve para evaluar toda la seguridad de un sistema recibiendo incluso mltiples updates desde el CERT y CIAC. * Ethereal (http://ethereal.zing.org): este sniffer de red para Unix tiene un entorno grfico y soporta decodificacin de diversos protocolos pero presenta una vulnerabilidad de bfer overflow (versiones anteriores a la 0.8.14). * Whisker (http://www.wiretrip.net/rfp/bins/whisker/whisker.zip): buen scanner de vulnerabilidades CGI. * ISS (http://www.iss.net): Internet Security Scanner es una herramienta comercial de anlisis de vulnerabilidades para Windows. * Abacus Portsentry (http://www.psionic.com/abacus/portsentry): demonio de Unix para detectar scanneos de puertos contra nuestros sistemas capaz de bloquear al atacante mediante host.deny, filtrar las rutas o reglar el firewall. * DSniff (http://naughty.monkey.org/~dugsong/dsniff): el nombre ya lo dice todo este es un sniffer para buscar passwords y el resto de informacin de una red incluyendo tcnicas sofisticadas para defender la proteccin de los switchers de red. * Tripwire (http://www.tripwire.com): esta es una utilidad para el anlisis de red que sirve de gran ayuda a los adminsitradores de red. * Cybercop (http://www.pgp.com/products/cybercop-scanner/default.asp): este es un scanner de agujeros de seguridad comercial que tiene versiones para Windows y Unix y que es capaz de auditar servidores, estaciones de trabajo, hubs, routers, firewalls, etc. * Hping2 (http://www.hping.org): este programa basado en el comando ping de Unix sirve para enviar paquetes ICMP,UDP y TCP hechos a medida para mostrar las respuestas del obejtivo como replicas ICMP echo (ping). Con hping conseguimos testar firewalls, scannear puertos, etc. Nota: ICMP (Protocolo de Mensajes de Control Internet). * SARA (http://www-arc.com/sara): Security Auditor s Research Assistant es la tercera generacin de herramientas para el anlisis de seguridad en plataformas Unix. La primera fue el SATAN (Security Administrator s Tool for Analizing Networks) y la segunda el SAINT.

* Sniffit (http://reptile.rug.ac.be/~coder/sniffit.html): otro sniffer de paquetes TCP/UDP e ICMP capaz de obtener informacin tcnica muy detallada. * SATAN (http://www.fish.com/satan): hace falta decir algo sobre el ms famoso scanneador de vulnerabilidades y analizador de red. * IPFilter (http://coombs.anu.edu.au/ipfilter): este es un filtro de paquetes TCP/IP indicado para el uso con un firewall en plataformas Unix. Puede trabajar como un mdulo cargable del kernel o incorporado en l directamente. Curiosamente, las versiones previas a la 3.4.17 presentan una vulnerabilidad que permite alcanzar puertos TCP y UDP tericamente protegidos. * IPtables/netfilter/ipchains/ipfwadm (http://netfilter.kernelnotes.org): herramientas para filtrar los paquetes IP bajo Linux. * Firewalk (http://www.packetfactory.net/Projects/Firewalk): programa para analizar las respuestas a los paquetes IP con la tcnica del Firewalking con una interface grfica (opcional) para determinar los filtros ACL de los gateways y los mapeos de red. * Strobe (http://www.insecure.org/nmap/index.html#other): scanneador de puertos de gran velocidad. * L0pht Crack (http://www.l0pht.com/l0phtcrack): Esta es la conocida herramienta de auditora para los passwords bajo Windows. La ltima versin es la LC3. * John the Ripper (http://www.openwall.com/join): esta es una de esas utilidades que, yo por lo menos, recuerdo de toda la vida. Es uno de los programas que yo utilizaba cuando empec a hacer mis primeros pinitos en esto del hack y la verdad es que era el mejor crackeador de passswords para Unix. * Hunt (http://www.cri.cz/kra/index.html#HUNT): este es un sniffer avanzado que funciona bajo redes ethernet pero que no conoca as que poca cosa puedo decir. * SSH (http://www.ssh.com/commerce/index.html): Tenemos dos opciones usar el SSH que es de pago o utilizar en cambio el OpenSSH que es una evolucin del ssh para OpenBSD. SSH o Secure Shell, es un protocolo o programa que se sirve de dicho protocolo, que permite una conexin cifrada y protegida entre dos mquinas (normalmente cliente servidor) que sirve para substituir al telnet y poder acceder y administrar sistemas remotos de manera segura. * TCP Wrappers (ftp://ftp.porcupine.org/pub/security/index.html): pequeos programas que permiten una conexin controlada, restringiendo determinados servicios del sistema. Se pueden monitorizar y filtrar las peticiones de entrada de servicios como Systar, Finger, FTP, Telnet, Rlogin, RSH, TFTP, etc. El wrapper reporta el nombre del cliente y del servicio que ha solicitado pero no intercambia informacin con el cliente o el servidor de la aplicacin/servicio solicitado porque lo que hace es comprobar si el cliente tiene permiso para utilizar el servicio que est pidiendo y si no es as, corta la conexin. * NTOP (http://www.ntop.org): utilidad para Unix que permite visualizar en tiempo real los usuarios y aplicaciones que estn consumiendo recursos de red en un instante concreto. Tiene como un microservidor web que permite que cualquier usuario que sepa la clave pueda ver la salida NTOP de forma remota con cualquier navegador. * Traceroute/ping/telnet (http://www.linux.com): herramientas de Unix y Windows (en este sistema operativo el comando treceroute se denomina tracert).

* NAT (http://www.tux.org/pub/security/secnet/tools/nat10): NetBios Auditing Tool sirve para explorar los recursos compartidos a travs del protocolo NetBios en un sistema windows. * Scanlogd (http://www.openwall.com/scanlogd): programita que detecta los scanneos de puertos que alguien pueda hacer contra tu sistema. * Sam Spade (http://www.samspade.org): herramientas online para investigar una direccin IP y encontrar spammers. * NFR (http://www.nfr.org): Network Flight Recorder es un sniffer comercial para detectar intrusiones en los sistemas. * Logcheck (http://www.psionic.com/abacus/logcheck): es parte del proyecto Abacus de utilidades de seguridad que ayuda a mostrar los problemas y violaciones de seguridad en los archivos log del sistema, analizando cada lnea y clasificndola segn diferentes niveles de alerta (ignorar, actividad inusual, violacin de seguridad y ataque) para luego enviar los resultados al administrador por e-mail. * Perl (http://www.perl.org): Practical Extraction and Report Language es un lenguaje de scripts que corre en cualquier sistema operativo y que sirve, entre otras mltiples cosas, para crear exploits y explotar las vulnerabilidades de los sistemas. * Ngrep (http://www.packetfactory.net/Projects/ngrep): herramienta sensible a pcap que permite especificar expresiones regulares extendidas contra la carga de datos de los paquetes. Actualmente reconoce TCP, UDP e ICMP sobre ethernet a travs de PPP, SLIP e interfaces nulos. * Cheops (http://www.marko.net/cheops): sirve para mapear redes locales o remotas y muestra qu Sistema Operativo (SO) tienen las mquinas de la red. * Vetescan (http://www.self-evident.com): es un scanneador de vulnerabilidades que contiene programas para comprobar y/o explotar exploits conocidos de redes para Windows y Unix y corregirlos. * Retina (http://www.eeye.com/html/Products/Retina.html): este programa es un conocido scanneador de vulnerabilidades que es comercial y que incluye la forma de arreglar todos los agujeros de seguridad que encuentre. Es para Windows. * Libnet (http://www.packetfactory.net/libnet): conjunto de rutinas para la construccin y gua de una red. * Crack (ftp://ftp.cerias.purdue.edu/pub/tools/unix/pwdutils/crack/): este programa es un password cracker. * Cerberus Internet Scanner (http://www.cerberus-infosec.co.uk/cis.shtml): CIS es otro scanner de seguridad destinado a ayudar a los administradores de red de Windows a detectar y corregir agujeros de seguridad. * Swatch (http://www.stanford.edu/~atkins/swatch): utilidad para monitorizar los mensajes de los archivos log de Unix mediante el comando syslog lanzando eventos con mltimples mtodos de alarma. * OpenBSD (http://www.openbsd.org): OpenBSD es una distribucin libre de sistemas Unix multiplataforma basada en 4.4BSD. OpenBSD incluye emulacin de binarios para la mayora de los programas de los sistemas SVR4 (Solaris), Linux, SunOS, HP-UX, etc e incluye tambin OpenSSH con soporte para SSH1 y SSH2.

* Nemesis (http://www.packetninja.net/nemesis). * LSOF (http://vic.cc.purdue.edu/pub/tools/unix/lsof): herramienta de dignostico de sistemas Unix que lista la informacin de cualquier archivo que es abierto por un proceso que se est ajecutando. Muy til para detectar troyanos y sniffers. * LIDS (http://www.turbolinux.com.cn/lids): este es un sistema de deteccin/defensa para Linux contra intrusiones de root deshabilitando algunas llamadas del sistema al kernel. * IPTraf (http://www.mozcom.com/riker/iptraf): monitor de red que genera multitud de estadsticas como informacin TCP, contador UDP, informacin ICMP y OSPF, estado de los nodos, errores IP, etc. * IPLog (http://ojnk.sourceforge.net): logger del trfico TCP/IP, UDP e ICMP que detecta scanneos y posibles ataques para sistemas Unix. * Fragrouter (http://www.anzen.com/research/nidsbench): ni idea. * QueSO (http://www.apostols.org/projects/queso): utilidad para averiguar qu Sistema operativo corre en una mquina remota analizando las respuestas TCP. Funciona bajo Unix (Linux) y algunas de sus pruebas de deteccin han sido incluidas al famoso programa NMAP. * GPG/PGP (http://www.gnupg.org y http://www.pgp.com): substituto del PGP con licencia GNU desarrollado en Europa que no utiliza ni el algoritmo RSA ni IDEA y que por ello no tiene ningn tipo de restriccin. PGP o Pretty Good Privacy es el famoso sistema de encriptacin que ayuda a asegurar y codificar la informacin contra posibles escuchas . Qu son los SCANNERS? Un scanner es una herramienta de seguridad que detecta los puntos vulnerables del sistema. Los distintos scannners rastrean en busca de distintos puntos dbiles, pero todos ellos se encuadran en una de estas categoras: Scanners de sistema. Scanners de red. Anatoma de un scanner de sistema Los scanners de sistema rastrean hosts locales en busca de los puntos vulnerables obvios (y no tan obvios) de la seguridad que aparecen a causa de descuidos y negligencias, y los problemas de configuracin que olvidan incluso los usuarios experimentados. stos son algunos ejemplos: y y y Ejemplo COPS Permisos laxos o errneos para los archivos. Cuentas predeterminadas. Entradas de UID errneas o duplicadas. de scanner de sistema:

SCANNER

DE

SISTEMA

Anatoma de un scanner de red Los scanners de red prueban hosts sobre conexiones de red, de forma similar a como lo hara un intruso. Examinan los servicios y puertos disponibles en busca de debilidades conocidas que pueden explotar los atacantes remotos. Ejemplo de ISS (Internet Security Scanner) scanner de red:

SCANNER

DE

RED

Aunque desde un punto de vista tcnico los scanners de sistema y de red difieren, tambin comparten algunas caractersticas comunes. De stas, la ms importantes es su proceso lgico. La mayora siguen este patrn: y y y Carga un conjunto de reglas o una serie de ataques. Prueban el objetivo con estos parmetros. Informan de los resultados.

Por ejemplo, muchos scanners de sistema siguen un patrn de flujo similar al de la figura anterior. Dado que los puntos vulnerables del sistema y de la red no son los mismo ya que a cada usuario le preocupa un aspecto distinto de la seguridad, existen muchos tipos diferentes de scanners. Algunos de ellos estn especializados y prueban solamente determinados servicios, mientras que otros prueban servicios conocidos pero aaden funciones de generacin de informes. Esta transicin de scanners simples a herramientas avanzadas de evaluacin de hosts puede seguirse hasta una fecha especfica: el 5 de abril de 1995, el da en que SATAN sali en Internet.

Vous aimerez peut-être aussi