domingo, enero 09, 2011

DKIM, Domainkeys, Identified Internet Mail y el Spam (1 de 3)

***********************************************************************************************
- DKIM, Domainkeys, Identified Internet Mail y el Spam (1 de 3)
- DKIM, Domainkeys, Identified Internet Mail y el Spam (2 de 3)
- DKIM, Domainkeys, Identified Internet Mail y el Spam (3 de 3)
***********************************************************************************************

DKIM - Domakin Keys Identified Mail - es la unión de dos protocolos anteriores, conocidos como Domainkeys (catalagado ya como histórico) e Identified Internet Mail (del que cogió algunos aspectos) y su objetivo principal es garantizar que un mensaje en concreto procede de un determinado dominio. La garantía de procedencia desde un dominio en concreto se realiza mediante el uso de firmas digitales que se añaden a los mensajes de correo electrónico que son enviados desde los servidores legítimos de ese dominio.

Para que esta idea funcione, cuando un mensaje va a ser enviado desde un determinado servidor de correo, éste, es decir, el servidor de correo saliente, firma el mensaje y añade al correo electrónico una cabecera DKIM que lleva la firma resumen del mensaje, el algoritmo de firma utilizado y el nombre de la clave que se ha utilizado para firmar este mensaje. Será el servidor del correo entrante el que, una vez detectada la cabecera DKIM, leerá el nombre de la clave que se ha utilizado para firmar y se conectará al servidor DNS del dominio firmante para recuperar la clave pública asociada.

Para garantizar que ese es el correo que se envió desde ese servidor de correo se comprobará que la firma es correcta, garantizando que el mensaje viene de ese dominio.

Estos son los principios básicos de DKIM, cuya primera versión es de 2007 y la última revisión del estándar se ha publicado en Agosto de 2009, y , al igual que SPF y SenderID tiene muchas luces y sombras a sus espaldas.

Abuso de DKIM con procesos de re-envío

Google ha anunciado que añade DKIM a Google Apps para que pueda ayudar a la reducción del Spam, y la realidad es que esto, a pesar de que da más información y esos siempre es bueno a la hora de detectar un mensaje de spam, hay que tomarlo con mucho cuidado.

La primero y más evidente es que, si la firma del mensaje va incluida en el propio mensaje, es evidente que no va todo el mensaje firmado. Así, DKIM firma solo mensaje en sí y no todo el sobre, con lo que la protección de integridad del mensaje está sujeta solo al contenido del mismo. Fuera de esa firma de integridad se quedan, entre otros, campos como los destinatarios del mensaje.

Conocido esto, imaginemos que un atacante hace una lista de correo en cualquier servidor de listas y mete en ella todas las direcciones de correo a las que quiere spammear. Ahora utiliza un dominio legítimo que esté firmado con DKIM, como por ejemplo Yahoo! o Gmail y envía, desde ese correo el mensaje a la lista de correo. Cuando el bouncer reenvíe el mensaje este seguirá con la firma DKIM intacta y aparecerá firmado por el destinatario.

Este ejemplo de uso con una lista de correo se puede sustituir por cualquier programa automático o botnet, ya que con tener el mensaje y la firma que pone Gmail a ese mensaje, el atacante puede enviárselo a sí mismo y reenviarlo a cualquier otro destinatario.

Correos firmados por DKIM

Aunque no sea una bala de plata para acabar con el spam, la idea es que una vez que sepa que el mensaje viene en origen ese dominio deberá tener un tratamiento especial con dicho mensaje, ya sea mostrando una marca de garantía al usuario o no metiéndolo nunca en la bandeja de spam, o lo que decida la política del servidor de correo entrante.


Figura 1:Correo firmado por Yahoo



Figura 2: Cabecera del mensaje de correo de Yahoo con firmas DKIM y DomainKeys

Como se puede ver Yahoo trae en el mensaje la cabecera de firma Domainkeys y la de DKIM, es decir, las dos por si acaso el servidor reconoce una u otra. En ambas cabeceras se especifica que se ha utilizado la misma clave, que está en este registro del DNS.


Figura 3: Clave pública de firma de Yahoo

Tratamiento especial en los filtros antispam a los mensajes firmados DKIM

Al poderser abusar esa firma mediante procesos de reenvío, la pregunta que muchos se hacen es... ¿se deberá dar un tratamiento especial en los filtros antispam si los correos vienen firmados? Si se hiciera eso, se estaría tendiendo una alfombra roja a los spammers en los servidores de correo, por lo que nadie se atreve a hacer esa prioridad al correo firmado por DKIM.

No obstante, tenemos la garantía de que el mensaje original salió como ha llegado y desde un origen concreto, con lo que se podría localizar al spammer en el dominio de origen, por lo que tal vez sería posible hacer una operación de búsqueda y bloqueo de ese spammer en el dominio.

***********************************************************************************************
- DKIM, Domainkeys, Identified Internet Mail y el Spam (1 de 3)
- DKIM, Domainkeys, Identified Internet Mail y el Spam (2 de 3)
- DKIM, Domainkeys, Identified Internet Mail y el Spam (3 de 3)
***********************************************************************************************

3 comentarios:

Jonas dijo...

En principio, DKIM puede ayudar a prevenir, sobre todo, el phishing mediante correos. Paypal ya lo está haciendo y (como es habitual) los que vienen por detrás son los bancos.

Si bien se podría abusar del reenvío, como dices, si lo que quiero prevenir es que phisher@ejemplo.com envíe un correo suplantando ser mi banco, en las cabeceras la firma DKIM será de "ejemplo.com" u otro dominio que él tenga que firme con DKIM, pero no tendría (salvo que fuese un empleado interno malicioso) la firma DKIM de mibanco.com

Maligno dijo...

@Jonas, ... ya veremos... }:))

Anónimo dijo...

También serviría de mucho tener bien configurado el spf. Pero parece que no están todos por la labor.

google.com text = "v=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"

Dar un soft fail no sirve de nada.

Google verifica el spf, en las cabeceras se puede ver el resultado. Pero, aunque de un fail, acepta el correo. Aunque el dominio remitente este como -all y la ip de envío no sea valida.

Se basan en otras cosas para identificar el spam.

Entradas populares