REVISTA .SEGURIDAD | 1 251 478, 1 251 477 | REVISTA BIMESTRAL

Implementación de un spampot para la captura de correo electrónico no deseado

Spampot

Desde hace varios años se han descubierto muchas amenazas enfocadas a enviar correo no deseado utilizando servidores de correo sin configuración de seguridad previa, lo que permitía enviar correo por medio de un retransmisor abierto, o como se conoce en inglés Open Relay, de ahí surge la necesidad de capturar el correo electrónico no deseado simulando un servidor con las características mencionadas anteriormente para así detectar y mitigar las amenazas hacia servidores de correo electrónico.

Un Open Relay es un servidor de correo electrónico SMTP (Simple Mail Transfer Protocol) que permite el envío y recepción de mensajes de correo electrónico a clientes ajenos al servidor, es decir, los mensajes de correo no serán enviados o recibidos por algún usuario local en el servidor (Rouse, 2005). Debido a que no hay un control en estos mensajes, se puede enviar una gran cantidad de correo electrónico no deseado y es claro que la mayoría de estos mensajes de correo contienen enlaces a sitios fraudulentos, robo de credenciales, archivos maliciosos, entre otras cosas.

Ante este panorama, es necesario crear herramientas para detectar aquellos equipos en Internet que busquen y se aprovechen de servidores de correo electrónico mal configurados y que puedan ayudar a enviar spam a miles de usuarios en Internet.

Para ello, es necesario desarrollar e implementar una herramienta que capture, analice y ayude a identificar el origen o destino de los correos electrónicos no deseados al buscar patrones como nombres de usuario, direcciones de correo electrónico, direcciones IP, asuntos de correo, nombres de dominio, URL, software malicioso o cualquier otro patrón que se especifique o requiera.

En este artículo se hablará de la herramienta spampot, un honeypot enfocado en las tareas mencionadas anteriormente.

Requerimientos funcionales

La implementación de spampot requirió desarrollar un honeypot, un recurso de seguridad informática utilizado para detectar y capturar ataques. Su importancia reside en la forma de ser analizado, atacado o comprometido (Spitzner, 2002, p. 24).

Para obtener grandes resultados, el spampot necesita colocarse en una red conectada directamente a Internet, es decir, estar expuesto para recibir cualquier conexión que cumpla con los requisitos para enviar un correo electrónico por medio del protocolo SMTP. También requiere una base de datos para almacenar y consultar la información maliciosa de los correos electrónicos recibidos.

Para el desarrollo de esta herramienta se requirieron de algunos otros conocimientos en protocolos de red, programación, bases de datos y conceptos aplicados de seguridad informática. A continuación se describen los requisitos técnicos necesarios para el funcionamiento de esta herramienta.

1.   Honeypots

El término honeypot es una palabra compuesta del inglés: honey (miel) y pot (tarro), su significado es “tarro de miel”. El concepto hace analogía a lo llamativo que puede ser un tarro de miel para pequeños insectos o animales voladores (los “intrusos”) que se aprovechan de esta miel sin ninguna restricción. 

Los honeypots se clasifican en dos tipos: alta y baja interacción. En la siguiente tabla se enfatiza de forma clara y sencilla las clasificaciones de los honeypots.

Características/Tipo

Baja interacción

Alta interacción

Instalación

Fácil

No tan fácil

Mantenimiento

Fácil

Requiere mucho tiempo

Riesgo

Bajo

Alto

¿Requiere control?

No

Información recolectada

Limitada

Bastante

Tipo de interacción

Servicios emulados

Control total

Tabla 1. Tipos de honeypots

El spampot desarrollado es un honeypot de baja interacción en donde se emula el servicio de SMTP y se analiza toda la información recibida.

En la Figura 1 se muestra la ubicación lógica de la herramienta dentro de una red de investigación de ataques, en la cual se reciben todas las direcciones IP que no están asignadas a un equipo dentro de una red corporativa o de producción, es aquí cuando el servidor en donde se ejecuta la herramienta contesta a cualquier petición de conexión en el puerto 25 y toda la información recolectada se considera potencialmente maliciosa, porque está destinada a direcciones IP que no deberían intercambiar información debido a que no han sido asignadas todavía.

Ubicación lógica (sugerida) en una red corporativa o de investigación

Figura 1. Ubicación lógica (sugerida) en una red corporativa o de investigación

2.   Programación concurrente y sockets

Un socket (Guevara Soriano, 2010) es la combinación única de una dirección IP y un número de puerto. La dirección IP del socket puede ser una dirección pública o privada, pues dependerá del servicio que se quiera brindar. El número de puerto puede estar entre 0 y 65535, siempre y cuando ese número de puerto no esté ocupado en el equipo en donde se desee ejecutar el socket, por algún otro proceso o restringido dentro de los números de puertos reservados por la IANA.

Para el caso de esta herramienta, se implementó un socket que lanza el servicio de SMTP en el puerto 25 de TCP en la dirección IP del equipo en donde se ejecuta, utilizando programación concurrente en hilos para atender a todos los clientes que requieran interactuar con este servicio. Cada hilo contesta a un único cliente e intercambia con aquel la información necesaria, la cual es recolectada para un análisis posterior.

3.   Modelo TCP/IP

El modelo TCP/IP es el protocolo de conexión utilizado en la mayoría de los servicios de red en Internet. Sus siglas significan Transmission Control Protocol/Internet Protocol (Protocolo de Control de la Transmisión/Protocolo de Internet) y es el encargado de transmitir la información entre un cliente y un servidor en pequeños trozos de información llamados paquetes (Socolofsky, 1991).

