Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
SSHintel — Autonomous honeypot SSH autónomo para capturar interacciones de atacantes y convertirlas en inteligencia de seguridad estructurada. | Kitploit
Herramientas/GitHubGitHub/sonitbahl/sshintel
Seguridad de RedesInteligencia de AmenazasDetección de IntrusionesRespuesta a IncidentesAnálisis de Registros
GitHubsonitbahl/sshintel

SSHintel

Autonomous honeypot SSH autónomo para capturar interacciones de atacantes y convertirlas en inteligencia de seguridad estructurada.

Ver Repositorio
378hace 2 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

SSHintel — Honeypot SSH ligero

License: MIT Python Last Commit Repo Size

SSHintel es un honeypot SSH ligero construido con Python y Paramiko. Simula una shell Linux falsa para registrar intentos de acceso no autorizados, capturar credenciales y analizar el comportamiento de los atacantes en un entorno controlado.


🔧 Características

  • Registra los intentos de inicio de sesión SSH con IP, nombre de usuario y contraseña
  • Proporciona una shell Linux simulada (un entorno falso en memoria)
  • Admite un amplio conjunto de comandos de reconocimiento y navegación (ls, cd, pwd, cat, echo, grep, find, tree, head, tail, wc, stat, ps, df, free, env, id, whoami, etc.)
  • Modo opcional --tarpit para ralentizar a los atacantes con salida retardada
  • Sistema de archivos falso aislado por sesión con soporte para creación y lectura de archivos
  • Panel web local para visualizar la telemetría de seguridad capturada (sesiones, comandos, intentos de autenticación, principales atacantes)
  • Vista de investigación de sesiones — selecciona cualquier sesión y reconstruye la cronología completa del ataque de forma cronológica, incluyendo la IP de origen, el resultado de la autenticación, cada comando ejecutado con su directorio de trabajo y la duración de la sesión
  • Todo está simulado — los comandos nunca se ejecutan en el host, nunca acceden al sistema de archivos real y no realizan solicitudes de red.

SSHintel no es una shell Bash/Linux completa. Simula un subconjunto creíble de comandos comunes para recopilar telemetría de los atacantes. Los comandos se despachan mediante un registro ligero; añadir un comando significa añadir una pequeña función manejadora.


🛠️ Configuración

1. 📦 Instalar dependencias

pip install -r requirements.txt

Nota: La clave de host SSH se genera automáticamente en la primera ejecución. No se necesita generar claves manualmente.


🚀 Ejecutando el Honeypot

Ejecute el honeypot con un puerto, nombre de usuario y contraseña específicos:

python3 run.py serve --port 2222 --username user1 --password pass123

El puerto predeterminado es 2222 y el host es 0.0.0.0.

El honeypot genera automáticamente una clave de host SSH en static/server.key en la primera ejecución si no existe. No se necesita generar la clave manualmente.

Para habilitar el modo tarpit:

python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit

Para deshabilitar la telemetría de SQLite (solo JSONL):

python3 run.py serve --port 2222 --username user1 --password pass123 --no-db

Archivos de configuración y variables de entorno

La configuración del sensor sigue el orden CLI > entorno > archivo de configuración > valores predeterminados. Solo los indicadores de CLI proporcionados explícitamente anulan las demás fuentes. Esto se aplica a serve; los comandos de panel/consulta conservan su propia configuración de CLI.

En Python 3.11+:

cp sshintel.toml.example sshintel.toml
chmod 600 sshintel.toml
python3 run.py serve

En Python 3.8/3.10, utilice el equivalente JSON sin dependencias:

cp sshintel.json.example sshintel.json
chmod 600 sshintel.json
python3 run.py serve

