Saltar a contenido

IMAP - POP3

Con la ayuda del Internet Message Access Protocol (IMAP), es posible acceder a correos electrónicos desde un servidor de correo. A diferencia del Post Office Protocol (POP3), IMAP permite la gestión en línea de correos electrónicos directamente en el servidor y soporta estructuras de carpetas. Por lo tanto, es un protocolo de red para la gestión en línea de correos electrónicos en un servidor remoto. El protocolo está basado en el cliente-servidor y permite la sincronización de un cliente de correo electrónico local con el buzón en el servidor, proporcionando una especie de sistema de archivos de red para correos electrónicos, lo que permite una sincronización sin problemas entre varios clientes independientes. Por otro lado, POP3 no tiene la misma funcionalidad que IMAP y solo proporciona las funciones de listar, recuperar y eliminar correos electrónicos en el servidor de correo. Por lo tanto, se deben usar protocolos como IMAP para funcionalidades adicionales, como buzones jerárquicos directamente en el servidor de correo, acceso a múltiples buzones durante una sesión y preselección de correos electrónicos.

Los clientes acceden a estas estructuras en línea y pueden crear copias locales. Incluso a través de varios clientes, esto resulta en una base de datos uniforme. Los correos electrónicos permanecen en el servidor hasta que se eliminan. IMAP es basado en texto y tiene funciones extendidas, como la navegación de correos electrónicos directamente en el servidor. También es posible que varios usuarios accedan simultáneamente al servidor de correo electrónico. Sin una conexión activa al servidor, la gestión de correos electrónicos es imposible. Sin embargo, algunos clientes ofrecen un modo fuera de línea con una copia local del buzón. El cliente sincroniza todos los cambios locales fuera de línea cuando se restablece la conexión.

El cliente establece la conexión con el servidor a través del puerto 143. Para la comunicación, utiliza comandos basados en texto en formato ASCII. Se pueden enviar varios comandos en sucesión sin esperar confirmación del servidor. Las confirmaciones posteriores del servidor se pueden asignar a los comandos individuales mediante los identificadores enviados junto con los comandos. Inmediatamente después de establecer la conexión, el usuario se autentica con el nombre de usuario y la contraseña en el servidor. El acceso al buzón deseado solo es posible después de una autenticación exitosa.

Normalmente, se utiliza SMTP para enviar correos electrónicos. Al copiar los correos electrónicos enviados en una carpeta IMAP, todos los clientes tienen acceso a todos los correos enviados, independientemente de la computadora desde la que fueron enviados. Otra ventaja del Protocolo de Acceso a Mensajes de Internet es la creación de carpetas personales y estructuras de carpetas en el buzón. Esta característica hace que el buzón sea más claro y fácil de gestionar. Sin embargo, aumenta el requisito de espacio de almacenamiento en el servidor de correo.

Sin más medidas, IMAP funciona sin cifrar y transmite comandos, correos electrónicos o nombres de usuario y contraseñas en texto plano. Muchos servidores de correo electrónico requieren establecer una sesión IMAP cifrada para garantizar una mayor seguridad en el tráfico de correo electrónico y prevenir el acceso no autorizado a los buzones. Normalmente, se utiliza SSL/TLS para este propósito. Dependiendo del método y la implementación utilizada, la conexión cifrada utiliza el puerto estándar 143 o un puerto alternativo como 993.


Default Configuration

Tanto IMAP como POP3 tienen una gran cantidad de opciones de configuración, lo que hace difícil profundizar en cada componente en más detalle. Si deseas examinar estas configuraciones de protocolo más a fondo, te recomendamos crear una VM local e instalar los dos paquetes dovecot-imapd y dovecot-pop3d usando apt y jugar con las configuraciones y experimentar.

En la documentación de Dovecot, podemos encontrar las configuraciones básicas y las opciones de configuración de servicio individuales que se pueden utilizar para nuestros experimentos. Sin embargo, echemos un vistazo a la lista de comandos y veamos cómo podemos interactuar y comunicarnos directamente con IMAP y POP3 usando la línea de comandos.

IMAP Commands

