Entradas con la etiqueta ‘protocolos’

La novena puerta

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: La novena puerta
Autor: NBK
Tema: Protocología

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

Introduccion: ————-

 

El siguiente articulo no pretende en modo alguno entrar en detalle en ningun protocolo o subtrocolo en concreto y debe ser considerado como una mera introduccion a ciertos conceptos basicos para la mejor comprension de las redes y la terminologia utilizada tan a menudo en los textos tecnicos.

 

Su cometido es puramente educativo y como tal intrinsicamente positivo en si mismo. ///////////////

 

 

 TCP/IP y la filosofia Cliente/Servidor, puertos y protocolos.

 ————————————————————-

 

El TCP/IP (Transfer Control Protocol/Internetwork Protocol), es la base en la que se sustentan las comunicaciones en red modernas. Es un -Protocolo-, es decir una convencion, un lenguaje que hace posible el intercambio de paquetes de informacion a traves de la red entre diferentes ordenadores, definiendo una serie de reglas comunes a tal fin. Nos referimos a paquetes porque literalmente la informacion es dividida en bloques para optimizar la comunicacion.

 

Es un protocolo, pero existen numerosos -Subprotocolos- alrededor de el, muchos de los cuales usamos a diario aun sin ser conscientes de ello.

 

Cuando nos conectamos a la red, a traves de nuestro proveedor, necesitamos tener instalado en nuestra maquina un controlador TCP/IP, necesario para el intercambio de paquetes (informacion) en la Red. Pero para hacer uso de los subprotocolos necesitamos un programa -Cliente-, un cliente no es mas que lo que podriamos denominar un “interprete”, de alguna manera es como si el TCP/IP fuese el “idioma oficial” y los subprotocolos basados en el sus diferentes “dialectos”.

 

Uno de estos subprotocolos, y el mas interesante para nosotros sera el -Telnet-, practicamente todos los sistemas operativos incluyen un cliente Telnet, si usais Windows tan solo debereis abrir una sesion de MsDos y escribir “telnet”, a continuacion aparecera en pantalla la aplicacion cliente preparada para conectar con un -Servidor-, que no es mas que otro ordenador con una aplicacion servidora.

 

Para aprender mas sobre este y otros protocolos asociados os remito al articulo de Seldon titulado: Manual de referencia de FTP, Telnet, correo y news. Donde tambien se entro en el tema de puertos entre otras cosas.

 

