Tshark. Análisis correo saliente SMTP.

Vamos a analizar una captura correspondiente al envio de correo a través del protocolo SMTP, lo que sería el diálogo entre cliente y servidor SMTP. Diálogo constituido por un conjunto de comandos en formato texto ASCII.

Partimos de la siguiente captura:

captura smtp tshark

Observemos las tres primeras líneas. Estas corresponden al inicio de la comunicación con el servidor de correo. Se trata, como vemos, del establecimiento de conexiónen tres pasos. El número de secuencia incial es relativo y por tanto en este caso 0.

Para comprenderlo mejor vemos esta otra traza con el número de secuencia inicial aleatorio:

cliente -> servidor TCP 1125 > smtp [SYN] Seq=13766490 Ack=0 Win=16384 Len=0
servidor -> cliente TCP smtp > 1125 [SYN, ACK] Seq=472370892 Ack=13766491 Win=8736 Len=0
cliente -> servidor TCP 1125 > smtp [ACK] Seq=13766491 Ack=472370893 Win=17472 Len=0

  1. cliente envia SYN con un número aleatorio Seq=13766490 y Ack=0
  2. servidor lo recibe, envia SYN-ACK y responde con su propio número de secuencia y con un ACK = al número de secuencia anterior + 1, es decir: Seq=472370892 Ack=13766491
  3. cliente a su vez responde con ACK y número de secuencia inicial (Seq=13766490) +1 y ACK = número de secuecia anterior (472370892) +1, es decir: Seq=13766491 Ack=472370893

Inmediatamente el servidor de correo responde con un código 220 que está listo:

SMTP Response: 220 SERV-CORREO Spectrum Server 1.0 ESMTP ready

Responde le cliente iniciando el diálogo y sesión SMTP con el servidor:

SMTP Command: EHLO alfon

Responde le servidor de correo aceptando con un código 250 y el nombre del servidor:

SMTP Response: 250-SERV-CORREO

El cliente inicia la autentificación con el servidor. (Servidor autentificado):

SMTP Command: AUTH LOGIN

Responde el servidor pidiendo Username y un código 334, en este caso codificado (Base64). En caso de fallo de autentificación se responde con un codigo 535. el cliente envia el usuario;

SMTP Response: 334 VXNlXXXhbWU6
SMTP Command: XXXzdGVtYXNAYWJhbmNlLmVz

El servidor pide Password el el cliente responde. Todo ello codificado en Base64.:

SMTP Response: 334 UGFzc3dvcmQ6
SMTP Command: XXXETUFOXXXwJQ==

Todo salió bien:

SMTP Response: 235 2.0.0 Authentication successful

Inidicamos al servidor el inicio del mensaje de correo con MAIL FROM. Indicamos remitente y destinatario (RCPT TO):

SMTP Command: MAIL FROM:
SMTP Response: 250 2.1.0 Sender ok
SMTP Command: RCPT TO:
SMTP Response: 250 2.1.5 Recipient ok (local)

Con DATA indicamos al servidor que lo que viene a continuación es el texto del mensaje. El servidor responde aceptando con un código 354 indicando que podemos introducir el mensaje y enviamos los paquetes correspondientes al texto de mensaje:

SMTP Response: 354 Enter mail, end with CRLF.CRLF
SMTP DATA fragment, 1460 bytes
SMTP DATA fragment, 1460 bytes
SMTP DATA fragment, 1460 bytes
SMTP DATA fragment, 1460 bytes
SMTP DATA fragment, 740 bytes

Una vez que finalizamos la transmisión de los paquetes del mensaje y con el comando EOM indica el cliente el fin del mensaje:

SMTP EOM

El servidor se da por enterado y acepta el mensaje:

SMTP Response: 250 2.0.0 48456cd9-0001a6ae Message accepted for delivery

El cliente indica ahora que no hay más operaciones a realizar que se puede cerrar la conexión:

SMTP Command: QUIT

El servidor se da por enterado y cierra conexión con el cliente:

SMTP Response: 221 2.0.0 SMTP closing connection

Cierre de conexión TCP. Al igual que al principio se inicia una petición de conexión por parte del cliente con un diálogo en tres fases, ahora se da por terminada la conexión pero en cuatro pasos. Esto es debido a que cada una de las «direcciones» debe ser cerrada independientemente:

serv_correo -> cliente TCP 25 > 3612 [FIN, ACK] Seq=505 Ack=6732 Win=65524 Len=0
cliente -> serv_correo TCP 3612 > 25 [ACK] Seq=6732 Ack=506 Win=64008 Len=0
cliente -> serv_correo TCP 3612 > 25 [FIN, ACK] Seq=6732 Ack=506 Win=64008 Len=0
serv_correo -> cliente TCP 25 > 3612 [ACK] Seq=506 Ack=6733 Win=65524 Len=0


Esta entrada fue publicada en Seguridad y redes, Wireshark . Tshark y etiquetada , , , , , , , , . Guarda el enlace permanente.

4 respuestas a Tshark. Análisis correo saliente SMTP.

  1. carlod dijo:

    muy buen tutorial explicado al detalle muy buen trabajo man sobre todo para saber analizar protocologos de correo

  2. Juan Felipe dijo:

    Esta muy buena esta pagina y estos tutoriales de lo mejor gracias.

  3. Pingback: Justniffer. Un sniffer que reensambla, reordena y muestras los flujos TCP. | Seguridad y Redes

  4. Pingback: Tshark. Follow TCP Stream en modo CLI mediante estadísticas tshark. | Seguridad y Redes

Deja un comentario