Comando Descripción
1 LOGIN username password Inicio de sesión del usuario.
1 LIST "" * Lista todos los directorios.
1 CREATE "INBOX" Crea un buzón con un nombre especificado.
1 DELETE "INBOX" Elimina un buzón.
1 RENAME "ToRead" "Important" Renombra un buzón.
1 LSUB "" * Devuelve un subconjunto de nombres del conjunto de nombres que el usuario ha declarado como activos o suscritos.
1 SELECT INBOX Selecciona un buzón para que los mensajes en el buzón puedan ser accedidos.
1 UNSELECT INBOX Sale del buzón seleccionado.
1 FETCH <ID> all Recupera datos asociados con un mensaje en el buzón.
1 CLOSE Elimina todos los mensajes con laflagDeleted` configurada.
1 LOGOUT Cierra la conexión con el servidor IMAP.

POP3 Commands

Comando Descripción
USER username Identifica al usuario.
PASS password Autenticación del usuario utilizando su contraseña.
STAT Solicita el número de correos electrónicos guardados en el servidor.
LIST Solicita del servidor el número y tamaño de todos los correos electrónicos.
RETR id Solicita al servidor que entregue el correo electrónico solicitado por ID.
DELE id Solicita al servidor que elimine el correo electrónico solicitado por ID.
CAPA Solicita al servidor que muestre las capacidades del servidor.
RSET Solicita al servidor que restablezca la información transmitida.
QUIT Cierra la conexión con el servidor POP3.

Dangerous Settings

Sin embargo, las opciones de configuración que fueron configuradas incorrectamente podrían permitirnos obtener más información, como depurar los comandos ejecutados en el servicio o iniciar sesión como anónimo, similar al servicio FTP. La mayoría de las empresas utilizan proveedores de correo electrónico de terceros, como Google, Microsoft y muchos otros. Sin embargo, algunas empresas todavía utilizan sus propios servidores de correo por muchas razones diferentes. Una de estas razones es mantener la privacidad que desean mantener en sus propias manos. Se pueden cometer muchos errores de configuración por parte de los administradores, que en el peor de los casos nos permitirán leer todos los correos electrónicos enviados y recibidos, que pueden incluso contener información confidencial o sensible. Algunas de estas opciones de configuración incluyen:

Configuración Descripción
auth_debug Habilita todo el registro de depuración de autenticación.
auth_debug_passwords Esta configuración ajusta la verbosidad del registro, las contraseñas enviadas y el esquema se registran.
auth_verbose Registra intentos de autenticación fallidos y sus razones.
auth_verbose_passwords Las contraseñas utilizadas para la autenticación se registran y también se pueden truncar.
auth_anonymous_username Especifica el nombre de usuario que se utilizará al iniciar sesión con el mecanismo SASL ANONYMOUS.

Footprinting the Service

Por defecto, se utilizan los puertos 110, 143, 993 y 995 para IMAP y POP3. Los dos puertos superiores utilizan TLS/SSL para cifrar la comunicación entre el cliente y el servidor. Usando Nmap, podemos escanear el servidor en busca de estos puertos. El escaneo devolverá la información correspondiente como lo que vemos a continuación si el servidor utiliza un certificado SSL incorporado.

Nmap

sudo nmap 10.129.14.128 -sV -p110,143,993,995 -sC

Starting Nmap 7.80 ( https://nmap.org ) at 2021-09-19 22:09 CEST
Nmap scan report for 10.129.14.128
Host is up (0.00026s latency).

PORT    STATE SERVICE  VERSION
110/tcp open  pop3     Dovecot pop3d
|_pop3-capabilities: AUTH-RESP-CODE SASL STLS TOP UIDL RESP-CODES CAPA PIPELINING
| ssl-cert: Subject: commonName=mail1.inlanefreight.htb/organizationName=Inlanefreight/stateOrProvinceName=California/countryName=US
| Not valid before: 2021-09-19T19:44:58
|_Not valid after:  2295-07-04T19:44:58
143/tcp open  imap     Dovecot imapd
|_imap-capabilities: more have post-login STARTTLS Pre-login capabilities LITERAL+ LOGIN-REFERRALS OK LOGINDISABLEDA0001 SASL-IR ENABLE listed IDLE ID IMAP4rev1
| ssl-cert: Subject: commonName=mail1.inlanefreight.htb/organizationName=Inlanefreight/stateOr

ProvinceName=California/countryName=US
| Not valid before: 2021-09-19T19:44:58
|_Not valid after:  2295-07-04T19:44:58
993/tcp open  ssl/imap Dovecot imapd
|_imap-capabilities: more have post-login OK capabilities LITERAL+ LOGIN-REFERRALS Pre-login AUTH=PLAINA0001 SASL-IR ENABLE listed IDLE ID IMAP4rev1
| ssl-cert: Subject: commonName=mail1.inlanefreight.htb/organizationName=Inlanefreight/stateOrProvinceName=California/countryName=US
| Not valid before: 2021-09-19T19:44:58
|_Not valid after:  2295-07-04T19:44:58
995/tcp open  ssl/pop3 Dovecot pop3d
|_pop3-capabilities: AUTH-RESP-CODE USER SASL(PLAIN) TOP UIDL RESP-CODES CAPA PIPELINING
| ssl-cert: Subject: commonName=mail1.inlanefreight.htb/organizationName=Inlanefreight/stateOrProvinceName=California/countryName=US
| Not valid before: 2021-09-19T19:44:58
|_Not valid after:  2295-07-04T19:44:58
MAC Address: 00:00:00:00:00:00 (VMware)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 12.74 seconds

Por ejemplo, en la salida, podemos ver que el nombre común es mail1.inlanefreight.htb, y el servidor de correo electrónico pertenece a la organización Inlanefreight, que se encuentra en California. Las capacidades mostradas nos muestran los comandos disponibles en el servidor y para el servicio en el puerto correspondiente.

Si logramos averiguar las credenciales de acceso para uno de los empleados, un atacante podría iniciar sesión en el servidor de correo y leer o incluso enviar mensajes individuales.

cURL

curl -k 'imaps://10.129.14.128' --user user:p4ssw0rd

* LIST (\HasNoChildren) "." Important
* LIST (\HasNoChildren) "." INBOX

Si también usamos la opción verbose (-v), veremos cómo se establece la conexión. A partir de esto, podemos ver la versión de TLS utilizada para el cifrado, más detalles del certificado SSL e incluso el banner, que a menudo contendrá la versión del servidor de correo.

curl -k 'imaps://10.129.14.128' --user cry0l1t3:1234 -v

*   Trying 10.129.14.128:993...
* TCP_NODELAY set
* Connected to 10.129.14.128 (10.129.14.128) port 993 (#0)
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* Server certificate:
*  subject: C=US; ST=California; L=Sacramento; O=Inlanefreight; OU=Customer Support; CN=mail1.inlanefreight.htb; emailAddress=cry0l1t3@inlanefreight.htb
*  start date: Sep 19 19:44:58 2021 GMT
*  expire date: Jul  4 19:44:58 2295 GMT
*  issuer: C=US; ST=California; L=Sacramento; O=Inlanefreight; OU=Customer Support; CN=mail1.inlanefreight.htb; emailAddress=cry0l1t3@inlanefreight.htb
*  SSL certificate verify result: self signed certificate (18), continuing anyway.
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] HTB-Academy IMAP4 v.0.21.4
> A001 CAPABILITY
< * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN
< A001 OK Pre-login capabilities listed, post-login capabilities have more.
> A002 AUTHENTICATE PLAIN AGNyeTBsMXQzADEyMzQ=
< * CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY LITERAL+ NOTIFY SPECIAL-USE
< A002 OK Logged in
> A003 LIST "" *
< * LIST (\HasNoChildren) "." Important
* LIST (\HasNoChildren) "." Important
< * LIST (\HasNoChildren) "." INBOX
* LIST (\HasNoChildren) "." INBOX
< A003 OK List completed (0.001 + 0.000 secs).
* Connection #0 to host 10.129.14.128 left intact

Para interactuar con el servidor IMAP o POP3 a través de SSL, podemos usar openssl, así como ncat. Los comandos para esto serían así:

OpenSSL - TLS Encrypted Interaction POP3

openssl s_client -connect 10.129.14.128:pop3s

CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb
verify return:1
---
Certificate chain
 0 s:C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb

...SNIP...

---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 3CC39A7F2928B252EF2FFA5462140B1A0A74B29D4708AA8DE1515BB4033D92C2
    Session-ID-ctx:
    Resumption PSK: 68419D933B5FEBD878FF1BA399A926813BEA3652555E05F0EC75D65819A263AA25FA672F8974C37F6446446BB7EA83F9
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - d7 86 ac 7e f3 f4 95 35-88 40 a5 b5 d6 a6 41 e4   ...~...5.@....A.
    0010 - 96 6c e6 12 4f 50 ce 72-36 25 df e1 72 d9 23 94   .l..OP.r6%..r.#.
    0020 - cc 29 90 08 58 1b 57 ab-db a8 6b f7 8f 31 5b ad   .)..X.W...k..1[.
    0030 - 47 94 f4 67 58 1

f 96 d9-ca ca 56 f9 7a 12 f6 6d   G..gX.....V.z..m
    0040 - 43 b9 b6 68 de db b2 47-4f 9f 48 14 40 45 8f 89   C..h...GO.H.@E..
    0050 - fa 19 35 9c 6d 3c a1 46-5c a2 65 ab 87 a4 fd 5e   ..5.m<.F\.e....^
    0060 - a2 95 25 d4 43 b8 71 70-40 6c fe 6f 0e d1 a0 38   ..%.C.qp@l.o...8
    0070 - 6e bd 73 91 ed 05 89 83-f5 3e d9 2a e0 2e 96 f8   n.s......>.*....
    0080 - 99 f0 50 15 e0 1b 66 db-7c 9f 10 80 4a a1 8b 24   ..P...f.|...J..$
    0090 - bb 00 03 d4 93 2b d9 95-64 44 5b c2 6b 2e 01 b5   .....+..dD[.k...
    00a0 - e8 1b f4 a4 98 a7 7a 7d-0a 80 cc 0a ad fe 6e b3   ......z}......n.
    00b0 - 0a d6 50 5d fd 9a b4 5c-28 a4 c9 36 e4 7d 2a 1e   ..P]...\(..6.}*.

    Start Time: 1632081313
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
+OK HTB-Academy POP3 Server

OpenSSL - TLS Encrypted Interaction IMAP

openssl s_client -connect 10.129.14.128:imaps

CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb
verify return:1
---
Certificate chain
 0 s:C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Customer Support, CN = mail1.inlanefreight.htb, emailAddress = cry0l1t3@inlanefreight.htb

...SNIP...

---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
    Protocol  : TLSv1.3
    Cipher    : TLS_AES_256_GCM_SHA384
    Session-ID: 2B7148CD1B7B92BA123E06E22831FCD3B365A5EA06B2CDEF1A5F397177130699
    Session-ID-ctx:
    Resumption PSK: 4D9F082C6660646C39135F9996DDA2C199C4F7E75D65FA5303F4A0B274D78CC5BD3416C8AF50B31A34EC022B619CC633
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 7200 (seconds)
    TLS session ticket:
    0000 - 68 3b b6 68 ff 85 95 7c-8a 8a 16 b2 97 1c 72 24   h;.h...|......r$
    0010 - 62 a7 84 ff c3 24 ab 99-de 45 60 26 e7 04 4a 7d   b....$...E`&..J}
    0020 - bc 6e 06 a0 ff f7 d7 41-b5 1b 49 9c 9f 36 40 8d   .n.....A..I..6@.
    0030 - 93 35 ed d9 eb 1f 14 d7-a5 f6 3f c8 52 fb 9f 29   .5........?.R..)
    0040 - 89 8d de e6 46 95 b3 32-48 80 19 bc 46 36 cb eb   ....F..2H...F6..
    0050 - 35 79 54 4c 57 f8 ee 55-06 e3 59 7f 5e 64 85 b0   5yTLW..U..Y.^d..
    0060 - f3 a4 8c a6 b6 47 e4 59-ee c9 ab 54 a4 ab 8c 01   .....G.Y...T....
    0070 - 56 bb b9 bb 3b f6 96 74-16 c9 66 e2 6c 28 c6 12   V...;..t..f.l(..
    0080 - 34 c7 63 6b ff 71 16 7f-91 69 dc 38 7a 47 46 ec   4.ck.q...i.8zGF.
    0090 - 67 b7 a2 90 8b 31 58 a0-4f 57 30 6a b6 2e 3a 21   g....1X.OW0j..:!
    00a0 - 54 c7 ba f0 a9 74 13 11-d5 d1 ec cc ea f9 54 7d   T....t........T}
    00b0 - 46 a6 33 ed 5d 24 ed b0-20 63 43 d8 8f 14 4d 62   F.3.]$.. cC...Mb

    Start Time: 1632081604
    Timeout   : 7200 (sec)
    Verify return code: 18 (self signed certificate)
    Extended master secret: no
    Max Early Data: 0
---
read R BLOCK
* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] HTB-Academy IMAP4 v.0.21.4

Una vez que hemos iniciado con éxito una conexión e iniciado sesión en el servidor de correo objetivo, podemos usar los comandos anteriores para trabajar y navegar en el servidor. Queremos señalar que la configuración de nuestro propio servidor de correo, la investigación para ello y los experimentos que podemos hacer junto con otros miembros de la comunidad nos dará el conocimiento para entender la comunicación que tiene lugar y qué opciones de configuración son responsables de esto.

En la sección SMTP, encontramos al usuario robin. Otro miembro de nuestro equipo pudo averiguar que el usuario también utiliza su nombre de usuario como contraseña (robin:robin). Podemos usar estas credenciales e intentar interactuar con los servicios IMAP/POP3.