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

jueves, febrero 11, 2016

¿Por qué sale el candado rojo en los mensajes de Gmail?

Supongo que muchos ya estaréis al día de que Gmail ha añadido una nueva función para mejorar la información sobre los mensajes de correo electrónico que recibe de forma insegura. Si todavía no has visto ninguno, te recomiendo que vayas a la carpeta de Spam de tu cuenta de Gmail y busques por allí, verás que hay más de uno seguro que tiene el candadito rojo de correo inseguro.

Figura 1: ¿Por qué sale el candado rojo en los mensajes de Gmail?

Ese candado rojo abierto al lado del mensaje significa que la conexión que el servidor de correo saliente del dominio del remitente hizo con el servidor de correo entrante de Gmail no se hizo sobre un túnel TLS o SSL. Es decir, cuando se entregó ese mensaje de correo electrónico a Gmail para que lo pusiera en tu buzón, se hizo por el puerto 25 sin cifrado alguno, por lo que cualquiera que pudiera esnifar el tráfico de la red en medio podría haberlo leído.

Figura 2: Mensaje enviado por SMTP sin cifrado puerto 25

Esto lo tienes explicado en la página de soporte que ha añadido Google en su knowledge base, y no hay mucho que puedas hacer a nivel de usuario para que tus correos electrónicos lleguen sin candado, ya que es algo de configuración del servidor de correo electrónico que utilizas para enviar los mensajes.

Figura 3: Explicación de Google sobre el candado rojo

Si cuando envías un mensaje de correo electrónico llega a las cuentas de Gmail con el candado, entonces es que tu servidor de correo electrónico no has configurado el servidor SMTP de correo saliente para que envíe todo el tráfico cifrado.

Figura 4: Información sobre los puertos con cifrado en Gmail para SMTP

Para ello, debes hablar con tu proveedor, o si gestionas tú el servidor de correo electrónico activar la opción de conexión TLS o SSL por los puertos 25 o 465 con SSL yo 587 con TLS. Ojo, si tu cuenta es de Gmail, actívalo si tus mensajes llegan con ese candado, que podría ser que hubieras configurado tu cliente de correo electrónico con SMTP en lugar de IMAP.

Figura 5: Conexión a tu buzón usando IMAP con SSL para enviar y recibir e-mails

Por supuesto, esto no garantiza que el correo electrónico no haya podido ser interceptado por alguien en medio que haga un ataque de man in the middle con capacidad de tener certificados emitidos a nombre de los servidores de correo electrónico, tal y como se explicaba en este gráfico de servilleta que apareció en uno de los documentos filtrados por Edward Snowden.

Figura 6: Explicación de Muscular de la NSA para espiar Gmail

Si no hay un proceso de Certificate Pinning entre los servidores de correo electrónico saliente y servidor de correo entrante, entonces el atacante podría dar al servidor de correo saliente un certificado falso emitido por una entidad certificadora controlada en la que confíe el servidor de correo saliente y descifrar los mensajes.

Figura 7: Correo de Gmail enviado sin cifrar

Gmail entre sus servidores utiliza autenticación mutua, pero si el servidor viene desde un servidor de correo saliente de tercero entonces solo hay conexiones SSL o TLS, pero no Mutual SSL o Mutual TLS, ya que para ello debería haber un intercambio de certificados entre ambos servidores a nivel de configuración.

Figura 8: Gmail permite las conexiones SMTP puerto 25 sin cifrado
Este es un esfuerzo más desde de Google por cifrar el tráfico de Internet y ayuda a evitar la interceptación de correos por parte de atacantes, pero desde luego, mientras que no haya Mutual TLS/SSL entre todos los servidores de correo electrónico, los estados podrán seguir espiando el correo como lo hacían antes y la única solución sigue siendo usar PGP o S/MIME para tener cifrado end-to-end, así que, el que no salga el candado no garantiza que nadie haya podido espiar ese mensaje desde que salió del cliente de correo electrónico del remitente. Si quieres saber más sobre criptografía, ya sabes que una lectura recomendable es el libro de Cifrado de las comunicaciones digitales.

Saludos Malignos!

martes, agosto 05, 2014

Gestionar el buzón de Gmail con comandos IMAP (1 de 4)

