Configuración de honeypot

NOTA: Las presentes instrucciones se pueden considerar como obsoletas. Originalmente, seleccioné la versión gratis de Splunk Enterprise para almacenar los datos generados por mi señuelo Cowrie. Esa solución funcionó razonablemente bien hasta que un día excedí la cuota de datos permitda por la versión gratuita de Splunk. En ese monento decidí portar mis datos a un entorno alternativo gratuito, de código abierto y que no impusiera límites al consumo de datos. Escogí e implementé mi actual entorno de análisis de datos de Cowrie basado en MySQL y su servicio REST. Las instrucciones de instalación y configuración de mi solución actual están disponibles aquí. Las instrucciones en esta página están basadas en la solución original basada en Splunk y se proporcionan como una referencia.

Como parte de mi investigación sobre ciberseguridad, esta página documenta el proceso de configuración de un entorno para el análisis y la recogida de datos basados en un sistema señuelo o honeypot totalmente funcional y automatizado:

Salta el índice y el diagrama

  1. El honeypot
    1. Elección del sistema anfitrión del honeypot
    2. Instalación de las dependencias del sistema
    3. Creación de la cuenta de usuario
    4. Obtención del código de Cowrie
    5. Instalación de un entorno virtual de Python
    6. Configuración de Cowrie
    7. Personalización de Cowrie
    8. Redirección de puertos
    9. Inicialización de Cowrie
  2. El repositorio de datos
    1. Instalación de Splunk
    2. Cambio de licencia de Splunk Enterprise a Splunk Free
    3. Creación de un colector de eventos HTTP (HEC) de Splunk
    4. Creación de una clave de colector de eventos de Splunk
    5. Configuración de Cowrie para usar colector de eventos de Splunk
    6. Verifiación del entorno

Mi entorno señuelo
Mi entorno señuelo

Parte 1: El honeypot

Opté por Cowrie como el componente clave de mi infraestructura de detección de tráfico no deseado. Cowrie es un fantástico honeypot de interacción media/alta diseñado para registrar intentos de fuerza bruta e interacciones con un shell remoto por parte de atacantes, tanto a través de SSH como de Telnet. Cowrie es muy popular entre investigadores y entusiastas debido a su óptima combinación de capacidades y facilidad de uso. Es un programa de código abierto y está respaldado por una activa comunidad liderada por Michel Oosterhof, el mantenedor, creador y desarrollador principal del proyecto.

1. Elección del sistema anfitrión del honeypot

El primer paso es la elección de un sistema Linux donde instalar el honeypot. Dado que Cowrie es muy eficiente en su consumo de recursos, elegí inslarlo en un Raspberry Pi 400.

2. Instalación de las dependencias del sistema

Instala las dependencias del sistema en el ordenador anfitrión (host)) de Cowrie:


$ sudo apt-get install git python3-virtualenv libssl-dev libffi-dev build-essential libpython3-dev python3-minimal authbind virtualenv 
      

3. Creación de la cuenta de usuario

Aunque instalar una cuenta de usuario sin contraseña no es absolutemente requerido, los autores de Cowrie lo recomiendan encarecidamente por motivos de seguridad:


 $ sudo adduser --disabled-password cowrie
 Adding user 'cowrie' ...
 Adding new group 'cowrie' (1002) ...
 Adding new user 'cowrie' (1002) with group 'cowrie' ... 
 Changing the user information for cowrie
 Enter the new value, or press ENTER for the default
 Full Name []:
 Room Number []:
 Work Phone []:
 Home Phone []:
 Other []:
 Is the information correct? [Y/n]

 $ sudo su - cowrie
      

4. Obtención del código de Cowrie

Clona el repositorio de código cowrie albergado en GitHub:


 $ git clone http://github.com/cowrie/cowrie
 Cloning into 'cowrie'...
 remote: Counting objects: 2965, done.
 remote: Compressing objects: 100% (1025/1025), done.
 remote: Total 2965 (delta 1908), reused 2962 (delta 1905), pack-reused 0 
 Receiving objects: 100% (2965/2965), 3.41 MiB | 2.57 MiB/s, done.
 Resolving deltas: 100% (1908/1908), done.
 Checking connectivity... done.

 $ cd cowrie
      

5. Instalación de un entorno virtual de Python

Técnicamente hablando, este paso no es necesario, pero se recomienda para garantizar que las actualizaciones de paquetes en el sistema host de Cowrie no causen incompatibilidades:


 $ pwd
 /home/cowrie/cowrie
 
 $ python -m venv cowrie-env
 New python executable in ./cowrie/cowrie-env/bin/python 
 Installing setuptools, pip, wheel...done.
      

Después de instalar el entorno virtual, actívalo e instala los paquetes requeridos:


  $ source cowrie-env/bin/activate
 (cowrie-env) $ python -m pip install --upgrade pip
 (cowrie-env) $ python -m pip install --upgrade -r requirements.txt 
      

6. Configuración de Cowrie