En el desarrollo de esta herramienta se utiliza el modelo TCP/IP, pues el intercambio de información para la recolección de correo electrónico no deseado debe ser confiable y sin fallas, ya que al estar simulando un servidor de correo electrónico se debe proveer total credibilidad a la conexión y a la transmisión, así como responder de forma correcta a las peticiones de reinicio o cierre de conexión por medio de las banderas TCP.

4.   El RFC 821 de SMTP

El funcionamiento básico, secuencia de comandos y forma de ejecución del protocolo SMTP (Simple Mail Transfer Protocol) está definido y claramente explicado en el RFC (Request For Comments) 821, desarrollado por Jonathan B. Postel en agosto de 1982. Un RFC es un documento técnico en donde se plantea el desarrollo y funcionamiento de un protocolo estándar de Internet.

Dentro del RFC se explica que el objetivo principal del SMTP es transmitir correo electrónico de manera confiable y eficiente basándose en un modelo de comunicación de dos vías entre un usuario remitente y un usuario destinatario, ambos de correo electrónico, utilizando comandos. Es importante destacar que el usuario destinatario puede también ser un intermediario que únicamente redirigirá el correo al usuario final. Véase Figura 2.

Modelo para el uso de SMTP

Figura 2. Modelo para el uso de SMTP
 

En el desarrollo de esta herramienta se utilizó el mismo modelo y los siguientes comandos básicos que utiliza SMTP para enviar un correo electrónico (Postel, 1982):

  • HELO (HELLO): Utilizado por el emisor para iniciar una sesión de envío y recepción de correos. Es una especie de presentación entre ambos usuarios.

  • MAIL: Comando que indica el inicio de una transacción que involucra el envío de información a través de un correo electrónico.

  • RCPT (RECEIPT): Es el comando que indica el usuario que será el receptor del correo electrónico.

  • RSET (RESET): La utilidad de este comando es abortar la transacción actual de correo electrónico y limpiar la memoria y comandos recibidos.

  • DATA: Comando que permitirá enviar la información del emisor, tal como dirección de correo electrónico, asunto del correo, direcciones de correo a los cuales copiar y cuerpo del mensaje.

  • QUIT: Se utiliza para finalizar la sesión y cerrar la conexión con el receptor.

  • VRFY (VERIFY): Comando utilizado para mostrar la información específica de un usuario como su nombre completo y el identificador de su bandeja de correo.

  • EXPN (EXPAND): Similar a VERIFY pero dirigido a listas de correo, es decir, mostrará a todos los usuarios miembros pertenecientes a una lista de correo.

  • HELP: Comando para mostrar al emisor la ayuda y la sintaxis de uso de los comandos que utiliza el receptor.

5.   Base de datos MySQL

MySQL es un sistema manejador de bases de datos relacionales, es decir, almacena la información de las bases de datos en tablas separadas lógicamente. Este modelo permite la creación de objetos que pueden ser bases de datos, tablas, vistas, renglones y columnas, una característica que le permite integrarse a un modelo de programación bastante efectivo. La estructura de las bases de datos está organizada en archivos físicos optimizados para dar un mejor rendimiento.

En el desarrollo de esta herramienta se requiere almacenar una gran cantidad de información para su posterior consulta. Toda esta información, formada por direcciones IP, puertos de comunicación, marcas de tiempo, nombres de usuario, nombres de dominio, patrones de correo maliciosos, enlaces a recursos en Internet y firmas de integridad de archivos, es almacenada en una base de datos dentro de MySQL.

6.   Perl

Es un lenguaje de programación de alto nivel, compilado e interpretado (a la vez). Fue creado en 1987 por Larry Wall, un programador y lingüista de la Universidad de California en Berkeley. Dentro de las características de Perl destacan el fácil manejo de números, cadenas de caracteres, archivos, carpetas y sockets. Sus siglas significan: Practical Extraction and Reporting Language o Lenguaje Práctico para Extracción y Reportaje (Wall, 2014). 

El spampot es una herramienta para captura y análisis de correo electrónico no deseado desarrollada en Perl que implementa una serie de módulos o subrutinas para realizar las funciones esenciales de la herramienta, es decir, crear un socket de red, asociarlo a una dirección IP y un puerto de red, simular los comandos de SMTP y las respuestas a cada uno de ellos, almacenar la información de cada conexión en un archivo de texto plano cuyo nombre estará dado de acuerdo a la dirección IP y una marca de tiempo con el objetivo de registrar a qué hora se realizó la conexión y hacia qué dirección IP destino.

El archivo de texto plano que contiene la información del correo electrónico no deseado será analizado por la misma herramienta para buscar patrones predefinidos de nombres de usuarios, correos electrónicos, URL y nombres de dominios o asuntos, para después hacer un conteo de cada patrón y almacenarlo en una base de datos por medio de un conector de MySQL.

Conclusión

Hasta este punto, se han definido y detallado las herramientas, conceptos y requerimientos para desarrollar un spampot. En pocas palabras, se requiere programar en lenguaje Perl un socket de red como honeypot para que atienda peticiones en el puerto 25 del protocolo TCP en una computadora. El socket responderá a todas las solicitudes que cumplan con el RFC 821 para envío de correo electrónico a través de un Open Relay. Toda la información recibida será almacenada en una base de datos MySQL para su posterior análisis y consulta. 

En la segunda y última parte de este artículo se mostrarán las formas de ejecución de la herramienta y un análisis de los resultados de ejecución obtenidos por ella  en una red abierta a Internet.

Si quieres saber más consulta:

Referencias

UNAM

[ CONTACTO ]

Se prohíbe la reproducción total o parcial
de los artículos sin la autorización por escrito de los autores