Bien, algo tremendamente importante de entender es la necesidad de un programa para la utilizacion de cualquier protocolo, tanto en el lado Servido como en el Cliente. Si navegamos por la Red el protocolo usado sera el HTTP (Hyper Text Transfer Protocol), y es nuestro Browser (Navegador) el software que actua como interprete de este protocolo para nosotros. Cuando exploramos Internet nosotros disponemos de un navegador en nuestra maquina (este el programa cliente) mientras que, al otro lado, alla donde se encuentren las paginas que buscamos, existira un programa servidor. Cuando solicitamos una pagina web escribiendo su direccion en el navegador (por ejemplo http://www.hackindex.org ) este requerira una copia de la pagina a la aplicacion servidora que se encuentra en un ordenador remoto, utilizando el protocolo HTTP (es por esto que se pone al principio de cada direccion url). El software servidor recibe la peticion y te manda la pagina web a tu ordenador, donde tu cliente (navegador) hara las operaciones oportunas para mostrartela tal y como esta existe en el ordenador servidor. Recuerda siempre que la pagina web es recreada en -tu- maquina, esta es una de las claves de la filosofia Cliente/Servidor y la que hace posible que un solo ordenador servidor pueda ofrecer la misma pagina a multiples -clientes-.

 

Espero que en este punto, os haya ayudado a comprender mejor el modelo Cliente/Servidor y como ambos lados de la moneda utilizan un protocolo en concreto para entenderse.

 

Empezamos el baile de terminos:

 

La aplicacion que se encuentra en el ordenador servidor se denomina tambien -Servicio-, y no es dificil de entender ya que presta un “servicio” a nuestras aplicaciones clientes, en el caso anterior “sirve” paginas web a peticion nuestra. Pero este es solo un tipo de servicio disponible.

 

A estos servicios accederemos a traves de -Puertos-, que no son mas que numeros asignados a cada servicio y que sirven para discernir a que servicios van dirigidas nuestras peticiones. El concepto puerto es tan solo “logico”, es decir, conviene no olvidar que no existen en realidad fisicamente. Esto es a menudo objeto de confusion ya que existen puertos de comuniciones -fisicos- en nuestro ordenador, usualmente nuestro modem estara conectado a nuestro puerto fisico “COM-1″ o “COM-2″, pues bien, podriamos imaginarnos esta interface fisica como un gran portal al que llega un cartero con un saco lleno de cartas, algunas de estas cartas irian dirigidas al piso 21, otras al 23, etc, en cada piso viviria un servicio….o lo que es lo mismo un programa que ofreceria algun tipo de servicio basado en un protocolo especifico, cada vecino hablaria un lenguaje diferente…y si esa carta no esta escrita en el lenguaje apropiado nunca seria entendida por este.

 

Pero este tan solo seria un ejercicio de imaginacion para comprender mejor toda la historia ya que, como he dicho, el concepto puerto es completamente virtual.

 

Los puertos serian pues caminos virtuales por los que correria informacion (paquetes) en un determinado lenguaje (protocolo) entre un programa cliente y otro servidor. Y siempre, el cliente hara una peticion…..y el servidor ofrecera respuesta.

 

Usualmente, los servicios mas utilizados, como Telnet, FTP, HTTP…… tienen unos numeros de puerto asignados por defecto, esto es mas una convencion que otra cosa, es necesario estar abierto a sorpresas en lo referente a numeros. Por ejemplo el HTTP suele tener asignado el puerto numero 80, el Telnet el 23, etc…. En cambio es comun ver servidores web a traves del puerto 8080, o Telnet mas arriba del puerto 1024.

 

No es una contradiccion, pensar en ello como que alguien movio el programa al piso de arriba y solo es posible acceder a el tocando a esa nueva puerta. El hecho de que tradicionalmente se usen unos determinados numeros de puerto es tan solo para que la labor de busqueda de un servicio sea mas intuitiva, de manera que si buscas Telnet primero miraras si en el puerto 23 esta disponible dicho servicio.

 

Esto tiene conotaciones claras en lo que a seguridad de redes se refiere, los administradores sabedores de la utilizacion tradicional de estos puertos solemos ubicarlos en numeros diferentes, de manera que su localizacion no sea inmediata, y se requiera un -scaneo- en profundidad.

 

Scanear un ordenador no es mas que barrer sus puertos en busca de servicios activos, este puede ser -selectivo- en busca de puertos concretos o mas usuales, o -completo- un chequeo secuencial uno a uno de todos los puertos, los numeros validos de puerto van del 1 al 65535, y en principio cualquier servicio puede ser asignado a cualquier puerto aunque se recomiende cierta coherencia o se ansie segun nos vaya el baile.

 

Algo con lo que a menudo podremos encontrarnos es con -Traps-, esto son, trampas. Como si de queso en una ratonera se tratase es posible hacer parecer que, por ejemplo, el puerto 23 ofrece Telnet cuando en realidad tan solo se trata de una aplicacion colocada en dicho puerto para, en el mejor de los casos entorpecer la exploracion de dicho ordenador remoto. Es facil pensar en cosas que hacer con una persona que entro por la puerta equivocada, y obviamente, no es de la casa.

 

Un ejemplo claro de lo expuesto arriba lo teneis en los tan populares anti-bo, anti-netbus, anti-todo.

 

Los troyanos como el NetBus, como aplicaciones servidoras que son, ofrecen sus servicios por un determinado puerto, este puerto, sea cual sea el numero e independientemente del troyano que hablemos, hara muy probablemente uso de un puerto -Registrado-. Se denomina puerto registrado a los puertos altos, por encima del 1024, y hasta el 49151, que tradicionalmente se destinan a aplicaciones que no entran dentro de los servicios clasicos ofrecidos por los servidores, y que pueden ser utilizados por programas ejecutados por usuarios ordinarios.

 

Resumiendo, si estas infectado con el NetBus, este permanecera a la escucha por ejemplo por el puerto 1234. Sabedores de esto, y si disponemos de un cliente de NetBus, podriamos escanear diferentes ordenadores en busca de dicho servidor en ese puerto 1234, y simplificando una tanto podriamos conectarnos con el a traves de dicho puerto si conseguimos localizar alguna maquina infectada.

 

Estas aplicaciones Anti-Troyanos, suelen escuchar en los mismos puertos donde se supone que los troyanos operan por defecto pero en el momento que alguien intenta una comunicacion por ese puerto el programa contesta con algun mensaje airado o quizas algo peor.

 

Luego es algo parecido al concepto de “trampa” del que hablabamos.

 

Los puertos, al menos los -Well Known Ports-, o los puertos bien conocidos, estan documentados, es decir existe informacion sobre los servicios que habitualmente se ofrecen por ellos y sus protocolos asociados. Existen listas disponibles, y en general a partir del puerto 1024 deben ser consideradas como meramente orientativas. Los troyanos han cobrado tal notoriedad que a menudo sustituyen en estas listas a los servicios ofrecidos tradicionalmente en ciertos puertos, o incluso existen listas de troyanos y sus puertos asociados.

 

Me gustaria recordar brevemente algo sobre los puertos, para que en lo que en mi mano este paliar posibles sustos inecesarios o alarmas injustificadas.

 

Demasiado a menudo leo: “Han intentado atacarme con el BO por el puerto 31337″, “Intentaron entrarme por el puerto 5666″;…… Las mas de las veces estos pequeños sobresaltos son producidos por paquetes que llegan a nuestro ordenador buscando un servidor en un puerto, casi siempre producto de scaneos aleatorios, o de conexiones erroneas del cliente llamando al servidor. Por supuesto estoy hablando de comunicaciones -InBound-, es decir, paquetes entrantes.

 

Cada vez mas normalmente, la gente mas o menos informada instala software -Firewall- en sus maquinas para controlar el flujo de informacion saliente y entrante. Los firewall son algo asi como “corta fuegos” virtuales, tanto en su version fisica (ordenadores dedicados) como software (paquetes de seguridad como AtGuard, o Zone Alarm) actuan analizando los paquetes que se envian y reciben, determinando en base a su configuracion si deben ser permida o no su emision o recepcion.

 

Una persona que disponga de un cliente de cualquier troyano disponible intentara encontrar ordenadores infectados con su servidor, para ello lanzara paquetes al puerto en el que crea pueda estar este a la escucha. Esto provocara que el firewall nos avise de que “una comunicacion entrante ha sido detectada por el puerto xxxxx”, donde xxxxx puede ser cualquier cosa.

 

Esto no significa que estemos infectados por ningun troyano, tan solo podemos afirmar con “cierta” seguridad que alguien probo suerte. Y digo “cierta” seguridad, porque si alguien quisiera saber que servicios ofrece vuestro ordenador y efectuara un scaneo en completo de la maquina recibiriais por lo bajo 65000 paquetes en otros tantos puertos y esto no significaria mas que eso, un scaneo de fortuna.

 

Si no podemos suponer infeccion alguna por recibir un paquete en un puerto equivocado, menos aun podemos suponer que alguien intenta “colarnos” algo por debajo de la puerta.

 

Como hemos visto, un puerto en si mismo es pura virtualidad…nada sin un software detras, por lo tanto, un puerto abierto no supone riesgo siempre que no exista comunicacion a traves de el entre un programa cliente y otro servidor.

 

Otra actitud debemos adoptar si en cambio, los paquetes que detecta nuestro firewall fueran salientes, OutBound, ya que en ese caso una aplicacion que se encuentre -detras- del firewall, es decir en nuestra maquina o red, intenta el envio de un paqueta, ya sea iniciando una comunicacion o como contestacion a una peticion proveniente de algun lugar.

 

No obstante, si detectamos esto es gracias al firewall y, por tanto, dicho paquete puede ser obligado a no enviarse, de manera que incluso si estuvieramos infectados con algun tipo de software servidor no deseado no seria posible la comunicacion con un hipotetico cliente. Por lo que se impondria la calma y la posterior deteccion y desinfeccion (antivirus)….sin mayor alarma.

 

Otro tema delicado es la configuracion correcta de firewalls y demas software de seguridad mas o menos domestica, pero no es mi proposito ahora avanzar mas en ese sentido.

 

Lo fundamental, y si algo en claro debemos sacar de este escrito, es que en el campo del TCP/IP se juega un gran partido de futbol, en el cual juega el Cliente F.C. contra el Servidor Utd, y donde los jugadores (de todas las nacionalidades) pueden jugar casi en cualquier puesto,,,,aunque muchas veces….. ….adivinemos la alineacion.

 

“Ser justos, Ser malos.”

 

– N.B.K. www.hello.to/nbk —————————————–

Si este mundo no es serio, tratalo como se merece.

—————————————–

  • Share/Bookmark

Guia de Telnet

Sábado, 16 de Junio de 2001

#####################################
## HACKINDEX ##
## http://www.hackindex.org ##
#####################################
Titulo: Guía de telnet
Autor: Seldon
Tema: Protocología

La información incluída en este documento es expuesta en base a un interés educativo. HackIndex no se hace responsable del uso de dicha información.

El siguiente documento es propiedad de HackIndex y de su autor, pudiendo ser distribuído de forma totalmente libre y sobre cualquier tipo de soporte siempre y cuando se respete el formato original, se cite a A.H.E. como fuente, se incluya un enlace actualizado al documento o a la web del grupo: http://www.hackindex.org ; y se incluya este disclaimer en su totalidad y sin modificación alguna.

Queda extrictamente prohibida su distribución con fines lucrativos, cuando se altere su contenido sin consentimiento o cuando se incumpla cualquier otra condicion citada anteriormente en el presente disclaimer.
#####################################

  • 1. PREFACIO
  • 2. PEQUEÑA INTRODUCCIÓN A LOS PUERTOS
  • 3. FTP
    • 3.a Teoría
    • 3.b Comandos
    • 3.c Práctica
  • 4. TELNET
    • 4.a Teoría
    • 4.b Práctica
  • 5. ENVÍO DE CORREO ELECTRÓNICO (SMTP)
    • 5.a Práctica
    • 5.b Remailers anónimos
  • 6. OTRAS CUESTIONES DE INTERÉS
    • 6.a. Otros puertos interesantes

    *****************************************************************

    1.-PREFACIO

    Esto es una pequeña guía para ayudar a los más nuevos (newbies) a poder seguir sin muchas dificultades las siguientes lecciones del FOR YOU a poder seguir sin muchas dificultades las siguientes lecciones de proyecto HackIndex. No es en ningún caso un manual de hacking, los servicios a los que accederemos aquí son accesibles para todo el mundo, no sólo para hackers ;-)

    Si después de leer esto tienes dudas, vuélvetelo a leer. Si sigues teniendo dudas, pregúntalas en la lista, no a mi dirección de e-mail. Todos ganaremos si las dudas son respondidas en la lista, además de servir para corregir o añadir algo al texto.

    *****************************************************************

    2.- PEQUEÑA INTRODUCCIÓN A LOS PUERTOS

    Un puerto lógico es en parte similar a un puerto físico (eso que hay detrás de la caja del ordenador, donde conectamos la impresora, el ratón, el módem…). Detrás de cada puerto hay un programa, que da un servicio a todo aquel que se conecte a él y tenga permiso para acceder al servicio.

    Para que sea accesible, el puerto debe estar ‘abierto’. Además, debe tener un programa detrás de él, porque si no, aunque nos conectemos, no podremos hacer nada con él. Para saber qué puertos están abiertos debemos usar un scaner. Puedes encontrar algunos muy buenos en http://hello.to/nbk/ y http://www.geocities.com/crino1p/ ;-) )))

    Hay miles de listas muy completas con todos los puertos. Ahí abajo incluyo una para mayor comodidad, con los puertos más comunes y/o más importantes.

    En la lista se asume que cada puerto está relacioque cada puerto está relacionado con su número asociado (ftp con el 21, smtp con el 25, etc…), pero nada impide que podamos intercambiar estos números (poner el ftp en el 1234, p.e.). También recordar que a la hora de conectar con un puerto da igual poner su número que su nombre (‘telnet www.servidor.com 21′ es equivalente a ‘telnet www.servidor.com ftp’)

    Y aquí está la lista:

    Puerto Servicio Descripción

    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

    7 echo Lo que teclees se volvera a escribir

    9 discard dev/null – basura

    11 systat Informacion sobre los usuarios

    13 date Hora y fecha en el host remoto

    15 netstat Informacion sobre la red

    21 ftp Transferencia de ficheros

    23 telnet Acceso al shell

    25 smtp Correo saliente

    37 time Hora en el host remoto

    39 rlp Localizacion del recurso

    43 whois Informacion sobre la red y el host

    53 domain Nombre del servidor

    70 gopher Buscador de informacion (ya anticuado)

    79 finger Informacion sobre los usuarios

    80 www Servidor de Web

    110 pop3 Correo entrante

    119 nntp Grupos de noticias (news)

    139 nbsession Netbios session

    443 shttp Servidor de Web ’seguro’

    512 biff Notificacion de correo

    513 rlogin Login remoto

    514 shell Comando remoto

    515 spooler Impresoras UNIX

    520 route Protocolo de informacion sobre routing

    8000 http Otro servidor de web.

    8080 proxy

    *****************************************************************

    3.- FTP

    3.a Teoría

    FTP significa File Transfer Protocol, protocolo de transferencia de archivos, en castellano. Y sirve, cómo no, para ésto mismo, transferir ficheros: o de nuestra máquina hacia la máquina remota (upload o subir archivos) o de la máquina remota hacia la nuestra (download o bajar archivos).

    También permite seguir bajandose un archivo después de un corte de conexión (por haberse cortado o por ser un archivo muy grande que queremos bajar en varias sesiones)

    Un programa de FTP servidor suele abrir el puerto 21 en la máquina en la que está instalado, para que se puedan conectar por él otras máquinas. Un programa de FTP cliente es el que se utiliza para conectarnos al servidor. Los hay gráficos, como el FileZilla para Windows o el IglooFTP para Linux, y en modo texto, que están incluídos en ambos sistemas operativos (para arrancarlos, escribir el comando ftp en una ventana de MS-DOS o de la consola de texto, en Windows y Linux respectivamente). Aquí nos centraremos en los programas clientes de texto.

    El FTP no está diseñado para ejecutar programas, para eso está telnet (ver más abajo), pero sí se pueden ejecutar algunos, los que sirven para poder decirle a la máquina que queremos subir o bajar algún archivo o para navegar entre los directorios.

    Hay varios modos de transferencia de ficheros: ASCII y binarios. Los ficheros ASCII son los archivos de texto, y los binarios todos los demás (programas, imágenes…). Si transferimos un fichero de texto como binario, seguramente se perderá el formato del archivo (aparecerán símbolos extraños o saltos de línea donde no deberían haberlos), pero no será excesivamente grave.

    Sin embargo, si transferimos un binario como texto, es casi seguro que quede inutilizable. Por eso es importante asegurarse de cambiar el modo antes de bajarse un programa, una imagen o un archivo de sonido. Luego, a menos que queramos bajarnos otro archivo, debemos cambiar nuevamente al modo ASCII para poder recibir correctamente la lista de archivos de un directorio (al hacer ls). Normalmente no deberemos preocuparnos por esto si utilizamos un programa de ftp, aunque sea en modo texto. Pero si nos conectamos mediante un programa de telnet sí lo tendremos que tener en cuenta.

    3.b Comandos

    Nota: Estos son los comandos más importantes del ftp texto para Linux. Los del ftp texto parinux. Los del ftp texto para ms-dos son iguales en su mayor parte, así que no creo que haya ningún problema en encontrar los comandos equivalentes. Para información sobre los comandos que no he incluído aquí, escribir el comando ‘man ftp’

    ascii = cambia a modo ASCII (por defecto)

    binary = cambia a modo binario

    bye = quit = exit = ¡adiós!

    cd = Cambio Directorio (¡ojo! no sirve poner ‘cd..’ como en DOS, hay que poner ‘cd ..’ (con espacio)

    cdup = igual a ‘cd ..’

    close = disconnect = corta la conexión sin salir del programa

    delete = borra un archivo en la máquina remota

    dir = muestra la lista de archivos del directorio actual. No admite parámetros.

    get [archivo.arc] = descargarse el archivo.arc. ¡Ojo! Fíjate de que estás en el modo adecuado antes de descargarlo.

    lcd = sin nada más, muestra el directorio local actual. Con un directorio, cambia el directorio local a ese directorio (en el directorio local se guardarán los archivos descargados, y de él se cojerán los que se suban)

    ls = muestra los archivos del directorio actual. Los parámetros son los mismos que los del ls del s.o.

    mkdir = crea un directorio en la máquina remota.

    open = abre una conexión. Sólo es necesario si no ha sido especificado

    un sitio en la llamada al programa (como por ejemplo, ftp ftp.rediris.es)

    proxy = Se conecta a otro sitio sin desconectar del primero.

    put = sube un archivo

    rename = renombra un archivo/directorio — ¡Esto puede resultar muy interesante a veces! ;-)

    reget = seguir bajándose un archivo que ha sido cortado anteriormente.

    rmdir = borra un directorio, siempre que esté vacío (aunque algunos parezca que lo estén porque no vemos nada al hacer un ls, lo que pasa es que tienen archivos para los que no tenemos permiso de lectura (si no sabes lo que es esto, lee un manual básico de UNIX)).

    mdelete, mdir, mget, mls = lo mismo que esos comandos sin m, pero para varios archivos / directorios

    3.c Práctica

    Vamos a subir nuestra página web al servidor, para ponerla en internet. Nuestra página principal se llama index.html, y contiene una imagen llamada imagen.jpg, que la queremos poner en un directorio aparte (imágenes).

    Pues primero nos conectamos a nuestro servidor. Esto se hace poniendo el comando ‘ftp (servidor)’. Debes sustituir (servidor) por el nombre de tu servidor, por ejemplo ftp.example.com. Por defecto se asume que el puerto es el 21, si fuera otro tedrías que indicárselo. Por ejemplo, si usa el puerto 4000,tendrías que poner ‘ftp ftp.servidor.es 4000′.

    Ahora nos saldrá un prompt que nos pedirá un login (username). Le ponemos nuestro nombre de usuario. Si quisiéramos conectarnos anónimamente tendríamos que poner ‘anonymous’ (esto es así para la mayoría de servidores.

    Puede, no obstante, que te encuentres algunnte, que te encuentres alguno que no sea así. En estos casos hay que probar con ‘guest’ o similares). Como este no es el caso, introducimos nuestro nombre de usuario, por ejemplo, seldon.

    Luego nos pedirá una contraseña. Si hemos entrado como ‘anonymous’ tendremos que poner una dirección de e-mail. Poniendo ‘guest@’ ya vale en la mayor parte de los casos. También puedes poner tu verdadera dirección si quieres que te acaben de mandar por correo los archivos que no te has podido bajar (el servidor debe aceptar esta opción). Si hemos entrado como usuario no anónimo, introduciremos nuestra contraseña.

    ¡Y ya estamos dentro!, ahora podemos ver nuestros directorios. Si ponemos ‘cd ..’ veremos que estamos en el directorio raíz. Esto no es así en realidad, para la máquina no es el nuestro el directorio raíz, sólo lo es para un usuario (nosotros).

    Si ponemos ‘ls’ podremos ver los archivos que hayamos puesto anteriormente nosotros ahí. También veremos varios subdirectorios. Uno de ellos es bin, otro sbin. Si miramos dentro de estos subdirectorios veremos que, aparentemente, están vacíos, pero no es así, lo que pasa es que están llenos de archivos para los que no tenemos permisos de lectura (pero sí de ejecución). Si no sabes qué quiere decir esto, te recomiendo que mires la sección de permisos de un manual básico de UNIX.

    Estos subdirectorios no se pueden borrar, porque contienenborrar, porque contienen archivos de los que no somos los propietarios, pero sí renombrar ;-)

    Bueno, a lo que íbamos. Aquí está el resto del trabajo. No creo que necesite más explicación que la que ya tiene entre los símbolos /* y */.

    lcd /mipagina /*cambia el directorio local actual a /mipagina, que es donde se supone que tenemos guardada la página. Los usuarios de windows tendrán que usar la barra invertida ‘\’*/

    put index.html /*sube el archivo index.html. Como los html son archivos de texto no hace falta cambiar el modo. Si tuvieras problemas, cambia al modo binary*/

    mkdir imagenes

    cd imagenes /*crea el subdirectorio imagenes y se cambia a él (todo en la máquina remota*/

    binary /*cambia a modo binario (vamos a subir la imagen) (esto no es necesario si usamos un programa de ftp, sí lo es si no lo usamos)*/

    put imagen.jpg

    ascii /*vuelve a cambiar al modo ascii (porque vamos a comprobar que todo está bien, y necesitamos recibir la información en modo texto (ascii)) (esto no es necesario si usamos un programa de ftp, sí lo es si no lo usamos)*/

    ls /*comprueba que la imagen está en su sitio*/

    quit /*salimos*/

    *********************************************************

    4.- TELNET

    4.a Teoría

    Primero creo que hay que distinguir entre un programa de telnet y el protocolo telnet. Un programa cliente de telnet es un emulador de terminal (teclado + monitor) con el que nos podremos conectar con nuestro ordenador a otro y utilizarlo como si nuestro programa fuera un terminal de la máquina lejana. Es decir, es el que nos permitirá conectar a cualquiera de los puertos abiertos de un sistema para aprovecharnos de sus servicios. Prácticamente todos los s.o. traen uno. Tanto en Linux como en win se llaman igual: telnet.

    También hay otros programas que hacen eso. Uno de los más conocidos es el CRT (para win), que podréis encontrar en shareware.com, entre otros muchos lugares.

    Y el protocolo telnet es un protocolo orientado a ejecutar programas en una máquina remota. Nosotros le enviamos la información al programa de la máquina lejana mediante el teclado, el programa la procesa en la máquina lejana, y recibimos el resultado en nuestra pantalla. Es decir, este protocolo está orientado a la ejecución de programas en la máquina lejana.

    ¿Y cómo más podemos utilizarlo? Pues nos puede servir para encontrar y utilizar un proxy con el que anonimizarnos más.

    4.b Práctica

    Si queréis ver una muestra de cómo se pueden ejecutar programas en una máquina lejana, podéis probar con éstos:

    eucmvx.sim.ucm.es (login: biblioteca) <– Catálogo de la universidad complutense de Madrid

    babel.uab.es — Catálogo de la universidad autónoma de Barcelona

    chess.unix-ag.uni-kl.de (puerto: 5000) <– Jugl.de (puerto: 5000) <– Jugar al ajedrez contra otros usuarios

    Para conectar con ellos en Linux debéis escribir ‘telnet servidor’ si se usa el puerto 23 (los que no he puesto nada) o ‘telnet servidor puerto’ si se usa otro puerto diferente. P.e.: ‘telnet babel.uab.es’ ó ‘telnet babel.uab.es 23′

    En windows, iniciad vuestro programa de telnet preferido, y en el menú de conexión escribid el nombre y el puerto (dejad telnet si es el 23). Dejad el tipo de terminal en vt-100. Si no veis lo que escribís, habilitad el eco (estará en el cuadro de opciones o similar)

    Para utilizar un proxy wingate para anonimizarnos, primero tendremos que conseguir una lista de posibles proxys conectables. Para ello, vamos al IRC y escribimos ‘/raw stats glines’. Esto nos dará una lista de gente que ha sido baneada. Nos quedaremos con los que en el motivo de ban ponga algo de ‘proxy abierto’ o similar. Nos vamos al programa de telnet y probamos con uno.

    Si no nos deja conectar, o no dice nada al conectar, pasamos al siguiente. Si nos contesta con el prompt ‘wingate>’, ¡felicidades! has encontrado un wingate.

    Con él podrás conectarte a otro sitio sin dejar tu verdadera IP (quedará guardada en el sitio de la conexión la IP del wingate, y la tuya quedará reflejada en el wingate).

    Hay algunos wingates que no guardan logs (archivos en los que quedan reflejadas todas las conexiones). Éstos das las conexiones). Éstos son los que deberemos conseguir encontrar. El problema es que no hay forma de saber si un sitio guarda o no logs. Por eso es conveniente conectarse a dos o más consecutivamente. Con esto aumentan las posibilidades de encontrarse uno que no guarde logs, aunque la velocidad disminuye.

    Una vez conectado a un wingate, para conectarnos a otro o a cualquier otra parte tendremos que poner ‘open servidor puerto’.

    *****************************************************************

    5.- SMPT (envío de e-mails)

    5.a Práctica

    Creo que lo mejor para ver cómo funciona el envío de e-mails es enviandolos ‘a mano’.

    Para esto abriremos nuestro programa de telnet, y conectaremos con nuestro servidor de smtp, que estará en el puerto 25. P.e.: telnet smtp.wanadoo.es 25

    Después de los mensajes de bienvenida, y para enviar un mail, escribimos:

    mail from: Nadie <nadie@ningunsitio.com>, o bien:

    mail from: nadie@ningunsitio.com

    La diferencia es que en el primer caso saldrá en el programa de correo empleado para leer nuestro mail que ha sido enviado por Nadie, mientras que en el segundo caso habrá sido enviado por nadie@ningunsitio.com.

    Hay algunos servidores que requieren que el servidor que hay detrás de la @ exista. En ese caso basta con poner un servidor que exista (no necesariamente nuestue exista (no necesariamente nuestro ;-) )

    Para designar el receptor:

    rcpt

    to: Amigo <amigo@nuestro.es> (rcpt significa recipient)

    Ahora viene el cuerpo del mensaje. Le decimos al servidor que queremos introducirlo escribiendo:

    data

    Si no ponemos nada, la primera línea será el subject, luego tendremos que dejar una línea en blanco, y el resto el cuerpo del mensaje. Finalizaremos con un puntito sólo en una línea.

    Pero también podemos poner nuestras propias cabeceras. Como las únicas obligatorias son el from, el to, y el Received (que lo pone el servidor y no podemos modificar), las demás nos las podemos inventar, o copiar de las que ponen los programas de correo. Esto incluye, entre otras, la fecha. Seguramente el servidor la incluirá por otro lado, pero puede ayudar a sembrar la confusión ;-) . La última que debemos poner debe ser el subject: , y a partir de esa ya vendrá el mensaje.

    5.b Remailer anónimos

    Son los servidores de correo saliente que no incluyen la IP del que la envía. Podemos saber si un servidor es o no un remailer anónimo con el comando helo. Ponemos:

    helo cualquiercosa

    Si nos contesta con:

    Helo (nuestronombreenlared) [(nuestraip)] please to meet you.

    ya nos podemos olvidar, porque no es un remailer anónimo. Si en la contestación no se incluye nuestra IP, seguramente sí lo será. Podemra IP, seguramente sí lo será. Podemos comprobarlo enviando un mensaje y comprobando si la incluye.

    El comando helo es conveniente utilizarlo al conectar a un servidor smtp. No es necesario, pero si no lo usamos en las cabeceras del mensaje se incluirá un warning (advertencia) de que somos unos maleducados que no saludamos :-D .

    También se llama remailer anónimo a cierto servicio en la red, al que nosotros dirigimos nuestros mensajes, y ellos eliminan el campo From y lo redirigen al receptor original.

    Ninguno de estos dos sistemas es completamente anónimo, ya que si hacemos alguna ‘guarrerida’ y a los MIG les da por investigar, como nuestra entrada en estos servidores ha quedado registrada, no tendrán mucha dificultad para seguir el rastro.

    ********************************************************

    6.- OTRAS CUESTIONES DE INTERÉS

    -¿Cómo podemos hacer todo esto off-line?

    Pues teniendo instalados los programas servidores de cada servicio.

    No sé qué programas hay para windows, ni su utilización, así que no me voy a meter ahí. Lo que sí tenéis que tener en cuenta es que estos programas son comerciales, con lo que tendréis que comprarlos (y no serán baratos precisamente) o conseguirlos de otra forma (no diré cuál XDDD )

    En linux lo tenemos muchísimo más fácil, ya que casi todos los programas necesarios son gratuitos, y se suelen inos son gratuitos, y se suelen incluir e instalar por defecto en la mayoría de las distribuciones. Además, son los programas usados mayoritariamente en internet, como el servidor web Apache, el servidor smtp Sendmail, el servidor de news Leafnode o el servidor ftp wu-ftpd.

    Si los tenemos instalados y configurados correctamente (consulta las páginas de manual y los how-to adecuados a cada caso), debemos asegurarnos de que su puerto está abierto. Los servicios ofrecidos están en el archivo /etc/inetd.conf. Descomentamos (quitamos el símbolo # de delante) las líneas referidas al servicio que queramos ofrecer, y lo reiniciamos poniendo ‘/sbin/init.d/inetd restart’ (en el caso de la distribución suse. Para otras distribuciones podemos consultar las primeras líneas del archivo en busca del comando a utilizar, y, si no lo encontramos, con el comando find buscar el archivo inetd (find / -name inetd) y scribir el directorio equivalente a /sbin/init.d).

    Si lo hemos hecho correctamente, ya nos podremos conectar con nosotros mismo, poniendo como servidor ‘localhost’, p.e.: telnet localhost 25, para practicar con el sendmail.

    6.a Otros puertos de interés

    -Netstat

    Uso: netstat (servidor)

    Nos da mucha información sobre las conexiones del sistema, y puertos ‘listening’ (puertos abiertos y escuchando, que nos pueden ahorrar un escaneo de puertos). La función de este puertos). La función de este puerto es la de hacer estadísticas sobre la red.

    -Systat

    Uso: telnet (servidor) systat

    Nos da información sobre los procesos que se están ejecutando en la máquina remota. Con esta información podemos, entre otras cosas, buscar exploits para estos programas

    -Finger

    Uso: telnet (servidor) (usuario)

    Nos da información sobre los usuarios de un sistema. Sin el parámetro usuario nos mostrará todos los que haya conectados en ese momento (no es normal que lo haga a menos que seas root). La información que da es:

    login de usuario

    nombre completo del usuario

    directorio personal

    shell que utiliza

    última conexión (o si está conectado o si nunca se ha conectado) y desde dónde si tiene correo por leer

    Si no te da la lista de usuarios conectados sin dar nombre, además de probar el finger con el root para ver sobre todo cuándo se conecta, puedes probar ‘a ciegas’. Si están en una máquina española puedes probar con logins como juan, jose, pedro, jlopez… y en una máquina americana con logins como john, mike, smith… Es casi seguro que hay algún usuario llamado así. ¡Ten en cuenta la nacionalidad del servidor, no vayas a probar jose en un servidor japonés!

    Con esta información podemos intentar adivinar una contraseña, teniendo en cuenta que la mayoría de la gente no quiere con la mayoría de la gente no quiere contraseñas difíciles de recordar, y usa una combinación de su nombre y sus apellidos. También puede servir para enviarle un mail a su nombre verdadero pasando por ser el administrador del sistema, intentando convencerle de que te dé su contraseña (esto se llama ingeniería social ;) ).

    También puedes ser más sutil, e intentar sacarle su fecha de nacimiento, o la fecha de su boda, o el nombre de sus hijos o de su pareja, o cosas similares que suelen ser muy utilizadas como contraseña.

    Y bueno, esto ha sido todo. Espero no haberos aburrido mucho.

    • Share/Bookmark