Mostrando entradas con la etiqueta Google. Mostrar todas las entradas
Mostrando entradas con la etiqueta Google. Mostrar todas las entradas

1 de mayo de 2011

SPF v1 en Gmail ¿como funciona?


Un día mirando un poco el buzón de SPAM de una cuenta de Gmail me encontré con un correo de phishing de Twitter el cual Gmail, además de haberlo etiquetado como SPAM, le había metido una alerta, muy resaltada, avisando de que el email no era legítimo del emisor indicado.

Mensaje clasificado como SPAM con aviso de un remitente no legítimo

A raíz de esto me empezó a picar la curiosidad y decidí ver las cabeceras de ese email.

Además me fui al link informativo ("Learn more") para ver que me contaban más acerca de este aviso (echarle un ojo al link si queréis ver que dice gmail acerca de todo esto).

Todo esto me hizo recordar a un conjunto de post que escribió el Maligno, los cuales me leí con mucho mimo para entender bien lo que explicaba y ahora que los menciono aquí aprovecho para darle las gracias por escribirlos; en ellos explicaba las sutiles diferencias entre SPF y SenderID y como eran interpretados por los servicios de correo de Gmail y Hotmail.

Maligno nos indicaba como conclusiones de sus pruebas que Gmail, las cuales cito de nuevo a continuación:
  • PRIMERO: Gmail aplica From: y no Sender:.
  • SEGUNDO: No elimina el correo aún cuando lee la política del dominio que él ha decidido.
  • TERCERO: No muestra ninguna alerta al usuario.

Claro está que la conclusiones que él sacó eran totalmente ciertas para la prueba que realizó, pero después de haber visto el correo comentado arriba ya no tengo claro si siempre es así o no.

En el caso de este correo phisheado de Twitter, parece que:
  1. Gmail no siempre coge el campo From: para verificar el resultado de SPF (Sender Policy Framework); en este caso deduzco que ha cogido el campo Return-Path: o a saber el que durante la transmisión del email a los servidores de Gmail.
  2. A veces si que muestra alertas.

A parte de estas evidencias, me dedique a revisar la política SPF del dominio indicado en la dirección presente en el campo Return-Path: (pcavote.com). Revisando dicha política, yo no logré identificar que la IP [85.92.129.132] que envió el correo, que correspondía al servidor reseller06.pcextreme.nl, fuese un servidor reconocido del domino pcavote.com; aunque la política de dicho dominio es SOFTFAIL (~), es decir que el receptor debería dejar pasar los correos recibidos de servidores no reconocidos por la política SPF, si que es cierto que puede clarificarlos de manera especial para alertar al usuario, que parece que es lo que ha hecho Gmail al etiquetarlo como SPAM, pero realmente si revisamos dichas cabeceras, no es así, ya que el resultado del SPF es PASS, y según is observaciones (ATENCIÓN puedo haberme equivocado) el emisor no está reconocido por la política así que el resultado tendría que ser SOFTFAIL.

A continuación os dejo la serie de consultas DNS para lograr obtener todas las IPs que estarían autorizadas para enviar correos bajo el dominio pcavote.com:

> server 8.8.8.8
Servidor predeterminado:  google-public-dns-a.google.com
Address:  8.8.8.8

> set type=txt
> pcavote.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

pcavote.com     text =
        "v=spf1"
        "mx"
        "a:mailhost.sparkred.com"
        "include:sparkred.com"
        "~all"

> set type=mx
> pcavote.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

pcavote.com     MX preference = 10, mail exchanger = dmx1.bfi0.com

>set type=a

>dmx1.bfi0.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

Nombre:  dmx1.bfi0.com
Address:  208.70.143.4

> set type=a
> mailhost.sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

Nombre:  mailhost.sparkred.com
Address:  67.228.250.41

> set type=txt
> sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

sparkred.com    text =
        "v=spf1"
        "a"
        "mx"
        "a:mailhost.sparkred.com"
        "~all"

> set type=a
> sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

Nombre:  sparkred.com
Address:  75.126.129.131

