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
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 :
:
- El primer campo es el nombre de usuario.
- El segundo campo no se utiliza por ahora y siempre es
x
.
- El tercer campo es la especificación de las contraseñas aceptadas por el usuario.
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:
-
En
cowrie/etc/cowrie.cfg
, puedes cambiar, por ejemplo, el nombre del sistema (hostname) que se muestra en el shell
remoto, el indicador de usuario (prompt), el nombre de usuario y contraseña de Telnet, la respuesta del commando uname
,
la versión de SSH mostrada por el comando ssh -V
, etc.
hostname = appsrv02
...
prompt = root>
...
telnet_username_prompt_regex = (\n|^)ubuntu login: .*
telnet_password_prompt_regex = .*Password: .*
...
kernel_version = 3.2.0-4-amd64
kernel_build_string = #1 SMP Debian 3.2.68-1+deb7u1
hardware_platform = x86_64
operating_system = GNU/Linux
...
ssh_version = OpenSSH_7.9p1, OpenSSL 1.1.1a 20 Nov 2018
- En
cowrie/honeyfs/etc/issue
, puedes cambiar el mensaje anterior a la sesión de inicio.
- En
cowrie/honeyfs/etc/motd
, puedes cambiar el mensaje posterior a la sesión de inicio.
- En
cowrie/honeyfs/proc/cpuinfo
, puedes cambiar el número y tipo de procesadores del sistema simulado.
- En
cowrie/honeyfs/proc/meminfo
, puedes cambiar asignaciónn y el uso de memoria del sistema simulado.
- En
cowrie/honeyfs/proc/version
, puedes cambiar las versiones del núcleo (kernel) de Linux y
gcc
.
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 [] ...
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:
- Navega a la página de Splunk Enterprise.
- Si todavía no tienes una cuenta de Splunk, crea una.
- Entra en tu cuenta de Splunk.
- Bajo Products, selecciona Free Trials and Downloads, desplázate hacia abajo hasta Splunk Enterprise y haz clic en el botón
Get My Free Trial.
- Selecciona el sistema operativo del ordenador donde quieres instlar Splunk (yo elegà Windows) y hac clic en el botón Download Now para
descargar la última versión de Splunk Enterprise.
- Acepta los términos de la licencia (Splunk General Terms) y haz clic en Access Program para empezar la descarga.
- Abre el paquete descargado y sigue las instrucciones de instalación en el sistema operativo que escogiste.
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:
- Entra en tu cuenta de administrador en la interfaz web de Splunk Enterprise. La dirección predeterminada es
http://127.0.0.1:8000
.
- En la esquina superior derecha, navega hasta Settings.
- Bajo System, selecciona Licensing.
- Selecciona Change License Group.
- Selecciona Free license y haz clic en Save.
- En la pantalla siguente, selecciona Restart Now para que los cambios surtan efecto.
3. Creación de un colector de eventos HTTP (HEC) de Splunk
- Navega hasta la interfaz web de Splunk en la dirección
http://127.0.0.1:8000
.
- En la esquina superior derecha, selecciona Settings.
- Bajo Data, selecciona Data Inputs.
- Bajo Local Inputs, haz clic en el enlace HTTP Event Collector.
- Bajo HTTP Event Collector, haz clic en el botón Global Settings en la parte de arriba a la derecha de la página.
- Bajo Edit Global Settings, haz clic en Enabled y luego haz clic en el botón Save.
- Regresa a Data > Data Inputs.
- Bajo Local Inputs, haz clic en +Add new a la derecha de HTTP Event Collector.
- Bajo Add Data, dale un nombre a tu nuevo HEC y haz clic en Next.
- Bajo Input Settings, haz clic en el enlace Create a new index en la sección Index.
- Bajo New Index, teclea
cowrie
como el nombre de tu nuevo Ãndice y luego haz clic en Save.
- De regreso bajo Input Settings, selecciona el Ãndice que acabas de crear bajo Select Allowed Indexes y haz clic en el botón
Review en la parte de arriba a la derecha de la página.
- Bajo Review, haz clic en el botón Submit en la parte de arriba a la derecha de la página.
4. Creación de una clave de colector de eventps de Splunk
- Navega hasta la interfaz web de Splunk instance en la dirección
http://127.0.0.1:8000
.
- En la esquina superior derecha, selecciona Settings.
- Haz Clic en el icono Add Data.
- Bajo Or get data in with the following methods, haz clic en Monitor.
- Haz click en HTTP Event Collector.
- Introduce un nombre para la clave.
- Haz clic en el botón Next en la parte de arriba a la derecha de la página.
- Haz clic en el botón Review en la parte de arriba a la derecha de la página.
- Bajo Review, haz clic en el botón Submit en la parte de arriba a la derecha de la página.
- Copia el valor de la clave; lo necesitarás en el siguiente paso.
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!