viernes, 5 de febrero de 2021

Instalar y configurar HoneyPot DShield (basado en Cowrie) en una RaspBerry Pi 4

DShield Honeypot es un honeypot muy ligero (se puede usar Raspbian Lite OS, la versión más pequeña)  basado en cowrie (ssh y telnet) destinado a imitar un sistema vulnerable para recopilar información sobre amenazas. Luego, estos datos se envían al vasto depósito de datos de SANS ISC con fines de investigación. En esta guía paso a paso veremos también cómo integrar servicios de terceros como VirusTotal y AbuseIPDB



DShield (Honeypot basado en Cowrie)

Es un honeypot muy ligero que aporta datos de inteligencia sobre amenazas a SANS Internet Storm Center (ISC) con fines de investigación.

DShield Honeypot es un honeypot ligero destinado a imitar un sistema vulnerable para recopilar información sobre amenazas. Luego, estos datos se envían al vasto depósito de datos de SANS ISC con fines de investigación.

Los Honeypots no están destinados a contener datos valiosos que puedan verse comprometidos. En cambio, estos sistemas se utilizan para atraer a los atacantes para que aprendan más sobre sus técnicas, patrones y la forma en que operan.

En este artículo, explicaremos los pasos para instalar y configurar DShield Honeypot en una Raspberry Pi con Raspberry Pi OS Lite.




Prerrequisitos

Guía para principiantes para instalar el sistema operativo Raspberry Pi en una Raspberry Pi

El sistema operativo Raspberry Pi OS se conocía antes como Raspbian.

Grabar imagen SO en la tarjeta SD con Balena Etcher 

El software que vamos a utilizar para grabar Raspbian en la tarjeta SD de la Raspberry Pi 4 es Balena Etcher, también proyecto de Software Libre / Open Source que puedes utilizar en tu sistema operativo:


Una vez grabada y comprobada la imagen en la tarjeta SD, expulsarla/desmontarla y colocarla en la ranura de la Raspberry Pi 4 para arrancar desde ella.

Añade el fichero 

ssh

en la carpeta boot del tarjeta MicroSD

Raspberry Pi OS es el sistema operativo oficial de Raspberry Pi Foundation.

1. SSH a su Raspberry Pi

Puedes utilizar PuTTY o  MobaXterm o tu cliente SSH favorito.

Escribes la dirección IP de su Raspberry Pi y haces clic en Abrir.

El nombre de usuario predeterminado es "pi" y la contraseña predeterminada es "raspberry". Debería actualizar la contraseña a algo más seguro.

passwd

2. Ejecuta el comando "date" para verificar la hora y la fecha en su Raspberry Pi.

pi@raspberrypi: ~ $ date

Lun 29 jun 01:55:54 CEST 2020

Puedes ajustar tu zona horaria mediante el comando raspi-config.

sudo raspi-config

  • Elige la opción 4 Opciones de localización del menú.
  • Seleccione la opción I2 Cambiar zona horaria del menú.
  • Cambiar zona horaria Seleccione su área geográfica en la que vive.
  • Área geográfica
  • Seleccione la ciudad o región correspondiente a su zona horaria.
  • Ciudad o Región
  • Seleccione Finalizar para aplicar su nueva configuración de zona horaria.

3. Actualiza Raspberry Pi

Ejecuta los siguientes comandos para actualizar su Raspberry Pi.

pi@raspberrypi: ~ $ sudo apt-get update

pi@raspberrypi: ~ $ sudo apt-get -uy dist-upgrade

4. Reinicia Raspberry Pi

Ejecuta el siguiente comando para reiniciar su Raspberry Pi. SSH de nuevo cuando el sistema vuelva a estar en funcionamiento.

pi@raspberrypi: ~ $ sudo reboot

5. Instalar GIT

GIT no viene instalado de forma predeterminada en Raspberry Pi OS Lite. Deberás instalarlo con el siguiente comando.

pi@raspberrypi: ~ $ sudo apt-get install -y git

Puedes asegurarte de que se haya instalado ejecutando el siguiente comando.

pi@raspberrypi: ~ $ which git

/usr/bin/git

6. Crear el directorio de instalación

Deberás crear un directorio llamado install. Este directorio será donde clonemos el repositorio GIT. Ejecuta el siguiente comando para crear un directorio.

pi@raspberrypi: ~ $ mkdir install

Cambia al directorio usando el siguiente comando.

pi@raspberrypi: ~ $ cd install

7. Clonar el repositorio de DShield GIT

Ejecutael siguiente comando para clonar el repositorio dshield.git en la carpeta de instalación.

