-[ 0x0F ]-------------------------------------------------------------------- -[ SNMP ]-------------------------------------------------------------------- -[ by UnderCode ]-----------------------------------------------------SET-17- ttttttttttt cccccc ppppp *** iiiiiiiii ppppp ttttttttttt ccc cc pp pp *** iiiiiiiii pp pp ttt ccc pp pp *** iii pp pp ttt ccc pp pp *** iii pp pp ttt ccc ppppp *** iii ppppp ttt ccc ppp *** iii ppp ttt ccc ppp *** iii ppp ttt ccc cc ppp *** iiiiiiiii ppp ttt cccccc ppp *** iiiiiiiii ppp SMTP Simple Mail Transference Protocol (protocolo de transferencia simple de correo) ------------------------------------------------------------- Buenas, buenas, otra vez yo desde el cono sur intentando llegar a la comunidad del under informatico. En esta ocasion les traigo algo de TCP/IP el conjunto de protocolos base se Inet. Este peque¤o articulo intentara explicar un poco que es el SMTP y como utilizarlo, previo a esto debo aclarar que algunos terminos requieren un cierto conocimiento previo (solo elemental) sobre el protocolo TCP/IP, pero intentare ser lo mas claro posible, para eso voy a dividir el articulo en dos partes: teorica y practica (ya me parezco un profe de la uni, no?). Si a alguien no le interesa la palabreria, puede pasarse a la segunda parte que es mas entretenida, o bien saltarse la nota completa que el resto de la revista esta de seguro mejor que esto. 1a Parte (aburrida) TEORIA: donde se encuentra el Correo Electronico dentro de TCP/IP ======= Bueno, el protocolo TCP/IP se hizo bastante popular en los ultimos tiempos debido a la masificacion de Internet, la cual lo usa como protocolo base, por lo tanto es obligacion (si, asi es!!!) que conozcamos que es y como funciona TCP/IP. Por ahora solo voy a explicar un poco como se maneja el mail en Internet sin entrar en demasiados detalles. TCP/IP es un conjunto de protocolos dispuestos en forma de capas la cantidad de estas capas varia de acuerdo a distintos autores, pero por lo general se definen de 3 a 5 estratos. Dentro de esta pila existe una que esta en el ultimo nivel denominada "capa de aplicacion", esta capa esta formada por las aplicaciones y procedimientos que usa la red. Como decia, dentro de TCP/IP existe la capa de aplicacion, esta contiene todos los servicios que podemos utilizar como usuarios de una red TCP/IP (Internet es solo un caso de red montada sobre el, pero no es necesariamente la unica), dentro de estas aplicaciones que ya conocemos encontramos FTP, Telnet, SMTP, HTTP, etc. Veamos que es eso del SMTP. No se me duerman que es interesante. Ok, todos conocemos el e-mail, no?...cierto, es una de las aplicaciones mas ampliamente difundidas en lo que a Internet respecta. Si alguno quiere enterarse del formato utilizado para la correspondencia, puede leerse la RFC 822. La definicion que alli se establece solo permite el intercambio de mensajes constituido por lineas de texto ASCII. No se distingue entre el mensaje y el sobre (huh?), es decir, todos los mensajes son tratados como una pieza unica dentro de la cual existen campos de cabecera, estos campos tambien son conocidos por todos quienes alguna vez enviamos un mail: subject, to, from, cc, etc. Estos campos son palabras claves ASCII que se colocan al principio de los mensajes seguidos por dos puntos (:) y el valor del mismo a continuacion. Bueno, dentro de la capa de aplicacion tenemos las diversas aplicaciones (que mas podria haber?), pero estas a su vez poseen diversos protocolos para su funcionamiento, en el caso del mail se llama SMTP, este nos permite el manejo de la red de correo electronico. Por lo general una aplicacioon de correo electronico se ejecuta en un host (digamos server del ISP), donde cada usuario con acceso posee un buzon (o mailbox si se quiere). Cuando ingresamos al host (por el puerto 25) podemos enviar mensajes a otros usuarios del mismo y leer nuestros mensajes en el buzon que tengamos asignado. Estos buzones son mantenidos por el sistema de administracion de archivos, son simplemente directorios que contienen archivos de texto (nuestros mensajes). Pero si se desean intercambiar mensajes con los otros host, SMTP tambien cuenta con los mecanismos que lo permiten, de modo que no solo podemos intercambiar mensajes con los usuarios de nuestro host, sino tambien con distintos host dentro de la red, y, obviamente, sus usuarios. El protocolo SMTP envia los mensajes de la siguiente manera: el host recibe el mensaje preparado por el servicio de correo. Al recibir el mensaje, se utiliza el TCP para para enviarlo, al igual que para recibir los mensajes. Como el SMTP no tiene especificada la interfase de los usuarios, estos no pueden distinguir el caso en que se envie correo local (en el mismo host) o remoto (a traves de la red hacia otro host). Los clientes de e-mail permiten la lectura de los archivos que hay almacenados en los buzones de los usuarios autorizados como asi tambien el envio de mensajes que el servidor de e-mail se encarga de distribuir. A estos servicios se los conoce como servicio de e-mail y lo ofrecen diversos daemons, entre estos esta el famoso "sendmail". Digo famoso porque es el mas utilizado en la actualidad entre los host de Internet. Se lo llama tambien "delibery", asi que si ves esto en lugar de sendmail por ahi, es lo mismo, aunque por lo general (siempre diria yo) vas a encontrarte con sendmail. El sendmail funciona atendiendo de modo constante el puerto 25, conectandose con daemons de otros sistemas para intercambiar mensajes. Bueno, si me siguieron hasta este punto, aqui les doy su premio jejee... 2a Parte (lo divertido) PRACTICA: Como utilizar el SMTP ======== Quien mas, quien menos, todos alguna vez vimos en las zines de H/C/P/V o libros y revistas de informatica un listado de puertos de TCP. Quien mas, quien menos, tambien habra leido informacion sobre el escaneo de puertos. Tratare de aclarar como utilizamos el puerto 25. Luego del respectivo scan a un determinado blanco (linda forma de definirlo, no?) obtenemos una lista de los puertos que este tiene abiertos, digamos 80, 21, 25, etc...25 dije?...ese es!! Por ejemplo, luego de un port scan a mi web (?) www.undercode.com encontramos que tiene abierto el puerto 25. Listo, el paso siguiente es conectarnos al host mediante Telnet al famoso puerto 25 de mail. Todo lo que este precedido por un numero son las respuestas del host, las lineas con # son solo comentarios mios. $ telnet telnet> open www.undercode.com 25 # llamamos al sistema por el # puerto de mail 220 UNDERCODE.MAILSERV SMTP # esta presentacion varia de un Service at 15 Nov 98 03:05:13 GMT # sistema a otro, en algunos # casos hasta se nos indica que # version de sendmail se esta # usando HELO undercode # se le indica al server quien es # el usuario que esta en sesion 250 UNDERCODE.MAILSERV - Hello, undercode # la maquina remota me saluda :-) Ahora vamos a mandar un mail: MAIL From: undercode@undercode.com 250 MAIL accepted RCPT To: bgates@windoze.com # :-) 250 Recipient accepted DATA # le indicamos que lo que sigue # sera el texto del mensaje 354 Start mail input; end with . # muy importante: al finalizar el # mensaje hay que indicarle al # host que termino, esto se hace # con una linea que solo tiene un # punto "." Date: Wed, 15 Jul 98 03:06:50 From: undercode@undercode.com To: bgates@windoze.com Subject: Promocion!! Se~or Gates, tenemos un nuevo servicio en limpieza y cuidado del cabello, si le interesa, solo responda a este mail indicandolo. . 250 OK QUIT 221 UNDERCODE.MAILSERV.COM Service closing transmission channel Como se ve el servidor envia sus respuestas con un numero delante, estos tienen distintos significados de acuerdo con la primera cifra, si: ----------------------------------------------------------------- | Empieza con | Significa | ----------------------------------------------------------------- | 2 | Operacion ejecutada satisfactoriamente. | ----------------------------------------------------------------- | 3 | Se requiere una accion a continuacion. | ----------------------------------------------------------------- | 4 | Error temporal. Ej. el disco esta lleno. | ----------------------------------------------------------------- | 5 | Error permanente. Ej. no existe el recipiente. | ----------------------------------------------------------------- En el caso de un error temporal (4) los mensajes se guardan y se envian mas tarde, en cambio cuando el error es permanente (5) el mensaje es devuelto al emisor indicando un codigo de error. Veamos lo que hicimos antes, al iniciar con HELO se indica el nombre del sistema (o usuario) que inicia la conexion con el sendmail. Luego con MAIL indicamos que estamos por enviar un mensaje y RCPT le indica al daemon a que destino ira dirigido. Por ultimo DATA contiene el mensaje en ASCII, recuerden que habia comandos que se introducian en el cuerpo del mensaje, ya vimos como se le indico la fecha (Date:), el origen (From:), el destino (To:) y el asunto (Subject:), recuerden finalizar el mensaje con una linea que solo contenga un ".". En el caso que se quiera enviar en el texto del mensaje un punto como linea, se deben colocar dos puntos seguidos ".." para que el sendmail lo interprete como texto y no como final de DATA. Creo que QUIT no es necesario que lo explique, verdad? Bueno esto es lo que podemos hacer para enviar mensajes desde telnet sin usar cliente de e-mail alguno, pero aqui se presenta una situacion que no habia mencionado: cuando nos conectamos por el puerto 25 al host este nos recibe y por lo general nos indica la version de sendmail que utiliza, pero nunca nos pide login ni password para entrar, salvo que queramos ver los mensajes de algun buzon que tenga alojado. Probemos entonces enviar un mail sin hacer HELO, a ver... open UNDERCODE.MAILSERV.COM 25 # es el nombre del servidor de # mail que aparecio antes 220 UNDERCODE.MAILSERV SMTP Service at 15 Nov 98 03:08:13 GMT MAIL From: steve_jobs@apple.com 250 MAIL accepted RCPT To: bgates@windoze.com 250 Recipient accepted DATA 354 Start mail input; end with . Date: Wed, 15 Jul 98 03:06:50 From: steve_jobs@apple.com To: bgates@windoze.com Subject: ladron!!! Maldito nerd te robaste mi entorno de ventanas, te voy a caer encima!! . 250 OK QUIT 221 UNDERCODE.MAILSERV.COM Service closing transmission channel Como veran el origen del mensaje puede no ser real, y aun asi el sendmail lo enviara. El se~or Gates recibira nuestro saludo y de acuerdo al campo From de su cliente de correo vera que su colega Jobs le escribio. Es el metodo que utilizan los programas de correo anonimo como el AnoniMail que anda circulando por ahi. Puede llegar a servir para joder a un amigo o algo asi, pero es muy simple de rastrear. Es muy facil de saber quien envia un mail de este modo, simplemente viendo las propiedades del mensaje (en Outlook, Netscape, etc) se obtiene el servidor de donde proviene, y como cada sesion en el sendmail es loggeada....en fin, ya saben. Otro comando interesante para utilizar es "vrfy", su sintaxis es vrfy Donde usuario (sin los <>) es algun usuario registrado en el servidor, si el usuario existe este comando nos dara bastante informacion del mismo, y si no nos indica un mensaje de error. Puede ser util a la hora de hacer Ingenieria Social contar con algunos datos de la persona, no? Listo, hasta aqui llegamos por ahora, si alguien lo desea puede probar otras cositas del sendmail, esto solo era una introduccion para quienes deseen aprender un poquito de SMTP y como lo utilizan los clientes de mail, ya saben si tienen algo para comentar, criticar, agregar, etc, de esta nota, mi mail y llave PGP estan a su disposicion. UnderCode <++> keys/UnderCode.asc Tipo Bits/Clave Fecha Identificador pub 1024/488E0455 1998/10/09 UnderCode -----BEGIN PGP PUBLIC KEY BLOCK----- Version: 2.6.3ia mQCNAzYeNK4AAAEEANDRJ8J/6+qrXdpaTgZwUSgfbVZ8QAxQlWOcS3np2UPkdzfN UlEnHnwSe/3Hy653MOthzivtyfyJPtGrYJffeRhwWMcjR/Gy1sg0SHus1NQFbqcP 7j4isB1xat08Ezt1a9eSNp7UUk6FHbo9MV05r/2a6o9bXVSG4F/BxOZIjgRVAAUR tB9VbmRlckNvZGUgPHVuZGVyY29kZUBpbmFtZS5jb20+iQCVAwUQNh40rl/BxOZI jgRVAQFrvQQAjPB3N41j7eggukyYp1gbY1+gaS3zzRXroOd46uIEADQb0dWRVQPz LcjTT8G5Qm4orzjvtQV8r6G3A0aPNuOoq/mkzj30yDFgz0J55UUdT7GnFsKNplQE 26gho+0Ek3Zctad63Dz3AzK5RsRrLlCre5RhIYBf3s4ursJXX7CiBys= =KAfp -----END PGP PUBLIC KEY BLOCK----- <-->