Anda por mi cabeza arrancar un proyecto con Gmail, así que estos días he andado jugando con el protocolo IMAP en GMail. Ya os contaré más adelante en qué ando pensando, pero mientras tanto, como este blog siempre fue mi cuaderno personal de anotaciones, he querido hacer esta serie de artículos para que no se me olvide lo que he aprendido, y si así sucede, siempre pueda volver a leerme este artículo. Espero que a alguno de vosotros os venga también de utilidad en algún momento.

Una introducción a IMAP

El protocolo IMAP (Internet Messsage Application Protocol) es un protocolo de acceso a un servidor de mensajes. Entre otras cosas, y recalco lo de entre otras cosas, sirve para cumplir las funciones de un protocolo de acceso al buzón de correo electrónico, como podría ser POP3 (Post-Office Protocol version 3), pero realmente no tiene porque estar ligado al correo electrónico, aunque sí al concepto de mensajes.

Algunas aplicaciones y servidores implementan IMAP como forma de trabajo con documentos, que pueden ser archivos ofimáticos, binarios o citas de agendas. Al final, un mensaje puede ser casi cualquier cosa y hasta un correo electrónico.

A diferencia de POP3, con IMAP se pueden subir mensajes al servidor, con lo que la gestión del buzón es mucho más completa. Por ejemplo, alguien podría usar una aplicación cliente para gestionar su buzón de correo electrónico con IMAP y hacer un borrador, ese borrador de correo electrónico, aún sin destinatario, podría ser subido al buzón a una carpeta borradores y guardarse allí. Algo como eso, con POP3 no es posible realizarlo.

Conexión al buzón de GMAIL con IMAP

El acceso al buzón de Gmail se puede hacer con una conexión IMAP en modo comandos, lo que permitiría controlar en todo momento lo que se quiere hacer con los mensajes. El servidor IMAP de Gmail se encuentra en imap.gmail.com y utiliza un túnel SSL para conectarse. Su puerto de conexión es el 993 y para establecer una conexión a él basta con hacer una conexión openssl con s_client. Eso sí, asegúrate de que tu cliente de OpenSSL está correctamente actualizado y parcheado contra HeartBleed.

Se debe utilizar el parámetro -connect para hacer la conexión -quiet si no se quiere ver toda la negociación y -crlf para no tener que preocuparse de escribir los caracteres de fin de línea y retorno de carro.

Figura 1: Conexión OpenSSL a servidor IMAP de Gmail

Una vez conectados al servidor IMAP podemos comenzar a escribir los comandos IMAP. La última RFC del protocolo es la RFC3501, del año 2003. Lo primero que se debería hacer es autenticarse, pero existen algunos comandos que se pueden utilizar sin conectarse, como por ejemplo negociar la autenticación. Para obtener un buen número de opciones e información del servidor, se puede usar el comando CAPABILITY.

Una cosa un poco curiosa con los comandos IMAP es que es necesario poner una etiqueta delante de cada comando para que el servidor conteste a esa etiqueta. La etiqueta puede ser cualquier cosa, pero una buena práctica es poner un etiqueta que te ayude a identificar la sesión y un número de comando secuencial, para que después en un log puedas moverte con más soltura. En el caso de Gmail, al invocar el comando CAPABILITY vemos muchas cosas, como que implementa la última versión de IMAP4rev1 o que se puede negociar una conexión en plano.

Figura 2: Resultados del comando IMAP Capability en Gmail

En mi caso, utilizo Google Authenticator - que aún no puedo poner Latch - en mi cuenta de Gmail como Segundo Factor de Autenticación, por lo que para conectarme a mi cuenta de correo electrónico desde un cliente pesado utilizo una contraseña de aplicación. Tanto si tienes un 2FA como si no, te recomiendo que, para cualquier cliente de correo electrónico que utilices, configures una contraseña de aplicación como se explica aquí.

Figura 3: Configuración de contraseñas de aplicación en Google

Al final, si te quitan esa contraseña no perderás toda tu cuenta Google, aunque sí que se tenga acceso a todo tu precioso correo electrónico temporalmente, hasta que le revoques el acceso.

Autenticarse contra el servidor IMAP

Para autenticarse en el servidor IMAP necesitas hacer un comando LOGIN, por supuesto etiquetado al principio, en el que pongas tu usuario y tu contraseña. Esto dará como resultado una conexión autenticada a tu servidor de mensajes IMAP4rev1 de Gmail.

Figura 4: Autenticando contra el servidor IMAP de Gmail

