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>