pi@raspberrypi: ~ / install $ git clone https://github.com/DShield-ISC/dshield.git

8. Ejecuta el script de instalación

Deberás cambiar al directorio dshield /bin usando el siguiente comando.

pi@raspberrypi: ~ /install $ cd dshield/bin/

Ejecuta el siguiente comando para ejecutar el script de instalación en la carpeta bin.

pi@raspberrypi: ~ /install/dshield /bin $ sudo ./install.sh

La secuencia de comandos de instalación ahora comenzará a ejecutarse.

Se le solicitará un mensaje de ADVERTENCIA que le pedirá que reconozca que sabe que está convirtiendo su Raspberry Pi en un honeypot.



ADVERTENCIA

La siguiente pantalla le preguntará si desea que las actualizaciones se realicen de forma automática o manual. Se recomienda que elija automático.



  • Manual
  • Automatic

Selecciona Aceptar.

9. Crear una cuenta de DShield

La siguiente pantalla requiere que ingrese su dirección de correo electrónico y clave API para seguir adelante. Deberás crear una cuenta de DShield para obtener esta información.

Haz clic en el siguiente enlace para crear una cuenta de DShield https://dshield.org/login.html

  • Selecciona Registrarse como nuevo usuario.
  • Cuenta DShield
  • Ingresa una dirección de correo electrónico y cree una contraseña. Seleccione la casilla de verificación después de leer el contenido.
  • Haz clic en Registrarse.
  • Crear una cuenta
  • Revisa su correo electrónico y haga clic en el enlace proporcionado para validar su cuenta.
  • Correo electrónico de verificación
  • Deberás ingresar su dirección de correo electrónico para completar la validación.
  • Escriba su dirección de correo electrónico y haga clic en Enviar consulta.
  • Validar correo electrónico
  • Tu cuenta ahora está validada. Utilice el enlace proporcionado para iniciar sesión en su cuenta.


10. Obtener clave API

Ahora que tienes una cuenta, necesitarás obtener la clave API.

  • Inicia sesión en su cuenta de DShield. Serás llevado a tu panel de forma predeterminada.
  • Haga clic en Mi cuenta en la esquina superior derecha.
  • Se mostrará tu clave API.

Clave API

11. Ingresa la información de la cuenta de DShield

Escribe o copia / pega tu dirección de correo electrónico en el campo Dirección de correo electrónico.

Copia / pega tu clave API en el campo Clave API.

Presiona la tecla Intro para verificar la información.


Clave de API verificada

12. Seleccione Interfaz predeterminada

Se prefiere una conexión Ethernet por cable. La Raspberry Pi tiene una interfaz de red. Dejaremos seleccionada la opción predeterminada. eth0

13. Red local y acceso

El siguiente paso configurará el acceso de administrador. De forma predeterminada, el puerto SSH se cambiará del puerto 22 al 12222.

  • Deberás ingresar el rango de red local al que desea que se le permita tener acceso.
  • También puede ingresar otras IP y redes confiables en el campo "Más IP".
  • Seleccione Aceptar.
  • Red local y acceso

14. IP para ignorar en el registro de firewall

El siguiente paso le permite ingresar a una red que el firewall no registrará y no redirigirá a los puertos honeypot.

Asegúrese de que su red local esté ingresada en el campo.

15. IP / puertos para deshabilitar Honeypot

La siguiente opción te permite deshabilitar el honeypot para evitar reportar intentos de acceso interno.

  • Asegúrate de que tu red desde arriba esté ingresada en el campo.
  • Deja los puertos Honeypot en su estado predeterminado.
  • Excepciones de Honeypot
  • Las configuraciones e instalaciones continuarán.

16. Crear certificado SSL

Deberá ingresar sus datos para crear un certificado SSL.

Crear certificado SSL

El script puede crear una autoridad de certificación (CA) para firmar el certificado o puede seleccionar No y enviar el certificado a otra CA para que lo firme.

Te  recomiendo que selecciones Sí y haga que el script cree una CA.

Seleccione Sí.

Se creará el certificado SSL.

17. Reinicie la Raspberry Pi

Ejecute el siguiente comando para reiniciar su Raspberry Pi.

pi@raspberrypi: ~ $ sudo reboot

Nota: Ahora tu puerto SSH cambiará de 22 a 12222.

18. Exponga su Raspberry Pi a Internet (abrir puertos)

Nota: este paso expone su dispositivo a la Internet pública. Si bien este es el propósito previsto, tenga en cuenta lo que está haciendo en este paso y asegúrese de revertir estos pasos si decide quitar su honeypot.