> set type=txt
> sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

sparkred.com    text =
        "v=spf1"
        "a"
        "mx"
        "a:mailhost.sparkred.com"
        "~all"

> sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

sparkred.com    MX preference = 10, mail exchanger = webmail.sparkred.com

> set type=a
> webmail.sparkred.com
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

Nombre:  webmail.sparkred.com
Address:  174.37.50.21

Y el resultado de IPs obtenido de las consultas anteriores:



En este punto ya no entendía nada, es decir, o yo no entiendo como funciona bien el SPF y por lo tanto algo se me escapa, o Gmail no implementa el SPF como se índica en el estándar (RFC 4408); debido a esto no me quedé tranquilo y me fui a buscar lugares donde pudiese hacer alguna prueba de concepto más, como hizo el Maligno en su día.

Así que me busque una bonita web que me dejase enviar cosas a los colegas y envié un email al Gmail indicando que era un pavo de La Caixa (lacaixa.es), es decir utilicé el mismo dominio que utilizó el Maligno en sus pruebas.

Envío de email a través del formulario de “enviar a un amigo” de una web


Recepción en Gmail del email enviado desde el formulario web “envía a un amgio”

Y el resultado obtenido es el mismo, se colo en buzón de entrada sin ningún tipo de alerta y con un resultado de SPF a FAIL; aunque esta vez la cabecera del correo no lleva ni el campo Sender: ni X-Sender:, pero sí Retun-Path:.


Cabeceras del email recibido enviado desde el formulario web de “envía a un amigo”

Aún después de todo esto no me quedé satisfecho y decidí probar el mismo ejemplo sobre otra web de las que también permite enviar cosas a colegas y ver de nuevo que pasaba.

Recepción en Gmail del email enviado desde otro formulario web “envía a un amgio”

El resultado obtenido con esta última prueba fue sutilmente distinto, se coló en el buzón de entrada, pero el resultado del SPF fue PASS, tampoco tenía campos Sender: ni X-Sender:, pero si que tenía también el campo Return-Path:, pero no con el valor de la cuenta de correo del supuesto emisor, sino con una cuenta del dominio que envía los correos introducidos en el formulario web, de ahí a que el resultado del SPF fuese PASS, ya que este dominio no tiene una política SPF definida.

Cabeceras del email recibido enviado desde otro formulario web de “envía a un amigo”

Y las consultas que hice sobre el dominio voc-servicios2.sarenet.es fueron:

> set type=a
> voc-servicios2.sarenet.es
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8
Respuesta no autoritativa:

Nombre:  voc-servicios2.sarenet.es
Address:  194.30.33.176

> set type=txt
> voc-servicios2.sarenet.es
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8

sarenet.es
        primary name server = ns1.sarenet.es
        responsible mail addr = dnsmaster.sarenet.es
        serial  = 2011032204
        refresh = 86400 (1 day)
        retry   = 7200 (2 hours)
        expire  = 2592000 (30 days)
        default TTL = 300 (5 mins)

> set type=mx
> voc-servicios2.sarenet.es
Servidor:  google-public-dns-a.google.com
Address:  8.8.8.8

sarenet.es
        primary name server = ns1.sarenet.es
        responsible mail addr = dnsmaster.sarenet.es
        serial  = 2011032204
        refresh = 86400 (1 day)
        retry   = 7200 (2 hours)
        expire  = 2592000 (30 days)
        default TTL = 300 (5 mins)

De todo esto puedo sacar algunas conclusiones, además de las que ya sacó el Maligno, como que Gmail no garantiza un aviso aunque el resultado SPF de los emails recibos sea FAIL.
  1. Gmail utiliza el dominio del campo Return-Path: para calcular el resultado SPF.
    He podido observar que en varios emails que el campo siempre está presente, o con una dirección (parte local, o del dominio o ambas) distinta del campo From: o sino con el mismo valor.
  2. Si el valor del campo Return-Path: difiere del campo From: entonces aparece en los detalles de la cabecera del email un campo denominado mailed-by con el dominio de la dirección presente en el campo Return-Path:.

