Tutoriales Varios

Como falsificar email y descubrir falsificaciones

 

 

 

 

 

 

 

 

 

 

Cuánto te gustaría dejar alucinados a tus amigos? OK, qué cosa crees que es la que mas hasta las narices están de hacer los superhackers?

La respuesta es conseguir acceso no autorizado a un ordenador, correcto?

Entonces cuánto te gustaría ser capaz de obtener acceso y hacer funcionar un programa en alguno de los millones de ordenadores conec-tados a Internet? Te gustaría acceder a estos ordenadores de Internet casi igual que al más notable hacker de la historia: Robert Morris!

Fue su "Morris Worm" ("Gusano de Morris") el que derribó Internet en 1990. Por supuesto, el falló que el aprovechó para llenar el 10% de los ordenadores en Internet con su auto-mailing virus ha sido arreglado ya, por lo menos en la gran mayoría de los hosts.

Pero incluso ahora Internet todavía guarda toneladas de diversión, juegos y bugs escondidos en su interior. De hecho, lo que estamos a punto de aprender es el primer paso de varios de los modos más comunes que utilizan los hackers para entrar en áreas privadas de ordenadores.

Pero yo no voy a enseñarte a acceder a zonas privadas de ordenadores. Suena demasiado asqueroso. Además, soy alérgico a la cárcel.

Por lo tanto, lo que estás a punto de aprender es legal, inofensivo, e incluso tremendamente divertido. No hacen falta juramentos de sangre entre tú y tus colegas para no testificar que has hackeado eso, sencillamente es legal.

Pero, para hacer este hack necesitas un servicio online que te permita hacer telnet por un puerto específico a un host de Internet. Netcom, por ejemplo, te dejará hacer esto sin problemas.

Pero Compuserve, América Online y muchos otros PSIïs (Proveedores de Servicios de Internet) son digamos como grandes niñeras que te apartarán de la tentación de hacer esto.

El mejor camino para hacer este truco es con una CUENTA SHELL! Si no tienes una, consíguela ya!

Nota-para-el-Newbie: Una cuenta shell es una cuenta Internet que te permite utilizar comandos Unix. El Unix es muy parecido al DOS. Hay un prompt en tu pantalla y tienes que teclear los comandos. El Unix es el lenguaje de Internet. Si quieres ser un hacker serio, tienes que aprender Unix.

Incluso si nunca has usado telnet antes, este hack es super simple. De hecho, incluso aunque lo que vas a aprender parezca hacking de la clase más heroica, puedes dominarlo en media hora o menos. Y sólo necesitas memorizar *dos* comandos.

Para averiguar si tu Proveedor de Servicios de Internet te permite hacer el truco, prueba este comando:

              telnet callisto.unm.edu 25

Es un ordenador de la universidad de Nuevo México. Mi cuenta Compuserve empieza a echar humo cuando pruebo esto. Simplemente me echa fuera de telnet diciendome poco más que "tsk, tsk".

Pero al menos hoy Netcom me permitirá utilizar ese comando. Y sólo con cualquier "cuenta shell" barata ofrecida por cualquier PSI podrás utilizarlo. Muchas cuentas de insitutos de secundaria y universidades te dejarán también hacerlo sin problemas.

Nota-para-el-Newbie: Cómo Conseguir Cuentas Shell
Prueba en las páginas amarillas del teléfono, en el apartado Internet. Llama y pregunta por "cuenta shell".
Seguramente te dirán: "Seguro, no hay problema." Pero cientos de veces están mintiendo. Piensan que eres demasiado estúpido como para saber qué es una cuenta shell real. O puede que la infra-pagada persona con la que hablas no tenga ni idea.
El modo de solucionar esto es preguntar por una cuenta guest temporal (gratis). Cualquier PSI medianamente decente te dará un periodo de prueba. Cuando la tengas intenta hacer lo que aquí se explica.

OK, demos por hecho que posees una cuenta que te permite hacer telnet a algún sitio serio. Volvamos al comando de antes:

              telnet callisto.unm.edu 25