Actualmente, su Raspberry Pi ejecuta DShield, pero no se puede acceder a ella desde la Internet pública.

Este paso puede variar según la configuración de la red y los dispositivos. Esencialmente, necesita configurar su enrutador para usar la Raspberry Pi como su DMZ.

Deberá ingresar su Raspberry Pi como servidor DMZ o NAT (Virtual Forwarding)

Servidor DMZ 

  • Puerto 22 exterior  (ssh) --> ip local --> puerto interno 22
  • Puerto 23  exterior (telnet) --> ip local --> puerto interno 23

Una vez aplicada la configuración, puede utilizar un escáner de puerto en línea gratuito para escanear su dirección IP pública. Debería ver algo similar a la imagen de abajo.

Su honeypot ahora está exponiendo estos puertos a la Internet pública.

¡Felicidades! Ahora tiene DShield ejecutándose en su Raspberry Pi.

Los registros se enviarán a DShield cada 30 minutos. Puedes consultar el panel de DShield en https://secure.dshield.org/dashboard.html. Puede buscar por dirección IP para ver los informes asociados con su dirección IP. Sus datos también se agregarán en resúmenes con otros datos enviados a DShield.


Para comprobar que estás recibiendo ataques:

Comprueba  los ficheros cowrie.log y cowrie.json

sudo tail -f /srv/cowrie/var/log/cowrie/cowrie.json

Comprobar que está todo correcto:

 sudo /home/pi/install/dshield/bin/status.sh 

Editar fichero de configuración de cowrie

nano /srv/cowrie/cowrie.cfg 

Ver reporte usando script honeypot-daily.sh

Otro script para analizar los logs de Cowrie:


Ejemplo:

############
Top 20 COWRIE Usernames for 2021-02-11
############
   3288 b'root'|b'password'
    751 b'admin'|b'password'
    727 b'root'|b'none'
    426 b'admin'|b'none'
    252 b'Admin'|b'password'
    140 b'user'|b'password'
    124 b'Admin'|b'none'
    118 b'ubuntu'|b'password'
     96 b'nproc'|b'password'
     91 b'test'|b'password'
     80 b'postgres'|b'password'
     46 b'nagios'|b'password'
     42 b'oracle'|b'password'
     39 b'guest'|b'password'
     38 b'support'|b'password'
     38 b'Administrator'|b'password'
     30 b'git'|b'password'
     28 b'deploy'|b'password'
     24 b'ftpuser'|b'password'
     22 b'user'|b'none'
############
Top 20 Connection Attempts for 2021-02-11
############
    323 192.53.166.43
    280 61.177.173.3
    208 191.137.138.192
    150 159.203.37.63
    136 203.3.118.149
    110 185.232.67.36
    107 111.19.157.70
     97 49.233.117.199
     95 122.53.86.120
     88 117.220.15.119
     84 159.75.45.64
     84 157.230.90.18
     78 119.147.71.174
     74 222.175.223.74
     72 172.86.124.197
     72 141.98.80.98
     71 45.55.20.115
     71 103.235.224.77
     70 141.98.81.154
     69 78.128.113.157

Cowrie en Docker


Por supuesto también tenemos imagen de cowrie.

Descargar imagen
docker pull cowrie/cowrie

Ejecutar container: 

docker run -p 2222:2222/tcp cowrie/cowrie
o bien
docker run -d --name cowrie -p 2222:2222 cowrie/cowrie

Para añadir y configurar variables de entorno (env), por ejemplo:

COWRIE_TELNET_ENABLED=yes

Ejemplo cowrie docker-compose.yml

version: '3'

services:

  cowrie:

    image: stingar/cowrie:1.9.1

    restart: always

    volumes:

      - configs:/etc/cowrie

    ports:

      - "2222:2222"

      - "23:2223"

    env_file:

      - cowrie.env

volumes:

    configs:

Más información:

Alternativamente, Cowrie en Docker puede usar un volumen 'etc' para almacenar datos de configuración. Crea cowrie.cfg dentro del volumen etc con el siguiente contenido para habilitar telnet en su Cowrie Honeypot en Docker

[telnet]

enabled = yes

Más información

Para ver la ip:

docker inspect cowrie | grep IPAddress
Inspeccionar los logs (ver lo que han hecho los atacantes)
docker exec cowrie /bin/sh -c "cat log/cowrie.log" | less -r

Para parar el contenedor y borrar la imagen:

docker stop cowrie && docker rm cowrie

Cowrie: honeypot compatible con servicios SSH y Telnet