Hasta la próxima enfermos.


6 de abril de 2011

Si eres un banco, cuida tu SPF


El otro día pedí una información, por email, de los servicios que ofrece una de las nuevas entidades bancarias que están apareciendo con el revuelo económico que últimamente está habiendo con las cajas de ahorro.

Aunque lo que realmente pedí fue que me llamasen, posterior conversación telefónica me enviaron un email con todo lo que me habían comentado por teléfono, junto con un enlace donde darse de alta como cliente.


Parte del cuerpo del email de bancacivica.es con el enlace al formulario de alta de nuevos clientes

Debido a todo lo que leo, escucho, etc. de todo lo que pasa con la seguridad del mundo virtual y después de leer informes de claramente indican que zapato calzan las organizaciones criminales que se encuentran detrás, a uno le entra la paranoia constante de sino te están intentando timar además de tener la inseguridad de que cada vez que inicio sesión en el la extranet de una entidad financiera no te estarán robando los credenciales bancarios para que puedan hacer una mejor administración e inversión de la que tu haces con tus ahorros.

Bueno, debido a que al leer el correo entré en estado paranoico, me aseguré de verificar un poco las cabeceras del email recibido para ver de donde viene y por donde ha pasado (que me refiero a lo que ha quedado registrado).


Cabeceras del email recibido de bancacivica.es con el enlace al formulario de alta de nuevos clientes

Todo me parecía normal si no fuese porque el resultado del SPF había dado error, y como no, Gmail no había notificado mediante algún aviso de ello.


Cabecera del email bancacivica.es sin aviso alguno del fallo SPF

El error que se había producido era un “temperror” debido a un timeout en la consulta DNS para la obtención del valor del registro TXT del dominio.
Así que no me quede muy tranquilo viendo esto, por lo entonces un simple fallo en la consulta puede originar que no se verifique el filtro SPF, dando un “temperror” y el mail se cuele sin aviso alguno.
Lo primero que pensé es que debía haber sido un error esporádico, pero no fue así ya que como tenía otro correo recibido, desde la misma dirección de envío, anterior a este, me fui a ver las cabeceras de este y … ¡sorpresa! Se había producido el mismos error.

“Pues vaya, vamos a ver que pasa con el registro SPF de bancacivica.es”; así que me fui ha consultar el registro TXT del dominio y ver si podía sacar algo en claro.

Valor del registro TXT del dominio consultado en varios servidores DNS

Como podéis ver en la captura anterior al intentar conseguir el valor del registro TXT del dominio desde el servidor DNS de Google, se origina un error de timeout, así que de ahí que se explique el resultado que obtiene los servidores de Gmail. No obstante también podéis ver el resultado de la consulta sobre otros dos servidores DNS, el de Terra y el OpenDNS, los cuales no generan error y nos devuelven el resultado del registro.

Claramente podemos ver que tienen una sintaxis incorrecta: ~all- (el guión final no debería estar).

Verificación de la sintaxis del registro TXT en Kitterman

Bueno son cosas que pasan, todos nos equivocamos y muchas veces a la hora de teclear se nos van los dedos, pero claramente podemos ver que después de aplicar el filtro nadie se ha preocupado de verificarlo.

Con todo esto acabo de aprender dos cosas:
  1. Gmail no me dará ningún aviso si hay un error de timeout sobre la verificación SPF.
  2. Si me toca crear algún filtro SPF en futuro, acordarme que luego lo verifique (sobre todo si es para un sector donde la autenticidad de los emails es importante, como una entidad bancaria).


Hasta la próxima enfermos.

21 de marzo de 2010

Reencuentro con Eduard Jodas

Yo conocí a Edu, en mi primer trabajo después finalizar mis estudios, había trabajado ya en los dos últimos años pero siempre a tiempo completo y no en un equipo de trabajo dedicado al desarrollo de aplicaciones concretamente.

Edu no era de la empresa para la que yo empecé a trabajar, era de una consultora de software externa que estaba subcontratada para realizar el desarrollo de varias aplicaciones web internas.

