SPF y DKIM: Principales tecnologías para proteger nuestro correo de Spam y Phishing

El spam y el Phishing son dos males muy comunes y que afectan como ningún otro a nuestra bandeja de correo electrónico. A través de nuestro email podemos recibir ciberataques que emplean la suplantación de identidad y la ingeniería social.

De hecho los recibimos de forma constante y, si no somos muy conscientes de ello, es porque gracias a determinadas tecnologías y filtros es posible apartar hasta el 95% de estos correos en tránsito o una vez llega, moviéndolos a la carpeta de Spam.

Es clásico recibir ciberataques con adjuntos maliciosos, por ejemplo archivos de Office o amenazas como el ransomware.

En este artículo repasaré como funcionan dos de las principales tecnologías para proteger el email (y evitar caer en listas negras, de paso) de forma breve, además de indicar la forma en que se puede consultar las cabeceras del correo.

¿Qué es SPF?

Esta es su definición según la Wikipedia:

SPF (Convenio de Remitentes, del inglés Sender Policy Framework) es una protección contra la falsificación de direcciones en el envío de correo electrónico. Identifica, a través de los registros de nombres de dominio (DNS), a los servidores de correo SMTP autorizados para el transporte de los mensajes.

Estamos ante una de las varias tecnologías que nos permiten asegurar la legitimidad de los mensajes recibidos/enviados a través de email, siendo SPF la más antigua.

Un ejemplo de como configurar SPF para nuestro dominio y DNS sería, por ejemplo añadir un registro como el siguiente:

 midominio.com. IN TXT "v=spf1 mx ptr ~all"

Si el cliente del destinatario consigue ver una concordancia entre la dirección del servidor del remitente y los registros publicados en su DNS, es capaz de establecer la autenticidad teórica del mismo.

¿Qué es DKIM?

Asimismo, esta es la definición para DKIM o Domain keys Identified Mail que nos ofrece la Wikipedia:

[…]es un mecanismo de autenticación de correo electrónico que permite a una organización responsabilizarse del envío de un mensaje, de manera que éste pueda ser validado por un destinatario. Dicha organización puede ser una fuente directa del mensaje, como el autor, el servidor encargado de gestionar el correo de ese dominio, o un servidor intermedio

El funcionamiento es sencillo: DKIM añade una cabecera llamada DKIM-Signature o “firma” que no es otra cosa que una firma digital del contenido, tanto las cabeceras como el cuerpo del mensaje. Este medio emplea autenticación mediante una combinación de firma criptográfica SHA-256 y criptografía asimétrica RSA. Todo se codifica con Base64.

Igual que sucede con SPF, el servidor SMTP trasmitirá el valor de seguridad mediante una consulta al DNS, se trata del campo “_domainkey” y su contenido. La respuesta siempre deberá incluir la clave pública y coincidir con el valor esperado para considerar que no se ha alterado el contenido del mensaje.

¿Cómo consultar las cabeceras de los emails?

Las cabeceras de correo electrónico o email headers contienen todos los valores relevantes sobre la identidad, el tipo de contenido del mensaje y las direcciones de envío y paso, entre otras cosas.

La mayoría de clientes de correo permiten el acceso a message header, de los cuales he seleccionado los más utilizados para indicar como se pueden consultar.

Ver cabeceras de correo en Gmail

  • Inicia sesión en tu cuenta de Gmail y abre el mensaje deseado.
  • Haz clic sobre el botón con 3 puntos verticales y selecciona la opción Mostrar original.

Debajo encontrarás información similar a la siguiente:

Return-path: sender@senderdomain.tld
Delivery-date: Wed, 13 Apr 2011 00:31:13 +0200
(3)Received: from mailexchanger.recipientdomain.tld([ccc.ccc.ccc.ccc])
by mailserver.recipientdomain.tld running ExIM with esmtp
id xxxxxx-xxxxxx-xxx; Wed, 13 Apr 2011 01:39:23 +0200
(2)Received: from mailserver.senderdomain.tld ([bbb.bbb.bbb.bbb] helo=mailserver.senderdomain.tld)
by mailexchanger.recipientdomain.tld with esmtp id xxxxxx-xxxxxx-xx
for recipient@recipientdomain.tld; Wed, 13 Apr 2011 01:39:23 +0200
(1)Received: from senderhostname aaa.aaa.aaa.aaa
by mailserver.senderdomain.tld with esmtpa (Exim x.xx)
(envelope-from <sender@senderdomain.tld) id xxxxx-xxxxxx-xxxx
for recipient@recipientdomain.tld; Tue, 12 Apr 2011 20:36:08 -0100
Message-ID: xxxxxxxx.xxxxxxxx@senderdomain.tld
Date: Tue, 12 Apr 2011 20:36:01 -0100
X-Mailer: Mail Client
From: Sender Name sender@senderdomain.tld
To: Recipient Name recipient@recipientdomain.tld
Subject: Message Subject

He cortado parte de la información ya que la salida es muy extensa.

Ver cabeceras de correo en Hotmail

  • Accede a tu cuenta de Hotmail y abre el mensaje deseado.
  • Haz clic sobre Acciones y selecciona Ver origen del mensaje.

Ver cabeceras de correo en Microsoft Outlook

  • Abre tu cliente de correo y un mensaje para verificar.
  • Haz clic sobre Archivo > Propiedades

En la parte resaltada encontrarás las cabeceras del email.

Existen otras alternativas de correo que no he contemplado, como Yahoo o Thunderbird, pero seguro que no te será difícil localizarlas.

Análisis de email headers

A continuación se exponen algunos ejemplos prácticos de análisis de cabeceras de correo electrónico.

Ejemplo: Campos estándar del Message Header

Return-path: <sender@senderdomain.tld>
Delivery-date: Wed, 13 Apr 2011 00:31:13 +0200
(3)Received: from mailexchanger.recipientdomain.tld([ccc.ccc.ccc.ccc])
by mailserver.recipientdomain.tld running ExIM with esmtp
id xxxxxx-xxxxxx-xxx; Wed, 13 Apr 2011 01:39:23 +0200
(2)Received: from mailserver.senderdomain.tld ([bbb.bbb.bbb.bbb] helo=mailserver.senderdomain.tld)
by mailexchanger.recipientdomain.tld with esmtp id xxxxxx-xxxxxx-xx
for recipient@recipientdomain.tld; Wed, 13 Apr 2011 01:39:23 +0200
(1)Received: from senderhostname [aaa.aaa.aaa.aaa] (helo=[senderhostname])
by mailserver.senderdomain.tld with esmtpa (Exim x.xx)
(envelope-from <sender@senderdomain.tld) id xxxxx-xxxxxx-xxxx
for recipient@recipientdomain.tld; Tue, 12 Apr 2011 20:36:08 -0100
Message-ID: <xxxxxxxx.xxxxxxxx@senderdomain.tld>
Date: Tue, 12 Apr 2011 20:36:01 -0100
X-Mailer: Mail Client
From: Sender Name <sender@senderdomain.tld>
To: Recipient Name <recipient@recipientdomain.tld>
Subject: Message Subject

Veamos qué significa cada uno de estos elementos:

  • Return Path: La dirección de email a utilizar en caso de que el correo sea devuelto
  • Delivery-date: Fecha de entrega
  • Date: Fecha de envío
  • Message-ID: Identificador único del mensaje
  • X-Mailer: cliente de correo utilizado para enviar el mensaje
  • From: emisor del mensaje enviado en formato: “Friendly Name” <email@address.tld>
  • To: receptor del mensaje: “Friendly Name” <email@address.tld>
  • Subject: Asunto del correo

La linea siguiente podría ser fácilmente suplantada:

 From: Sender Name <sender@senderdomain.tld>

Esto explica porque muchas veces la gente se encuentra correos que parecen proceder de sí mismos (no siendo así) e incluso les hacen creer que les han hackeado la cuenta.

Enrutamiento de los emails

