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
- Raspberry Pi 2, 3 o 4 con Descargar Raspberry Pi OS Lite
- Conexión a Internet
Guía para principiantes para instalar el sistema operativo Raspberry Pi en una Raspberry Pi
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
############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.43280 61.177.173.3208 191.137.138.192150 159.203.37.63136 203.3.118.149110 185.232.67.36107 111.19.157.7097 49.233.117.19995 122.53.86.12088 117.220.15.11984 159.75.45.6484 157.230.90.1878 119.147.71.17474 222.175.223.7472 172.86.124.19772 141.98.80.9871 45.55.20.11571 103.235.224.7770 141.98.81.15469 78.128.113.157
Cowrie en Docker
docker pull cowrie/cowrie
Ejecutar container:
docker run -p 2222:2222/tcp cowrie/cowrie
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
docker inspect cowrie | grep IPAddressInspeccionar 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)
[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
No hay comentarios:
Publicar un comentario