Tecnologías de Internet/Spam en el correo electrónico

De Wikilibros, la colección de libros de texto de contenido libre.

Introducción[editar]

Diagrama de envío de e-mails con Spam. (1): Sitio del Spammer (2): Spammer (3): Spamware (4): Equipos infectados (5): Virus o troyanos (6): Servidores de correo (7): Usuarios (8): Trafico Web

Este manual pretende ser una simple introducción a uno de los sistemas más utilizados de internet: el del correo electrónico. El texto intentará sobre todo dar respuesta a las dudas más frecuentes sobre el funcionamiento interno del mismo, pasando por alto aspectos como la utilización de los agentes de correo, su configuración o similares. La idea es explicar ¿cómo?, o ¿por qué? pasan determinadas cosas que muchos usuarios se preguntan pero desconocen como averiguar. Nunca se ha preguntado ¿cómo es posible enviar correo falso? o por qué es tan difícil localizar a los “spamers”, o incluso cómo podría saber si un correo electrónico lo ha enviado quien dice que lo ha enviado. Las respuestas a todas estas preguntas y algunas otras están en este manual.

Capítulo 1. ¿Cómo funciona el correo electrónico?[editar]

A grandes rasgos el funcionamiento del correo electrónico se basa en tres elementos: la persona que envia el correo, el medio por donde circula el correo y el destinatario.

1.- Empecemos por el primero. Lo primero que se necesita para enviar un correo electrónico (entre otras cosas) es un editor de textos mediante el cual podamos escribir la información que deseamos transmitr. Si bien como veremos más adelante cualquier editor de textos nos es válido. Lo mejor es utilizar cualquiera de los ya integrados en los agentes de usuario, tanto comerciales como gratuitos.

Con el término agente de usuario se denominan a los programas que sirven para escribir y recibir correo. Ejemplo de estos son, en el caso de Windows el archiconocido Outlook, o el Evolution en Linux. Son aplicaciones que nos proporcionan una cierta comodidad a la hora de organizar y escribir nuestros mensajes, permitiéndonos abstraernos totalmente del proceso de envío del correo. No se entrará en el proceso de configuración de éstos porque no es la finalidad de este texto, para más información acerca de como configurar un agente simplemente se puede mirar la ayuda adjunta al programa.

2.- Bien, ya tenemos escrito nuestro correo, ahora queremos enviarlo; normalmente pulsamos en nuestro agente en un botón que pone enviar o alguno similar y el correo es enviado al destinatario.

Es en este punto en donde tenemos que bajar un poco el nivel de abstracción para así ver lo que pasa.

Realmente lo que ocurre es que nuestro agente envía la información que hemos escrito a otro programa, que puede estar instalado en nuestro propio ordenador o bien en un sistema diferente (más habitual). Estas aplicaciones son conocidas con el nombre de agentes de envío o transporte. Estos agentes de envío utilizan un protocolo de conunicaciones llamado SMTP, es decir, protocolo simple de transporte de correo y es el protocolo que se utiliza para enviar y recibir correo electrónico por la red Internet. Así, un correo electrónico esta compuesto por dos partes: una parte visible, que es nuestro texto y una parte que no vemos y que es la parte de control. En esta última aparece la información necesaria para poder enviar el correo al destinatario. Este protocolo de comunicaciones tiene una serie de particularidades, entre las cuales una de las más interesantes es que no puede transmitir más que correos de texto, no es capaz de enviar mensajes con fotos, vídeos o cualquier otro elemento multimedia. Más concretamente algunas de las limitaciones del protocolo SMTP son las siguientes:

1.- SMTP no puede enviar archivos ejecutables o binarios. Existen algunos sistemas que permiten convertir estos archivos a archivos de texto y así poder utilizar el protocolo SMTP como Uuencode/UUdecode pero tienen el problema de que no son un estándar.

2.- No se pueden transmitir mensajes que incluyan caracteres especiales de los idiomas nacionales ya que estos se representan con bits y SMTP sólo soporta caracteres ASCII de 7 bits.

3.- Algunas implementaciones del protocolo no cumplen completamente el estándar, surguiendo algunos problemas como:

- Eliminación, reordenación o incorporación de caracteres de fin de línea o de retorno de carro.

- Eliminación de espacios finales.

- Truncar o dividir líneas de más de 80 caracteres,etc.

Para aclarar un poco las cosas, lo mejor es mostrar lo explicado con un esquema:

Agente_de_usuario>>> agente_de_transporte >>> INTERNET >>> agente_de_transporte>>> agente_de_usuario

Llegados a este punto, es posible que el usuario se plantee el hecho de ¿cómo es posible esto?, ya que todos hemos escrito algún correo adjuntando alguún archivo multimedia, como vídeos o archivos comprimidos. La respuesta a esta sencilla pregunta es otro protocolo más: MIME. No entraremos en detalle en el funcionamiento de este protocolo, simplemente y a grandes rasgos, decir que lo que hace es transformar los archivos binarios en archivos de texto que son transmisibles por SMTP. Este protocolo implica que nuestros archivos crecen un tercio de su tamaño cuando los enviamos debido al sistema de codificación. El correo electrónico nos permiten enviar y recibir información de otras personas al rededor del mundo

Capítulo 2. - Análisis de las cabeceras del correo[editar]

Es inevitable, el correo basura nos llega. No importa lo que hagamos: ni filtros, ni antivirus ni nada. Cada día nos despertamos con unos cientos de mensajes basura. Estamos desesperados y queremos una solución. Una forma de solucionar este problema es no teniendo cuentas de correo electrónico. Otra de las posibilidades consiste en intentar detectar a los spamers (término proveniente de la palabra esperma haciendo referencia a la reprimencia sexual) y denunciarles.

Nunca tome la justicia por su mano, ya que aunque sea muy tentador, al final los perjudicados será usted. Si detecta a un espamer lo mejor es que lo denuncie a su administrador de correo. El se encargará de tomar las medidas oportunas. En este capitulo se enseñará a analizar las cabeceras de control de los correos para así saber si son falsos o no. Aunque los que envían correos basura siempre intentan falsificar sus orígenes, muchas veces es muy fácil saber si un correo es auténtico o no.

  • Fase 1. ¿Es este correo spam?.

Es relativamente fácil saber si un correo es spam o no:

¿Desconozco al remitente?
¿Contienen mensajes sobre empresas u otras ofertas no solicitadas?
¿El destinatario del mensaje es otro diferente de usted?
¿Contiene virus?

Si la respuesta es afirmativa para alguna de las preguntas, probablemente sea spam.

  • Fase 2. Este correo es spam. ¿ahora qué hago?.

En esta fase aprenderemos a analizar las cabeceras del correo electrónico. Estas cabeceras permanecen ocultas para la mayoría de los usuarios de sistemas informáticos. En ellas podemos encontrar información valiosa para desenmascarar (o al menos intentarlo) a esos malosos de los spamers.

Lo primero será analizar la cabecera de un correo normal para poder ver los diferentes elementos que suelen aparecer.

X-UIDL: 71663ac1b2197051d838c6c81e4e5b8f
X-Mozilla-Status: 0011
X-Mozilla-Status2: 00000000
X-Apparently-To: correo@yahoo.es via 66.218.93.158; Wed, 04 Aug 2004 06:02:32 -0700
X-Originating-IP: [62.42.230.12]
1.- Return-Path: <correo@ono.com>

2.- Received: from 62.42.230.12  (EHLO resmta03.ono.com) (62.42.230.12)
by mta426.mail.scd.yahoo.com with SMTP; Wed, 04 Aug 2004 06:02:32 -0700

3.- Received: from MODDING (62.43.11.2) by resmta03.ono.com (7.1.016.11)
id 40D79551000D206F for correo@yahoo.es; Wed, 4 Aug 2004 14:57:30 +0200

4.- From: "correo" <correo@ono.com>
5.- To: "'corre ...'" <correo@yahoo.es>
6.- Subject: RE: Practica de asoA
7.- Date: Wed, 4 Aug 2004 14:57:34 +0200
8.-Message-ID: <000501c47a22$a11f3430$020b2b3e@MODDING>

MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="----=_NextPart_000_0006_01C47A33.64A80430"
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook, Build 10.0.2627
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2742.200

This is a multi-part message in MIME format.