Para configurar una autenticación en texto plano, por si quisieras hacerlo en algún entorno de pruebas debes usar el comando AUTHENTICATE. Se me ocurre que podría ser útil probar si en un ataque con man in the middle contra un cliente que no verifique correctamente los certificados digitales podría robarse la contraseña al igual que pasaba con LDAP-s en algunas herramientas.

Primero es necesario generar el token de autenticación en plano, que será codificado en BASE64. Para ello hay que generar el BASE64(\0id_usuario\0passwd). Esto se puede hacer con muchas herramientas. Este es un ejemplo con una cuenta falsa.

Figura 5: Creando el token BASE64 para autenticar en PLAIN

Después se debe configurar el comando AUTHENTICATE PLAIN e introducir el token una vez que lo solicite el servidor, tal y como se ve en la siguiente imagen:

Figura 6: Autenticado en PLAIN contra el servidor IMAP de Gmail

Sea como fuere, negociado el sistema de autenticación, ahora estaríamos conectados y listos para comenzar a gestionar el contenido de nuestra cuenta en el servidor IMAP de Gmail utilizando toda la potencia de IMAP.

Folders, Subfolders, Separators y Namespaces

Ya estamos dentro, pero ahora hay que moverse, para lo que necesitamos primero entender un poco de la estructura en la que se organizan nuestros mensajes dentro del servidor. Para ello, hay que tener presentes los siguientes conceptos:
- Folder: Es un objeto contenedor de mensajes.
- Subfolder: Es un objeto contenedor de mensajes contenido dentro de un folder.
- Separator: Son los elementos que separan una carpeta de otra.
- Namespace: Es un grupo de carpetas que se hace para acotar la gestión de mensajes.
En todo momento hay que estar en una determinada ubicación, para lo que se utiliza el comando SELECT. Para gestionar una determina carpeta basta con hacer SELECT y el nombre. Lo más evidente es ir al INBOX y recibir una lista de los mensajes contenidos allí.

Figura 7: Seleccionando el buzón INBOX de Gmail vía IMAP

Como se puede ver, también se muestran los FLAGs que se utilizan en la gestión de los mensajes de esa carpeta, y los identificadores de los mensajes.

SEARCH y FETCH: Message ID y Message UID

Cada mensaje dentro de una carpeta cuenta con un identificador ID, pero dentro de todo el buzón completo cuenta con un identificador único que es el UID. Con este valor se le puede referenciar en cualquier momento para ver su contenido. Para ello podemos utilizar dos comandos que son SEARCH y FETCH. El primero busca dentro de la carpeta, buzón o namespace en busca de los ID o UID que cumplen el patrón.

El resultado, como se puede ver es una lista de números que apuntan directamente al mensaje. Si se quiere que se devuelvan siempre los UID, se debe poner delante del comando, justo después de la etiqueta que se vaya a utilizar en la invocación del mismo.

Figura 8: Búsqueda de correos en INBOX enviados por rodol@informatica64.com
en formato ID de INBOX y en formato UID

Para buscar se pueden utilizar muchos campos, desde FLAGS, remitentes, fechas, etcétera, etcétera. No pretendo contaros todos los comandos, así que si queréis aprender bien las opciones es momento de que juguéis un poco con vuestro buzón y la sintaxis del comando. Todas descritas en la RFC 3501.

Una vez que se tiene el ID o el UID, se puede utilizar FETCH o UID FETCH para obtener el contenido del mensaje. Para ello hay que especificar qué partes del mismo se quieren, por lo que deberás jugar con los nombres de los campos, filtros y etiquetas para sentirte cómodo con las opciones de recuperación de mensajes.

Figura 9: El ID 246 en INBOX corresponde al UID 2808 dentro del buzón

Hasta aquí por hoy. Sirva de introducción para que empieces a sentirte más o menos cómodo con los comandos básicos. Para salir, ya sabes un comando LOGOUT pero no te olvides de poner la etiqueta delante. Mañana más.

Saludos Malignos!

**********************************************************************************************
Gestionar el buzón de Gmail con comandos IMAP (1 de 4)
Gestionar el buzón de Gmail con comandos IMAP (2 de 4)
- Gestionar el buzón de Gmail con comandos IMAP (3 de 4)
- Gestionar el buzón de Gmail con comandos IMAP (4 de 4)
**********************************************************************************************

Entrada destacada

+300 referencias a papers, posts y talks de Hacking & Security con Inteligencia Artificial

Hace un mes comencé a recuperar en un post mi interés en los últimos años, donde he publicado muchos artículos en este blog , y he dejado mu...

Entradas populares