La configuración de Cowrie se guarda en el fichero cowrie/etc/cowrie.cfg. Para operar con una configuración estándar, no es necesario cambiar nada. De forma predeterminada, Cowrie acepta tráfico a través de SSH. Para que el honeypot acepte también tráfico por Telnet, envie sus datos a Splunk (más información sobre esto abajo) y cambie los puertos predeterminados (22 y 23), tenemos que modificar el fichero de configuración de la siguiente forma:


 [telnet]
 enabled = true
 ...
 [output_splunk]
 enabled = true
 ...
 [proxy]
 backend_ssh_port = 2022
 backend_telnet_port = 2023 
      

También quería cambiar las configuraciones de usuario predeterminadas y la lista de credenciales aceptadas para iniciar sesiones en el shell remoto. Estos cambios se realizan modificando el fichero cowrie/etc/userdb.txt. Cada línea del fichero consta de tres campos separados por un carácter ::

Como ejemplo, los siguientes valores configuran un nombre de usuario admin que acepta todas las contraseñas excepto 1) sólo caracteres numéricos, 2) la palabra admin en minúsculas y 3) la palabra honeypot insensible a mayúsculas y minúsculas:

 admin:x:!admin
 admin:x:!/^[0-9]+$/
 admin:x:!/honeypot/i 
 admin:x:*
      

7. Personalización de Cowrie

Opcionalmente, puedes cambiar la apariencia de la interfaz de Cowrie para que parezca más realista. Varios archivos te permiten hacer eso:

8. Redirección de puertos

Como vimos anteriormente, configuré Cowrie para aceptar tráfico SSH a través del puerto 2022 y tráfico Telnet a través del puerto 2023. Para preservar la fidelidad del señuelo, abrí los puertos 22 y 23 en mi enrutador y redirigí su tráfico a los puertos 2022 y 2023, respectivamente, en el sistema en el que instalé Cowrie.

9. Inicializacón de Cowrie

Inicializa el honeypot invocando el fichero ejecutable cowrie/bin/cowrie que forma parte de la distribución de Cowrie. Se conservará cualquier entorno virtual existente si se activa; de lo contrario, Cowrie intentará cargar el entorno virtual cowrie-env que creamos anteriormente:


 bin/cowrie start
 Activating virtualenv "cowrie-env"
 Starting cowrie with extra arguments [] ... 
      

Parte 2: El repositorio de datos

Escogí Splunk Enterprise como almacén de los datos generados por Cowrie porque es muy potente, ofrece excelentes funcionalidades de búsqueda y manipulación de datos basadas en APIs, se puede instalar localmente y, lo mejor de todo, es gratis si mantienes el volumen de generación de datos por debajo de 500 MB al día. En mi opinión, Splunk es más fácil de configurar y operar que alternativas como Elasticsearch/OpenSearch y Graylog.

1. Instalación de Splunk

Splunk Free es una versión gratuita de Splunk Enterprise con capacidades limitadas. Cuando instalas Splunk Enterpise por primera vez, se instalará automáticamente una licencia de prueba que es válida por 60 días. La mejor parte es que puedes cambiar a la licencia gratuita en cualquier momento durante el período de prueba. Los pasos son los siguientes:

2. Cambio de licencia de Splunk Enterprise a Splunk Free

En cualquier momento durante tu período de prueba de Splunk Enterprise, puedes cambiar a la licencia gratuita:

3. Creación de un colector de eventos HTTP (HEC) de Splunk

4. Creación de una clave de colector de eventps de Splunk

5. Configuración de Cowrie para usar el colector de eventos de Splunk

Ahora tenemos que regresar al fichero de configuración de Cowrie cowrie/etc/cowrie.cfg y realizar modificaciones para asegurarnos de que Cowrie envíe los eventos que recopila a Splunk utilizando el colector de eventos que creamos anteriormente. Busca la sección [output-splunk] y asegúrate de que se incluya lo siguiente:


 [output-splunk]
 enabled = true
 url = http://XXX.XXX.XXX.XXX:8088/services/collector/event 
 token = your_splunk_token
 index = cowrie
 sourcetype = cowrie
 source = cowrie
      

Reemplaza la parte XXX.XXX.XXX.XXX en url con la dirección IP local (es decir, en tu red doméstica) del sistema que aloja tu copia de Splunk. Reemplaza your_splunk_token en token con tu token de Splunk. Deja las variables index, sourcetype y source configuradas con sus valores predeterminados.

6. Verificación del entorno

Si todos los pasos de configuración anteriores se dieron correctamente, deberías tener Cowrie conectado a Splunk. Arranca Cowrie en el sistema que lo alberga (Raspberry Pi en mi caso) y asegúrate de que el servicio de Splunk está corriendo en el sistema donde lo instalaste; el mío es Windows 11. Suponiendo que tu honeypot esta recibiendo ataques (una apuesta muy segura), deberías ver eventos bien formateados en Splunk. Para visualizarlos, selecciona Apps > Search & Reporting desde la interfaz web de Splunk y teclea lo siguiente en el campo de texto New Search:


 index=cowrie 
      

Eso es todo. ¡Te deseamos una buena caza de hackers!