Esta herramienta Cowrie tiene características muy interesantes, como por ejemplo simular un sistema de archivos completo con la posibilidad de crear y borrar archivos, de esta manera, un posible atacante podrá creerse que está en el sistema operativo real, cuando en realidad está dentro del Honeypot. Otra característica interesante es que podremos añadir ficheros falsos para que si por ejemplo el atacante hace un «cat» a un archivo como /etc/passwd se crea que está leyendo todos los usuarios del propio sistema.

Todos los logs son almacenados en un formato UML compatible, de esta manera, podremos estudiar detalladamente todos los pasos que ha realizado un posible atacante. Cowrie también es capaz de guardar archivos descargados de Internet a través de wget o cURL, o también de archivos subidos a través del protocolo SFTP o SCP para posteriormente estudiar a fondo qué son esos archivos que el ciberdelincuente ha intentado colarnos en el sistema. El protocolo SFTP permite tanto la subida de archivos al servidor como también la descarga, los archivos subidos estarán en el directorio «dl/» donde también estarán todos los archivos descargados con wget.

Cowrie está basado en el honeypot Kippo, pero tiene características adicionales que lo hacen mucho más interesante. Por ejemplo, soporta comandos ejecutados a través de SSH (SSH exec), de esta manera, el atacante podrá enviar comandos.

También es capaz de hacer un log de todos los intentos de conexiones TCP que intente realizar. También es capaz de hacer un reenvío de las conexiones SMTP a un honeypot SMTP diseñado para tal fin.

Características

  • Choose to run as an emulated shell (default):
    • Fake filesystem with the ability to add/remove files. A full fake filesystem resembling a Debian 5.0 installation is included
    • Possibility of adding fake file contents so the attacker can cat files such as /etc/passwd. Only minimal file contents are included
    • Cowrie saves files downloaded with wget/curl or uploaded with SFTP and scp for later inspection
  • Or proxy SSH and telnet to another system
    • Run as a pure telnet and ssh proxy with monitoring
    • Or let Cowrie manage a pool of Qemu emualted servers to provide the systems to login to

For both settings:

  • Session logs are stored in an UML Compatible format for easy replay with the bin/playlog utility.
  • SFTP and SCP support for file upload
  • Support for SSH exec commands
  • Logging of direct-tcp connection attempts (ssh proxying)
  • Forward SMTP connections to SMTP Honeypot (e.g. mailoney)
  • JSON logging for easy processing in log management solutions


Ficheros de configuración

  • etc/cowrie.cfg - Cowrie's configuration file. Default values can be found in etc/cowrie.cfg.dist.
  • share/cowrie/fs.pickle - fake filesystem
  • etc/userdb.txt - credentials to access the honeypot
  • honeyfs/ - file contents for the fake filesystem - feel free to copy a real system here or use bin/fsctl
  • honeyfs/etc/issue.net - pre-login banner
  • honeyfs/etc/motd - post-login banner
  • var/log/cowrie/cowrie.json - transaction output in JSON format
  • var/log/cowrie/cowrie.log - log/debug output
  • var/lib/cowrie/tty/ - session logs, replayable with the bin/playlog utility.
  • var/lib/cowrie/downloads/ - files transferred from the attacker to the honeypot are stored here
  • share/cowrie/txtcmds/ - file contents for simple fake commands
  • bin/createfs - used to create the fake filesystem
  • bin/playlog - utility to replay session logs

Datos compartidos

Cowrie will by default upload data on crashes and Python exceptions to api.cowrie.org. This information is used to improve the honeypot and is not shared with third parties. It can be disabled by setting enabled=false in [output_crashreporter].

Ejemplo integración DShield (SANS)

Ya viene por defecto

[output_dshield]

userid = xxx

auth_key = xxx

batch_size = 20

enabled = true

Ejemplo integración cowrie con AbuseIPDB

Añadir fichero configuración cowrie.cfg

# Reports login attempts to AbuseIPDB. A short guide is in the original

# pull request on GitHub: https://github.com/cowrie/cowrie/pull/1346

[output_abuseipdb]

enabled = false

api_key = api_key_de_fail2ban

rereport_after = 12

#tolerance_window is in minutes

tolerance_window = 120

tolerance_attempts = 3

# WARNING: A binary file is read from this directory on start-up. Do not

# change unless you understand the security implications!

dump_path = ${honeypot:state_path}/abuseipdb

Ejemplo integración con VirusTotal

# VirusTotal output module

# You must signup for an api key.

#

[output_virustotal]

enabled = true

api_key = xxx

upload = True

debug = False

scan_file = True

scan_url = True

Basado en:

No hay comentarios:

Publicar un comentario