Del equipo de personas de su empresa, concretamente 3 miembros, él más o menos el jefecillo, bueno básicamente gestionaba a sus compañeros y se encargaba de hacer lo que en España tocaría hacer más, la arquitectura del software.

Antes de empezar con el gran proyecto, denominado Pirámide, nombre que recibía la aplicación web que se iba a desarrollar, heredando lo de la aplicación inicial hecha en MS Access, si he dicho Access aunque parezca imposible que el paso de una aplicación de Access a web llevó los 9 meses planificados y un poco más, a Edu le encargaron montar junto con algún colega más que ya no estaba por allí el entorno de desarrollo, unos cuantos servidores WAS, un CVS, etc...

El proyecto empezó y pasó por sus diferentes fases, toma de requerimientos, validación de los requerimientos, diseño y maquetación de las pantallas (esto me tocó a mí y por eso y algo más que no viene a cuento no llegué a los dos años en la empresa), hasta que se acercaba la fase de programación la cual fue precedida por la fase de diseño de la arquitectura del software y esa fase es la que lideró Edu con todo su potencial y conocimientos que tenía; esto es lo que me demostró que en España también hay gente que le gusta hacer las cosas bien hechas y que las defiende y esta vez su defensa permitir no suprimir esta importante fase.

Más tarde el proyecto finalizó y todos fuimos cayendo ha formar parte de otros proyectos o de otras tareas relacionadas con la puesta en producción de la famosa Pirámide. Luego casi a los dos años de mi entrada, yo me largué de buenas maneras, aunque la empresa se lo tomó bastante mal y Edu se iba a largar en breve, ya que estaba en el proceso de selección para entrar a currar en Google inc., que aunque no era seguro, yo lo estaba que lo iba a conseguir.