Comentar que para explicar de forma sencilla la cabecera de este correo electrónico se han numerado las diferentes líneas para ir comentandolas, en el correo original no están. También se han cambiado algunos datos por razones obvias para garantizar la privacidad.

  • Lo primero que tenemos que observar son los posibles campos que empiezan por una “X”. Estos campos son añadidos normalmente por los programas de usuario o de entrega como una extensión y a la hora de analizar el correo electrónico son totalmente descartables. Las ignoramos.
  • La línea 1 contiene el campo return-path que se suele utilizar como dirección de retorno en caso que se produzca algún tipo de error enviando el correo.
  • Las líneas 2 y 3 son tal vez las más importantes a la hora de analizar un correo electrónico. Estos campos son añadidos conforme el correo va circulando por Internet y va pasando por los diferentes ordenadores. Cada ordenador por el que el correo pasa añade su campo received. Se han de leer de abajo arriba, es decir el primero es la línea 3 y el segundo la 2. La estructura básica de los campos received es muy simple y consta de dos partes. La primera parte indica la máquina que envío el correo y siempre viene encabezada por la palabra from. La segunda parte indica la máquina que recibe el correo y siempre viene precedidada por la palabra by.

En el ejemplo en la línea 3 tenemos:

Received: from MODDING (62.43.11.2) by resmta03.ono.com (7.1.016.11) 
id 40D79551000D206F for correo@yahoo.es; Wed, 4 Aug 2004 14:57:30 +0200

from MODDING (62.43.11.2): es la máquina que originó el mensaje cuya ip podemos ver entre paréntesis.

resmta03.ono.com (7.1.016.11)id 40D79551000D206F for correo@yahoo.es; Wed, 4 Aug 2004 14:57:30 +0200: esta parte es la máquina que recibió el mensaje procedente de la máquina llamada MODDING. La máquina que recibió el mensaje se llama resmta03.ono.com y su ip aparece entre paréntesis. La información que aparece a continuación puede variar según sea el agente de transporte que se utilice. Como regla general en el caso de la primera línea de received aparecerá el correo del destinatario y además en el resto de received la fecha además del offset en formato UTC de la fecha local.

En nuestro caso particular tenemos en primer lugar el identificador del correo en la máquina: id 40D79551000D206F, el destinatario: for correo@yahoo.es, la fecha en que se envió el correo: Wed, 4 Aug 2004 14:57:30 y finalmente el offset respecto la fecha local: +0200. Las fechas así como las máquinas por donde va pasando el correo son lo que entre otras cosas nos permitirán descubrir correos falsos. Para ello veamos el siguiente received:

Received: from 62.42.230.12  (EHLO resmta03.ono.com) (62.42.230.12)
by mta426.mail.scd.yahoo.com with SMTP; Wed, 04 Aug 2004 06:02:32 -0700

Como podemos ver, la máquina que envia el correo es la misma que lo recibió en el anterior received: from 62.42.230.12 (EHLO resmta03.ono.com). Si no fuera así, significaría que el correo habría sido manipulado y por tanto que es un correo basura. Es como una cadena de ordenadores en la que uno envía y el otro recibe. Si la cadena se rompe significa que algo no está bien.

En este caso la máquina que recibe el correo de resmta03.ono.com es la máquina mta426.mail.scd.yahoo.com. Podemos observar que la fecha de recepción son las 6 de la madrugada hora local. Se podría llegar a pensar que el correo ha sido manipulado por la enorme diferencia de tiempo entre el envío y la recepción (15 horas hacia atrás ya que es el mismo día) pero no es así si tenemos en cuenta el offset. La diferencia horaria es de -7 horas respecto el 0. En el origen tenemos que son las 3 de la tarde, le quitamos las dos horas respecto el 0 y después le quitamos las siete hasta el destino, el resultado es de las 5:57, es decir, entre el envío y la recepción han pasado unos 5 o 6 minutos dependiendo de que los relojes estuvieran bien sincronizados etc. Así tenemos que entre las horas de envió y recepción apenas hay diferencia temporal. Si hubiera un excesivo tiempo o fechas absurdas sería una señal de que estamos ante un correo basura.

Saltemos un momento a la línea 9. En ella encontramos el identificador del mensaje de correo a lo largo de todo el sistema de correo allá por donde pase. Es su identificador digital y siempre es el mismo. Su formato es también siempre el mismo. Siempre entre corchetes y después del identificador ha de aparecer separado por una “@” el nombre de la máquina que envió el correo inicialmente. Si esto no es así es probablemente un correo falso.

Las líneas de la 4 a la 7 son las típicas líneas de subject, from, to y la fecha. Son fácilmente falsificables y por eso no son muy fiables. El resto no sirve en principio para identificar el origen del correo electrónico pero forma parte de la cabecera y se ha creído conveniente incluirlo. En estas líneas podemos obtener información sobre el agente de correo que se utilizó para escribir el correo, en este caso: X-Mailer: Microsoft Outlook, Build 10.0.2627.

