¿Cómo crear un correo electrónico que engañe al verificador de DKIM?

1

Sammy el remitente está enviando un correo electrónico a Rita el destinatario. Sé que Sammy aplicará una firma DKIM al correo electrónico y Rita revisará la firma DKIM con un validador DKIM. Soy un hombre malicioso en el medio. Quiero modificar el correo electrónico para que los valores de encabezado que se muestran en el cliente de correo de Rita difieran de los que firmó DKIM, pero todavía quiero que el correo electrónico que recibe Rita parezca estar verificado por DKIM cuando se pasa a través de un validador DKIM. Se puede hacer esto? ¿Cuánto puede modificar un atacante?

Hasta ahora he aprendido de tres técnicas para hacer esto:

  1. Agregar nuevo encabezado. Agregar un encabezado que no estaba presente en el correo electrónico original y no está incluido en la firma DKIM. Es probable que el cliente de correo electrónico de Rita aún muestre ese encabezado aunque no esté incluido en la firma DKIM.

  2. Varias copias del encabezado. Agregue múltiples versiones del mismo encabezado, con un valor diferente. DKIM solo verificará el último; Si el cliente de correo electrónico muestra el primero, es posible un ataque exitoso. Para ser más específico, coloque un encabezado malicioso ; digamos, un encabezado From: con un valor malicioso - antes del encabezado DKIM. Si entiendo correctamente, la firma DKIM solo cubre los encabezados después del encabezado DKIM, por lo que la firma parecerá ser válida a pesar del hecho de que el valor del encabezado malicioso no se firmó. Crédito: Gracias a Robert Graham por señalando este truco .

  3. Agregar contenido después de la sección firmada. RFC 6376 señala un poco más oscuro ataque , si el encabezado DKIM en el correo electrónico original usa una etiqueta l= (la mayoría de los correos electrónicos ordinarios no lo hacen) y lo usa de manera imprudente. Probablemente no sea relevante en la mayoría de las situaciones.

Cada uno de estos tiene limitaciones sobre lo que el atacante puede lograr. ¿Hay otros ataques que haya pasado por alto?

    
pregunta D.W. 15.12.2016 - 11:01
fuente

1 respuesta

1

Primero, buena pregunta. He comprobado cómo se comporta Thunderbird modificando un correo existente y en realidad toma los primeros encabezados para mostrar De, A y Asunto, mientras que el mecanismo de firma DKIM comienza desde el final :(. Por lo tanto, la firma DKIM se considera válida aunque De, A y el Asunto son falsificados. Es interesante que la primera línea De solo se use en la vista de correo, mientras que en la vista de lista de todos los correos muestra la última línea De. En cuanto a otros ataques o cómo los ataques que has descrito se pueden usar de una manera que quizás no te hayas dado cuenta:

Hay algunos encabezados de correo que tienen efectos secundarios interesantes y, a menudo, estos encabezados no están completamente protegidos (es decir, protegidos contra cambios o contra la adición de un nuevo encabezado). Cabe destacar que Content-Type y Content-Transfer-Encoding tienen un significado especial sobre cómo se interpreta el contenido. Manipular estos encabezados puede tener efectos interesantes. Por ejemplo, tener una multiparte de tipo de contenido con un límite no existente hace que Thunderbird ya no muestre el texto original del correo, sino un contenido en blanco. Cuando se combina con la suplantación de identidad del tema ("descargar actualización de hxxp: // ...") y / o la Respuesta a este contenido en blanco inesperado se puede usar para un ataque social. Ejemplo:

 Subject: Blank mail? Download hotfix for your mail client at http://....
 Content-type: multipart/mixed; boundary=boundary_does_not_exist
 Subject: original subject
 Content-type: original/type

El cambio similar de Content-Transfer-Encoding a base64 para el contenido que no es de varias partes puede provocar que solo muestre información incomprensible que se puede usar de forma similar en un ataque social. Ejemplo:

 Subject: Mail corrupt? Download hotfix for your mail client at http://....
 Content-Transfer-Encoding: base64
 Subject: original subject
 Content-type: text/plain

Si la firma DKIM utiliza l= para limitar la cantidad de líneas que se usan en el hash del cuerpo, también se puede "reemplazar" el contenido del correo cambiando (o agregando) el tipo de contenido a un tipo de varias partes con un límite especial . Luego, el límite se diseña para omitir el contenido existente incluido en el hash que se tratará como el preámbulo de las nuevas partes MIME (y, por lo tanto, no se mostrará). Ejemplo:

 Content-type: multipart/mixed; boundary=my_own_boundary
 DKIM-Signature: ... bh=...; l=...
 Content-type: original/type

 here is the original content, no matter if single part or multipart
 this is the last line included in the body hash

 --my_own_boundary
 Content-type: text/plain

 Only this text is shown at the recipient
 --my_own_boundary--
  

... usa una etiqueta l = (la mayoría de los correos electrónicos ordinarios no lo hacen)

En realidad, me sorprendió la cantidad de firmas DKIM con l= que encontré en mi buzón. Cabe destacar que los correos de cisco.com usan (d?) Esta función y he usado una para reemplazar exitosamente el contenido de la manera que describí, manteniendo la firma válida.

Además de modificar un correo existente de Sammy, el atacante también podría crear un nuevo correo para Rita que parece provenir de Sammy. Esto se puede hacer creando un correo con una firma DKIM válida y luego agregue un encabezado De falsificado en la parte superior. Si Rita solo comprueba si la firma DKIM es válida, no verá ningún problema. Si además comprueba si el dominio de la firma coincide con el dominio de los remitentes, el resultado depende de qué encabezado De se utiliza para esta validación. Pero si Sammy usa uno de los proveedores de correo públicos, el atacante podría simplemente obtener también una cuenta de correo allí y entonces no importaría cuál se considera De cuando se verifica el dominio porque ambos son del mismo dominio.

    
respondido por el Steffen Ullrich 15.12.2016 - 14:04
fuente

Lea otras preguntas en las etiquetas