Ahora después de no volverlo a ver desde que me largué de la empresa, lo he vuelto a ver en el mismo Zurich, aprovechando un visita que he hecho a otro amigo que lleva por aquí una temporada y a raíz de esto he decido hacerle algunas preguntas para saber más su trayectoria pasada, presente y futura, así que aquí os las dejo junto con sus respuestas.
  1. Ivan: ¿cómo empezaste tu andadura por el mundo de los bits?

    Edu: Empecé jugando al clásico juego que eran dos rayas uno a cada lado de la pantalla y que se trataba de devolver un punto que hacía de bola, es decir como si se tratara de jugar al tenis pero sin red, totalmente dos dimensiones, no recuerdo el nombre concreto.

    Ivan: Yo indico, creo que se llamaba Pong.

    Edu: Luego más tarde mi padre nos compró a mí y a mi hermana un Spectrum 48kb el cual nos pasábamos horas y horas, haciendo turnos, copiando código que aparecía en unas revistas técnicas, cuyo nombre no recuerdo para luego ejecutarlo y ver que sucedía, aunque la mayoría de veces no obteníamos nada porque nos habíamos equivocado en algún lugar y uno podía morir en el intento de encontrar el error.

  2. Ivan: ¿Cómo continuó tu carrera profesional?

    Edu: Continué haciendo cursos de todo, desde ofimática hasta programación en un lenguaje que se llamaba Q Basic y como me gustaba esto de jugar con los ordenadores, en el momento de finalizar el instituto me metí a hacer Ingeniería Informática, sin concretamente saber que iba a ser mi vocación.

  3. Ivan: ¿Te imaginabas acabar en la considerada la mejor empresa del mundo donde currar?

    Edu: Que va, ni si quiera se me pasaba por la cabeza que acabaría currando fuera de España.

  4. Ivan: ¿Se vive bien en Zurich? Y ¿currando en Google?

    Edu: En Zurich, no sé vive mal, si lo que te gusta es la naturaleza, pero si te gustan las grandes metrópolis donde lo que buscas son que haya grandes eventos, ferias, etc, entonces no es tu lugar. Lo que si es verdad es que el verano es fenomenal para hacer las actividades de montaña pero en invierno, es bastante más chungo debido a frío y si tu pasión no es el esquí, no aprovechas mucho la naturaleza durante esta estación.
    Lo de currar en Google, por supuesto, me apasiona.

  5. Ivan: Ahora que estas en Google ¿te ves el resto de tu vida aquí, en Zurich, junto a Google?

    Edu: ¡No!, no me puedo imaginar pasar toda mi vida en un mismo lugar, me considero todavía joven y con mucha vida por delante para pensar en pasar toda mi vida en lugar fijo.

  6. Ivan: ¿Utilizas Bing o Yahoo?

    Edu: Jajajajaja, ninguno de los dos. No obstante probé Bind al principio cuando apareció, pero no me aportó nada nuevo y me he quedado con Google, ya que lo tengo todo con él y prefiero no cambiar por algo que no veo que me aporte mejoras.

  7. Ivan: ¿Que sistema operativo utilizas? ¿Google OS?

    Edu: En casa utilizo Windows Vista 64 Bits, pero no lo recomiendo, recomiendo mejor usar Windows XP o Windows 7.

    Ivan: ¿Y en Google?

    Edu: En Google Linux y en el portátil Mac OS, pero como también realizamos desarrollo para Windows, también lo utilizamos, todo depende del proyecto en el que estés.

    Ivan: Pero ¿Windows sobre máquinas virtuales?

    Edu: No necesariamente, depende de las necesidades que se tengan, hay personas que con una máquina virtual ya les es suficiente y otras que necesitarán más.

  8. Ivan: ¿Ya te has convertido en un GURU del J2EE?

    Edu: Que va, ahora se menos que cuando estaba en MGS.

  9. Ivan: ¿Eres friki?

    Edu: Si, por supuesto.

  10. Ivan: Tus viejos colegas y familiares más cercanos ¿se han puesto celosos al abandonarlos?

    Edu: Si y no. Algunos conocidos han tenido ocasión de probar de entrar en Google, e incluso siendo mejores que yo, por H o por B, no han querido intentarlo, así que estar aquí para algunos no quiere decir estar en un lugar ideal.

  11. Ivan: ¿Que echas de menos de España? ¿de Cataluña? ¿de Barcelona?

    Edu: De España el clima, de Cataluña el mar y la cultura y de Barcelona la familia, los colegas y el mar.

  12. Ivan: ¿Las suizas te ponen más que lo “made in Spain”?

    Edu: A mi me gustan todas, aquí te parecen más exóticas pero luego te acabas acostumbrando y te parecen normales.

  13. Ivan: En Suiza ¿te toman igual el pelo con el cuento de la crisis como lo hacen en España?

    Edu: Realmente creo que hay crisis en España, con el índice de paro que hay no creo que todo sea cuento.

    Ivan: Tienes razón, pero yo creo que hay algunos que se aprovechan de la situación.

    Edu: Aquí no se aprovechan o al menos en mi caso, a mí por ejemplo me han bajado el alquiler sin decir nada, solo por el simple hecho que debido al estado de la economía actual me han dicho que el alquiler baja.
    Y en Google, sin problema, es como vivir en una burbuja anticrisis.

  14. Ivan: En Suiza ¿se tiene la misma mierda de consideración que en España sobre el valor que genera la inversión en tecnología?

    Edu: No, aquí se tiene más conciencia en la importancia de la inversión en tecnología para mejorar y/o optimizar la productividad de las empresas; en cambio en España los técnicos y las inversiones en tecnología se consideran un mal necesario, por lo que siempre van a por el mínimo.

  15. Ivan: Y para finalizar voy a pedirte que me reveles el gran secreto ¿que tengo que hacer para acabar currando en Google aunque sea en la cantina de camarero?

    Edu: Ser culturalmente muy abierto y tener experiencia en haber estado en otros países y en contacto con otras culturas. No tener esto es un gran handicap.

    Ivan: Y el saber Inglés otro, ¿no?

    Edu: Si, es otro gran handicap.

Espero que la hayáis disfrutado igual que yo la he disfrutado haciéndose la.

Hasta la próxima enfermos.