Bien, ahora sabemos cuales son los elementos más importantes a la hora de analizar un correo. A continuación os indicaremos cuales son las características más rápidas para identificar a un correo basura:

1. Cualquier received después del campo date es falso.

2. Los campos received tienen que encadenarse, si alguno de estos campos no coincide
con el siguiente el correo ha sido falsificado.

3. Cuando encontremos dos campos received con nombres de host diferentes
el correo  electrónico habrá sido probablemente enviado mediante la técnica
del relay a través del primer host.

4. Un campo received con una fecha antigua y no concordante con las demás ha sido
seguramente falsificada.

5. El dominio que aparece en el identificador de mensaje tiene que coincidir con el
dominio del campo from. 

6. Comprueba si todos los host que aparecen realmente existen via DNS.

7. La parte del host del campo from tiene que estar en concordancia con el último received.


  • Ahora veremos un correo basura y sus diferentes partes para identificar a los malosos que nos lo han enviado.
1.- Return-Path: <semassaq@xzapmail.com>

2.- Received: from lavin02 ([192.168.197.19]) by jones.melange.net
(Netscape Messaging Server 4.15 jones Mar 14 2002 21:29:48) with
ESMTP id HIHM8V00.A43 for <correo@arrakis.es>; Wed, 23 Jul
2005 19:07:43 +0200 

3.- Received: from [195.188.22.73] (helo=wtwmmail01.xzapmail.com)
by lavin02 with esmtp id 19fNE6-0005z1-01
for correo@arrakis.es; Wed, 23 Jul 2005 19:16:30 +0200

4.- Received: from xzapmail.com (unverified [10.49.101.5]) by xzapmail.com
(Rockliffe SMTPRA 5.2.5) with ESMTP id <B0002168377@wtwmmail01.xzapmail.com>;Wed, 23 Jul 2005 
17:39:59 +0100
 
5.- Message-ID: <229811-220037323163714156@xzapmail.com>

X-Priority: 3
Return-Receipt-To: 
Reply-To: 
6.- From: semassaq@xzapmail.com
7.- To: semassaq@xzapmail.com
Subject: 
Date: Wed, 23 Jul 2005 17:37:14 +0100
MIME-Version: 1.0
Content-type: text/plain; charset=US-ASCII

Lo primero que podemos observar es que los campos from y to (líneas 6 y 7) son iguales. Por si sólo este hecho no es indicativo de nada, a no ser que la persona que recibe el correo no sea la destinataria del mensaje (como ocurre en nuestro caso). Nuestro correo es correo@arrakis.es pero el destinatario es semassaq@xzapmail.com. Muchos se preguntarán el como ha podido llegar un correo a un destinatario diferente del indicado, ¿tal vez un error del sistema de correo?. Como veremos más adelante no se trata de ningún error sino de una acción totalmente deliberada por parte de los espamers. El auténtico destinatario aparece en la línea 3: correo@arrakis.es. Pasemos al primer received, es decir, la línea 4. El emisor original y se supone que es: xzapmail.com (unverified [10.49.101.5]). El receptor es también el mismo xzapmail.com. En prinpio es posible que el emisor y el receptor sean el mismo, por ejemplo es el caso de que nos enviemos un correo a nosotros mismos. Pero existiendo más campos received es poco probable que esto sea así. Comprobamos la existencia de este domino mediante la utilidad whois y obtenemos la siguiente información:


  • Consulta la base de datos de Whois

Dominio / Estado

xzapmail.com / Disponible

Como podemos ver, esto nos indica que el dominio xzapmail.com no esta siendo utilizado por nadie y que por tanto no puede haber sido utilizado en el correo. En principio lo que podemos deducir es que este campo received ha sido probablemente falsificado. Si seguimos analizando el siguiente campo received (línea 3) podremos ver que el emisor es: wtwmmail01.xzapmail.com , el servidor de correo de nuestra máquina falsa. En este caso se nos indica la ip de la máquina; lo comprobamos y en principio tampoco existe, también es posible que esté desconectada de la red. El correo es recibido por una máquina llamada lavin02. Esta máquina de la cual no se indica la ip no indica el tipo de dominio que representa (com, es, net, org ...). Cada gestor escribe los datos que considera oportunos y en este caso parece que no escribe el tipo de dominio. La línea 2 es la única que hasta cierto punto es muy difícil de falsificar ya que es la generada por nuestro propio servidor de correo. En ella podemos observar la ip de lavin02: 192.168.197.19. Esta ip, que también hemos comprobado, tampoco existe, al menos no como parte de un servidor constantemente conectado a la red. Tal vez sea un ip dinámica generada por un isp a un usuario domestico.

