Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 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
7hace 1 díaAú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 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, , , , , , , , , , , , , , , , etc.)
cat
echo
grep
find
tree
head
tail
wc
stat
ps
df
free
env
id
whoami
  • Modo --tarpit opcional 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 sesión — seleccione cualquier sesión y reconstruya la línea de tiempo completa del ataque cronológicamente, incluyendo IP de origen, resultado de autenticación, cada comando ejecutado con su directorio de trabajo y duración de la sesión
  • Todo es 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 atacantes. Los comandos se despachan mediante un registro ligero; agregar un comando significa agregar una pequeña función de manejo.


    🛠️ Configuración

    1. 📦 Instalar dependencias

    root@kitploit:~
    pip install -r requirements.txt
    

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


    🚀 Ejecutar el Honeypot

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

    root@kitploit:~
    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 generación manual de claves.

    Para habilitar el modo tarpit:

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --tarpit
    

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

    root@kitploit:~
    python3 run.py serve --port 2222 --username user1 --password pass123 --no-db
    

    🛡️ 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:

    IndicadorPredeterminadoPropósito
    --max-connections50Má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 estancados se desconectan
    --session-idle-timeout300 (s)Tiempo de espera de inactividad para una shell autenticada; una sesión inactiva finaliza, pero un atacante que escribe activamente nunca se elimina

    Ejemplo:

    root@kitploit:~
    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 registro JSONL. Una autenticación estancada se registra como una desconexión con reason: auth_timeout; una shell inactiva finaliza con reason: idle_timeout.

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


    📊 Panel

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

    Iniciar el panel

    root@kitploit:~
    python3 run.py dashboard
    

    Luego abra http://localhost:5000 en su navegador.

    El panel lee de la base de datos SQLite en data/sshintel.db por defecto. Inicie primero el honeypot para que se capture la telemetría, luego lance el panel para ver cómo se completa.

    Qué muestra

    • Tarjetas KPI — sesiones totales, IPs de origen únicas, intentos de autenticación, autenticaciones exitosas/fallidas y comandos ejecutados
    • Gráfico de actividad — conexiones a lo largo del tiempo, agrupadas por hora
    • Comandos principales — los comandos de atacante ejecutados con más frecuencia
    • Nombres de usuario objetivo — qué nombres de usuario están intentando los atacantes
    • Sesiones recientes — haga clic en cualquier ID de sesión para investigarla
    • Actividad reciente — los últimos eventos de telemetría en una tabla buscable

    Investigación de sesión

    Haga clic en un ID de sesión (o navegue a /session/<session_id>) para abrir la vista de investigación de sesión, que reconstruye un solo ataque cronológicamente:

    • Resumen de sesión — IP de origen, nombre de usuario, horas de inicio/fin, duración, resultado de autenticación, motivo de desconexión
    • Línea de tiempo del ataque — cada evento (conexión, intentos de autenticación, comandos, desconexión) en orden cronológico
    • Secuencia de comandos — una vista compacta de $ comando de todo lo que escribió el atacante, con directorios de trabajo

    Flujo de trabajo de ejemplo

    root@kitploit:~
    # Terminal 1: iniciar el honeypot
    python3 run.py serve --port 2222 --username user1 --password pass123
    
    # Terminal 2: iniciar el panel
    python3 run.py dashboard
    
    # Terminal 3: simular un atacante
    ssh user1@localhost -p 2222
    # (ejecutar algunos comandos, luego salir)
    

    Luego abra http://localhost:5000 para inspeccionar la actividad capturada.

    El panel admite telemetría en vivo — consulta el honeypot cada 2 segundos y se actualiza automáticamente. Las nuevas sesiones, comandos y eventos aparecen en tiempo real sin actualizar la página. Un indicador en vivo (● Live) muestra el estado de la conexión.


    🔐 Pruebas desde otra terminal

    Abra una segunda terminal e intente conectarse:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Si las credenciales coinciden, se le llevará a la shell emulada.


    🚑 Opcional: Limpiar hosts conocidos (si se reconecta)

    Para eliminar huellas SSH obsoletas:

    root@kitploit:~
    notepad "%USERPROFILE%\.ssh\known_hosts"
    

    Elimine la línea relevante que contenga localhost o la IP del honeypot.


    📝 Información registrada

    • Las credenciales se registran en creds_logger
    • Los comandos de shell se registran mediante funnel_logger
    • Los eventos de seguridad estructurados se escriben en log_files/events.jsonl como JSON Lines (JSONL) — un objeto JSON válido por línea

    Cada evento JSONL incluye una timestamp UTC ISO-8601, un event_type, un session_id único y la source_ip. La conexión, los intentos/resultados de autenticación, la ejecución de comandos, la activación de tarpit y las desconexiones se registran todos como eventos estructurados.

    Cada conexión SSH entrante se rastrea como una sesión independiente con su propio session_id. Una sesión registra la IP de origen, las horas de conexión/desconexión, el resultado de la autenticación y la duración de la conexión, y cada evento generado dentro de esa conexión lleva el mismo session_id (para que los intentos de autenticación, comandos y desconexiones puedan vincularse a una sola conexión). Las sesiones están aisladas por conexión — no se comparte estado entre clientes concurrentes.

    Cada sesión también recibe su propio sistema de archivos falso aislado en memoria — el sistema de archivos simulado se crea nuevo para cada conexión y se limpia cuando la conexión finaliza. Los archivos, directorios y el directorio de trabajo creados o modificados por un atacante nunca son visibles para otro atacante conectado al mismo tiempo. Todo el sistema de archivos se simula en la memoria de Python y nunca toca el sistema de archivos real del host.

    Valores actuales de event_type: connect, auth_attempt, auth_success, auth_failure, command, disconnect, connection_rejected, tarpit.


    📂 Estructura de archivos

    root@kitploit:~
    SSHintel/
    ├── honeypot/                  # Lógica central del honeypot
    │   ├── __init__.py
    │   ├── main.py                # Bucle de aceptación + límite de conexiones
    │   ├── handlers.py            # Configuración del transporte SSH + shell emulada
    │   ├── server.py              # Interfaz del servidor Paramiko (autenticación)
    │   ├── session.py             # Seguimiento de sesión por conexión
    │   ├── fs.py                  # Sistema de archivos falso en memoria (aislado por sesión)
    │   ├── shell.py               # Shell falsa: registro de comandos + despachador
    │   ├── limits.py              # Límite de conexiones concurrentes seguro para hilos
    │   ├── logger.py              # Registro de eventos JSONL + puente SQLite
    │   └── telemetry_store.py     # Almacén de telemetría SQLite + capa de consultas
    │
    ├── dashboard/                 # Panel web local
    │   ├── app.py                 # Aplicación Flask + rutas API
    │   ├── templates/
    │   │   ├── index.html         # Plantilla principal del panel
    │   │   └── session.html       # Plantilla de investigación de sesión
    │   └── static/
    │       ├── style.css          # Estilos del panel
    │       ├── dashboard.js       # JS principal del panel (actualizaciones en vivo)
    │       └── session.js         # JS de investigación de sesión
    │
    ├── log_files/                 # Registros de ejecución (ignorados por git)
    │   ├── creds_audits.log       # Intentos de credenciales
    │   ├── cmd_audits.log         # Rastro de auditoría de comandos
    │   └── events.jsonl           # Eventos de seguridad JSONL estructurados
    │
    ├── data/                      # Base de datos SQLite (ignorada por git)
    │   └── sshintel.db
    │
    ├── static/                    # Clave de host SSH (generada automáticamente)
    │   └── server.key
    │
    ├── .github/workflows/         # Configuración de CI
    │   └── tests.yml
    │
    ├── Dockerfile
    ├── README.md
    ├── requirements.txt           # Dependencias de ejecución (paramiko, flask)
    ├── requirements-dev.txt       # Dependencias de prueba (pytest, pytest-cov)
    └── run.py                     # Punto de entrada CLI
    

    💪 Ejecutar con Docker (Método alternativo)

    Si prefiere ejecutar el honeypot en un entorno contenedorizado, puede usar el Dockerfile incluido.

    🔨 Construir la imagen Docker

    root@kitploit:~
    docker build -t sshintel .
    

    Esto crea una imagen Docker llamada sshintel.


    🚀 Ejecutar el contenedor

    root@kitploit:~
    docker run -p 2222:2222 sshintel
    

    Esto:

    • Generará automáticamente la clave privada SSH en static/server.key (si no existe)
    • Lanzará el honeypot en el puerto 2222 con credenciales predeterminadas:
      username: user1, password: pass123

    🔮 Probar el honeypot

    Abra una segunda terminal y conéctese mediante SSH:

    root@kitploit:~
    ssh user1@localhost -p 2222
    

    Se le llevará a la shell simulada si las credenciales coinciden.


    🧼 Detener y limpiar

    Para detener el contenedor:

    root@kitploit:~
    docker ps  # Encontrar el ID del contenedor
    docker stop <container_id>
    

    Para eliminar la imagen:

    root@kitploit:~
    docker rmi sshintel
    

    También puede exportar la imagen usando docker save -o sshintel.tar sshintel y cargarla más tarde con docker load -i sshintel.tar.


    📄 Licencia

    Este proyecto está licenciado bajo la Licencia MIT.


    👤 Autor

    Sonit Bahl
    🔗 LinkedIn
    🔗 Portafolio

    Descargar herramienta