Si has hecho telnet alguna vez, probablemente pusiste el nombre del ordenador que planeabas visitar, pero no añadiste ningún número detrás. Pues resulta que esos números detrás son los causantes de la primera distinción entre el bondadoso y aburrido ciudadano de Internet y alguien descendiendo por la resbaladiza (y emocionante) pendiente del hackeo.

Lo que ese 25 significa es que estás ordenando a telnet a llevarte a un puerto específico de la víctima deseada, er, su ordenador.

Nota-para-el-Newbie: Puertos
Un puerto de ordenador es un lugar donde la información entra y sale de él. En el ordenador que tienes en casa, ejemplos de puertos son tu monitor, que manda información hacia afuera (output), tu teclado y el ratón, que mandan información hacia adentro (input), y tu módem, que envía información en ambos sentidos.
Pero un ordenador host de Internet como callisto.unm.edu tiene muchos más puertos que un típico ordenador casero. Estos puertos están identificados por números. En este caso no todos son puertos físicos, como un teclado o un puerto de serie RS232 (el de tu módem). Aquí son puertos virtuales (de software). tengas intenta hacer lo que aquí se explica.

Pero ese puerto 25 oculta diversión en su interior. Diversión increíble. Verás, en cualquier momento que hagas telnet al puerto 25 de un ordenador, obtendrás uno de estos dos resultados: una vez durante algún tiempo, un mensaje diciendo "acceso denegado" como cuando atacas un firewall. Pero, más fácilmente verás algo como esto:

              Trying 129.24.96.10...
              Connected to callisto.unm.edu.
              Escape character is `^]ï.
              220 callisto.unm.edu Smail3.1.28.1 #41 ready at Fri, 12 Jul 96 12:17 MDT

Hey, échale un vistazo a eso! No nos pide que hagamos log (identificarnos). Sólo dice…preparado!

Nota que está usando Smail3.1.28.1, un programa usado para redactar y enviar correo electrónico.

Oh dios mío, qué hacemos ahora? Bueno, si realmente quieres parecer sofisticado, la siguiente cosa que tienes que hacer es pedirle a callisto.unm.edu que te diga qué comandos puedes usar. En general, cuando accedes a un ordenador extraño, como mínimo uno de tres comandos te ofrecerán información: "help", "?" o "man". En este caso tecleo:

        help

…y esto es lo que obtengo:

250 Los siguientes comandos SMTP son reconocidos:
250
250 HELO hostname         arranca y te da tu hostname
250 MAIL FROM:[sender access]   comienza una transmisión desde el "enviante"
250 RCPT TO:[recipient address] llama al destinatario para un mensaje
250 VRFY [address]        verifica el reparto de email de una dirección
250 EXPN [address]        expande la dirección de una lista de correo
250 DATA                  comienza a mostrar el texto de un mensaje de correo
250 RSET                  hace un reset, interrumpe la transmisión
250 NOOP                  no hace nada
250 DEBUG [level]         fija el nivel de debugging, por defecto 1
250 HELP                  produce este mensaje de ayuda
250 QUIT                  cierra la conexión SMTP
250
250 La secuencia normal de las acciones para enviar mensajes es fijar la
250 dirección a la que se envía con un comando MAIL FROM, mandar al
250 destinatario todos los comandos RCPT TO que sean requeridos (una
250 dirección por comando) y entonces especificar el texto del mensaje del
250 mensaje después del comando DATA. Pueden utilizarse mensajes
250 múltiples. Para finalizar teclear QUIT. 

Obtener esta lista de comandos es bastante agradable. Te hace sentir realmente bien porque sabes cómo hacer que el ordenador te diga cómo hackearlo. Y eso significa que todo lo que tienes que memorizar es "telnet [hostname] 25" y los comandos de "ayuda". Para el resto, puedes simplemente teclearlos y ver qué ocurre cuando estés conectado. Incluso si tu memoria es tan mala como la mía, te aseguro que puedes aprender y memorizar este hack en sólo media hora. Joder, puede que hasta en medio minuto.

OK, entonces qué hacemos con estos comandos? Sí, lo adivinaste, este es un programa de email muy muy primitivo. Y puedes adivinar cómo utilizarlo sin tener que hacer log? Te preguntas por qué fue ese el punto débil que permitió a Robert Morris reventar Internet?

El puerto 25 mueve el email desde un nodo al siguiente a través de Internet. Automáticamente recoge el email entrante y si ese email no pertenece a nadie que posea un dirección de correo en ese ordenador, lo manda al siguiente ordenador en la red, para dirigirse hacia la persona a la que pertenece esa dirección de correo.

En ocasiones el email irá directamente desde el remitente al destinatario, pero si tú mandas un mensaje a alguien que esté demasiado lejos o si Internet está colapsada por el tráfico en ese momento, puede ser que el email pase a través de varios ordenadores.

Existen millones de ordenadores en Internet que envían correo electrónico. Y tú puedes acceder a casi cualquiera de ellos sin necesidad de un password! Es más, como pronto aprenderás, es fácil obtener las direcciones de estos millones de ordenadores.

Algunos de estos ordenadores tienen un buen sistema de seguridad, dificultando que nos podamos divertir con ellos. Pero otros tienen mucha menos seguridad. Uno de los juegos del hacking es explorar estos ordenadores para encontrar cuales de ellos se adaptan a nuestros deseos.

OK, entonces ahora que estamos en el país del Morris Worm, qué podemos hacer? Bueno, esto es lo que yo hice. (Mis comandos no tenían ningún número delante, lo que sucede es que la respuesta de los ordenadores va precedida de números.)

        helo santa@north.pole.org              
        250 callisto.unm.edu Hello santa@north.pole.org
        mail from: santa@north.pole.org
        250 [santa@north.pole.org] ...Sender Okay
        rcpt to: cmeinel@nmia.com
        250 [cmeinel@nmia.com] ...Recipient Okay
        data
        354 Introduzca el mensaje, termine con "." en una línea solo
        Funciona!!!
        .
        250 Mail aceptado

Lo que ha pasado aquí es que me mandé un email falso a mí mismo. Ahora echemos un vistazo a lo que tengo en mi buzón, mostrando el encabezamiento completo:

Esto es lo que obtuve usando la versión freeware de Eudora:

        X POP3 Rcpt: cmeinel@socrates

Esta línea nos dice que X-POP3 es el programa de mi PSI que recibió mi email, y que mi email entrante es manejado por el ordenador Socrates.

Consejo de Endiablado Ingenio: el email entrante está manejado por el puerto 110. Prueba a hacer telnet por ahí algún día. Pero normalmente POP, el programa que funciona en el 110, no te ofrecerá comandos de ayuda y te echará sin contemplaciones al más mínimo movimiento en falso.

Return Path (camino de retorno): [santa@north.pole.org]

Esta línea de arriba es mi dirección de correo falsa.

        Apparently From: santa@north.pole.org
        Fecha: Fri, 12 Jul 96  12:18 MDT

Pero nota que las líneas de encabezamiento arriba dicen "Apparently-From" ("Aparentemente-Desde"). Esto es importante porque me advierte que es una dirección falsa.

        Apparently To: cmeinel@nmia.com
        X Status:

Funciona!!!

En esto hay una cosa interesante. Diferentes programas de correo mostrarán diferentes encabezamientos. Por ello lo bueno que sea tu correo falso dependerá en parte del programa de correo que sea utilizado para leerlo. Esto es lo que Pine, un programa de email que funciona en sistemas Unix, muestra con el mismo email de antes:

        Return Path: [santa@north.pole.org]
        Recibido:
        from callisto.unm.edu by nmia.com
                with smtp
                (Linux Smail3.1.28.1 #4)
        id m0uemp4 000LFGC; Fri, 12 Jul 96 12:20 MDT

Esto identifica al ordenador en el que usé el programa de envío de correo. También dice qué versión del programa estaba utilizando.

        Apparently From: santa@north.pole.org

Y aquí está el mensaje "Aparentemente-Desde" otra vez. Como vemos tanto Pine como Eudora nos comunican que esto es email falso.

        Recibido: from santa@north.pole.org by callisto.unm.edu with smtp
      (Smail3.1.28.1 #41) id m0uemnL 0000HFC; Fri, 12 Jul 96 12:18 MDT
        Id del mensaje: [m0uemnL 0000HFC@callisto.unm.edu]

Oh, oh! No sólo muestra que probablemente se trate de email falso, también enseña un ID del mensaje! Esto significa que en algún sitio en Callisto habrá un registro de los mensajes-IDïs diciendo quién ha usado el puerto 25 y el programa de correo. Como ves, cada vez que alguien accede al puerto 25 de ese ordenador, su dirección de correo se almacena en el registro junto al ID de su mensaje.

        Fecha: Fri, 12 Jul 96 12:18 MDT
        Apparently From: santa@north.pole.org
        Apparently To: cmeinel@nmia.com

Funciona!!!

Si alguien fuese a usar este programa de email para propósitos viles, ese mensaje-ID sería lo que pondría a los polis o vigilantes detrás suya. Por lo tanto, si quieres falsear el email, será más difícil hacerlo para alguien que esté usando Pine que para otro que utilice la versión freeware de Eudora (puedes sabes qué programa de email usa una persona simplemente mirando el encabezamiento del email).

Pero los programas de email de los puertos 25 de muchos Internet hosts no están tan bien defendidos como callisto.unm.edu. Algunos tienen más seguridad, y algunos otros no tienen sistemas de defensa en absoluto. De hecho, es posible que algunos de ellos incluso ni tengan un registro de los usuarios del puerto 25, haciéndolos un blanco fácil para cualquiera con ganas de diversión (con propósitos perversos o no).

Sólo porque obtengas correo con los encabezamientos en buen estado (o que parezcan correctos) no significa que sea original o verdadero. Necesitas algún sistema de verificación encriptada para estar casi seguro que el email es correcto (es decir, que no ha sido falseado).

Nota-Puedes-Ir-A-La-Cárcel: si estas tramando utilizar email falso (falsificado o con dirección falsa) para cometer un crimen, párate a pensar lo que vas a hacer. Si estás leyendo este documento es porque todavía no sabes lo suficiente como para falsificar el email lo suficientemente bien como para evitar tu arresto.

Aquí tenemos un ejemplo de un programa de email distinto, sendmail. Esto te dará una idea de las pequeñas variaciones con las que te encontrarás cuando intentes este hack.

Este es el comando que yo introduzco:

        telnet ns.Interlink.Net 25

El ordenador responde:

        Trying 198.168.73.8...
        Conectado a NS.INTERLINK.NET.
        Escape character is `^]ï.
        220 InterLink.NET Sendmail AIX 3.2/UCB 5.64/4.03 ready at Fri 12
        Jul 1996 15:45