Capítulo 3. - Envío de correo falso.[editar]

Llegados a este punto tal vez queramos saber cómo enviar correo falso. Ha de quedar claro que la capacidad de enviar correo falso puede ser útil en determinados casos, las motivaciones personales dependen de cada uno, pero nunca ha de convertirse en un medio para realizar acciones ilegales ni perniciosas contra otros.

Lo primero es disponer de un programa de telnet. Este tipo de programas permiten la conexión remota a sistemas inforáticos mediante la consola de comandos. Windows trae uno de estos programas de serie. Para ejecutarlo simplemente tenéis que escribir en la consola el comando telnet.

Lo que haremos será conectarnos con una máquina de la red que disponga de un servidor de correo (un agente de transporte. Ver tema 1). Una vez conectados enviaremos el correo desde el servidor hacia el destino seleccionado. Con esto conseguimos que la persona que reciba el correo piense que éste ha sido enviado desde la máquina con la que estamos conectados. Llegados a este punto quiero recalcar el hecho de que no se deben realizar acciones dañinas con el envío de correo falso. Estas máquinas suelen llevar un registro de las personas que se les conectan registrando la ip, dominio y otros datos, así que no intentéis realizar cosas malas con el envío de correo falso. Bien, para empezar nos conectaremos con un servidor de correo. Existen muchos servidores a los que podéis conectaros y con una pequeña búsqueda en google os será muy fácil encontrarlos. No indicaremos, pues, ninguna dirección explicita de servidores de correo.

1.-Nos conectamos. Para conectarnos por ejemplo al servidor llamado stmp.servidorCorreo.com ejecutamos el siguiente comado:

telnet stmp.servidorCorreo.com 25

Telnet es el nombre del programa que nos va a permitir conectarnos al servidor, stmp.servidorCorreo.com es el nomnbre de la máquina y 25 es el puerto estandar que utilizan los servidores de correo para enviar y recibir correos.

2.-Estamos conectados. ¿Y ahora qué?

Lo más probable es que lo primero que ocurra es que el servidor nos salude (son todos muy amables :D). Ignoramos por ahora este saludo y empezamos a enviar nuestro correo. Para ello escribiremos tal cual:

HELO midominioinventado.com 

Es la respuesta al saludo inicial que nos daba el servidor.

MAIL FROM: <micorreoinventado@midominioinventado.com>

Aquí escribimos el origen del correo, es decir la persona que envía el correo. Podemos poner lo que queramos.

RCPT TO: <correodemiamigo@sudominio.com>

El destinatario del correo, por ejemplo la dirección de algún amigo/a.

DATA

texto del mesaje.

Finalmente escribimos el mensaje y normalente acabamos con una línea en la que sólo escribimos un punto más enter.

QUIT

Una vez escrito el correo nos desconectamos del servidor con este comando.

  • Así, todo el proceso sería algo como:
telnet smtp.dominio.com 25

220 smtp.dominio.com Sendmail 4.1/Mork-1.0 ready at Sat, 26 Jul 00 04:26:46 EST 

HELO midominioinventado.com
250 smtp.dominio.com  Hello  midominioinventado.com ( midominioinventado.com),
pleased to meet you
MAIL FROM:<origen@dominio.com>  
250 <origen@dominio.com>... Sender ok
RCPT TO: <midestion@dominio.com>
250 <midestino@dominio.com>... Recipient ok 
DATA
354 Enter mail, end with "." on a line by itself
subject: correofalso
to: otrapersona@correo.com
Este correo es un ejemplo de correo falso, que claramente es falso porque
de lo contrario seria muy autentico.
.
250 Mail accepted
QUIT


Así, los campos subject, from y to se escriben después del comando DATA en líneas separadas por un retorno de carro (un enter), pudiendo poner lo que queramos. Es así como podemos recibir un correo que aparentemente va dirigido a otras personas, basta con poner un campo diferente al real (campo RCPT) en el campo To:. Este campo lo leen los agentes de usuario y es como vemos, fácilmente falsificable.