De las cabeceras anteriores, analizamos ahora los puntos de enrutamiento, el camino que ha seguido este email desde que abandó el servidor de origen hasta llegar al cliente del destinatario.

(3) Received: from senderhostname [aaa.aaa.aaa.aaa] (helo=[ senderhostname])
by mailserver.senderdomain.tld with esmtpa (Exim x.xx)
(envelope-from <sender@senderdomain.tld) id xxxxx-xxxxxx-xxxx
for recipient@recipientdomain.tld; Tue, 12 Apr 2011 20:36:08 -0100

El mensaje ha sido enviaod desde un ordenador con dirección IP aaa.aaa.aaa.aaa al servidor de email del destinatario. En muchos casos se trata de una dirección IP dinámica. La dirección IP nos puede dar información sobre el emisor y ubicación geográfica del emisor y el proveedor.

2) Received: from mailserver.senderdomain.tld ([bbb.bbb.bbb.bbb] helo=mailserver.senderdomain.tld)
by mailexchanger.recipientdomain.tld with esmtp
id xxxxxx-xxxxxx-xx

Esto indica que el mensaje ha sido transferido desde el servidor de email (mail server) del emisor, con IP bbb.bbb.bbb.bbb hasta el mail-exchanger del receptor. Mail exchanger=mail server o servidor de correo, encargado de aceptar o rechazar los mensajes para cada dominio.

(1) Received: from mailexchanger.recipientdomain.tld([ccc.ccc.ccc.ccc])
by mailserver.recipientdomain.tld running ExIM with esmtp
id xxxxxx-xxxxxx-xxx; Wed, 13 Apr 2011 01:39:23 +0200

Este último fragmento indica que el mensaje fue finalmente recibido por el servidor de correo ccc.ccc.ccc.ccc.

Esto es un ejemplo básico, no se muestran todas las salidas posibles. El enrutamiento podría ser mucho más largo, aunque siempre (en teoría) debería ser posible obtener en las cabeceras tanto la IP del equipo emisor como el servidor de correo del emisor (aaa y bbb respectivamente). Esto aplica si el mensaje fue enviado desde un cliente de email de escritorio.

En caso de haberse empleado un cliente webmail (por ejemplo Gmail) no encontraremos la dirección IP real del emisor (aaa) sino que será sustituida por la dirección IP del mail server.

Ciertos atacantes intentan falsificar la información de enrutamiento, pero tu servidor de correo siempre debería poder ofrecerte un mensaje de alerta, indicando que algo no es normal durante la transferencia desde el servidor del emisor (bbb) hasta el mail exchanger del receptor (ccc).

Sender Policy Framework

Recordemos que SPF se utiliza para describir qué servidor de email puede enviar mensajes a un dominio. Es decir, se usa para evitar correos desde cuentas de email falsas o inexistentes. Más información al comienzo del artículo y aquí.

El resultado puede ser:

  • Received-SPF: neutral
  • Received-SPF: pass
  • Received-SPF: fail

En caso de darse un fail dicho mensaje debería ser rechazado por el servidor de correo del destinatario.

DomainKeys Identified Mail (DKIM)

DKIM es un método para asociar un dominio con una dirección de correo, confirmando así su identidad y evitando que dicha dirección de correo sea tomada como confiable si otra organización intenta utilizarla.

Podemos probar la fiabilidad de DKIM de las siguientes formas.

Interpretando las cabeceras

Buscaremos directamente la cadena:

dkim=
comprobar-cabeceras-email-dkim

En caso de obtener un dkim=pass significa que el servidor de correo que envió el mensaje estaba autorizado a hacerlo para dicho dominio.

Copiando las cabeceras en un servicio web

Existen muchas opciones pero pondré una que se que funciona bien. Entraremos en la web appmaildev y cargaremos el texto completo de las cabeceras de nuestro email.

Pulsaremos el botón para que se analicen y obtendremos los siguientes indicadores.

Fuente noticia: https://www.protegermipc.net/
Fuente foto: freepik.es
¿Te gustó este artículo? Compártelo!Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *