You are on page 1of 8

sábado, 12 de octubre de 2002

HackIndex SET BLASTER=A220 I7 D1 H5 P330 T6

CAPITULO II: "Conocimientos Tecnicos Basicos del Hacker"


II.c.3: "Guia de referencia de TELNET, FTP y DEMAS"

por Seldon

******************************
Manual de referencia de
FTP, Telnet, correo y news
******************************

1. PREFACIO
2. PEQUEÑA INTRODUCCIÓN A LOS PUERTOS

3. FTP
2.a Teoría
2.b Comandos
2.c Práctica
4. TELNET
3.a Teoría
3.b Práctica
5. ENVÍO DE CORREO ELECTRÓNICO (SMTP)
4.a Práctica
4.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 YOUR EYES ONLY. 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 al grupo, no a mi dirección de e-mail. Todos ganaremos si las
dudas son respondidas en el grupo, 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
Página 1
sábado, 12 de octubre de 2002
para mayor comodidad, con los puertos más comunes y/o más importantes.
En la lista se asume que 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 Utilidad

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
7 echo Lo que teclees se volvera a escribir
9 discard dev/null - basura
11 systat Informacion sobre los usuarios
13 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
520 route Protocolo de informacion 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 ls 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 CuteFTP 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 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
Página 2
sábado, 12 de octubre de 2002
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 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 wez al servidor, para ponerla en intesné. 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
Página 3
sábado, 12 de octubre de 2002
servidor, por ejemplo ftp.servidor.es. 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 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 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
Página 4
sábado, 12 de octubre de 2002
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) <-- 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 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)

Página 5
sábado, 12 de octubre de 2002
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
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á. 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.

Página 6
sábado, 12 de octubre de 2002
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 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 escribir 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 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:

Página 7
sábado, 12 de octubre de 2002
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 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 XDDD ).
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.

Página 8

You might also like