Entonces yo tecleo:

        helo santa@north.pole.org

Y el ordenador responde:

        250 InterLink.NET Hello santa@north.pole.org  (plato.nmia.com)

Oh, oh! Esta versión de sendmail no es tonta del todo! Mira como pone "(plato.nmia.com)" (el ordenador que yo estaba usando para este hack) sólo para hacerme saber que sabe el ordenador desde el que estoy haciendo telnet? Pero qué coño, todos los Internet hosts saben esa clase de información. Mandaré correo falso de algún modo. De nuevo, lo que yo escribo no tiene números delante, mientras que las respuestas del ordenador están precedidas por el número 250:

        mail from: santa@north.pole.com
        250 santa@north.pole.com... Sender is valid (el remitente es válido)
        rcpt to: cmeinel@nmia.com
        250 cmeinel@nmia.com... Recipient is valid (destinatario válido)
        data
        354 Introduzca el mensaje. Termine con el carácter "." en una línea solo
        Funciona!   <---------(N del T: ese es el texto del mensaje)
        .
        250 Ok
        quit
        221 InterLink.NET: cerrando conexión.

OK, qué clase de email generó ese ordenador? Esto es lo que obtuve usando Pine:

        Return Path: [santa@north.pole.org]
        Recibido:
        desde InterLink.NET by nmia.com
                with smtp
                (Linux Smail3.1.28.1 #4)
        id m0ueo7t 000LEKC; Fri, 12 jul 96 13:43 MDT
        Recibido: desde plato.nmia.com by InterLink.NET (AIX 3.2/UCB 5.64/4.03)
          id AA23900; Fri 12 Jul 1996 15:43:20     0400

Uups. Aquí el ordenador de InterLink.NET ha revelado el ordenador en el que yo estaba cuando hice telnet por su puerto 25. Sin embargo, mucha gente usa ese ordenador que funciona de Internet host.

        Fecha: Fri 12 Jul 1996  15:43:20    0400
        Desde: santa@north.pole.org
        Mensaje-ID: <9607121943.AAA23900@InterLink.NET>
        Apparently To: cmeinel@nmia.com

Funciona!

OK, aquí no dice "Apparently-From" por ello ahora sé que el ordenador ns.interlink.Net es uno bastante seguro para poder enviar mis mensajes de correo falsificado desde él (digamos como intermediario, para entendernos). Un experimentado aficionado del email sabría por la línea "Recibido:…" si se trata de correo falsificado.

Voy a intentar con otro ordenador. La Universidad de california en Berkeley es famosa por su investigación en ciencias de la computación. Me pregunto… cómo serán sus hosts? Habiendo hallado primero la dirección numérica de Internet de una de estas máquinas (su IP), tecleo el comando:

        telnet 128.32.152.164 25

Y te responde:

        Trying 128.32.152.164...
        Conectado a 128.32.152.164.
        Escape character is `^]ï.
        220 remarque.berkeley.edu ESMTP Sendmail 8.7.3/1.31 ready at Thu, 11 Jul 1996  12

Ahora tecleo:

             
        help

Y su respuesta es:

        214 Esta es la versión de Sendmail 8.7.3
        214 Comandos:
        214 HELO     EHLO     MAIL     RCPT     DATA
        214 RSET     NOOP     QUIT     HELP     VRFY
        214 EXPN     VERB
        214 Para más información use "HELP [asunto]".
        214 Para informar sobre bugs existentes en la implementación mandar email a:
        214         sendmail@CS.Berkeley.EDU
        214 Para información local mandar email al Postmaster de tu site.
        214 Fin de la información HELP

Oh, tío, un programa de sendmail ligeramente diferente! Me pregunto qué más me dirá sobre estos comandos?

        HELP mail
        214 MAIL FROM [remitente]
        214 Especifica el remitente
        214 Fin de la información HELP

Gran j***da cosa esta! Bueno, veamos qué hace este ordenador ante el correo falsificado (ahora sabemos el nombre del ordenador, "remarque").

        MAIL FROM: santa@north.pole.org
        250 santa@north.pole.org... Sender ok (remitente correcto)

Heeeyyyyy…. esto es interesante… No dije "helo" y este programa de sendmail no me echo a la calle! Me pregunto qué significa eso…

        RCPT TO: cmeinel@techbroker.com
        250 Recipient ok (destinatario correcto)
        DATA
        354 Introduzca el mensaje, termine con un "." solo en una línea
        Esto es correo falsificado en un ordenador de Berkeley para el que 
        no tengo un password.
        .
        250 MAA23472 Mensaje aceptado para ser enviado
        quit
        221 remarque.berkeley.edu cerrando conexión.

Ahora usamos Pine para ver qué aparece en los encabezamientos:

        Return Path: [santa@north.pole.org]
        Recibido:
        from  nmia.com by nmia.com
                with smtp
                (Linux Sendmail3.1.28.1 #4)
        id m0ue RnW 000LGiC; Thu, 11 Jul 96 13:53 MDT
        Recibido:
        from remarque.berkeley.edu by nmia.com
                with smtp
                (Linux Sendmail3.1.28.1 #4)
        id m0ue RnV 000LGhC; Thu, 11 Jul 96 13:53 MDT
        Apparently To: [cmeinel@techbroker.com]
        Recibido: from merde.dis.org by remarque.berkeley.edu   (8.7.3/1.31)
        id MAA23472; Thu , 11 jul 1996 12:49:56   0700 (PDT)

Mira los tres mensajes "Recibido:". Mi ordenador PSI recibió este email no directamente de Remarque.berkeley.edu sino de merde.dis.com, quien a su vez lo recibió de Remarque.

Hey, yo sé quién es el dueño de merde.dis.org! Berkeley envió el email falso a través del host del ordenador del famoso experto en seguridad Pete Shipley! Nota: el nombre "merde" es una broma, así como "dis.org".

Ahora veamos el aspecto del email enviado desde Remarque. Usemos Pine otra vez:

        Fecha: Thu, 11 Jul 1996 12:49:56  0700 (PDT)
        Desde: santa@north.pole.org
        Mensaje-ID: <199607111949.MAA23472@remarque.berkeley.edu>
        Esto es correo falsificado en un ordenador de Berkeley para el que 
        no tengo password

Hey, esto es bastante guay. No nos avisa de que la dirección de Santa es falsa! Todavía mejor, guarda en secreto el nombre del ordenador original (del mío jejeje): plato.nmia.com. De este modo remarque.berkeley.edu fue realmente un buen ordenador desde el que enviar correo falso. (Nota: la última vez que probé, ya habían arreglado este agujero en Remarque, o sea que no te molestes en hacer telnet allí.)

Pero no todos los programas de sendmail son tan fáciles para falsear email. Observa el email que creé desde atropos.c2.org!

        telnet  atropos.c2.org  25
        Trying 140.174.185.14...
        Conectado a atropos.c2.org.
        Escape character is `^]ï.
        220 atropos.c2.org  ESMTP Sendmail 8.7.4/CSUA ready at Fri 12 Jul 96 15:41:33
        help
        502 Sendmail 8.7.4   Comando HELP no implementado