Edita el archivo copiado antes del despliegue. TOML requiere Python 3.11+; las versiones anteriores fallan con una instrucción clara de usar JSON. Sin un archivo explícito, SSHintel busca sshintel.toml, luego sshintel.json en el directorio actual. Usa serve --config /path/to/settings.json o HONEYPOT_CONFIG para seleccionar otro archivo (--config tiene prioridad). Los archivos explícitos inexistentes, los archivos malformados, las claves desconocidas y los valores inválidos fallan antes de que se inicie el servidor o la base de datos. Las rutas de archivo dentro de la configuración son relativas al directorio de trabajo del proceso, no al archivo de configuración.

Clave del archivoVariable de entornoValor predeterminado
hostHONEYPOT_HOST0.0.0.0
portHONEYPOT_PORT (alias heredado: PORT)2222
usernameHONEYPOT_USERNAMEuser1
passwordHONEYPOT_PASSWORDpass123
tarpitHONEYPOT_TARPITfalse
tarpit_max_secondsHONEYPOT_TARPIT_MAX_SECONDS120
max_connectionsHONEYPOT_MAX_CONNECTIONS50
auth_timeoutHONEYPOT_AUTH_TIMEOUT60
session_idle_timeoutHONEYPOT_SESSION_IDLE_TIMEOUT300
sensor_idHONEYPOT_SENSOR_IDsin definir
db_pathHONEYPOT_DB_PATHdata/sshintel.db
no_dbHONEYPOT_NO_DBfalse
fetch_payloadsHONEYPOT_FETCH_PAYLOADSfalse (reservado)

Los booleanos de entorno aceptan true/false, 1/0, yes/no y on/off. HONEYPOT_PORT tiene prioridad sobre PORT. Los puertos deben ser 1–65535 y los límites y tiempos de espera deben ser enteros positivos. Usa --no-tarpit, --db-enabled o --no-fetch-payloads para anular una configuración verdadera de menor prioridad. Las rutas de base de datos usan la bandera CLI --db existente. La obtención de payloads no está implementada: habilitar fetch_payloads se rechaza en lugar de ignorarse silenciosamente.

Los archivos locales sshintel.toml/sshintel.json están ignorados por Git y excluidos de las compilaciones de Docker porque pueden contener credenciales. En su lugar, monta un archivo de configuración como solo lectura en un contenedor. Docker consume las variables de entorno directamente (sin interpolar credenciales en el shell); sus valores predeterminados ENV existentes tienen prioridad sobre un archivo montado. Anula esas variables según sea necesario o usa banderas CLI explícitas.

🛡️ Límites de conexión y tiempos de espera

SSHintel protege contra el agotamiento de recursos por muchas conexiones concurrentes o conexiones mantenidas activas indefinidamente. Estos son configurables mediante la CLI:

BanderaValor predeterminadoPropósito
--max-connections50Número máximo de conexiones activas simultáneas; las conexiones adicionales se rechazan y se registran como un evento connection_rejected
--auth-timeout60 (s)Tiempo permitido para completar el handshake/autenticación SSH; los clientes bloqueados se desconectan
--session-idle-timeout300 (s)Tiempo de espera por inactividad para un shell autenticado; una sesión inactiva se finaliza, pero un atacante que está escribiendo activamente nunca se elimina

Ejemplo:

python3 run.py serve --port 2222 --username user1 --password pass123 \
  --max-connections 25 --auth-timeout 30 --session-idle-timeout 300

Cuando hay demasiadas conexiones abiertas, la conexión adicional se cierra inmediatamente y se escribe un evento de seguridad connection_rejected (con reason: connection_limit) en el log JSONL. Una autenticación estancada se registra como una desconexión con reason: auth_timeout; un shell inactivo termina con reason: idle_timeout.

El modo tarpit envía la salida intencionalmente de forma lenta para mantener al atacante ocupado, por lo que el bucle del banner del tarpit no está sujeto al tiempo de espera por inactividad — pero las sesiones tarpit sí cuentan para el límite de conexiones.


📊 Dashboard

SSHintel incluye un dashboard web local que visualiza la telemetría de seguridad almacenada en SQLite.

Iniciar el dashboard

python3 run.py dashboard

Luego abre http://localhost:5000 en tu navegador.

Descargar herramienta