Caramba!, estás cachondo hoy, eh?…. Qué coño, tiremos para alante de algún modo…

     
        helo santa@north.pole.org
        501 Nombre de dominio no válido

Hey, qué pasa contigo, cacho perro? A otros programas de sendmail no les importa el nombre que use con "helo". OK, OK, te daré un nombre de dominio válido, pero no un nombre de usuario válido, hohoho!

        helo santa@unm.edu
        250 atropos.c2.org Hello cmeinel@plato.nmia.com {198.59.166.165} encantado de 
                     conocerte.

Muuuyyyy divertido, tío. Apostaría a que seguro que estás encantado de conocerme. Por qué #$%& me pides un nombre de dominio válido si sabías ya quién era?

        mail from: santa@north.pole.org
        250 santa@north.pole.org... Sender ok
        rcpt to: cmeinel@nmia.com
        250 Recipient ok
        data
        354 Introduzca el texto del mensaje, termine con "." solo en una línea
        Oh, mierda!
        .
        250 PAA13437 Mensaje aceptado para ser enviado
        quit
        221 atropos.c2.org cerrando conexión.

OK, qué clase de email habrá generado ese repugnante programa de sendmail? Voy corriendo a Pine y echo un vistazo:

        Return Path: [santa@north.pole.com]

Bueno, qué bonito que me deje usar mi dirección falsa.

        Recibido:
        from atropos.c2.org by nmia.com
                with smtp
                (Linux Sendmail3.1.28.1 #4)
        id m0ueqxh 000LD9C; fri 12 Jul 1996 16:45 MDT
        Apparently To: [cmeinel@nmia.com]
        Recibido: desde santa.unm.edu (cmeinel@plato.nmia.com [198.59.166.165])

Oh, verdaderamente especial! No sólo el ordenador artropos.c2.org revela mi verdadera identidad, también revela lo de santa.unm.edu. Mierda… Me servirá de lección.

        by artropos.c2.org (8.7.4/CSUA) with SMTP id PAA13437 for
        cmeinel@nmia.com;
        Fecha: Fri, 12 Jul 1996 15:44:37   0700 (PDT)
        Desde: santa@north.pole.com
        Mensaje-ID: <199607122244.PAA13437@atropos.c2.org>